• Bug#1098636: zabbix-cli: FTBFS: E TypeError: Parameter.make_metavar() m

    From Santiago Vila@21:1/5 to All on Sat Feb 22 00:40:02 2025
    Package: src:zabbix-cli
    Version: 3.5.0-1
    Severity: serious
    Tags: ftbfs trixie sid

    Dear maintainer:

    During a rebuild of all packages in unstable, your package failed to build:

    --------------------------------------------------------------------------------
    [...]
    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:129: Building wheel for python3.13 with "build" module
    I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_zabbix-cli
    * Building wheel...
    Successfully built zabbix_cli_uio-3.5.0-py3-none-any.whl
    I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module
    dh_auto_test -O--buildsystem=pybuild
    I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_zabbix-cli/build; python3.13 -m pytest tests
    ============================= test session starts ==============================
    platform linux -- Python 3.13.2, pytest-8.3.4, pluggy-1.5.0 -- /usr/bin/python3.13
    cachedir: .pytest_cache
    rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_zabbix-cli/build
    configfile: pyproject.toml
    plugins: typeguard-4.4.1, anyio-4.8.0, inline-snapshot-0.19.3, pytest_httpserver-1.1.1
    collecting ... collected 313 items / 1 skipped

    tests/commands/test_common.py::test_command_param PASSED [ 0%] tests/commands/test_common.py::test_command_param_in_command FAILED [ 0%] tests/commands/test_macro.py::test_fmt_macro_name[my_macro-{$MY_MACRO}] PASSED [ 0%]
    tests/commands/test_macro.py::test_fmt_macro_name[MY_MACRO-{$MY_MACRO}] PASSED [ 1%]
    tests/commands/test_macro.py::test_fmt_macro_name[mY_maCrO-{$MY_MACRO}] PASSED [ 1%]
    tests/commands/test_macro.py::test_fmt_macro_name[foo123-{$FOO123}] PASSED [ 1%]
    tests/commands/test_macro.py::test_fmt_macro_name[ -] XFAIL [ 2%] tests/commands/test_macro.py::test_fmt_macro_name[-] XFAIL [ 2%] tests/commands/test_macro.py::test_fmt_macro_name[{$}-] XFAIL [ 2%] tests/pyzabbix/test_client.py::test_append_param[non-list (int)] PASSED [ 3%] tests/pyzabbix/test_client.py::test_append_param[list (int)] PASSED [ 3%] tests/pyzabbix/test_client.py::test_append_param[non-list (str)] PASSED [ 3%] tests/pyzabbix/test_client.py::test_append_param[list (str)] PASSED [ 4%] tests/pyzabbix/test_client.py::test_append_param[list of lists] PASSED [ 4%] tests/pyzabbix/test_client.py::test_add_param[inp0-hostids-2-expect0] PASSED [ 4%]
    tests/pyzabbix/test_client.py::test_login_fails PASSED [ 5%] tests/pyzabbix/test_client.py::test_logout_fails PASSED [ 5%] tests/pyzabbix/test_client.py::test_client_server_url[localhost-no-slash] PASSED [ 5%]
    tests/pyzabbix/test_client.py::test_client_server_url[localhost-with-slash] PASSED [ 6%]
    tests/pyzabbix/test_client.py::test_client_server_url[localhost-full-url] PASSED [ 6%]
    tests/pyzabbix/test_client.py::test_client_server_url[localhost-full-url-with-slash] PASSED [ 6%]
    tests/pyzabbix/test_client.py::test_client_server_url[tld-no-slash] PASSED [ 7%]
    tests/pyzabbix/test_client.py::test_client_server_url[tld-with-slash] PASSED [ 7%]
    tests/pyzabbix/test_client.py::test_client_server_url[tld-full-url] PASSED [ 7%]
    tests/pyzabbix/test_client.py::test_client_server_url[tld-full-url-with-slash] PASSED [ 7%]
    tests/pyzabbix/test_client.py::test_client_auth_method[5.0.0] PASSED [ 8%] tests/pyzabbix/test_client.py::test_client_auth_method[5.2.0] PASSED [ 8%] tests/pyzabbix/test_client.py::test_client_auth_method[6.0.0] PASSED [ 8%] tests/pyzabbix/test_client.py::test_client_auth_method[6.2.0] PASSED [ 9%] tests/pyzabbix/test_client.py::test_client_auth_method[6.4.0] PASSED [ 9%] tests/pyzabbix/test_client.py::test_client_auth_method[7.0.0] PASSED [ 9%] tests/pyzabbix/test_client.py::test_client_auth_method[7.2.0] PASSED [ 10%] tests/pyzabbix/test_client.py::test_client_logout[token] PASSED [ 10%] tests/pyzabbix/test_client.py::test_client_logout[token (empty string)] PASSED [ 10%]
    tests/pyzabbix/test_client.py::test_client_logout[sessionid] PASSED [ 11%] tests/pyzabbix/test_client.py::test_client_logout[sessionid (empty string)] PASSED [ 11%]
    tests/pyzabbix/test_enums.py::test_apistrenum[AckStatus] PASSED [ 11%] tests/pyzabbix/test_enums.py::test_apistrenum[ActiveInterface] PASSED [ 12%] tests/pyzabbix/test_enums.py::test_apistrenum[DataCollectionMode] PASSED [ 12%] tests/pyzabbix/test_enums.py::test_apistrenum[EventStatus] PASSED [ 12%] tests/pyzabbix/test_enums.py::test_apistrenum[GUIAccess] PASSED [ 13%] tests/pyzabbix/test_enums.py::test_apistrenum[HostgroupFlag] PASSED [ 13%] tests/pyzabbix/test_enums.py::test_apistrenum[HostgroupType] PASSED [ 13%] tests/pyzabbix/test_enums.py::test_apistrenum[InterfaceConnectionMode] PASSED [ 14%]
    tests/pyzabbix/test_enums.py::test_apistrenum[InterfaceType] PASSED [ 14%] tests/pyzabbix/test_enums.py::test_apistrenum[InventoryMode] PASSED [ 14%] tests/pyzabbix/test_enums.py::test_apistrenum[ItemType] PASSED [ 15%] tests/pyzabbix/test_enums.py::test_apistrenum[MacroType] PASSED [ 15%] tests/pyzabbix/test_enums.py::test_apistrenum[MaintenanceStatus] PASSED [ 15%] tests/pyzabbix/test_enums.py::test_apistrenum[MaintenanceType] PASSED [ 15%] tests/pyzabbix/test_enums.py::test_apistrenum[MaintenanceWeekType] PASSED [ 16%]
    tests/pyzabbix/test_enums.py::test_apistrenum[MonitoredBy] PASSED [ 16%] tests/pyzabbix/test_enums.py::test_apistrenum[MonitoringStatus] PASSED [ 16%] tests/pyzabbix/test_enums.py::test_apistrenum[ProxyCompatibility] PASSED [ 17%] tests/pyzabbix/test_enums.py::test_apistrenum[ProxyGroupState] PASSED [ 17%] tests/pyzabbix/test_enums.py::test_apistrenum[ProxyMode] PASSED [ 17%] tests/pyzabbix/test_enums.py::test_apistrenum[ProxyModePre70] PASSED [ 18%] tests/pyzabbix/test_enums.py::test_apistrenum[SNMPSecurityLevel] PASSED [ 18%] tests/pyzabbix/test_enums.py::test_apistrenum[SNMPAuthProtocol] PASSED [ 18%] tests/pyzabbix/test_enums.py::test_apistrenum[SNMPPrivProtocol] PASSED [ 19%] tests/pyzabbix/test_enums.py::test_apistrenum[TriggerPriority] PASSED [ 19%] tests/pyzabbix/test_enums.py::test_apistrenum[UsergroupPermission] PASSED [ 19%]
    tests/pyzabbix/test_enums.py::test_apistrenum[UserRole] PASSED [ 20%] tests/pyzabbix/test_enums.py::test_apistrenum[ValueType] PASSED [ 20%] tests/pyzabbix/test_enums.py::test_interfacetype PASSED [ 20%] tests/pyzabbix/test_enums.py::test_exportformat PASSED [ 21%] tests/pyzabbix/test_types.py::test_model_dump[model0] PASSED [ 21%] tests/pyzabbix/test_types.py::test_model_dump[model1] PASSED [ 21%] tests/pyzabbix/test_types.py::test_model_dump[model2] PASSED [ 22%] tests/pyzabbix/test_types.py::test_model_dump[model3] PASSED [ 22%] tests/pyzabbix/test_types.py::test_model_dump[model4] PASSED [ 22%] tests/pyzabbix/test_types.py::test_model_dump[model5] PASSED [ 23%] tests/pyzabbix/test_types.py::test_model_dump[model6] PASSED [ 23%] tests/pyzabbix/test_types.py::test_model_dump[model7] PASSED [ 23%] tests/pyzabbix/test_types.py::test_model_dump[model8] PASSED [ 23%] tests/pyzabbix/test_types.py::test_model_dump[model9] PASSED [ 24%] tests/pyzabbix/test_types.py::test_model_dump[model10] PASSED [ 24%] tests/pyzabbix/test_types.py::test_model_dump[model11] PASSED [ 24%] tests/pyzabbix/test_types.py::test_model_dump[model12] PASSED [ 25%] tests/pyzabbix/test_types.py::test_model_dump[model13] PASSED [ 25%] tests/pyzabbix/test_types.py::test_model_dump[model14] PASSED [ 25%] tests/pyzabbix/test_types.py::test_model_dump[model15] PASSED [ 26%] tests/pyzabbix/test_types.py::test_model_dump[model16] PASSED [ 26%] tests/pyzabbix/test_types.py::test_model_dump[model17] PASSED [ 26%] tests/pyzabbix/test_types.py::test_model_dump[model18] PASSED [ 27%] tests/pyzabbix/test_types.py::test_model_dump[model19] PASSED [ 27%] tests/pyzabbix/test_types.py::test_model_dump[model20] PASSED [ 27%] tests/pyzabbix/test_types.py::test_model_dump[model21] PASSED [ 28%] tests/pyzabbix/test_types.py::test_model_dump[model22] PASSED [ 28%] tests/pyzabbix/test_types.py::test_model_dump[model23] PASSED [ 28%] tests/pyzabbix/test_types.py::test_model_dump[model24] PASSED [ 29%] tests/pyzabbix/test_types.py::test_model_dump[model25] PASSED [ 29%] tests/pyzabbix/test_types.py::test_model_dump[model26] PASSED [ 29%] tests/pyzabbix/test_types.py::test_model_dump[model27] PASSED [ 30%] tests/test_app.py::test_get_plugin_config PASSED [ 30%] tests/test_auth.py::test_get_auth_file_paths_defafult PASSED [ 30%] tests/test_auth.py::test_get_auth_file_paths_override PASSED [ 30%] tests/test_auth.py::test_get_auth_token_file_paths_defafult PASSED [ 31%] tests/test_auth.py::test_get_auth_token_file_paths_override PASSED [ 31%] tests/test_auth.py::test_authenticator_login_with_any[expect_auth_token_env] PASSED [ 31%]
    tests/test_auth.py::test_authenticator_login_with_any[expect_auth_token_config] PASSED [ 32%]
    tests/test_auth.py::test_authenticator_login_with_any[expect_session_file] PASSED [ 32%]
    tests/test_auth.py::test_authenticator_login_with_any[expect_password_env] PASSED [ 32%]
    tests/test_auth.py::test_authenticator_login_with_any[expect_password_config] PASSED [ 33%]
    tests/test_auth.py::test_authenticator_login_with_any[expect_password_file] PASSED [ 33%]
    tests/test_auth.py::test_authenticator_login_with_any[expect_legacy_auth_token_file] PASSED [ 33%]
    tests/test_auth.py::test_authenticator_login_with_any[expect_password_prompt] PASSED [ 34%]
    tests/test_auth.py::test_table_renderable_mock_reverted PASSED [ 34%] tests/test_auth.py::test_sessionid_list_set_session PASSED [ 34%] tests/test_auth.py::test_sessionid_list_get_session[initial_sessions0-user1-None] PASSED [ 35%]
    tests/test_auth.py::test_sessionid_list_get_session[initial_sessions1-user1-abc] PASSED [ 35%]
    tests/test_auth.py::test_sessionid_list_get_session[initial_sessions2-user2-None] PASSED [ 35%]
    tests/test_auth.py::test_sessionid_file_get_user_session[https://zabbix1.com-user1-None] PASSED [ 36%]
    tests/test_auth.py::test_sessionid_file_get_user_session[https://zabbix2.com-user2-xyz789] PASSED [ 36%]
    tests/test_auth.py::test_sessionid_file_set_user_session[https://new.com-user1-session1-expected_urls0] PASSED [ 36%]
    tests/test_auth.py::test_sessionid_file_set_user_session[https://existing.com-user2-session2-expected_urls1] PASSED [ 37%]
    tests/test_auth.py::test_sessionid_file_load[True-True-False-False] PASSED [ 37%]
    tests/test_auth.py::test_sessionid_file_load[False-True-False-True] PASSED [ 37%]
    tests/test_auth.py::test_sessionid_file_load[True-False-False-True] PASSED [ 38%]
    tests/test_auth.py::test_sessionid_file_load[True-False-True-False] PASSED [ 38%]
    tests/test_auth.py::test_sessionid_file_save[True-False-True-False] PASSED [ 38%]
    tests/test_auth.py::test_sessionid_file_save[False-False-True-True] PASSED [ 38%]
    tests/test_auth.py::test_sessionid_file_save[True-False-False-False] PASSED [ 39%]
    tests/test_auth.py::test_sessionid_file_save[True-True-False-False] PASSED [ 39%]
    tests/test_bulk.py::test_bulk_command_from_line[simple] PASSED [ 39%] tests/test_bulk.py::test_bulk_command_from_line[Legacy positional args] PASSED [ 40%]
    tests/test_bulk.py::test_bulk_command_from_line[args and kwargs] PASSED [ 40%] tests/test_bulk.py::test_bulk_command_from_line[kwarg between args] PASSED [ 40%]
    tests/test_bulk.py::test_bulk_command_from_line[Trailing comment] PASSED [ 41%] tests/test_bulk.py::test_bulk_command_from_line[fails (empty)] XFAIL [ 41%] tests/test_bulk.py::test_bulk_command_from_line[fails (comment symbol)] XFAIL [ 41%]
    tests/test_bulk.py::test_bulk_command_from_line[fails (commented out line)] XFAIL [ 42%]
    tests/test_bulk.py::test_load_command_file PASSED [ 42%] tests/test_bulk.py::test_bulk_runner_mode_invalid_line_strict[strict] PASSED [ 42%]
    tests/test_bulk.py::test_bulk_runner_mode_invalid_line_strict[continue] PASSED [ 43%]
    tests/test_bulk.py::test_bulk_runner_mode_invalid_line_skip PASSED [ 43%] tests/test_bulk.py::test_load_command_file_not_found PASSED [ 43%] tests/test_bulk.py::test_bulk_runner_exit_code_handling[strict] PASSED [ 44%] tests/test_bulk.py::test_bulk_runner_exit_code_handling[continue] PASSED [ 44%] tests/test_bulk.py::test_bulk_commands_complex[strict] PASSED [ 44%] tests/test_bulk.py::test_bulk_commands_complex[continue] PASSED [ 45%] tests/test_bulk.py::test_bulk_commands_complex[skip] PASSED [ 45%] tests/test_compat.py::test_packaging_version_release_sanity PASSED [ 45%] tests/test_compat.py::test_host_proxyid[version0-proxyid] PASSED [ 46%] tests/test_compat.py::test_host_proxyid[version1-proxy_hostid] PASSED [ 46%] tests/test_compat.py::test_host_proxyid[version2-proxy_hostid] PASSED [ 46%] tests/test_compat.py::test_host_proxyid[version3-proxy_hostid] PASSED [ 46%] tests/test_compat.py::test_host_proxyid[version4-proxy_hostid] PASSED [ 47%] tests/test_compat.py::test_host_proxyid[version5-proxy_hostid] PASSED [ 47%] tests/test_compat.py::test_login_user_name[version0-username] PASSED [ 47%] tests/test_compat.py::test_login_user_name[version1-username] PASSED [ 48%] tests/test_compat.py::test_login_user_name[version2-username] PASSED [ 48%] tests/test_compat.py::test_login_user_name[version3-username] PASSED [ 48%] tests/test_compat.py::test_login_user_name[version4-username] PASSED [ 49%] tests/test_compat.py::test_login_user_name[version5-username] PASSED [ 49%] tests/test_compat.py::test_login_user_name[version6-user] PASSED [ 49%] tests/test_compat.py::test_login_user_name[version7-user] PASSED [ 50%] tests/test_compat.py::test_login_user_name[version8-user] PASSED [ 50%] tests/test_compat.py::test_login_user_name[version9-user] PASSED [ 50%] tests/test_compat.py::test_login_user_name[version10-user] PASSED [ 51%] tests/test_compat.py::test_login_user_name[version11-user] PASSED [ 51%] tests/test_compat.py::test_proxy_name[version0-name] PASSED [ 51%] tests/test_compat.py::test_proxy_name[version1-host] PASSED [ 52%] tests/test_compat.py::test_proxy_name[version2-host] PASSED [ 52%] tests/test_compat.py::test_proxy_name[version3-host] PASSED [ 52%] tests/test_compat.py::test_proxy_name[version4-host] PASSED [ 53%] tests/test_compat.py::test_proxy_name[version5-host] PASSED [ 53%] tests/test_compat.py::test_user_name[version0-username] PASSED [ 53%] tests/test_compat.py::test_user_name[version1-username] PASSED [ 53%] tests/test_compat.py::test_user_name[version2-username] PASSED [ 54%] tests/test_compat.py::test_user_name[version3-alias] PASSED [ 54%] tests/test_compat.py::test_user_name[version4-alias] PASSED [ 54%] tests/test_compat.py::test_user_name[version5-alias] PASSED [ 55%] tests/test_compat.py::test_user_name[version6-alias] PASSED [ 55%] tests/test_compat.py::test_user_name[version7-alias] PASSED [ 55%] tests/test_config.py::test_config_default PASSED [ 56%] tests/test_config.py::test_sample_config PASSED [ 56%] tests/test_config.py::test_load_config_file_legacy[True] PASSED [ 56%] tests/test_config.py::test_load_config_file_legacy[False] PASSED [ 57%] tests/test_config.py::test_load_config_file[True-True] PASSED [ 57%] tests/test_config.py::test_load_config_file[True-False] PASSED [ 57%] tests/test_config.py::test_load_config_file[False-True] PASSED [ 58%] tests/test_config.py::test_load_config_file[False-False] PASSED [ 58%] tests/test_config.py::test_plugins_config_get PASSED [ 58%] tests/test_config.py::test_plugin_config_get PASSED [ 59%] tests/test_config.py::test_config_get_with_annotations PASSED [ 59%] tests/test_config.py::test_plugin_config_set PASSED [ 59%] tests/test_config.py::test_secret_mode_from_context[context0-hide] PASSED [ 60%]
    tests/test_config.py::test_secret_mode_from_context[context1-masked] PASSED [ 60%]
    tests/test_config.py::test_secret_mode_from_context[context2-plain] PASSED [ 60%]
    tests/test_config.py::test_secret_mode_from_context[context3-hide] PASSED [ 61%]
    tests/test_config.py::test_secret_mode_from_context[context4-masked] PASSED [ 61%]
    tests/test_config.py::test_secret_mode_from_context[context5-plain] PASSED [ 61%]
    tests/test_config.py::test_secret_mode_from_context[context6-masked] PASSED [ 61%]
    tests/test_config.py::test_secret_mode_from_context[None-masked] PASSED [ 62%] tests/test_config.py::test_secret_mode_from_context[<lambda>-masked] PASSED [ 62%]
    tests/test_config.py::test_secret_mode_from_context[context9-plain] PASSED [ 62%]
    tests/test_config.py::test_secret_mode_from_context[context10-masked] PASSED [ 63%]
    tests/test_config.py::test_secret_mode_default PASSED [ 63%] tests/test_config.py::test_config_dump_to_file_masked PASSED [ 63%] tests/test_config.py::test_deprecated_field_warnings PASSED [ 64%] tests/test_config.py::test_get_deprecated_fields_set PASSED [ 64%] tests/test_config.py::test_get_deprecated_fields_deep_nesting PASSED [ 64%] tests/test_config.py::test_deprecated_fields_updated PASSED [ 65%] tests/test_config.py::test_get_deprecated_fields PASSED [ 65%] tests/test_config.py::test_load_deprecated_config PASSED [ 65%] tests/test_config.py::test_load_deprecated_config_with_new_and_old_options PASSED [ 66%]
    tests/test_config.py::test_load_deprecated_config_legacy PASSED [ 66%] tests/test_console.py::test_get_extra_dict[inp0-expect0] PASSED [ 66%] tests/test_console.py::test_get_extra_dict[inp1-expect1] PASSED [ 67%] tests/test_console.py::test_get_extra_dict[inp2-expect2] PASSED [ 67%] tests/test_console.py::test_get_extra_dict[inp3-expect3] PASSED [ 67%] tests/test_console.py::test_get_extra_dict_reserved_keys PASSED [ 68%] tests/test_console.py::test_debug_kv PASSED [ 68%] tests/test_console.py::test_debug PASSED [ 68%] tests/test_console.py::test_info PASSED [ 69%] tests/test_console.py::test_success PASSED [ 69%] tests/test_console.py::test_warning PASSED [ 69%] tests/test_console.py::test_error PASSED [ 69%] tests/test_console.py::test_exit_err_table PASSED [ 70%] tests/test_console.py::test_exit_err_json PASSED [ 70%] tests/test_console.py::test_exit_err_json_with_errors PASSED [ 70%] tests/test_console.py::test_exit_err_json_with_zabbix_api_request_error PASSED [ 71%]
    tests/test_exceptions.py::test_get_cause_args[TypeError] PASSED [ 71%] tests/test_exceptions.py::test_get_cause_args[ValueError] PASSED [ 71%] tests/test_exceptions.py::test_get_cause_args[ZabbixCLIError] PASSED [ 72%] tests/test_exceptions.py::test_get_cause_args[ZabbixAPIException] PASSED [ 72%] tests/test_exceptions.py::test_get_cause_args_no_cause PASSED [ 72%] tests/test_exceptions.py::test_get_cause_args_with_api_response PASSED [ 73%] tests/test_exceptions.py::test_get_cause_args_with_api_response_with_data PASSED [ 73%]
    tests/test_logging.py::TestSafeFormatting::test_safe_formatter PASSED [ 73%] tests/test_logging.py::TestSafeFormatting::test_safe_record PASSED [ 74%] tests/test_logging.py::TestSafeFormatting::test_safe_record_attr PASSED [ 74%] tests/test_logging.py::TestSafeFormatting::test_safe_record_basic_message PASSED [ 74%]
    tests/test_logging.py::TestSafeFormatting::test_safe_record_formatted_message PASSED [ 75%]
    tests/test_logging.py::TestSafeFormatting::test_safe_record_missing_dict PASSED [ 75%]
    tests/test_models.py::test_table_renderable_metakey_header[None is default] PASSED [ 75%]
    tests/test_models.py::test_table_renderable_metakey_header[Empty string is default] PASSED [ 76%]
    tests/test_models.py::test_table_renderable_metakey_header[Foo Header-Foo Header] PASSED [ 76%]
    tests/test_models.py::test_table_renderable_metakey_join_char[content0-,-expect0] PASSED [ 76%]
    tests/test_models.py::test_table_renderable_metakey_join_char[content1-|-expect1] PASSED [ 76%]
    tests/test_models.py::test_table_renderable_metakey_join_char[content2- -expect2] PASSED [ 77%]
    tests/test_models.py::test_table_renderable_metakey_join_char[content3--expect3] PASSED [ 77%]
    tests/test_models.py::test_table_renderable_metakey_join_char[content4-,-expect4] PASSED [ 77%]
    tests/test_models.py::test_table_renderable_metakey_join_char[content5-|-expect5] PASSED [ 78%]
    tests/test_models.py::test_table_renderable_metakey_join_char[content6- -expect6] PASSED [ 78%]
    tests/test_models.py::test_table_renderable_metakey_join_char[content7--expect7] PASSED [ 78%]
    tests/test_models.py::test_all_metakeys PASSED [ 79%] tests/test_models.py::test_rows_with_unknown_base_model PASSED [ 79%] tests/test_patches.py::test_typer_patches_idempotent PASSED [ 79%] tests/test_patches.py::test_patch__get_rich_console PASSED [ 80%] tests/test_patches.py::test_patch_generate_enum_convertor PASSED [ 80%] tests/test_patches.py::test_patch_get_click_type FAILED [ 80%] tests/test_patches.py::test_patch_get_click_type ERROR [ 80%] tests/test_patches.py::test_patch_help_text_spacing PASSED [ 81%] tests/test_patches.py::test_patch_help_text_style PASSED [ 81%] tests/test_prompts.py::test_is_headless_set_true[1-CI] PASSED [ 81%] tests/test_prompts.py::test_is_headless_set_true[1-ZABBIX_CLI_HEADLESS] PASSED [ 82%]
    tests/test_prompts.py::test_is_headless_set_true[true-CI] PASSED [ 82%] tests/test_prompts.py::test_is_headless_set_true[true-ZABBIX_CLI_HEADLESS] PASSED [ 82%]
    tests/test_prompts.py::test_is_headless_set_false[0-CI] PASSED [ 83%] tests/test_prompts.py::test_is_headless_set_false[0-ZABBIX_CLI_HEADLESS] PASSED [ 83%]
    tests/test_prompts.py::test_is_headless_set_false[false-CI] PASSED [ 83%] tests/test_prompts.py::test_is_headless_set_false[false-ZABBIX_CLI_HEADLESS] PASSED [ 84%]
    tests/test_prompts.py::test_is_headless_set_false[-CI] PASSED [ 84%] tests/test_prompts.py::test_is_headless_set_false[-ZABBIX_CLI_HEADLESS] PASSED [ 84%]
    tests/test_prompts.py::test_is_headless_set_false[None-CI] PASSED [ 84%] tests/test_prompts.py::test_is_headless_set_false[None-ZABBIX_CLI_HEADLESS] PASSED [ 85%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-noninteractive-True] PASSED [ 85%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-teletype-False] PASSED [ 85%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-readline-False] PASSED [ 86%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-dialog-False] PASSED [ 86%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-gtk-False] PASSED [ 86%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-text-False] PASSED [ 87%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-anything-False] PASSED [ 87%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-None-False] PASSED [ 87%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND--False] PASSED [ 88%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-0-False] PASSED [ 88%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-false-False] PASSED [ 88%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-1-False] PASSED [ 89%]
    tests/test_prompts.py::test_is_headless_map[DEBIAN_FRONTEND-true-False] PASSED [ 89%]
    tests/test_style.py::test_color_call PASSED [ 89%] tests/test_update.py::test_pyinstaller_updater_get_url[linux-x86_64-1.2.3-1.2.3-linux-x86_64] PASSED [ 90%]
    tests/test_update.py::test_pyinstaller_updater_get_url[linux-arm64-1.2.3-1.2.3-linux-arm64] PASSED [ 90%]
    tests/test_update.py::test_pyinstaller_updater_get_url[linux-armv7l-1.2.3-1.2.3-linux-armv7l] PASSED [ 90%]
    tests/test_update.py::test_pyinstaller_updater_get_url[darwin-x86_64-1.2.3-1.2.3-macos-x86_64] PASSED [ 91%]
    tests/test_update.py::test_pyinstaller_updater_get_url[darwin-arm64-1.2.3-1.2.3-macos-arm64] PASSED [ 91%]
    tests/test_update.py::test_pyinstaller_updater_get_url[win32-x86_64-1.2.3-1.2.3-win-x86_64.exe] PASSED [ 91%]
    tests/test_utils.py::test_convert_duration[1 hour-expect0] PASSED [ 92%] tests/test_utils.py::test_convert_duration[1 hour 30 minutes-expect1] PASSED [ 92%]
    tests/test_utils.py::test_convert_duration[1 hour 30 minutes 30 seconds-expect2] PASSED [ 92%]
    tests/test_utils.py::test_convert_duration[1 day 1 hour 30 minutes 30 seconds-expect3] PASSED [ 92%]
    tests/test_utils.py::test_convert_duration[2 hours 30 seconds-expect4] PASSED [ 93%]
    tests/test_utils.py::test_convert_duration[2h30s-expect5] PASSED [ 93%] tests/test_utils.py::test_convert_duration[2 hours 30 minutes 30 seconds-expect6] PASSED [ 93%]
    tests/test_utils.py::test_convert_duration[2 hour 30 minute 30 second-expect7] PASSED [ 94%]
    tests/test_utils.py::test_convert_duration[2h30m30s-expect8] PASSED [ 94%] tests/test_utils.py::test_convert_duration[9030s-expect9] PASSED [ 94%] tests/test_utils.py::test_convert_duration[9030-expect10] PASSED [ 95%] tests/test_utils.py::test_convert_duration[0-expect11] PASSED [ 95%] tests/test_utils.py::test_convert_duration[0d0h0m0s-expect12] PASSED [ 95%] tests/test_utils.py::test_convert_timestamp_interval[Legacy format] PASSED [ 96%]
    tests/test_utils.py::test_convert_timestamp_interval[ISO w/o timezone] PASSED [ 96%]
    tests/test_utils.py::test_convert_timestamp_interval[ISO w/o timezone (space-separated)] PASSED [ 96%]
    tests/test_utils.py::test_convert_timestamp[Legacy] PASSED [ 97%] tests/test_utils.py::test_convert_timestamp[ISO w/o timezone] PASSED [ 97%] tests/test_utils.py::test_convert_timestamp[ISO w/o timezone (space-separated)] PASSED [ 97%]
    tests/test_utils.py::test_convert_time_to_interval[Range: Legacy] PASSED [ 98%] tests/test_utils.py::test_convert_time_to_interval[Range: ISO w/o timezone] PASSED [ 98%]
    tests/test_utils.py::test_convert_time_to_interval[Range: ISO w/o timezone (space-separated)] PASSED [ 98%]
    tests/test_utils.py::test_convert_time_to_interval[Duration: 1h (long form)] PASSED [ 99%]
    tests/test_utils.py::test_convert_time_to_interval[Duration: 1d1h30m30s (long form)] PASSED [ 99%]
    tests/test_utils.py::test_convert_time_to_interval[Duration: 1h (short form)] PASSED [ 99%]
    tests/test_utils.py::test_convert_time_to_interval[Duration: 1d1h30m30s (short form)] PASSED [100%]

    ==================================== ERRORS ====================================
    ________________ ERROR at teardown of test_patch_get_click_type ________________
    some snapshots in this test have incorrect values. =================================== FAILURES ===================================
    ________________________ test_command_param_in_command _________________________

    app = <zabbix_cli.app.app.StatefulApp object at 0x7f818ae578c0>
    capsys = <_pytest.capture.CaptureFixture object at 0x7f8189be42f0>

    def test_command_param_in_command(
    app: StatefulApp, capsys: pytest.CaptureFixture[str]
    ) -> None:
    @app.command(name="help-command")
    def help_command( # type: ignore
    ctx: typer.Context,
    cmd_arg: click.Command = typer.Argument(
    ..., help="The command to get help for."
    ),
    ) -> str:
    return cmd_arg.get_help(ctx)

    @app.command(name="other-command", help="Help for the other command.")
    def other_command(ctx: typer.Context) -> None: # type: ignore
    pass

    cmd = typer.main.get_command(app)

    with cmd.make_context(None, ["help-command", "other-command"]) as new_ctx:
    new_ctx.info_name = "other-command"
    cmd.invoke(new_ctx)

    tests/commands/test_common.py:60:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/click/core.py:1817: in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3/dist-packages/click/core.py:1213: in invoke
    return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3/dist-packages/click/core.py:787: in invoke
    return callback(*args, **kwargs) /usr/lib/python3/dist-packages/typer/main.py:698: in wrapper
    return callback(**use_params)
    tests/commands/test_common.py:50: in help_command
    return cmd_arg.get_help(ctx) /usr/lib/python3/dist-packages/click/core.py:1050: in get_help
    self.format_help(ctx, formatter) /usr/lib/python3/dist-packages/typer/core.py:694: in format_help
    return rich_utils.rich_format_help( /usr/lib/python3/dist-packages/typer/rich_utils.py:610: in rich_format_help
    _print_options_panel(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    def _print_options_panel(
    *,
    name: str,
    params: Union[List[click.Option], List[click.Argument]],
    ctx: click.Context,
    markup_mode: MarkupMode,
    console: Console,
    ) -> None:
    options_rows: List[List[RenderableType]] = []
    required_rows: List[Union[str, Text]] = []
    for param in params:
    # Short and long form
    opt_long_strs = []
    opt_short_strs = []
    secondary_opt_long_strs = []
    secondary_opt_short_strs = []
    for opt_str in param.opts:
    if "--" in opt_str:
    opt_long_strs.append(opt_str)
    else:
    opt_short_strs.append(opt_str)
    for opt_str in param.secondary_opts:
    if "--" in opt_str:
    secondary_opt_long_strs.append(opt_str)
    else:
    secondary_opt_short_strs.append(opt_str)

    # Column for a metavar, if we have one
    metavar = Text(style=STYLE_METAVAR, overflow="fold")
    metavar_str = param.make_metavar()
    E TypeError: Parameter.make_metavar() missing 1 required positional argument: 'ctx'

    /usr/lib/python3/dist-packages/typer/rich_utils.py:369: TypeError ----------------------------- Captured stdout call -----------------------------

    Usage: other-command help-command [OPTIONS]

    Help for the other command.

    __________________________ test_patch_get_click_type ___________________________

    def test_patch_get_click_type() -> None:
    original = copy.deepcopy(typer.main.get_click_type)
    typ.patch_get_click_type()
    new = typer.main.get_click_type

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jakob Haufe@21:1/5 to All on Sun Mar 23 16:30:01 2025
    Hi,

    I just uploaded 3.5.1-1 to unstable. Since I could not reproduce this with 3.5.0 nor 3.5.1, can you please re-check on your side and update this bug accordingly?

    Thanks,
    sur5r

    --
    ceterum censeo microsoftem esse delendam.

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

    iQIzBAEBCgAdFiEEe/X2rDZDH11A3BN6TPKyGPVNrj0FAmfgJJEACgkQTPKyGPVN rj2IPhAAsEus0b0bRzABeJLJqI3HIYFTKG+uqFL945xYMFH/twCzIwrYgmJtTokf O90QLEckdiazv1sJVnlstpDE3iOa2DuN2B59osmP3V9bJ5EYfdyoLU3DGIaCPnkT laOblmvNsEtLumxUVaOZ/flnkmNTCvNVqA1TrNe1xcV1PS0irixCXi4vyMqCxEAq x1BdPzuhjG4BlEp6rGeUVFhrU9hcmybG9fKVWnGr9qsJiPFZ4t4VjlU/SKTre3Zq M/ohggrkyqarTwSckMzqp9efcno2dwAIzgdMQFx3zNoQhJJMeXdUnwbk77DNv4Wo 4On0F7vRpyJNY6IWSCJoG7pDvxMM4i9z0mBWLahnjyG7FnFxnZssG/ftitljCxcW QybPBdxW8w/5cRHZ7iMseg390bU1jWlW/oanykg1iE8y7rNQe/F2dAy/X7Kgp/VU KflLSgwTDt6xxxLJom3l6Tz0f4tqZ8iV1XEFltP8QSJsJvsBP4rvbSqsp89S7Tu0 s72t0nFuk5+hoiP0/dAVCFOvj2OYJFGQAjRMNxb/eDDYWt4WTAK5CYB1Eqjpk+b2 BgrvFRrDyTalVDLdJ3JGYpTWizoKoE/2qhmB56KJXNf9tFpWsZU2AgdnYTRQiLdL MJWATny6FRoFfVmDwMjW2i7gRfCjdpm1S9Qpl0h3kj38uVkdTok=
    =av5D
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Santiago Vila@21:1/5 to All on Sun Mar 23 23:10:01 2025
    severity 1098636 normal
    thanks

    I'm downgrading because it works for me in the same environment
    where it used to fail (tried several times).

    (Not closing because I'm not 100% sure that the problem went away,
    see the build log I sent in the previous email).

    Thanks.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)