#1140266 proton-vpn-cli: FTBFS: E AttributeError: 'Features' object has no attribute 'are_free_tier_defaults'

#1140266#5
Date:
2026-06-17 16:15:30 UTC
From:
To:
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)

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 =\
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
--------------------------------------------------------------------------------

#1140266#10
Date:
2026-06-19 05:36:52 UTC
From:
To:
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 1140266@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Josenilson Ferreira da Silva <nilsonfsilva@hotmail.com> (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 ftpmaster@ftp-master.debian.org)
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 <team+python@tracker.debian.org>
Changed-By: Josenilson Ferreira da Silva <nilsonfsilva@hotmail.com>
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-----