Your message dated Fri, 19 Jun 2026 05:36:52 +0000
with message-id <[email protected]>
and subject line Bug#1140266: fixed in proton-vpn-cli 1.0.1-2
has caused the Debian Bug report #1140266,
regarding proton-vpn-cli: FTBFS: E       AttributeError: 'Features' object has 
no attribute 'are_free_tier_defaults'
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1140266: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1140266
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:proton-vpn-cli
Version: 1.0.1-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202606/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:proton-vpn-cli, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules binary
dh binary --buildsystem=pybuild
   dh_update_autotools_config -O--buildsystem=pybuild
   dh_autoreconf -O--buildsystem=pybuild
   dh_auto_configure -O--buildsystem=pybuild
   dh_auto_build -O--buildsystem=pybuild
I: pybuild plugin_pyproject:142: Building wheel for python3.14 with "build" 
module
I: pybuild base:385: python3.14 -m build --skip-dependency-check --no-isolation 
--wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_proton-vpn-cli  
* Building wheel...
/usr/lib/python3/dist-packages/setuptools/dist.py:759: 
SetuptoolsDeprecationWarning: License classifiers are deprecated.

[... snipped ...]

tests/unit/commands/test_app_help.py::test_app_help_shows_documentation_url 
PASSED [  9%]
tests/unit/commands/test_app_help.py::test_app_help_shows_support_links PASSED 
[  9%]
tests/unit/commands/test_click_exception_handler.py::test_group_with_no_subcommand_shows_missing_action_message
 PASSED [ 10%]
tests/unit/commands/test_click_exception_handler.py::test_group_with_no_subcommand_shows_available_subcommands
 PASSED [ 10%]
tests/unit/commands/test_click_exception_handler.py::test_group_with_no_subcommand_shows_help_hint
 PASSED [ 10%]
tests/unit/commands/test_click_exception_handler.py::test_set_group_with_no_subcommand_lists_all_feature_commands
 PASSED [ 11%]
tests/unit/commands/test_click_exception_handler.py::test_unknown_subcommand_shows_unknown_action_message
 PASSED [ 11%]
tests/unit/commands/test_click_exception_handler.py::test_unknown_subcommand_shows_available_actions
 PASSED [ 12%]
tests/unit/commands/test_click_exception_handler.py::test_unknown_subcommand_shows_help_hint
 PASSED [ 12%]
tests/unit/commands/test_click_exception_handler.py::test_root_command_with_unknown_subcommand_shows_unknown_action_message
 PASSED [ 12%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_setting_error[netshield]
 PASSED [ 13%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_setting_error[kill-switch]
 PASSED [ 13%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_setting_error[port-forwarding]
 PASSED [ 14%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_setting_error[custom-dns]
 PASSED [ 14%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_setting_error[vpn-accelerator]
 PASSED [ 14%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_setting_error[moderate-nat]
 PASSED [ 15%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_setting_error[ipv6]
 PASSED [ 15%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_setting_error[anonymous-crash-reports]
 PASSED [ 16%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_value_help_pairs[netshield]
 PASSED [ 16%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_value_help_pairs[kill-switch]
 PASSED [ 16%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_value_help_pairs[port-forwarding]
 PASSED [ 17%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_value_help_pairs[custom-dns]
 PASSED [ 17%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_value_help_pairs[vpn-accelerator]
 PASSED [ 17%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_value_help_pairs[moderate-nat]
 PASSED [ 18%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_value_help_pairs[ipv6]
 PASSED [ 18%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_value_help_pairs[anonymous-crash-reports]
 PASSED [ 19%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_help_hint[netshield]
 PASSED [ 19%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_help_hint[kill-switch]
 PASSED [ 19%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_help_hint[port-forwarding]
 PASSED [ 20%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_help_hint[custom-dns]
 PASSED [ 20%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_help_hint[vpn-accelerator]
 PASSED [ 21%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_help_hint[moderate-nat]
 PASSED [ 21%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_help_hint[ipv6]
 PASSED [ 21%]
tests/unit/commands/test_click_exception_handler.py::test_missing_value_for_feature_setting_shows_help_hint[anonymous-crash-reports]
 PASSED [ 22%]
tests/unit/commands/test_click_exception_handler.py::test_missing_positional_argument_shows_argument_error
 PASSED [ 22%]
tests/unit/commands/test_click_exception_handler.py::test_missing_positional_argument_shows_usage
 PASSED [ 23%]
tests/unit/commands/test_click_exception_handler.py::test_missing_positional_argument_shows_help_hint
 PASSED [ 23%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_invalid_value_error[netshield]
 PASSED [ 23%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_invalid_value_error[kill-switch]
 PASSED [ 24%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_invalid_value_error[port-forwarding]
 PASSED [ 24%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_invalid_value_error[custom-dns]
 PASSED [ 25%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_invalid_value_error[vpn-accelerator]
 PASSED [ 25%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_invalid_value_error[moderate-nat]
 PASSED [ 25%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_invalid_value_error[ipv6]
 PASSED [ 26%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_invalid_value_error[anonymous-crash-reports]
 PASSED [ 26%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_value_help_pairs[netshield]
 PASSED [ 26%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_value_help_pairs[kill-switch]
 PASSED [ 27%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_value_help_pairs[port-forwarding]
 PASSED [ 27%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_value_help_pairs[custom-dns]
 PASSED [ 28%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_value_help_pairs[vpn-accelerator]
 PASSED [ 28%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_value_help_pairs[moderate-nat]
 PASSED [ 28%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_value_help_pairs[ipv6]
 PASSED [ 29%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_value_help_pairs[anonymous-crash-reports]
 PASSED [ 29%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_help_hint[netshield]
 PASSED [ 30%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_help_hint[kill-switch]
 PASSED [ 30%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_help_hint[port-forwarding]
 PASSED [ 30%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_help_hint[custom-dns]
 PASSED [ 31%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_help_hint[vpn-accelerator]
 PASSED [ 31%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_help_hint[moderate-nat]
 PASSED [ 32%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_help_hint[ipv6]
 PASSED [ 32%]
tests/unit/commands/test_click_exception_handler.py::test_invalid_value_for_feature_setting_shows_help_hint[anonymous-crash-reports]
 PASSED [ 32%]
tests/unit/commands/test_click_exception_handler.py::test_click_exception_shows_error_message
 PASSED [ 33%]
tests/unit/commands/test_click_exception_handler.py::test_unrecognised_exception_returns_false
 PASSED [ 33%]
tests/unit/commands/test_click_exception_handler.py::test_usage_error_without_context_shows_error_message
 PASSED [ 33%]
tests/unit/commands/test_location_discovery.py::test_countries_listing_notifies_of_serverlist_update_when_expired[True]
 PASSED [ 34%]
tests/unit/commands/test_location_discovery.py::test_countries_listing_notifies_of_serverlist_update_when_expired[False]
 PASSED [ 34%]
tests/unit/commands/test_location_discovery.py::test_countries_listing_fails_when_not_signed_in
 PASSED [ 35%]
tests/unit/commands/test_location_discovery.py::test_countries_listing_shows_available_countries
 PASSED [ 35%]
tests/unit/commands/test_location_discovery.py::test_cities_listing_notifies_of_serverlist_update_when_expired[True]
 PASSED [ 35%]
tests/unit/commands/test_location_discovery.py::test_cities_listing_notifies_of_serverlist_update_when_expired[False]
 PASSED [ 36%]
tests/unit/commands/test_location_discovery.py::test_cities_listing_listing_fails_when_not_signed_in
 PASSED [ 36%]
tests/unit/commands/test_location_discovery.py::test_cities_listing_fails_when_provided_invalid_country_code
 PASSED [ 37%]
tests/unit/commands/test_location_discovery.py::test_cities_listing_fails_when_provided_invalid_country_name
 PASSED [ 37%]
tests/unit/commands/test_location_discovery.py::test_cities_listing_fails_when_country_not_found
 PASSED [ 37%]
tests/unit/commands/test_location_discovery.py::test_cities_listing_shows_all_available_features_for_city
 PASSED [ 38%]
tests/unit/commands/test_location_discovery.py::test_cities_listing_shows_all_available_cities
 PASSED [ 38%]
tests/unit/commands/test_location_discovery_help.py::test_countries_help_shows_output_description
 PASSED [ 39%]
tests/unit/commands/test_location_discovery_help.py::test_countries_help_shows_examples_section
 PASSED [ 39%]
tests/unit/commands/test_location_discovery_help.py::test_countries_help_shows_connect_country_guidance
 PASSED [ 39%]
tests/unit/commands/test_location_discovery_help.py::test_countries_help_shows_cities_cross_reference
 PASSED [ 40%]
tests/unit/commands/test_location_discovery_help.py::test_countries_help_describes_subcommand
 PASSED [ 40%]
tests/unit/commands/test_location_discovery_help.py::test_cities_help_shows_country_format_guidance
 PASSED [ 41%]
tests/unit/commands/test_location_discovery_help.py::test_cities_help_shows_examples_section
 PASSED [ 41%]
tests/unit/commands/test_location_discovery_help.py::test_cities_help_shows_connect_city_guidance
 PASSED [ 41%]
tests/unit/commands/test_location_discovery_help.py::test_cities_help_shows_countries_cross_reference
 PASSED [ 42%]
tests/unit/commands/test_location_discovery_help.py::test_cities_help_describes_subcommand
 PASSED [ 42%]
tests/unit/commands/test_location_discovery_help.py::test_cities_list_help_explains_argument
 PASSED [ 42%]
tests/unit/commands/test_server.py::test_connect_notifies_of_serverlist_update_when_expired[True]
 PASSED [ 43%]
tests/unit/commands/test_server.py::test_connect_notifies_of_serverlist_update_when_expired[False]
 PASSED [ 43%]
tests/unit/commands/test_server.py::test_connect_fails_with_suggestion_to_relax_filter_constraints_when_no_server_found
 PASSED [ 44%]
tests/unit/commands/test_server.py::test_connect_fails_when_not_signed_in 
PASSED [ 44%]
tests/unit/commands/test_server.py::test_connect_fails_with_correct_message_when_server_not_found[invalid-server-id-None-None]
 PASSED [ 44%]
tests/unit/commands/test_server.py::test_connect_fails_with_correct_message_when_server_not_found[invalid-server-id-New
 York-US] PASSED [ 45%]
tests/unit/commands/test_server.py::test_connect_fails_with_correct_message_when_server_not_found[None-New
 York-None] PASSED [ 45%]
tests/unit/commands/test_server.py::test_connect_fails_with_correct_message_when_server_not_found[None-New
 York-US] PASSED [ 46%]
tests/unit/commands/test_server.py::test_connect_fails_with_correct_message_when_server_not_found[None-None-US]
 PASSED [ 46%]
tests/unit/commands/test_server.py::test_connect_fails_when_provided_invalid_country_code
 PASSED [ 46%]
tests/unit/commands/test_server.py::test_connect_fails_when_provided_invalid_country_name
 PASSED [ 47%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[invalid-server-id-None-None---p2p-P2P---random]
 PASSED [ 47%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[invalid-server-id-New
 York-US---p2p-P2P---random] PASSED [ 48%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[None-New
 York-None---p2p-P2P---random] PASSED [ 48%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[None-New
 York-US---p2p-P2P---random] PASSED [ 48%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[None-None-US---p2p-P2P---random]
 PASSED [ 49%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[None-None-None---securecore-Secure
 Core---random] PASSED [ 49%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[None-None-None--sc-Secure
 Core---random] PASSED [ 50%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[None-None-None---tor-Tor---random]
 PASSED [ 50%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[None-None-None---p2p-P2P---random]
 PASSED [ 50%]
tests/unit/commands/test_server.py::test_connect_fails_when_requested_features_require_higher_tier[None-None-None-None-None---random]
 PASSED [ 51%]
tests/unit/commands/test_server.py::test_connect_notifies_when_successfully_connected[1.1.1.1-True-True]
 PASSED [ 51%]
tests/unit/commands/test_server.py::test_connect_notifies_when_successfully_connected[None-True-True]
 PASSED [ 51%]
tests/unit/commands/test_server.py::test_connect_notifies_when_successfully_connected[None-False-True]
 PASSED [ 52%]
tests/unit/commands/test_server.py::test_connect_notifies_when_successfully_connected[2.2.2.2-False-False]
 PASSED [ 52%]
tests/unit/commands/test_server.py::test_connect_notifies_of_port_forwarding_server_capabilities_when_successfully_connected[True-True]
 PASSED [ 53%]
tests/unit/commands/test_server.py::test_connect_notifies_of_port_forwarding_server_capabilities_when_successfully_connected[True-False]
 PASSED [ 53%]
tests/unit/commands/test_server.py::test_connect_notifies_of_port_forwarding_server_capabilities_when_successfully_connected[False-True]
 PASSED [ 53%]
tests/unit/commands/test_server.py::test_connect_notifies_of_port_forwarding_server_capabilities_when_successfully_connected[False-False]
 PASSED [ 54%]
tests/unit/commands/test_server.py::test_connect_warns_when_using_unsupported_protocol[openvpn-udp-False]
 PASSED [ 54%]
tests/unit/commands/test_server.py::test_connect_warns_when_using_unsupported_protocol[openvpn-tcp-False]
 PASSED [ 55%]
tests/unit/commands/test_server.py::test_connect_warns_when_using_unsupported_protocol[wireguard-True]
 PASSED [ 55%]
tests/unit/commands/test_server.py::test_connect_fails_with_2fa_error_message_when_vpn_2fa_is_required
 PASSED [ 55%]
tests/unit/commands/test_server.py::test_connect_fails_with_error_when_server_connection_fails
 PASSED [ 56%]
tests/unit/commands/test_server.py::test_status_shows_disconnected_when_no_connection
 PASSED [ 56%]
tests/unit/commands/test_server.py::test_status_shows_connected_with_server_details[True-True]
 PASSED [ 57%]
tests/unit/commands/test_server.py::test_status_shows_connected_with_server_details[False-True]
 PASSED [ 57%]
tests/unit/commands/test_server.py::test_status_shows_connected_with_server_details[False-False]
 PASSED [ 57%]
tests/unit/commands/test_server.py::test_status_notifies_of_serverlist_update_when_expired[True]
 PASSED [ 58%]
tests/unit/commands/test_server.py::test_status_notifies_of_serverlist_update_when_expired[False]
 PASSED [ 58%]
tests/unit/commands/test_server.py::test_servers_command_prints_redirection_successfully
 PASSED [ 58%]
tests/unit/commands/test_server_help.py::test_connect_help_explains_server_name_argument
 PASSED [ 59%]
tests/unit/commands/test_server_help.py::test_connect_help_shows_examples_section
 PASSED [ 59%]
tests/unit/commands/test_server_help.py::test_connect_help_shows_quick_connection_example
 PASSED [ 60%]
tests/unit/commands/test_server_help.py::test_connect_help_shows_location_selection_examples
 PASSED [ 60%]
tests/unit/commands/test_server_help.py::test_connect_help_shows_feature_flag_examples
 PASSED [ 60%]
tests/unit/commands/test_server_help.py::test_connect_help_shows_extra_secure_connection_examples
 PASSED [ 61%]
tests/unit/commands/test_server_help.py::test_connect_help_describes_country_option
 PASSED [ 61%]
tests/unit/commands/test_server_help.py::test_connect_help_describes_city_option
 PASSED [ 62%]
tests/unit/commands/test_server_help.py::test_connect_help_describes_p2p_option 
PASSED [ 62%]
tests/unit/commands/test_server_help.py::test_connect_help_describes_securecore_option
 PASSED [ 62%]
tests/unit/commands/test_server_help.py::test_connect_help_describes_tor_option 
PASSED [ 63%]
tests/unit/commands/test_server_help.py::test_connect_help_describes_random_option
 PASSED [ 63%]
tests/unit/commands/test_server_help.py::test_disconnect_help_shows_examples_section
 PASSED [ 64%]
tests/unit/commands/test_server_help.py::test_disconnect_help_shows_check_status_hint
 PASSED [ 64%]
tests/unit/commands/test_settings.py::test_setting_all_features_fails_when_not_signed_in
 PASSED [ 64%]
tests/unit/commands/test_settings.py::test_setting_all_paying_features_fails_when_requiring_higher_tier
 PASSED [ 65%]
tests/unit/commands/test_settings.py::test_setting_all_features_shows_message_confirming_success
 PASSED [ 65%]
tests/unit/commands/test_settings.py::test_setting_all_features_explains_reconnection_required_for_relevant_features_when_connected
 PASSED [ 66%]
tests/unit/commands/test_settings.py::test_setting_custom_dns_fails_when_not_provided_with_dns_option
 PASSED [ 66%]
tests/unit/commands/test_settings.py::test_setting_custom_dns_fails_when_not_provided_with_valid_ips
 PASSED [ 66%]
tests/unit/commands/test_settings.py::test_enabling_port_forwarding_informs_of_required_manual_setup
 PASSED [ 67%]
tests/unit/commands/test_settings.py::test_modifying_killswitch_only_succeeds_when_disconnected[True-0]
 PASSED [ 67%]
tests/unit/commands/test_settings.py::test_modifying_killswitch_only_succeeds_when_disconnected[True-1]
 PASSED [ 67%]
tests/unit/commands/test_settings.py::test_modifying_killswitch_only_succeeds_when_disconnected[False-0]
 PASSED [ 68%]
tests/unit/commands/test_settings.py::test_modifying_killswitch_only_succeeds_when_disconnected[False-1]
 PASSED [ 68%]
tests/unit/commands/test_settings.py::test_listing_all_settings_fails_when_not_signed_in
 PASSED [ 69%]
tests/unit/commands/test_settings.py::test_listing_all_settings_shows_free_user_which_settings_require_higher_tier
 PASSED [ 69%]
tests/unit/commands/test_settings.py::test_listing_all_settings_shows_correct_setting_per_feature
 PASSED [ 69%]
tests/unit/commands/test_settings.py::test_listing_all_settings_shows_correct_guidance_for_user_tier[True]
 PASSED [ 70%]
tests/unit/commands/test_settings.py::test_listing_all_settings_shows_correct_guidance_for_user_tier[False]
 PASSED [ 70%]
tests/unit/commands/test_settings_help.py::test_config_help_shows_available_settings_section
 PASSED [ 71%]
tests/unit/commands/test_settings_help.py::test_config_help_lists_all_feature_commands
 PASSED [ 71%]
tests/unit/commands/test_settings_help.py::test_config_help_lists_all_feature_descriptions
 PASSED [ 71%]
tests/unit/commands/test_settings_help.py::test_config_help_shows_examples_section
 PASSED [ 72%]
tests/unit/commands/test_settings_help.py::test_config_help_shows_setting_specific_help_guidance
 PASSED [ 72%]
tests/unit/commands/test_settings_help.py::test_config_list_help_shows_description
 PASSED [ 73%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_help_description[feature0]
 PASSED [ 73%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_help_description[feature1]
 PASSED [ 73%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_help_description[feature2]
 PASSED [ 74%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_help_description[feature3]
 PASSED [ 74%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_help_description[feature4]
 PASSED [ 75%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_help_description[feature5]
 PASSED [ 75%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_help_description[feature6]
 PASSED [ 75%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_help_description[feature7]
 PASSED [ 76%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_all_valid_values[feature0]
 PASSED [ 76%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_all_valid_values[feature1]
 PASSED [ 76%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_all_valid_values[feature2]
 PASSED [ 77%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_all_valid_values[feature3]
 PASSED [ 77%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_all_valid_values[feature4]
 PASSED [ 78%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_all_valid_values[feature5]
 PASSED [ 78%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_all_valid_values[feature6]
 PASSED [ 78%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_all_valid_values[feature7]
 PASSED [ 79%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_value_descriptions[feature0]
 PASSED [ 79%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_value_descriptions[feature1]
 PASSED [ 80%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_value_descriptions[feature2]
 PASSED [ 80%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_value_descriptions[feature3]
 PASSED [ 80%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_value_descriptions[feature4]
 PASSED [ 81%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_value_descriptions[feature5]
 PASSED [ 81%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_value_descriptions[feature6]
 PASSED [ 82%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_value_descriptions[feature7]
 PASSED [ 82%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_examples_section[feature0]
 PASSED [ 82%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_examples_section[feature1]
 PASSED [ 83%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_examples_section[feature2]
 PASSED [ 83%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_examples_section[feature3]
 PASSED [ 83%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_examples_section[feature4]
 PASSED [ 84%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_examples_section[feature5]
 PASSED [ 84%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_examples_section[feature6]
 PASSED [ 85%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_examples_section[feature7]
 PASSED [ 85%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_current_setting_guidance[feature0]
 PASSED [ 85%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_current_setting_guidance[feature1]
 PASSED [ 86%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_current_setting_guidance[feature2]
 PASSED [ 86%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_current_setting_guidance[feature3]
 PASSED [ 87%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_current_setting_guidance[feature4]
 PASSED [ 87%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_current_setting_guidance[feature5]
 PASSED [ 87%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_current_setting_guidance[feature6]
 PASSED [ 88%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_how_it_works_section[feature0]
 PASSED [ 88%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_how_it_works_section[feature1]
 PASSED [ 89%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_how_it_works_section[feature2]
 PASSED [ 89%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_how_it_works_section[feature3]
 PASSED [ 89%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_how_it_works_section[feature4]
 PASSED [ 90%]
tests/unit/commands/test_settings_help.py::test_config_set_feature_help_shows_how_it_works_section[feature5]
 PASSED [ 90%]
tests/unit/commands/test_settings_help.py::test_config_set_vpn_accelerator_help_shows_recommendation
 PASSED [ 91%]
tests/unit/commands/test_settings_help.py::test_config_set_anon_crash_reports_help_shows_privacy_section
 PASSED [ 91%]
tests/unit/commands/test_settings_help.py::test_config_set_port_forwarding_help_shows_setup_guide
 PASSED [ 91%]
tests/unit/commands/test_settings_help.py::test_config_set_kill_switch_help_shows_behavior_section
 PASSED [ 92%]
tests/unit/test_controller.py::test_connect_fails_if_not_logged_in PASSED [ 92%]
tests/unit/test_controller.py::test_find_logical_server_fails_if_not_logged_in 
PASSED [ 92%]
tests/unit/test_controller.py::test_find_logical_server_fails_when_specifying_server_name_as_free_user
 PASSED [ 93%]
tests/unit/test_controller.py::test_find_logical_server_fails_when_specifying_country_as_free_user
 PASSED [ 93%]
tests/unit/test_controller.py::test_find_logical_server_fails_when_specifying_city_as_free_user
 PASSED [ 94%]
tests/unit/test_controller.py::test_find_logical_server_fails_when_requesting_features_as_free_user
 PASSED [ 94%]
tests/unit/test_controller.py::test_find_logical_server_fails_when_requesting_random_server_as_free_user
 PASSED [ 94%]
tests/unit/test_controller.py::test_connect_disconnects_when_connection_fails 
PASSED [ 95%]
tests/unit/test_controller.py::test_get_all_countries_raises_authentication_required_exception_when_user_is_not_logged_in
 PASSED [ 95%]
tests/unit/test_controller.py::test_save_feature_setting_raises_exception_when_not_signed_in
 PASSED [ 96%]
tests/unit/test_controller.py::test_save_feature_setting_raises_exception_when_feature_requires_higher_tier
 PASSED [ 96%]
tests/unit/test_controller.py::test_get_feature_setting_raises_exception_when_not_signed_in
 PASSED [ 96%]
tests/unit/test_controller.py::test_save_settings_waits_for_confirmation_when_requesting_paying_connection_features
 PASSED [ 97%]
tests/unit/test_controller.py::test_save_settings_does_not_wait_for_confirmation_when_requesting_free_connection_features
 FAILED [ 97%]
tests/unit/test_exception_handler.py::test_enable_exception_handler_adds_excepthooks
 PASSED [ 98%]
tests/unit/test_exception_handler.py::test_disable_exception_handler_removes_excepthooks
 PASSED [ 98%]
tests/unit/test_exception_handler.py::test_exception_handling_reports_exceptions_when_relevant[KeyboardInterrupt-False]
 PASSED [ 98%]
tests/unit/test_exception_handler.py::test_exception_handling_reports_exceptions_when_relevant[AssertionError-False]
 PASSED [ 99%]
tests/unit/test_exception_handler.py::test_exception_handling_reports_exceptions_when_relevant[Exception-True]
 PASSED [ 99%]
tests/unit/test_exception_handler.py::test_exception_handling_absorbs_silenced_exceptions
 PASSED [100%]

=================================== FAILURES ===================================
_ 
test_save_settings_does_not_wait_for_confirmation_when_requesting_free_connection_features
 _

    @pytest.mark.asyncio
    async def 
test_save_settings_does_not_wait_for_confirmation_when_requesting_free_connection_features():
        api_mock = AsyncMock(spec=ProtonVPNAPI)
        params_mock = Mock(spec=Params)
        click_ctx_mock = Mock(spec=ClickContext)
        vpn_connector_mock = Mock(spec=VPNConnector)
        settings = Settings.default(user_tier=0)
    
        # mock free user
        api_mock.user_tier = 0
    
        # mock active connection
        vpn_connector_mock.is_connected = True
        api_mock.get_vpn_connector.return_value = vpn_connector_mock
    
        controller = Controller(params_mock, click_ctx_mock, api_mock)
>       await controller.save_settings(settings)

tests/unit/test_controller.py:261: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <proton.vpn.cli.core.controller.Controller object at 0x7f2ec0653af0>
settings = Settings(protocol='wireguard', killswitch=0, 
custom_dns=CustomDNS(enabled=False, ip_list=[]), ipv6=True, 
anonymous_cra...TunnelingMode.INCLUDE: 'include'>, app_paths=[], 
ip_ranges=[])})), packet_capture=PacketCapture(directory_path='/tmp'))

    async def save_settings(self, settings: Settings):
        """Saves general settings."""
        connector = await self.get_vpn_connector()
        is_connected = connector.is_connected
        free_user_requesting_free_features =\
>           self.user_on_free_tier and 
> settings.features.are_free_tier_defaults()
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       AttributeError: 'Features' object has no attribute 
'are_free_tier_defaults'

proton/vpn/cli/core/controller.py:287: AttributeError
=========================== short test summary info ============================
FAILED 
tests/unit/test_controller.py::test_save_settings_does_not_wait_for_confirmation_when_requesting_free_connection_features
======================== 1 failed, 255 passed in 0.84s =========================
E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_proton-vpn-cli/build; python3.13 -m 
pytest -v --no-cov
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 
3.13" --parallel=2 returned exit code 13
make: *** [debian/rules:9: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit 
status 2
--------------------------------------------------------------------------------

--- End Message ---
--- Begin Message ---
Source: proton-vpn-cli
Source-Version: 1.0.1-2
Done: Josenilson Ferreira da Silva <[email protected]>

We believe that the bug you reported is fixed in the latest version of
proton-vpn-cli, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Josenilson Ferreira da Silva <[email protected]> (supplier of updated 
proton-vpn-cli package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Thu, 18 Jun 2026 23:08:41 -0300
Source: proton-vpn-cli
Architecture: source
Version: 1.0.1-2
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <[email protected]>
Changed-By: Josenilson Ferreira da Silva <[email protected]>
Closes: 1140266
Changes:
 proton-vpn-cli (1.0.1-2) unstable; urgency=medium
 .
   * debian/patches/004:
     - Fix compatibility with updated proton-vpn-api-core API (Closes: #1140266)
Checksums-Sha1:
 5fec16b1885950d4fb25943de4341dbafc560220 2466 proton-vpn-cli_1.0.1-2.dsc
 d21ca3dfe611ec652178f75e18365943a489cb09 7820 
proton-vpn-cli_1.0.1-2.debian.tar.xz
 5e9940be6e65698d9de6143ffced88fc894fb016 18262 
proton-vpn-cli_1.0.1-2_source.buildinfo
Checksums-Sha256:
 70c7b6b81978f2e7be8c9646a2372e0defd7268deae06a8c386d5aa5263afd71 2466 
proton-vpn-cli_1.0.1-2.dsc
 1e0ca96f00eb0c12f15379cde7643fa43f7630b05868c97eb067bf342e9cf326 7820 
proton-vpn-cli_1.0.1-2.debian.tar.xz
 e46eadd45c28636638178d11bc0de0093c0831c506be0e3537cb8df0d87f85f1 18262 
proton-vpn-cli_1.0.1-2_source.buildinfo
Files:
 0d27562a3e1dfbad0510fcc6b3447b7e 2466 utils optional proton-vpn-cli_1.0.1-2.dsc
 08a26101eb59f274e85f14e3ba859d4e 7820 utils optional 
proton-vpn-cli_1.0.1-2.debian.tar.xz
 94b3f0019b53d2a60bc7f52019edbd21 18262 utils optional 
proton-vpn-cli_1.0.1-2_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEqBlNXRF+LQLfMNMNB6n1YjE0Rs0FAmo0qWMACgkQB6n1YjE0
Rs1iNQ//R0Uwoxzk/s4qkH7SCpsebaOy77sJ8EzYo3AbsXGbOT5jmt/6DbeZO8Ze
YeCV8oAnlaXwJTG7ScL9QWgT8XYkf7Jo1wsbKNQXWoac2dW0ORI5ND8udP5EQ95y
yrtRhckkFeQ5iB+EIdBsrgeWaMKj0aplE9MTsPxrHcCiNorVab+X+eiBV/JykB9D
BIcGmo5r2aMPO+Y3HKMfxG8DxujoEkpqLbDwLTCRPjSPwyhyUg80I4br63/dhDZZ
IdCwXzJaTDkKLO5gu2KKwaCZ/7gZQCKNnIghFkH6UrcWecKPaTYBz3DiIMGc6l6P
J9TAErIYks0CaiHEWA0rB2jNUWbvqaJHMos3o0tY+HfEJDZ9FVd1XkYVDnzEEpcT
5A6jHizws8U5rr2R4j3YQ3tNheZ2pIKO2042hhEPT1RD0jczMc4wYZ8sRASEZrFT
EB0bLLrPUMDLZjRTq/hyxzKhbO4pF7LZXnPQKRDCL8yLFqoN8ZIH7XE1dZVrQtaz
ddqWVCGfWnyx/IXB+PL9pSX9uIzFlFb6wp3NsWCuKi9JYQS41NHrOI9S83VKIpJY
vHARvA9TbEEh32BneFOLxMsXdrOVwFLFcNQw5oGSjNUru/qI7vjRZU/quk8UhRJJ
kLEXJ1ckdJNJv4Mfp4URC85sSSXEXU5Q+CsANxyTzvC4Nhuuwkw=
=jJoO
-----END PGP SIGNATURE-----

Attachment: pgpVADih1iF2y.pgp
Description: PGP signature


--- End Message ---

Reply via email to