Package: src:poetry Version: 1.8.3+dfsg-4 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 python3 --buildsystem=pybuild debian/rules override_dh_auto_clean make[1]: Entering directory '/<<PKGBUILDDIR>>' find . -iname '*.pyc' -delete for i in $(find . -type d -iname __pycache__) ; do rm -rf $i ; done make[1]: Leaving directory '/<<PKGBUILDDIR>>' dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary dh binary --with python3 --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild [... snipped ...] # true (that is, we know for sure no solution will satisfy the # incompatibility) while also approximating the intuitive notion of the # "root cause" of the conflict. new_terms = [ term for term in incompatibility.terms if term != most_recent_term ] for term in most_recent_satisfier.cause.terms: if term.dependency != most_recent_satisfier.dependency: new_terms.append(term) # The most_recent_satisfier may not satisfy most_recent_term on its own # if there are a collection of constraints on most_recent_term that # only satisfy it together. For example, if most_recent_term is # `foo ^1.0.0` and _solution contains `[foo >=1.0.0, # foo <2.0.0]`, then most_recent_satisfier will be `foo <2.0.0` even # though it doesn't totally satisfy `foo ^1.0.0`. # # In this case, we add `not (most_recent_satisfier \ most_recent_term)` to # the incompatibility as well, See the `algorithm documentation`_ for # details. # # .. _algorithm documentation: # https://github.com/dart-lang/pub/tree/master/doc/solver.md#conflict-resolution if difference is not None: inverse = difference.inverse if inverse.dependency != most_recent_satisfier.dependency: new_terms.append(inverse) incompatibility = Incompatibility( new_terms, ConflictCause(incompatibility, most_recent_satisfier.cause) ) new_incompatibility = True partially = "" if difference is None else " partially" self._log( f"! {most_recent_term} is{partially} satisfied by" f" {most_recent_satisfier}" ) self._log(f'! which is caused by "{most_recent_satisfier.cause}"') self._log(f"! thus: {incompatibility}") > raise SolveFailure(incompatibility) E poetry.mixology.failure.SolveFailure: The current project's supported Python range (3.7.0) is not compatible with some of the required packages Python requirement: E - poetry-core requires Python >=3.8,<4.0, so it will not be satisfied for Python 3.7.0 E E Because poetry depends on poetry-core (1.9.0) which requires Python >=3.8,<4.0, version solving failed. poetry/mixology/version_solver.py:427: SolveFailure During handling of the above exception, another exception occurred: self = <poetry.console.application.Application object at 0x7f191b495550> input = <cleo.io.inputs.string_input.StringInput object at 0x7f191a5b5c70> output = <cleo.io.outputs.buffered_output.BufferedOutput object at 0x7f191b624c90> error_output = <cleo.io.outputs.buffered_output.BufferedOutput object at 0x7f191b7af770> def run( self, input: Input | None = None, output: Output | None = None, error_output: Output | None = None, ) -> int: try: io = self.create_io(input, output, error_output) self._configure_io(io) try: > exit_code = self._run(io) /usr/lib/python3/dist-packages/cleo/application.py:316: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ poetry/console/application.py:190: in _run exit_code: int = super()._run(io) /usr/lib/python3/dist-packages/cleo/application.py:420: in _run exit_code = self._run_command(command, io) /usr/lib/python3/dist-packages/cleo/application.py:462: in _run_command raise error /usr/lib/python3/dist-packages/cleo/application.py:446: in _run_command exit_code = command.run(io) /usr/lib/python3/dist-packages/cleo/commands/base_command.py:117: in run return self.execute(io) or 0 /usr/lib/python3/dist-packages/cleo/commands/command.py:61: in execute return self.handle() poetry/console/commands/install.py:153: in handle return_code = self.installer.run() poetry/installation/installer.py:104: in run return self._do_install() poetry/installation/installer.py:301: in _do_install ops = solver.solve(use_latest=self._whitelist).calculate_operations( poetry/puzzle/solver.py:71: in solve packages, depths = self._solve() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <poetry.puzzle.solver.Solver object at 0x7f19091a83d0> def _solve(self) -> tuple[list[Package], list[int]]: if self._provider._overrides: self._overrides.append(self._provider._overrides) try: result = resolve_version(self._package, self._provider) packages = result.packages except OverrideNeeded as e: return self._solve_in_compatibility_mode(e.overrides) except SolveFailure as e: > raise SolverProblemError(e) E poetry.puzzle.exceptions.SolverProblemError: The current project's supported Python range (3.7.0) is not compatible with some of the required packages Python requirement: E - poetry-core requires Python >=3.8,<4.0, so it will not be satisfied for Python 3.7.0 E E Because poetry depends on poetry-core (1.9.0) which requires Python >=3.8,<4.0, version solving failed. poetry/puzzle/solver.py:160: SolverProblemError During handling of the above exception, another exception occurred: mocker = <pytest_mock.plugin.MockerFixture object at 0x7f191b088390> disable_cache = True @pytest.mark.parametrize("disable_cache", [True, False]) def test_application_verify_cache_flag_at_install( mocker: MockerFixture, disable_cache: bool ) -> None: app = Application() tester = ApplicationTester(app) command = "install --dry-run" if disable_cache: command = f"{command} --no-cache" spy = mocker.spy(Authenticator, "__init__") > tester.execute(command) tests/console/test_application.py:122: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/cleo/testers/application_tester.py:69: in execute self._status_code = self._application.run( /usr/lib/python3/dist-packages/cleo/application.py:327: in run self.render_error(e, io) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <poetry.console.application.Application object at 0x7f191b495550> error = SolverProblemError("The current project's supported Python range (3.7.0) is not compatible with some of the required p...thon 3.7.0\n\nBecause poetry depends on poetry-core (1.9.0) which requires Python >=3.8,<4.0, version solving failed.") io = <cleo.io.io.IO object at 0x7f191a5b82f0> def render_error(self, error: Exception, io: IO) -> None: # We set the solution provider repository here to load providers # only when an error occurs > > self.set_solution_provider_repository(self._get_solution_provider_repository()) E AttributeError: 'Application' object has no attribute 'set_solution_provider_repository' poetry/console/application.py:180: AttributeError _____________ test_application_verify_cache_flag_at_install[False] _____________ [gw1] linux -- Python 3.13.1 /usr/bin/python3.13 self = <poetry.puzzle.solver.Solver object at 0x7f1900a1e050> def _solve(self) -> tuple[list[Package], list[int]]: if self._provider._overrides: self._overrides.append(self._provider._overrides) try: > result = resolve_version(self._package, self._provider) poetry/puzzle/solver.py:154: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ poetry/mixology/__init__.py:18: in resolve_version return solver.solve() poetry/mixology/version_solver.py:174: in solve self._propagate(next) poetry/mixology/version_solver.py:213: in _propagate root_cause = self._resolve_conflict(incompatibility) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <poetry.mixology.version_solver.VersionSolver object at 0x7f1900a1ea50> incompatibility = <Incompatibility version solving failed> def _resolve_conflict(self, incompatibility: Incompatibility) -> Incompatibility: """ Given an incompatibility that's satisfied by _solution, The `conflict resolution`_ constructs a new incompatibility that encapsulates the root cause of the conflict and backtracks _solution until the new incompatibility will allow _propagate() to deduce new assignments. Adds the new incompatibility to _incompatibilities and returns it. .. _conflict resolution: https://github.com/dart-lang/pub/tree/master/doc/solver.md#conflict-resolution """ self._log(f"conflict: {incompatibility}") new_incompatibility = False while not incompatibility.is_failure(): # The term in incompatibility.terms that was most recently satisfied by # _solution. most_recent_term = None # The earliest assignment in _solution such that incompatibility is # satisfied by _solution up to and including this assignment. most_recent_satisfier = None # The difference between most_recent_satisfier and most_recent_term; # that is, the versions that are allowed by most_recent_satisfier and not # by most_recent_term. This is None if most_recent_satisfier totally # satisfies most_recent_term. difference = None # The decision level of the earliest assignment in _solution *before* # most_recent_satisfier such that incompatibility is satisfied by # _solution up to and including this assignment plus # most_recent_satisfier. # # Decision level 1 is the level where the root package was selected. It's # safe to go back to decision level 0, but stopping at 1 tends to produce # better error messages, because references to the root package end up # closer to the final conclusion that no solution exists. previous_satisfier_level = 1 for term in incompatibility.terms: satisfier = self._solution.satisfier(term) if most_recent_satisfier is None: most_recent_term = term most_recent_satisfier = satisfier elif most_recent_satisfier.index < satisfier.index: previous_satisfier_level = max( previous_satisfier_level, most_recent_satisfier.decision_level ) most_recent_term = term most_recent_satisfier = satisfier difference = None else: previous_satisfier_level = max( previous_satisfier_level, satisfier.decision_level ) if most_recent_term == term: # If most_recent_satisfier doesn't satisfy most_recent_term on its # own, then the next-most-recent satisfier may be the one that # satisfies the remainder. difference = most_recent_satisfier.difference(most_recent_term) if difference is not None: previous_satisfier_level = max( previous_satisfier_level, self._solution.satisfier(difference.inverse).decision_level, ) # If most_recent_identifier is the only satisfier left at its decision # level, or if it has no cause (indicating that it's a decision rather # than a derivation), then incompatibility is the root cause. We then # backjump to previous_satisfier_level, where incompatibility is # guaranteed to allow _propagate to produce more assignments. # using assert to suppress mypy [union-attr] assert most_recent_satisfier is not None if ( previous_satisfier_level < most_recent_satisfier.decision_level or most_recent_satisfier.cause is None ): for level in range( self._solution.decision_level, previous_satisfier_level, -1 ): if level in self._contradicted_incompatibilities_by_level: self._contradicted_incompatibilities.difference_update( self._contradicted_incompatibilities_by_level.pop(level), ) self._dependency_cache.clear_level(level) self._solution.backtrack(previous_satisfier_level) if new_incompatibility: self._add_incompatibility(incompatibility) return incompatibility # Create a new incompatibility by combining incompatibility with the # incompatibility that caused most_recent_satisfier to be assigned. Doing # this iteratively constructs an incompatibility that's guaranteed to be # true (that is, we know for sure no solution will satisfy the # incompatibility) while also approximating the intuitive notion of the # "root cause" of the conflict. new_terms = [ term for term in incompatibility.terms if term != most_recent_term ] for term in most_recent_satisfier.cause.terms: if term.dependency != most_recent_satisfier.dependency: new_terms.append(term) # The most_recent_satisfier may not satisfy most_recent_term on its own # if there are a collection of constraints on most_recent_term that # only satisfy it together. For example, if most_recent_term is # `foo ^1.0.0` and _solution contains `[foo >=1.0.0, # foo <2.0.0]`, then most_recent_satisfier will be `foo <2.0.0` even # though it doesn't totally satisfy `foo ^1.0.0`. # # In this case, we add `not (most_recent_satisfier \ most_recent_term)` to # the incompatibility as well, See the `algorithm documentation`_ for # details. # # .. _algorithm documentation: # https://github.com/dart-lang/pub/tree/master/doc/solver.md#conflict-resolution if difference is not None: inverse = difference.inverse if inverse.dependency != most_recent_satisfier.dependency: new_terms.append(inverse) incompatibility = Incompatibility( new_terms, ConflictCause(incompatibility, most_recent_satisfier.cause) ) new_incompatibility = True partially = "" if difference is None else " partially" self._log( f"! {most_recent_term} is{partially} satisfied by" f" {most_recent_satisfier}" ) self._log(f'! which is caused by "{most_recent_satisfier.cause}"') self._log(f"! thus: {incompatibility}") > raise SolveFailure(incompatibility) E poetry.mixology.failure.SolveFailure: The current project's supported Python range (3.7.0) is not compatible with some of the required packages Python requirement: E - poetry-core requires Python >=3.8,<4.0, so it will not be satisfied for Python 3.7.0 E E Because poetry depends on poetry-core (1.9.0) which requires Python >=3.8,<4.0, version solving failed. poetry/mixology/version_solver.py:427: SolveFailure During handling of the above exception, another exception occurred: self = <poetry.console.application.Application object at 0x7f1908a47e50> input = <cleo.io.inputs.string_input.StringInput object at 0x7f19084449e0> output = <cleo.io.outputs.buffered_output.BufferedOutput object at 0x7f190827d400> error_output = <cleo.io.outputs.buffered_output.BufferedOutput object at 0x7f190827dfd0> def run( self, input: Input | None = None, output: Output | None = None, error_output: Output | None = None, ) -> int: try: io = self.create_io(input, output, error_output) self._configure_io(io) try: > exit_code = self._run(io) /usr/lib/python3/dist-packages/cleo/application.py:316: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ poetry/console/application.py:190: in _run exit_code: int = super()._run(io) /usr/lib/python3/dist-packages/cleo/application.py:420: in _run exit_code = self._run_command(command, io) /usr/lib/python3/dist-packages/cleo/application.py:462: in _run_command raise error /usr/lib/python3/dist-packages/cleo/application.py:446: in _run_command exit_code = command.run(io) /usr/lib/python3/dist-packages/cleo/commands/base_command.py:117: in run return self.execute(io) or 0 /usr/lib/python3/dist-packages/cleo/commands/command.py:61: in execute return self.handle() poetry/console/commands/install.py:153: in handle return_code = self.installer.run() poetry/installation/installer.py:104: in run return self._do_install() poetry/installation/installer.py:301: in _do_install ops = solver.solve(use_latest=self._whitelist).calculate_operations( poetry/puzzle/solver.py:71: in solve packages, depths = self._solve() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <poetry.puzzle.solver.Solver object at 0x7f1900a1e050> def _solve(self) -> tuple[list[Package], list[int]]: if self._provider._overrides: self._overrides.append(self._provider._overrides) try: result = resolve_version(self._package, self._provider) packages = result.packages except OverrideNeeded as e: return self._solve_in_compatibility_mode(e.overrides) except SolveFailure as e: > raise SolverProblemError(e) E poetry.puzzle.exceptions.SolverProblemError: The current project's supported Python range (3.7.0) is not compatible with some of the required packages Python requirement: E - poetry-core requires Python >=3.8,<4.0, so it will not be satisfied for Python 3.7.0 E E Because poetry depends on poetry-core (1.9.0) which requires Python >=3.8,<4.0, version solving failed. poetry/puzzle/solver.py:160: SolverProblemError During handling of the above exception, another exception occurred: mocker = <pytest_mock.plugin.MockerFixture object at 0x7f191b194e20> disable_cache = False @pytest.mark.parametrize("disable_cache", [True, False]) def test_application_verify_cache_flag_at_install( mocker: MockerFixture, disable_cache: bool ) -> None: app = Application() tester = ApplicationTester(app) command = "install --dry-run" if disable_cache: command = f"{command} --no-cache" spy = mocker.spy(Authenticator, "__init__") > tester.execute(command) tests/console/test_application.py:122: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/cleo/testers/application_tester.py:69: in execute self._status_code = self._application.run( /usr/lib/python3/dist-packages/cleo/application.py:327: in run self.render_error(e, io) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <poetry.console.application.Application object at 0x7f1908a47e50> error = SolverProblemError("The current project's supported Python range (3.7.0) is not compatible with some of the required p...thon 3.7.0\n\nBecause poetry depends on poetry-core (1.9.0) which requires Python >=3.8,<4.0, version solving failed.") io = <cleo.io.io.IO object at 0x7f19085357f0> def render_error(self, error: Exception, io: IO) -> None: # We set the solution provider repository here to load providers # only when an error occurs > > self.set_solution_provider_repository(self._get_solution_provider_repository()) E AttributeError: 'Application' object has no attribute 'set_solution_provider_repository' poetry/console/application.py:180: AttributeError =============================== warnings summary =============================== tests/console/commands/test_publish.py: 2 warnings tests/console/commands/test_search.py: 1 warning tests/publishing/test_uploader.py: 18 warnings tests/repositories/test_legacy_repository.py: 13 warnings tests/inspection/test_lazy_wheel.py: 101 warnings tests/installation/test_chooser.py: 26 warnings tests/installation/test_executor.py: 3 warnings tests/utils/test_authenticator.py: 73 warnings /usr/lib/python3/dist-packages/httpretty/core.py:1077: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). now = datetime.utcnow() tests/inspection/test_info.py::test_info_from_wheel_metadata_version_unknown /usr/lib/python3/dist-packages/pkginfo/distribution.py:184: NewMetadataVersion: New metadata version (New metadata version (999.3) higher than latest supported version: parsing as 2.4) higher than latest supported version: parsing as 2.4 warnings.warn(NewMetadataVersion(self.metadata_version)) tests/utils/test_authenticator.py::test_authenticator_falls_back_to_keyring_url /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_poetry/build/tests/utils/test_authenticator.py:197: DeprecationWarning: Empty usernames are deprecated. See #668 dummy_keyring.set_password( tests/utils/test_authenticator.py::test_authenticator_falls_back_to_keyring_netloc /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_poetry/build/tests/utils/test_authenticator.py:223: DeprecationWarning: Empty usernames are deprecated. See #668 dummy_keyring.set_password("foo.bar", None, SimpleCredential("foo", "bar")) tests/utils/test_authenticator.py::test_authenticator_falls_back_to_keyring_url_matched_by_path /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_poetry/build/tests/utils/test_authenticator.py:486: DeprecationWarning: Empty usernames are deprecated. See #668 dummy_keyring.set_password( tests/utils/test_authenticator.py::test_authenticator_falls_back_to_keyring_url_matched_by_path /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_poetry/build/tests/utils/test_authenticator.py:489: DeprecationWarning: Empty usernames are deprecated. See #668 dummy_keyring.set_password( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/console/commands/test_publish.py::test_publish_returns_non_zero_code_for_upload_errors FAILED tests/console/commands/test_publish.py::test_publish_returns_non_zero_code_for_connection_errors FAILED tests/console/test_application.py::test_application_execute_plugin_command_with_plugins_disabled FAILED tests/console/test_application.py::test_application_verify_cache_flag_at_install[True] FAILED tests/console/test_application.py::test_application_verify_cache_flag_at_install[False] =========== 5 failed, 1404 passed, 6 skipped, 242 warnings in 32.02s =========== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_poetry/build; python3.13 -m pytest --ignore=tests/console/commands/env/test_list.py --ignore=tests/console/commands/env/test_remove.py --ignore=tests/console/commands/env/test_use.py --ignore=tests/utils/test_env.py --ignore=tests/config/test_config.py --ignore=tests/utils/test_helpers.py -k 'not test_self_update_should_install_all_necessary_elements and not test_add_file_constraint_sdist and not test_add_file_constraint_sdist_old_installer and not test_builder_setup_generation_runs_with_pip_editable and not test_publish_dry_run and not test_info_from_sdist and not test_installer_can_install_dependencies_from_forced_source and not test_search_for_file_sdist and not test_search_for_file_sdist_with_extras and not test_solver_can_resolve_sdist_dependencies and not test_solver_can_resolve_sdist_dependencies_with_extras and not test_solver_chooses_from_correct_repository_if_ forced and not test_solver_chooses_from_correct_repository_if_forced_and_transitive_dependency and not test_solver_does_not_choose_from_secondary_repository_by_default and not test_solver_chooses_from_secondary_if_explicit and not test_get_package_information_fallback_read_setup and not test_get_package_information_skips_dependencies_with_invalid_constraints and not test_get_package_retrieves_packages_with_no_hashes and not test_fallback_can_read_setup_to_get_dependencies and not test_exporter_can_export_requirements_txt_with_file_packages and not test_exporter_can_export_requirements_txt_with_file_packages_and_markers and not test_lock_no_update and not test_locker_dumps_dependency_information_correctly and not test_package_partial_yank and not test_run_installs_with_same_version_url_files and not test_env_info_displays_complete_info and not test_skip_existing_output and not test_installer_should_use_the_locked_version_of_git_dependencies_with_extras and not test_installer_should_u se_the_locked_version_of_git_dependencies_without_reference and not test_installer_uses_prereleases_if_they_are_compatible and not test_requirement_git_subdirectory and not test_check_valid and not test_check_invalid and not test_packages_property_returns_empty_list and not test_parse_dependency_specification and not test_info_setup_missing_mandatory_should_trigger_pep517 and not test_uninstall_git_package_nspkg_pth_cleanup and not test_executor_should_write_pep610_url_references_for_directories and not test_executor_should_write_pep610_url_references_for_git and not test_executor_should_write_pep610_url_references_for_git_with_subdirectories and not test_executor_should_write_pep610_url_references_for_git_with_subdirectories and not test_executor_should_write_pep610_url_references_for_non_wheel_urls and not test_executor_should_write_pep610_url_references_for_non_wheel_files and not test_prepare_sdist and not test_shell and not test_chooser_md5_remote_fallback_to_sha256_inline_calc ulation and not test_solver_ignores_explicit_repo_for_transient_dependencies and not test_installer_with_pypi_repository and not test_prepare_directory_editable and not test_prepare_directory and not test_prepare_directory_with_extensions and not test_build_backend_errors_are_reported_correctly_if_caused_by_subprocess and not test_build_backend_errors_are_reported_correctly_if_caused_by_subprocess_encoding and not test_isolated_env_install_success and not test_isolated_env_install_error and not test_isolated_env_install_failure and not test_application_with_plugins and not test_build_system_requires_not_available and not test_build_system_requires_install_failure and not test_prepare_directory_script and not test_fallback_on_detect_active_python and not test_get_venv_with_venv_folder_present and not test_not_fresh_lock and not test_list and not test_info_setup_complex_calls_script and not test_publish_dist_dir_option and not test_executor_known_hashes and not test_execute_executes_a _batch_of_operations and not test_execute_prints_warning_for_yanked_package and not test_build_environment_called_build_script_specified' dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.13" returned exit code 13 make: *** [debian/rules:95: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- The above is just how the build ends and not necessarily the most relevant part. If required, the full build log is available here: https://people.debian.org/~sanvila/build-logs/202501/ 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 could not 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:poetry, so that this is still visible in the BTS web page for this package. Thanks.