• Bug#1099278: python-uvicorn: FTBFS: E assert '{"example":123}' == '{"ex

    From Santiago Vila@21:1/5 to All on Sat Mar 1 22:10:04 2025
    Package: src:python-uvicorn
    Version: 0.32.0-2
    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 --with mkdocs,python3 --buildsystem=pybuild
    dh_auto_clean -O--buildsystem=pybuild
    dh_autoreconf_clean -O--buildsystem=pybuild
    dh_clean -O--buildsystem=pybuild
    debian/rules execute_after_dh_clean
    make[1]: Entering directory '/<<PKGBUILDDIR>>'
    rm -rf /<<PKGBUILDDIR>>/html
    make[1]: Leaving directory '/<<PKGBUILDDIR>>'
    debian/rules binary
    dh binary --with mkdocs,python3 --buildsystem=pybuild
    dh_update_autotools_config -O--buildsystem=pybuild
    dh_autoreconf -O--buildsystem=pybuild
    dh_auto_configure -O--buildsystem=pybuild

    [... snipped ...]

    tests/supervisors/test_multiprocess.py::test_multiprocess_health_check INFO: Started parent process [6369]
    INFO: Received SIGINT, exiting.
    INFO: Terminated child process [6423]
    INFO: Terminated child process [6425]
    INFO: Waiting for child process [6423]
    INFO: Waiting for child process [6425]
    INFO: Stopping parent process [6369]
    INFO: Waiting for child process [6424]
    INFO: Child process [6424] died
    INFO: Waiting for child process [6435]
    INFO: Received SIGINT, exiting.
    INFO: Terminated child process [6435]
    INFO: Terminated child process [6426]
    INFO: Waiting for child process [6435]
    INFO: Waiting for child process [6426]
    INFO: Stopping parent process [6369]
    INFO: Waiting for child process [6426]
    PASSED
    tests/supervisors/test_multiprocess.py::test_multiprocess_sigterm INFO: Started parent process [6369]
    INFO: Waiting for child process [6462]
    INFO: Received SIGTERM, exiting.
    INFO: Terminated child process [6462]
    INFO: Terminated child process [6463]
    INFO: Waiting for child process [6462]
    INFO: Waiting for child process [6463]
    PASSEDINFO: Waiting for child process [6463]
    INFO: Stopping parent process [6369]

    tests/supervisors/test_multiprocess.py::test_multiprocess_sigbreak SKIPPED tests/supervisors/test_multiprocess.py::test_multiprocess_sighup INFO: Started parent process [6369]
    INFO: Received SIGHUP, restarting processes.
    INFO: Terminated child process [6471]
    INFO: Waiting for child process [6471]
    INFO: Terminated child process [6472]
    INFO: Waiting for child process [6472]
    INFO: Waiting for child process [6479]
    INFO: Received SIGINT, exiting.
    INFO: Terminated child process [6479]
    INFO: Terminated child process [6480]
    INFO: Waiting for child process [6479]
    INFO: Waiting for child process [6480]
    PASSED
    tests/supervisors/test_multiprocess.py::test_multiprocess_sigttin INFO: Waiting for child process [6480]
    INFO: Stopping parent process [6369]
    INFO: Started parent process [6369]
    INFO: Received SIGTTIN, increasing the number of processes.
    INFO: Waiting for child process [6488]
    INFO: Received SIGINT, exiting.
    INFO: Terminated child process [6488]
    INFO: Terminated child process [6489]
    INFO: Terminated child process [6496]
    INFO: Waiting for child process [6488]
    INFO: Waiting for child process [6489]
    INFO: Waiting for child process [6489]
    INFO: Waiting for child process [6496]
    PASSED
    tests/supervisors/test_multiprocess.py::test_multiprocess_sigttou INFO: Waiting for child process [6496]
    INFO: Stopping parent process [6369]
    INFO: Started parent process [6369]
    INFO: Received SIGTTOU, decreasing number of processes.
    INFO: Terminated child process [6500]
    INFO: Waiting for child process [6500]
    INFO: Received SIGTTOU, decreasing number of processes.
    INFO: Already reached one process, cannot decrease the number of processes anymore.
    INFO: Waiting for child process [6499]
    INFO: Received SIGINT, exiting.
    INFO: Terminated child process [6499]
    INFO: Waiting for child process [6499]
    INFO: Stopping parent process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_reloader_should_initialize[StatReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using StatReload
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_reloader_should_initialize[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_reloader_should_initialize[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_reload_when_python_file_is_changed[StatReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using StatReload
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_reload_when_python_file_is_changed[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_reload_when_python_file_is_changed[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_reload_when_python_file_in_subdir_is_changed[StatReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using StatReload
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_reload_when_python_file_in_subdir_is_changed[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_should_reload_when_python_file_in_subdir_is_changed[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_python_file_in_excluded_subdir_is_changed[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_python_file_in_excluded_subdir_is_changed[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_reload_when_pattern_matched_file_is_changed[StatReload-False] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    WARNING: --reload-include and --reload-exclude have no effect unless watchfiles is installed.
    INFO: Started reloader process [6369] using StatReload
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_reload_when_pattern_matched_file_is_changed[WatchFilesReload-True] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_exclude_pattern_match_file_is_changed[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/.dotted_dir', '
    /tmp/pytest-of-buildd/pytest-0/reload_directory0/app', '/tmp/pytest-of-buildd/pytest-0/reload_directory0/app_first', '/tmp/pytest-of-buildd/pytest-0/reload_directory0/app_second', '/tmp/pytest-of-buildd/pytest-0/reload_directory0/app_third', '/tmp/pytest-
    of-buildd/pytest-0/reload_directory0/ext']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_exclude_pattern_match_file_is_changed[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_dot_file_is_changed[StatReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using StatReload
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_dot_file_is_changed[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_dot_file_is_changed[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_reload_when_directories_have_same_prefix[StatReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app', '/tmp/pytest-of-buildd/
    pytest-0/reload_directory0/app_first']
    INFO: Started reloader process [6369] using StatReload
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_reload_when_directories_have_same_prefix[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_should_reload_when_directories_have_same_prefix[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app', '/tmp/pytest-of-
    buildd/pytest-0/reload_directory0/app_first']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_only_subdirectory_is_watched[StatReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app']
    INFO: Started reloader process [6369] using StatReload
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_only_subdirectory_is_watched[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_should_not_reload_when_only_subdirectory_is_watched[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_override_defaults[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_override_defaults[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_explicit_paths[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_explicit_paths[None] SKIPPED
    tests/supervisors/test_reload.py::TestBaseReload::test_watchfiles_no_changes[WatchFilesReload] INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    INFO: Started reloader process [6369] using WatchFiles
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_reload.py::TestBaseReload::test_should_detect_new_reload_dirs[None] SKIPPED
    tests/supervisors/test_reload.py::test_should_watch_one_dir_cwd INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app', '/tmp/pytest-of-buildd/pytest-0/reload_directory0/app_first']
    PASSED tests/supervisors/test_reload.py::test_should_watch_separate_dirs_outside_cwd INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app', '/tmp/pytest-of-buildd/pytest-0/reload_directory0/app_first']
    PASSED
    tests/supervisors/test_reload.py::test_display_path_relative PASSED tests/supervisors/test_reload.py::test_display_path_non_relative PASSED tests/supervisors/test_reload.py::test_base_reloader_run INFO: Will watch for changes in these directories: ['/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build']
    WARNING: None detected changes in '/tmp/pytest-of-buildd/pytest-0/test_base_reloader_run0/foobar.py'. Reloading...
    PASSED
    tests/supervisors/test_reload.py::test_base_reloader_should_exit INFO: Will watch for changes in these directories: ['/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build']
    PASSED tests/supervisors/test_reload.py::test_base_reloader_closes_sockets_on_shutdown INFO: Will watch for changes in these directories: ['/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build']
    INFO: Started reloader process [6369] using None
    INFO: Stopping reloader process [6369]
    PASSED tests/supervisors/test_signal.py::test_sigint_deny_request_after_triggered INFO: Started server process [6369]
    INFO: Waiting for application startup.
    INFO: ASGI 'lifespan' protocol appears unsupported.
    INFO: Application startup complete.
    INFO: Uvicorn running on http://127.0.0.1:35319 (Press CTRL+C to quit) INFO: Shutting down
    INFO: Finished server process [6369]
    INFO: Shutting down
    PASSED
    tests/test_auto_detection.py::test_loop_auto PASSED tests/test_auto_detection.py::test_http_auto PASSED tests/test_cli.py::test_cli_print_version PASSED tests/test_cli.py::test_cli_headers PASSED tests/test_cli.py::test_cli_call_server_run PASSED tests/test_cli.py::test_cli_call_change_reload_run PASSED tests/test_cli.py::test_cli_call_multiprocess_run PASSED tests/test_cli.py::test_cli_uds[True] PASSED tests/test_cli.py::test_cli_uds[False] PASSED tests/test_cli.py::test_cli_incomplete_app_parameter PASSED tests/test_cli.py::test_cli_event_size PASSED tests/test_cli.py::test_env_variables[h11] PASSED tests/test_cli.py::test_env_variables[httptools] PASSED tests/test_cli.py::test_ignore_environment_variable_when_set_on_cli PASSED tests/test_cli.py::test_app_dir PASSED tests/test_cli.py::test_set_app_via_environment_variable PASSED tests/test_config.py::test_config_should_reload_is_set[asgi_app-False] PASSED tests/test_config.py::test_config_should_reload_is_set[tests.test_config:asgi_app-True] INFO: Will watch for changes in these directories: ['/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build']
    PASSED
    tests/test_config.py::test_should_warn_on_invalid_reload_configuration WARNING: Current configuration will not reload as not all conditions are met, please refer to documentation.
    WARNING: Current configuration will not reload as not all conditions are met, please refer to documentation.
    PASSED
    tests/test_config.py::test_reload_dir_is_set INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app']
    INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app']
    PASSED
    tests/test_config.py::test_non_existant_reload_dir_is_not_set WARNING: Provided reload directories ['reload'] did not contain valid directories, watching current working directory.
    INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    PASSED
    tests/test_config.py::test_reload_subdir_removal INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    PASSED
    tests/test_config.py::test_reload_included_dir_is_added_to_reload_dirs INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app', '/tmp/pytest-of-buildd/pytest-0/reload_directory0/ext']
    PASSED
    tests/test_config.py::test_reload_dir_subdirectories_are_removed INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app', '/tmp/pytest-of-buildd/pytest-0/reload_directory0/ext']
    PASSED
    tests/test_config.py::test_reload_excluded_subdirectories_are_removed INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0']
    PASSED tests/test_config.py::test_reload_includes_exclude_dir_patterns_are_matched INFO: Will watch for changes in these directories: ['/tmp/pytest-of-buildd/pytest-0/reload_directory0/app_first/src', '/tmp/pytest-of-buildd/pytest-0/reload_directory0/app_
    second/src']
    PASSED
    tests/test_config.py::test_wsgi_app PASSED tests/test_config.py::test_proxy_headers PASSED tests/test_config.py::test_app_unimportable_module PASSED tests/test_config.py::test_app_unimportable_other ERROR: Error loading ASGI app. Attribute "app" not found in module "tests.test_config".
    PASSED
    tests/test_config.py::test_app_factory WARNING: ASGI app factory detected. Using it, but please consider setting the --factory flag explicitly.
    ERROR: Error loading ASGI app factory: asgi_app() missing 3 required positional arguments: 'scope', 'receive', and 'send'
    PASSED
    tests/test_config.py::test_concrete_http_class PASSED tests/test_config.py::test_ssl_config PASSED tests/test_config.py::test_ssl_config_combined PASSED tests/test_config.py::test_asgi_version[asgi_app-3.0] PASSED tests/test_config.py::test_asgi_version[asgi2_app-2.0] PASSED tests/test_config.py::test_log_config_default[use_colors_not_provided] PASSED tests/test_config.py::test_log_config_default[use_colors_invalid_value] PASSED tests/test_config.py::test_log_config_default[use_colors_enabled] PASSED tests/test_config.py::test_log_config_default[use_colors_disabled] PASSED tests/test_config.py::test_log_config_json PASSED tests/test_config.py::test_log_config_yaml[log_config.yml] PASSED tests/test_config.py::test_log_config_yaml[log_config.yaml] PASSED tests/test_config.py::test_log_config_file[log_config.ini] PASSED tests/test_config.py::test_log_config_file[config_file1] PASSED tests/test_config.py::test_log_config_file[config_file2] PASSED tests/test_config.py::test_env_file[0-127.0.0.1] INFO: Loading environment from '/tmp/pytest-of-buildd/pytest-0/test_env_file_0_127_0_0_1_0/.env'
    PASSED
    tests/test_config.py::test_env_file[0-127.0.0.2] INFO: Loading environment from '/tmp/pytest-of-buildd/pytest-0/test_env_file_0_127_0_0_2_0/.env'
    PASSED
    tests/test_config.py::test_env_file[1-127.0.0.1] INFO: Loading environment from '/tmp/pytest-of-buildd/pytest-0/test_env_file_1_127_0_0_1_0/.env'
    PASSED
    tests/test_config.py::test_env_file[1-127.0.0.2] INFO: Loading environment from '/tmp/pytest-of-buildd/pytest-0/test_env_file_1_127_0_0_2_0/.env'
    PASSED
    tests/test_config.py::test_config_access_log[access log enabled should have single handler] PASSED
    tests/test_config.py::test_config_access_log[access log disabled shouldn't have handlers] PASSED
    tests/test_config.py::test_config_log_level[5] PASSED tests/test_config.py::test_config_log_level[10] PASSED tests/test_config.py::test_config_log_level[20] PASSED tests/test_config.py::test_config_log_level[30] PASSED tests/test_config.py::test_config_log_level[40] PASSED tests/test_config.py::test_config_log_level[50] PASSED tests/test_config.py::test_config_log_effective_level[0-None] PASSED tests/test_config.py::test_config_log_effective_level[0-0] PASSED tests/test_config.py::test_config_log_effective_level[0-5] PASSED tests/test_config.py::test_config_log_effective_level[0-10] PASSED tests/test_config.py::test_config_log_effective_level[0-20] PASSED tests/test_config.py::test_config_log_effective_level[0-30] PASSED tests/test_config.py::test_config_log_effective_level[0-40] PASSED tests/test_config.py::test_config_log_effective_level[0-50] PASSED tests/test_config.py::test_config_log_effective_level[5-None] PASSED tests/test_config.py::test_config_log_effective_level[5-0] PASSED tests/test_config.py::test_config_log_effective_level[5-5] PASSED tests/test_config.py::test_config_log_effective_level[5-10] PASSED tests/test_config.py::test_config_log_effective_level[5-20] PASSED tests/test_config.py::test_config_log_effective_level[5-30] PASSED tests/test_config.py::test_config_log_effective_level[5-40] PASSED tests/test_config.py::test_config_log_effective_level[5-50] PASSED tests/test_config.py::test_config_log_effective_level[10-None] PASSED tests/test_config.py::test_config_log_effective_level[10-0] PASSED tests/test_config.py::test_config_log_effective_level[10-5] PASSED tests/test_config.py::test_config_log_effective_level[10-10] PASSED tests/test_config.py::test_config_log_effective_level[10-20] PASSED tests/test_config.py::test_config_log_effective_level[10-30] PASSED tests/test_config.py::test_config_log_effective_level[10-40] PASSED tests/test_config.py::test_config_log_effective_level[10-50] PASSED tests/test_config.py::test_config_log_effective_level[20-None] PASSED tests/test_config.py::test_config_log_effective_level[20-0] PASSED tests/test_config.py::test_config_log_effective_level[20-5] PASSED tests/test_config.py::test_config_log_effective_level[20-10] PASSED tests/test_config.py::test_config_log_effective_level[20-20] PASSED tests/test_config.py::test_config_log_effective_level[20-30] PASSED tests/test_config.py::test_config_log_effective_level[20-40] PASSED tests/test_config.py::test_config_log_effective_level[20-50] PASSED tests/test_config.py::test_config_log_effective_level[30-None] PASSED tests/test_config.py::test_config_log_effective_level[30-0] PASSED tests/test_config.py::test_config_log_effective_level[30-5] PASSED tests/test_config.py::test_config_log_effective_level[30-10] PASSED tests/test_config.py::test_config_log_effective_level[30-20] PASSED tests/test_config.py::test_config_log_effective_level[30-30] PASSED tests/test_config.py::test_config_log_effective_level[30-40] PASSED tests/test_config.py::test_config_log_effective_level[30-50] PASSED tests/test_config.py::test_config_log_effective_level[40-None] PASSED tests/test_config.py::test_config_log_effective_level[40-0] PASSED tests/test_config.py::test_config_log_effective_level[40-5] PASSED tests/test_config.py::test_config_log_effective_level[40-10] PASSED tests/test_config.py::test_config_log_effective_level[40-20] PASSED tests/test_config.py::test_config_log_effective_level[40-30] PASSED tests/test_config.py::test_config_log_effective_level[40-40] PASSED tests/test_config.py::test_config_log_effective_level[40-50] PASSED tests/test_config.py::test_config_log_effective_level[50-None] PASSED tests/test_config.py::test_config_log_effective_level[50-0] PASSED tests/test_config.py::test_config_log_effective_level[50-5] PASSED tests/test_config.py::test_config_log_effective_level[50-10] PASSED tests/test_config.py::test_config_log_effective_level[50-20] PASSED tests/test_config.py::test_config_log_effective_level[50-30] PASSED tests/test_config.py::test_config_log_effective_level[50-40] PASSED tests/test_config.py::test_config_log_effective_level[50-50] PASSED tests/test_config.py::test_ws_max_size PASSED tests/test_config.py::test_ws_max_queue PASSED tests/test_config.py::test_bind_unix_socket_works_with_reload_or_workers[--reload=True --workers=1] INFO: Uvicorn running on unix socket /tmp/pytest-of-buildd/pytest-0/p-o3jkxpxa-da6e00c483712f95ed248b7da6041c0f/my.sock (Press CTRL+C to quit)
    PASSED tests/test_config.py::test_bind_unix_socket_works_with_reload_or_workers[--reload=False --workers=2] INFO: Uvicorn running on unix socket /tmp/pytest-of-buildd/pytest-0/p-z7l5ied1-da6e00c483712f95ed248b7da6041c0f/my.sock (Press CTRL+C to quit)
    PASSED tests/test_config.py::test_bind_fd_works_with_reload_or_workers[--reload=True --workers=1] INFO: Uvicorn running on socket (Press CTRL+C to quit)
    PASSED tests/test_config.py::test_bind_fd_works_with_reload_or_workers[--reload=False --workers=2] INFO: Uvicorn running on socket (Press CTRL+C to quit)
    PASSED
    tests/test_config.py::test_config_use_subprocess[--reload=True --workers=1] PASSED
    tests/test_config.py::test_config_use_subprocess[--reload=False --workers=2] PASSED
    tests/test_config.py::test_config_use_subprocess[--reload=False --workers=1] PASSED
    tests/test_config.py::test_warn_when_using_reload_and_workers WARNING: "workers" flag is ignored when reloading is enabled.
    PASSED
    tests/test_lifespan.py::test_lifespan_on INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    INFO: Application shutdown complete.
    PASSED
    tests/test_lifespan.py::test_lifespan_off PASSED tests/test_lifespan.py::test_lifespan_auto INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    INFO: Application shutdown complete.
    PASSED
    tests/test_lifespan.py::test_lifespan_auto_with_error INFO: Waiting for application startup.
    INFO: ASGI 'lifespan' protocol appears unsupported.
    INFO: Application startup complete.
    PASSED
    tests/test_lifespan.py::test_lifespan_on_with_error INFO: Waiting for application startup.
    ERROR: Exception in 'lifespan' protocol
    Traceback (most recent call last):
    File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/uvicorn/lifespan/on.py", line 86, in main
    await app(scope, self.receive, self.send)
    File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/uvicorn/middleware/proxy_headers.py", line 29, in __call__
    return await self.app(scope, receive, send)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/tests/test_lifespan.py", line 113, in app
    raise RuntimeError()
    RuntimeError
    ERROR: Application startup failed. Exiting.
    PASSED
    tests/test_lifespan.py::test_lifespan_with_failed_startup[True-auto] INFO: Waiting for application startup.
    ERROR: the lifespan event failed
    ERROR: Application startup failed. Exiting.
    PASSED
    tests/test_lifespan.py::test_lifespan_with_failed_startup[True-on] INFO: Waiting for application startup.
    ERROR: the lifespan event failed
    ERROR: Application startup failed. Exiting.
    PASSED
    tests/test_lifespan.py::test_lifespan_with_failed_startup[False-auto] INFO: Waiting for application startup.
    ERROR: the lifespan event failed
    ERROR: Application startup failed. Exiting.
    INFO: Waiting for application shutdown.
    INFO: Application shutdown complete.
    PASSED
    tests/test_lifespan.py::test_lifespan_with_failed_startup[False-on] INFO: Waiting for application startup.
    ERROR: the lifespan event failed
    ERROR: Application startup failed. Exiting.
    INFO: Waiting for application shutdown.
    INFO: Application shutdown complete.
    PASSED
    tests/test_lifespan.py::test_lifespan_scope_asgi3app INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    INFO: Application shutdown complete.
    PASSED
    tests/test_lifespan.py::test_lifespan_scope_asgi2app INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    INFO: Application shutdown complete.
    PASSED
    tests/test_lifespan.py::test_lifespan_with_failed_shutdown[True-auto] INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    ERROR: the lifespan event failed
    ERROR: Application shutdown failed. Exiting.
    PASSED
    tests/test_lifespan.py::test_lifespan_with_failed_shutdown[True-on] INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    ERROR: the lifespan event failed
    ERROR: Application shutdown failed. Exiting.
    PASSED
    tests/test_lifespan.py::test_lifespan_with_failed_shutdown[False-auto] INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    ERROR: the lifespan event failed
    ERROR: Application shutdown failed. Exiting.
    PASSED
    tests/test_lifespan.py::test_lifespan_with_failed_shutdown[False-on] INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    ERROR: the lifespan event failed
    ERROR: Application shutdown failed. Exiting.
    PASSED
    tests/test_lifespan.py::test_lifespan_state INFO: Waiting for application startup.
    INFO: Application startup complete.
    INFO: Waiting for application shutdown.
    INFO: Application shutdown complete.
    PASSED
    tests/test_main.py::test_exit_on_create_server_with_invalid_host INFO: Started server process [6369]
    INFO: Waiting for application startup.
    INFO: ASGI 'lifespan' protocol appears unsupported.
    INFO: Application startup complete.
    ERROR: [Errno -2] Name or service not known
    PASSED
    tests/test_subprocess.py::test_get_subprocess PASSED tests/test_subprocess.py::test_subprocess_started PASSED

    =================================== FAILURES ===================================
    _______________________ test_wsgi_post[_WSGIMiddleware] ________________________

    wsgi_middleware = <class 'uvicorn.middleware.wsgi._WSGIMiddleware'>

    @pytest.mark.anyio
    async def test_wsgi_post(wsgi_middleware: Callable) -> None:
    transport = httpx.ASGITransport(wsgi_middleware(echo_body))
    async with httpx.AsyncClient(transport=transport, base_url="http://testserver") as client:
    response = await client.post("/", json={"example": 123})
    assert response.status_code == 200
    assert response.text == '{"example": 123}'
    E assert '{"example":123}' == '{"example": 123}'
    E
    E - {"example": 123}
    E ? -
    E + {"example":123}

    tests/middleware/test_wsgi.py:75: AssertionError
    ________________________ test_wsgi_post[WSGIMiddleware] ________________________

    wsgi_middleware = <class 'a2wsgi.wsgi.WSGIMiddleware'>

    @pytest.mark.anyio
    async def test_wsgi_post(wsgi_middleware: Callable) -> None:
    transport = httpx.ASGITransport(wsgi_middleware(echo_body))
    async with httpx.AsyncClient(transport=transport, base_url="http://testserver") as client:
    response = await client.post("/", json={"example": 123})
    assert response.status_code == 200
    assert response.text == '{"example": 123}'
    E assert '{"example":123}' == '{"example": 123}'
    E
    E - {"example": 123}
    E ? -
    E + {"example":123}

    tests/middleware/test_wsgi.py:75: AssertionError
    =========================== short test summary info ============================
    SKIPPED [1] tests/supervisors/test_multiprocess.py:110: platform unsupports SIGBREAK
    SKIPPED [1] tests/supervisors/test_reload.py:76: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:89: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:102: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:114: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:143: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:170: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:182: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:202: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:227: Needed dependency not installed
    SKIPPED [1] tests/supervisors/test_reload.py:255: Needed dependency not installed

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Debian Bug Tracking System@21:1/5 to All on Tue Mar 11 09:50:02 2025
    Processing control commands:

    tags -1 upstream patch
    Bug #1099278 [src:python-uvicorn] python-uvicorn: FTBFS: E assert '{"example":123}' == '{"example": 123}'
    Added tag(s) patch and upstream.

    --
    1099278: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1099278
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Santiago Vila@21:1/5 to All on Tue Mar 11 12:50:01 2025
    Control: tag -1 pending

    Hello,

    Bug #1099278 in python-uvicorn reported by you has been fixed in the
    Git repository and is awaiting an upload. You can see the commit
    message below and you can check the diff of the fix at:

    https://salsa.debian.org/python-team/packages/python-uvicorn/-/commit/94949de451e569a12a173b5c16282cca23e8ab47

    ------------------------------------------------------------------------
    Fix test failures due to changed JSON formatting. Closes: #1099278. ------------------------------------------------------------------------

    (this message was generated automatically)
    --
    Greetings

    https://bugs.debian.org/1099278

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Debian Bug Tracking System@21:1/5 to All on Tue Mar 11 12:50:01 2025
    Processing control commands:

    tag -1 pending
    Bug #1099278 [src:python-uvicorn] python-uvicorn: FTBFS: E assert '{"example":123}' == '{"example": 123}'
    Added tag(s) pending.

    --
    1099278: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1099278
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Debian Bug Tracking System@21:1/5 to All on Tue Mar 11 13:20:02 2025
    This is a multi-part message in MIME format...

    Your message dated Tue, 11 Mar 2025 12:11:13 +0000
    with message-id <E1tryS1-004Svk-VJ@fasolo.debian.org>
    and subject line Bug#1099278: fixed in python-uvicorn 0.32.0-3
    has caused the Debian Bug report #1099278,
    regarding python-uvicorn: FTBFS: E assert '{"example":123}' == '{"example": 123}'
    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 owner@bugs.debian.org
    immediately.)


    --
    1099278: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1099278
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    Received: (at submit) by bugs.debian.org; 1 Mar 2025 21:02:49 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.6-bugs.debian.org_2005_01_02
    (2021-04-09) on buxtehude.debian.org
    X-Spam-Level:
    X-Spam-Status: No, score=-121.3 required=4.0 tests=ALL_TRUSTED,BAYES_00,
    BODY_INCLUDES_PACKAGE,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,
    DKIM_VALID_AU,DKIM_VALID_EF,FOURLA,FROMDEVELOPER,HAS_PACKAGE,
    MD5_SHA1_SUM,NUMERIC_HTTP_ADDR,SPF_HELO_PASS,SPF_NONE,
    USER_IN_DKIM_WELCOMELIST,USER_IN_DKIM_WHITELIST,WEIRD_PORT,
    X_DEBBUGS_CC autolearn=ham autolearn_force=no
    version=3.4.6-bugs.debian.org_2005_01_02
    X-Spam-Bayes: score:0.0000 Tokens: new, 200; hammy, 150; neutral, 465; spammy,
    0. spammytokens: hammytokens:0.000-+--trixie, 0.000-+--pkgbuilddir,
    0.000-+--PKGBUILDDIR, 0.000-+--sk:dh_auto, 0.000-+--H*F:U*sanvila Return-path: <sanvila@debian.org>
    Received: from mai