==> Building on minun ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list ./ .SRCINFO 700 86% 0.00kB/s 0:00:00 807 100% 104.49kB/s 0:00:00 (xfr#1, to-chk=7/9) .nvchecker.toml 86 100% 83.98kB/s 0:00:00 86 100% 83.98kB/s 0:00:00 (xfr#2, to-chk=6/9) LICENSE 646 100% 630.86kB/s 0:00:00 646 100% 630.86kB/s 0:00:00 (xfr#3, to-chk=5/9) PKGBUILD 700 53% 683.59kB/s 0:00:00 1,311 100% 1.25MB/s 0:00:00 (xfr#4, to-chk=4/9) REUSE.toml 375 100% 366.21kB/s 0:00:00 375 100% 366.21kB/s 0:00:00 (xfr#5, to-chk=3/9) python-resolvelib-1.2.1-2.log 570 100% 556.64kB/s 0:00:00 570 100% 556.64kB/s 0:00:00 (xfr#6, to-chk=2/9) LICENSES/ sent 790 bytes received 198 bytes 658.67 bytes/sec total size is 3,427 speedup is 3.47 ==> Running pkgctl build --arch riscv64 on remote host... ==> WARNING: invalid architecture: riscv64 ==> Updating pacman database cache [?25l:: Synchronizing package databases... core downloading... extra downloading... multilib downloading... [?25h==> Building python-resolvelib  -> repo: extra  -> arch: riscv64  -> worker: felix-2 ==> Building python-resolvelib for [extra] (riscv64) ==> Locking clean chroot...done ]3008;start=6ba88e8854da4cbf966ff2b1bb753b91;user=root;hostname=minun.felixc.at;machineid=0ffe3ef7ad56462790c2861f2a747f6b;bootid=32d9c4b537a24816afcaf7574fd06933;pid=311653;pidfdid=21278912;comm=systemd-nspawn;container=arch-nspawn-311653;type=container\]11;?\]2;🔵 Container arch-nspawn-311653 on minun.felixc.at\:: Synchronizing package databases... core downloading... extra downloading... :: Starting full system upgrade... there is nothing to do [!p]104[?7h]3008;end=6ba88e8854da4cbf966ff2b1bb753b91\==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix-2]...done ==> Making package: python-resolvelib 1.2.1-2 (Tue Jan 27 07:06:12 2026) ==> Retrieving sources...  -> Found resolvelib-1.2.1.tar.gz ==> Validating source files with sha512sums... resolvelib-1.2.1.tar.gz ... Passed ==> Validating source files with b2sums... resolvelib-1.2.1.tar.gz ... Passed ]3008;start=b8bebb51985e4c21a6031951bd94babe;user=root;hostname=minun.felixc.at;machineid=0ffe3ef7ad56462790c2861f2a747f6b;bootid=32d9c4b537a24816afcaf7574fd06933;pid=313661;pidfdid=21280920;comm=systemd-nspawn;container=arch-nspawn-313661;type=container\]11;?\]2;🔵 Container arch-nspawn-313661 on minun.felixc.at\==> Making package: python-resolvelib 1.2.1-2 (Tue Jan 27 06:06:24 2026) ==> Checking runtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Package (2) New Version Net Change core/mpdecimal 4.0.1-1 0.31 MiB core/python 3.14.2-2 132.78 MiB Total Installed Size: 133.09 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing mpdecimal... installing python... Optional dependencies for python python-setuptools: for building Python packages using tooling that is usually bundled with Python python-pip: for installing Python packages using tooling that is usually bundled with Python python-pipx: for installing Python software not packaged on Arch Linux sqlite: for a default database integration [installed] xz: for lzma [installed] tk: for tkinter :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... ==> Checking buildtime dependencies... ==> Installing missing dependencies... resolving dependencies... looking for conflicting packages... Package (17) New Version Net Change extra/python-autocommand 2.2.2-9 0.08 MiB extra/python-iniconfig 2.1.0-3.1 0.05 MiB extra/python-jaraco.collections 5.1.0-3 0.11 MiB extra/python-jaraco.context 6.0.1-3 0.04 MiB extra/python-jaraco.functools 4.1.0-3 0.07 MiB extra/python-jaraco.text 4.0.0-4 0.08 MiB extra/python-more-itertools 10.8.0-2 0.73 MiB extra/python-platformdirs 4.5.1-3 0.28 MiB extra/python-pluggy 1.6.0-3.1 0.23 MiB extra/python-pygments 2.19.2-3 15.30 MiB extra/python-pyproject-hooks 1.2.0-6 0.11 MiB extra/python-build 1.4.0-1 0.24 MiB extra/python-installer 0.7.0-14 0.20 MiB extra/python-packaging 26.0-1 0.89 MiB extra/python-pytest 1:8.4.2-3 4.69 MiB extra/python-setuptools 1:80.9.0-4 8.03 MiB extra/python-wheel 0.45.1-4 0.30 MiB Total Installed Size: 31.44 MiB :: Proceed with installation? [Y/n] checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing python-packaging... installing python-pyproject-hooks... installing python-build... Optional dependencies for python-build python-pip: to use as the Python package installer (default) python-uv: to use as the Python package installer python-virtualenv: to use virtualenv for build isolation installing python-installer... installing python-more-itertools... installing python-jaraco.functools... installing python-jaraco.context... installing python-autocommand... installing python-jaraco.text... Optional dependencies for python-jaraco.text python-inflect: for show-newlines script installing python-jaraco.collections... installing python-platformdirs... installing python-wheel... Optional dependencies for python-wheel python-keyring: for wheel.signatures python-xdg: for wheel.signatures python-setuptools: for legacy bdist_wheel subcommand [pending] installing python-setuptools... installing python-iniconfig... installing python-pluggy... installing python-pygments... installing python-pytest... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... ==> Retrieving sources... -> Found resolvelib-1.2.1.tar.gz ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources... -> Extracting resolvelib-1.2.1.tar.gz with bsdtar ==> Starting build()... * Getting build dependencies for wheel... /usr/lib/python3.14/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases. config = read_configuration(filepath, True, ignore_option_errors, dist) /usr/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated !! ******************************************************************************** Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). By 2026-Feb-18, you need to update your project and remove deprecated calls or your builds will no longer be supported. See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! corresp(dist, value, root_dir) /usr/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: ISC License (ISCL) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! dist._finalize_license_expression() /usr/lib/python3.14/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: ISC License (ISCL) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running egg_info creating src/resolvelib.egg-info writing src/resolvelib.egg-info/PKG-INFO writing dependency_links to src/resolvelib.egg-info/dependency_links.txt writing requirements to src/resolvelib.egg-info/requires.txt writing top-level names to src/resolvelib.egg-info/top_level.txt writing manifest file 'src/resolvelib.egg-info/SOURCES.txt' reading manifest file 'src/resolvelib.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching '*.pyi' under directory 'src' warning: manifest_maker: MANIFEST.in, line 3: 'recursive-include' expects ... adding license file 'LICENSE' writing manifest file 'src/resolvelib.egg-info/SOURCES.txt' * Building wheel... /usr/lib/python3.14/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases. config = read_configuration(filepath, True, ignore_option_errors, dist) /usr/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated !! ******************************************************************************** Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). By 2026-Feb-18, you need to update your project and remove deprecated calls or your builds will no longer be supported. See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! corresp(dist, value, root_dir) /usr/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: ISC License (ISCL) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! dist._finalize_license_expression() /usr/lib/python3.14/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: ISC License (ISCL) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running bdist_wheel running build running build_py creating build/lib/resolvelib copying src/resolvelib/__init__.py -> build/lib/resolvelib copying src/resolvelib/providers.py -> build/lib/resolvelib copying src/resolvelib/reporters.py -> build/lib/resolvelib copying src/resolvelib/structs.py -> build/lib/resolvelib creating build/lib/resolvelib/resolvers copying src/resolvelib/resolvers/__init__.py -> build/lib/resolvelib/resolvers copying src/resolvelib/resolvers/abstract.py -> build/lib/resolvelib/resolvers copying src/resolvelib/resolvers/criterion.py -> build/lib/resolvelib/resolvers copying src/resolvelib/resolvers/exceptions.py -> build/lib/resolvelib/resolvers copying src/resolvelib/resolvers/resolution.py -> build/lib/resolvelib/resolvers running egg_info writing src/resolvelib.egg-info/PKG-INFO writing dependency_links to src/resolvelib.egg-info/dependency_links.txt writing requirements to src/resolvelib.egg-info/requires.txt writing top-level names to src/resolvelib.egg-info/top_level.txt reading manifest file 'src/resolvelib.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching '*.pyi' under directory 'src' warning: manifest_maker: MANIFEST.in, line 3: 'recursive-include' expects ... adding license file 'LICENSE' writing manifest file 'src/resolvelib.egg-info/SOURCES.txt' copying src/resolvelib/py.typed -> build/lib/resolvelib installing to build/bdist.linux-riscv64/wheel running install running install_lib creating build/bdist.linux-riscv64/wheel creating build/bdist.linux-riscv64/wheel/resolvelib copying build/lib/resolvelib/__init__.py -> build/bdist.linux-riscv64/wheel/./resolvelib copying build/lib/resolvelib/providers.py -> build/bdist.linux-riscv64/wheel/./resolvelib copying build/lib/resolvelib/reporters.py -> build/bdist.linux-riscv64/wheel/./resolvelib copying build/lib/resolvelib/structs.py -> build/bdist.linux-riscv64/wheel/./resolvelib creating build/bdist.linux-riscv64/wheel/resolvelib/resolvers copying build/lib/resolvelib/resolvers/__init__.py -> build/bdist.linux-riscv64/wheel/./resolvelib/resolvers copying build/lib/resolvelib/resolvers/abstract.py -> build/bdist.linux-riscv64/wheel/./resolvelib/resolvers copying build/lib/resolvelib/resolvers/criterion.py -> build/bdist.linux-riscv64/wheel/./resolvelib/resolvers copying build/lib/resolvelib/resolvers/exceptions.py -> build/bdist.linux-riscv64/wheel/./resolvelib/resolvers copying build/lib/resolvelib/resolvers/resolution.py -> build/bdist.linux-riscv64/wheel/./resolvelib/resolvers copying build/lib/resolvelib/py.typed -> build/bdist.linux-riscv64/wheel/./resolvelib running install_egg_info Copying src/resolvelib.egg-info to build/bdist.linux-riscv64/wheel/./resolvelib-1.2.1-py3.14.egg-info running install_scripts creating build/bdist.linux-riscv64/wheel/resolvelib-1.2.1.dist-info/WHEEL creating '/build/python-resolvelib/src/resolvelib-1.2.1/dist/.tmp-z3idc93h/resolvelib-1.2.1-py3-none-any.whl' and adding 'build/bdist.linux-riscv64/wheel' to it adding 'resolvelib/__init__.py' adding 'resolvelib/providers.py' adding 'resolvelib/py.typed' adding 'resolvelib/reporters.py' adding 'resolvelib/structs.py' adding 'resolvelib/resolvers/__init__.py' adding 'resolvelib/resolvers/abstract.py' adding 'resolvelib/resolvers/criterion.py' adding 'resolvelib/resolvers/exceptions.py' adding 'resolvelib/resolvers/resolution.py' adding 'resolvelib-1.2.1.dist-info/licenses/LICENSE' adding 'resolvelib-1.2.1.dist-info/METADATA' adding 'resolvelib-1.2.1.dist-info/WHEEL' adding 'resolvelib-1.2.1.dist-info/top_level.txt' adding 'resolvelib-1.2.1.dist-info/RECORD' removing build/bdist.linux-riscv64/wheel Successfully built resolvelib-1.2.1-py3-none-any.whl ==> Starting check()... ============================= test session starts ============================== platform linux -- Python 3.14.2, pytest-8.4.2, pluggy-1.6.0 -- /usr/bin/python cachedir: .pytest_cache rootdir: /build/python-resolvelib/src/resolvelib-1.2.1 configfile: pyproject.toml collecting ... collected 94 items tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[circular] XFAIL [ 1%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[complex_conflict] PASSED [ 2%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[complex_conflict_unwinding] PASSED [ 3%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[conflict] PASSED [ 4%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[conflict_common_parent] PASSED [ 5%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[conflict_on_child] PASSED [ 6%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[contiguous_grouping] PASSED [ 7%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[deep_complex_conflict] PASSED [ 8%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[empty] PASSED [ 9%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[fixed_circular] XFAIL [ 10%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[previous_conflict] PASSED [ 11%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[previous_primary_conflict] PASSED [ 12%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[pruned_unresolved_orphan] PASSED [ 13%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[root_conflict_on_child] PASSED [ 14%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[shared_parent_dependency] PASSED [ 15%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[shared_parent_dependency_with_swapping] PASSED [ 17%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[simple] PASSED [ 18%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[simple_with_base] PASSED [ 19%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[simple_with_dependencies] PASSED [ 20%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[simple_with_shared_dependencies] PASSED [ 21%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[spapping_and_rewinding] PASSED [ 22%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[swapping_changes_transitive_dependency] PASSED [ 23%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[swapping_children_with_successors] PASSED [ 24%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[three_way_conflict] PASSED [ 25%] tests/functional/cocoapods/test_resolvers_cocoapods.py::test_resolver[unresolvable_child] PASSED [ 26%] tests/functional/python/test_resolvers_python.py::test_resolver[backjump-test-1-PythonInputProvider] PASSED [ 27%] tests/functional/python/test_resolvers_python.py::test_resolver[backjump-test-2-PythonInputProvider] PASSED [ 28%] tests/functional/python/test_resolvers_python.py::test_resolver[backjump-test-3-PythonInputProvider] PASSED [ 29%] tests/functional/python/test_resolvers_python.py::test_resolver[backjump-test-4-PythonInputProvider] PASSED [ 30%] tests/functional/python/test_resolvers_python.py::test_resolver[chalice-PythonInputProvider] PASSED [ 31%] tests/functional/python/test_resolvers_python.py::test_resolver[cheroot-PythonInputProvider] FAILED [ 32%] tests/functional/python/test_resolvers_python.py::test_resolver[conflict-with-dependency-PythonInputProvider] PASSED [ 34%] tests/functional/python/test_resolvers_python.py::test_resolver[different-extras-PythonInputProvider] PASSED [ 35%] tests/functional/python/test_resolvers_python.py::test_resolver[issue-134-PythonInputProvider] PASSED [ 36%] tests/functional/python/test_resolvers_python.py::test_resolver[pyrex-1.9.8-PythonInputProvider] XFAIL [ 37%] tests/functional/python/test_resolvers_python.py::test_resolver[same-package-extras-PythonInputProvider] PASSED [ 38%] tests/functional/python/test_resolvers_python.py::test_resolver[same-package-PythonInputProvider] PASSED [ 39%] tests/functional/python/test_resolvers_python.py::test_resolver[with-without-extras-PythonInputProvider] PASSED [ 40%] tests/functional/python/test_resolvers_python.py::test_resolver[backjump-test-1-PythonInputProviderNarrowRequirements] PASSED [ 41%] tests/functional/python/test_resolvers_python.py::test_resolver[backjump-test-2-PythonInputProviderNarrowRequirements] PASSED [ 42%] tests/functional/python/test_resolvers_python.py::test_resolver[backjump-test-3-PythonInputProviderNarrowRequirements] PASSED [ 43%] tests/functional/python/test_resolvers_python.py::test_resolver[backjump-test-4-PythonInputProviderNarrowRequirements] PASSED [ 44%] tests/functional/python/test_resolvers_python.py::test_resolver[chalice-PythonInputProviderNarrowRequirements] PASSED [ 45%] tests/functional/python/test_resolvers_python.py::test_resolver[cheroot-PythonInputProviderNarrowRequirements] FAILED [ 46%] tests/functional/python/test_resolvers_python.py::test_resolver[conflict-with-dependency-PythonInputProviderNarrowRequirements] PASSED [ 47%] tests/functional/python/test_resolvers_python.py::test_resolver[different-extras-PythonInputProviderNarrowRequirements] PASSED [ 48%] tests/functional/python/test_resolvers_python.py::test_resolver[issue-134-PythonInputProviderNarrowRequirements] PASSED [ 50%] tests/functional/python/test_resolvers_python.py::test_resolver[pyrex-1.9.8-PythonInputProviderNarrowRequirements] XFAIL [ 51%] tests/functional/python/test_resolvers_python.py::test_resolver[same-package-extras-PythonInputProviderNarrowRequirements] PASSED [ 52%] tests/functional/python/test_resolvers_python.py::test_resolver[same-package-PythonInputProviderNarrowRequirements] PASSED [ 53%] tests/functional/python/test_resolvers_python.py::test_resolver[with-without-extras-PythonInputProviderNarrowRequirements] PASSED [ 54%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[backjump-test-1-PythonInputProvider] PASSED [ 55%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[backjump-test-2-PythonInputProvider] PASSED [ 56%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[backjump-test-3-PythonInputProvider] PASSED [ 57%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[backjump-test-4-PythonInputProvider] PASSED [ 58%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[chalice-PythonInputProvider] PASSED [ 59%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[cheroot-PythonInputProvider] FAILED [ 60%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[conflict-with-dependency-PythonInputProvider] PASSED [ 61%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[different-extras-PythonInputProvider] PASSED [ 62%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[issue-134-PythonInputProvider] PASSED [ 63%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[pyrex-1.9.8-PythonInputProvider] XFAIL [ 64%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[same-package-extras-PythonInputProvider] PASSED [ 65%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[same-package-PythonInputProvider] PASSED [ 67%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[with-without-extras-PythonInputProvider] PASSED [ 68%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[backjump-test-1-PythonInputProviderNarrowRequirements] PASSED [ 69%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[backjump-test-2-PythonInputProviderNarrowRequirements] PASSED [ 70%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[backjump-test-3-PythonInputProviderNarrowRequirements] PASSED [ 71%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[backjump-test-4-PythonInputProviderNarrowRequirements] PASSED [ 72%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[chalice-PythonInputProviderNarrowRequirements] PASSED [ 73%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[cheroot-PythonInputProviderNarrowRequirements] FAILED [ 74%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[conflict-with-dependency-PythonInputProviderNarrowRequirements] PASSED [ 75%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[different-extras-PythonInputProviderNarrowRequirements] PASSED [ 76%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[issue-134-PythonInputProviderNarrowRequirements] PASSED [ 77%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[pyrex-1.9.8-PythonInputProviderNarrowRequirements] XFAIL [ 78%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[same-package-extras-PythonInputProviderNarrowRequirements] PASSED [ 79%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[same-package-PythonInputProviderNarrowRequirements] PASSED [ 80%] tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[with-without-extras-PythonInputProviderNarrowRequirements] PASSED [ 81%] tests/functional/swift-package-manager/test_resolvers_swift.py::test_resolver[PerfectHTTPServer] PASSED [ 82%] tests/functional/swift-package-manager/test_resolvers_swift.py::test_resolver[SourceKitten] PASSED [ 84%] tests/functional/swift-package-manager/test_resolvers_swift.py::test_resolver[ZewoHTTPServer] PASSED [ 85%] tests/functional/swift-package-manager/test_resolvers_swift.py::test_resolver[kitura] PASSED [ 86%] tests/test_backjump_exhaustion.py::test_backjump_exhaustion PASSED [ 87%] tests/test_resolvers.py::test_candidate_inconsistent_error PASSED [ 88%] tests/test_resolvers.py::test_candidate_depends_on_requirements_of_same_identifier[specifiers0] PASSED [ 89%] tests/test_resolvers.py::test_candidate_depends_on_requirements_of_same_identifier[specifiers1] PASSED [ 90%] tests/test_resolvers.py::test_resolving_conflicts PASSED [ 91%] tests/test_resolvers.py::test_pin_conflict_with_self PASSED [ 92%] tests/test_structs.py::test_graph PASSED [ 93%] tests/test_structs.py::test_iter_view_iterable[_generate] PASSED [ 94%] tests/test_structs.py::test_iter_view_iterable[source1] PASSED [ 95%] tests/test_structs.py::test_iter_view_iterable[source2] PASSED [ 96%] tests/test_structs.py::test_iter_view_multiple_iterable[_generate] PASSED [ 97%] tests/test_structs.py::test_iter_view_multiple_iterable[source1] PASSED [ 98%] tests/test_structs.py::test_iter_view_multiple_iterable[source2] PASSED [100%] =================================== FAILURES =================================== __________________ test_resolver[cheroot-PythonInputProvider] __________________ provider = reporter = def test_resolver(provider, reporter): resolver = Resolver(provider, reporter) if provider.expected_confliction: with pytest.raises(ResolutionImpossible) as ctx: result = resolver.resolve(provider.root_requirements) print(_format_resolution(result)) # Provide some debugging hints. assert _format_confliction(ctx.value) == provider.expected_confliction else: resolution = resolver.resolve(provider.root_requirements) > assert _format_resolution(resolution) == provider.expected_resolution E AssertionError: assert {'coverage': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'packaging': , 'pyparsing': , 'pytest': , 'atomicwrites': , 'attrs': , 'more-itertools': , 'pluggy': , 'py': , 'setuptools': , 'six': , 'termcolor': } == {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'pluggy': , 'py': , 'pyparsing': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } E E Common items: E {'atomicwrites': , E 'attrs': , E 'coverage': , E 'more-itertools': , E 'packaging': , E 'py': , E 'pytest': , E 'pytest-mock': , E 'pytest-sugar': , E 'pytest-testmon': , E 'setuptools': , E 'six': , E 'termcolor': } E Differing items: E {'pluggy': } != {'pluggy': } E {'pyparsing': } != {'pyparsing': } E E Full diff: E { E 'atomicwrites': , E 'attrs': , E 'coverage': , E 'more-itertools': , E 'packaging': , E - 'pluggy': , E ? ^^ ^ E + 'pluggy': , E ? ++ ^ ^^^^ E 'py': , E - 'pyparsing': , E ? ^ ^ ^ E + 'pyparsing': , E ? ^ ^ ^^^ E 'pytest': , E 'pytest-mock': , E 'pytest-sugar': , E 'pytest-testmon': , E 'setuptools': , E 'six': , E 'termcolor': , E } tests/functional/python/test_resolvers_python.py:212: AssertionError ----------------------------- Captured stdout call ----------------------------- Pin Candidate(name='coverage', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='packaging', version=, extras=set()) Pin Candidate(name='pyparsing', version=, extras=set()) Pin Candidate(name='pytest', version=, extras=set()) Pin Candidate(name='atomicwrites', version=, extras=set()) Pin Candidate(name='attrs', version=, extras=set()) Pin Candidate(name='more-itertools', version=, extras=set()) Pin Candidate(name='pluggy', version=, extras=set()) Pin Candidate(name='py', version=, extras=set()) Pin Candidate(name='setuptools', version=, extras=set()) Pin Candidate(name='six', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) _________ test_resolver[cheroot-PythonInputProviderNarrowRequirements] _________ provider = reporter = def test_resolver(provider, reporter): resolver = Resolver(provider, reporter) if provider.expected_confliction: with pytest.raises(ResolutionImpossible) as ctx: result = resolver.resolve(provider.root_requirements) print(_format_resolution(result)) # Provide some debugging hints. assert _format_confliction(ctx.value) == provider.expected_confliction else: resolution = resolver.resolve(provider.root_requirements) > assert _format_resolution(resolution) == provider.expected_resolution E AssertionError: assert {'coverage': , 'pytest-mock': , 'pytest-sugar': , 'termcolor': , 'pytest-testmon': , 'packaging': , 'pyparsing': , 'pytest': , 'atomicwrites': , 'attrs': , 'more-itertools': , 'pluggy': , 'py': , 'setuptools': , 'six': } == {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'pluggy': , 'py': , 'pyparsing': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } E E Common items: E {'atomicwrites': , E 'attrs': , E 'coverage': , E 'more-itertools': , E 'packaging': , E 'py': , E 'pytest': , E 'pytest-mock': , E 'pytest-sugar': , E 'pytest-testmon': , E 'setuptools': , E 'six': , E 'termcolor': } E Differing items: E {'pluggy': } != {'pluggy': } E {'pyparsing': } != {'pyparsing': } E E Full diff: E { E 'atomicwrites': , E 'attrs': , E 'coverage': , E 'more-itertools': , E 'packaging': , E - 'pluggy': , E ? ^^ ^ E + 'pluggy': , E ? ++ ^ ^^^^ E 'py': , E - 'pyparsing': , E ? ^ ^ ^ E + 'pyparsing': , E ? ^ ^ ^^^ E 'pytest': , E 'pytest-mock': , E 'pytest-sugar': , E 'pytest-testmon': , E 'setuptools': , E 'six': , E 'termcolor': , E } tests/functional/python/test_resolvers_python.py:212: AssertionError ----------------------------- Captured stdout call ----------------------------- Pin Candidate(name='coverage', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='packaging', version=, extras=set()) Pin Candidate(name='pyparsing', version=, extras=set()) Pin Candidate(name='pytest', version=, extras=set()) Pin Candidate(name='atomicwrites', version=, extras=set()) Pin Candidate(name='attrs', version=, extras=set()) Pin Candidate(name='more-itertools', version=, extras=set()) Pin Candidate(name='pluggy', version=, extras=set()) Pin Candidate(name='py', version=, extras=set()) Pin Candidate(name='setuptools', version=, extras=set()) Pin Candidate(name='six', version=, extras=set()) ____ test_no_optimistic_backtracking_resolver[cheroot-PythonInputProvider] _____ provider = reporter = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f116462be50> def test_no_optimistic_backtracking_resolver(provider, reporter, monkeypatch): """ Tests the resolver works with optimistic backtracking disabled for all cases, except for skipping candidates that is known to require optimistic backtracking. """ monkeypatch.setattr( resolvelib.resolvers.resolution, "_OPTIMISTIC_BACKJUMPING_RATIO", 0.0 ) resolver = Resolver(provider, reporter) if provider.expected_confliction: with pytest.raises(ResolutionImpossible) as ctx: result = resolver.resolve(provider.root_requirements) print(_format_resolution(result)) # Provide some debugging hints. assert _format_confliction(ctx.value) == provider.expected_confliction else: resolution = resolver.resolve(provider.root_requirements) > assert _format_resolution(resolution) == provider.expected_resolution E AssertionError: assert {'coverage': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'packaging': , 'pyparsing': , 'pytest': , 'atomicwrites': , 'attrs': , 'more-itertools': , 'pluggy': , 'py': , 'setuptools': , 'six': , 'termcolor': } == {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'pluggy': , 'py': , 'pyparsing': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } E E Common items: E {'atomicwrites': , E 'attrs': , E 'coverage': , E 'more-itertools': , E 'packaging': , E 'py': , E 'pytest': , E 'pytest-mock': , E 'pytest-sugar': , E 'pytest-testmon': , E 'setuptools': , E 'six': , E 'termcolor': } E Differing items: E {'pluggy': } != {'pluggy': } E {'pyparsing': } != {'pyparsing': } E E Full diff: E { E 'atomicwrites': , E 'attrs': , E 'coverage': , E 'more-itertools': , E 'packaging': , E - 'pluggy': , E ? ^^ ^ E + 'pluggy': , E ? ++ ^ ^^^^ E 'py': , E - 'pyparsing': , E ? ^ ^ ^ E + 'pyparsing': , E ? ^ ^ ^^^ E 'pytest': , E 'pytest-mock': , E 'pytest-sugar': , E 'pytest-testmon': , E 'setuptools': , E 'six': , E 'termcolor': , E } tests/functional/python/test_resolvers_python.py:247: AssertionError ----------------------------- Captured stdout call ----------------------------- Pin Candidate(name='coverage', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='packaging', version=, extras=set()) Pin Candidate(name='pyparsing', version=, extras=set()) Pin Candidate(name='pytest', version=, extras=set()) Pin Candidate(name='atomicwrites', version=, extras=set()) Pin Candidate(name='attrs', version=, extras=set()) Pin Candidate(name='more-itertools', version=, extras=set()) Pin Candidate(name='pluggy', version=, extras=set()) Pin Candidate(name='py', version=, extras=set()) Pin Candidate(name='setuptools', version=, extras=set()) Pin Candidate(name='six', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) _ test_no_optimistic_backtracking_resolver[cheroot-PythonInputProviderNarrowRequirements] _ provider = reporter = monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f11638e2060> def test_no_optimistic_backtracking_resolver(provider, reporter, monkeypatch): """ Tests the resolver works with optimistic backtracking disabled for all cases, except for skipping candidates that is known to require optimistic backtracking. """ monkeypatch.setattr( resolvelib.resolvers.resolution, "_OPTIMISTIC_BACKJUMPING_RATIO", 0.0 ) resolver = Resolver(provider, reporter) if provider.expected_confliction: with pytest.raises(ResolutionImpossible) as ctx: result = resolver.resolve(provider.root_requirements) print(_format_resolution(result)) # Provide some debugging hints. assert _format_confliction(ctx.value) == provider.expected_confliction else: resolution = resolver.resolve(provider.root_requirements) > assert _format_resolution(resolution) == provider.expected_resolution E AssertionError: assert {'coverage': , 'pytest-mock': , 'pytest-sugar': , 'termcolor': , 'pytest-testmon': , 'packaging': , 'pyparsing': , 'pytest': , 'atomicwrites': , 'attrs': , 'more-itertools': , 'pluggy': , 'py': , 'setuptools': , 'six': } == {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'pluggy': , 'py': , 'pyparsing': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } E E Common items: E {'atomicwrites': , E 'attrs': , E 'coverage': , E 'more-itertools': , E 'packaging': , E 'py': , E 'pytest': , E 'pytest-mock': , E 'pytest-sugar': , E 'pytest-testmon': , E 'setuptools': , E 'six': , E 'termcolor': } E Differing items: E {'pluggy': } != {'pluggy': } E {'pyparsing': } != {'pyparsing': } E E Full diff: E { E 'atomicwrites': , E 'attrs': , E 'coverage': , E 'more-itertools': , E 'packaging': , E - 'pluggy': , E ? ^^ ^ E + 'pluggy': , E ? ++ ^ ^^^^ E 'py': , E - 'pyparsing': , E ? ^ ^ ^ E + 'pyparsing': , E ? ^ ^ ^^^ E 'pytest': , E 'pytest-mock': , E 'pytest-sugar': , E 'pytest-testmon': , E 'setuptools': , E 'six': , E 'termcolor': , E } tests/functional/python/test_resolvers_python.py:247: AssertionError ----------------------------- Captured stdout call ----------------------------- Pin Candidate(name='coverage', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-mock', version=, extras=set()) Pin Candidate(name='pytest-sugar', version=, extras=set()) Pin Candidate(name='termcolor', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Reject Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='pytest-testmon', version=, extras=set()) Pin Candidate(name='packaging', version=, extras=set()) Pin Candidate(name='pyparsing', version=, extras=set()) Pin Candidate(name='pytest', version=, extras=set()) Pin Candidate(name='atomicwrites', version=, extras=set()) Pin Candidate(name='attrs', version=, extras=set()) Pin Candidate(name='more-itertools', version=, extras=set()) Pin Candidate(name='pluggy', version=, extras=set()) Pin Candidate(name='py', version=, extras=set()) Pin Candidate(name='setuptools', version=, extras=set()) Pin Candidate(name='six', version=, extras=set()) =========================== short test summary info ============================ FAILED tests/functional/python/test_resolvers_python.py::test_resolver[cheroot-PythonInputProvider] - AssertionError: assert {'coverage': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'packaging': , 'pyparsing': , 'pytest': , 'atomicwrites': , 'attrs': , 'more-itertools': , 'pluggy': , 'py': , 'setuptools': , 'six': , 'termcolor': } == {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'pluggy': , 'py': , 'pyparsing': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } Common items: {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'py': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } Differing items: {'pluggy': } != {'pluggy': } {'pyparsing': } != {'pyparsing': } Full diff: { 'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , - 'pluggy': , ? ^^ ^ + 'pluggy': , ? ++ ^ ^^^^ 'py': , - 'pyparsing': , ? ^ ^ ^ + 'pyparsing': , ? ^ ^ ^^^ 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': , } FAILED tests/functional/python/test_resolvers_python.py::test_resolver[cheroot-PythonInputProviderNarrowRequirements] - AssertionError: assert {'coverage': , 'pytest-mock': , 'pytest-sugar': , 'termcolor': , 'pytest-testmon': , 'packaging': , 'pyparsing': , 'pytest': , 'atomicwrites': , 'attrs': , 'more-itertools': , 'pluggy': , 'py': , 'setuptools': , 'six': } == {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'pluggy': , 'py': , 'pyparsing': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } Common items: {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'py': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } Differing items: {'pluggy': } != {'pluggy': } {'pyparsing': } != {'pyparsing': } Full diff: { 'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , - 'pluggy': , ? ^^ ^ + 'pluggy': , ? ++ ^ ^^^^ 'py': , - 'pyparsing': , ? ^ ^ ^ + 'pyparsing': , ? ^ ^ ^^^ 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': , } FAILED tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[cheroot-PythonInputProvider] - AssertionError: assert {'coverage': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'packaging': , 'pyparsing': , 'pytest': , 'atomicwrites': , 'attrs': , 'more-itertools': , 'pluggy': , 'py': , 'setuptools': , 'six': , 'termcolor': } == {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'pluggy': , 'py': , 'pyparsing': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } Common items: {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'py': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } Differing items: {'pluggy': } != {'pluggy': } {'pyparsing': } != {'pyparsing': } Full diff: { 'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , - 'pluggy': , ? ^^ ^ + 'pluggy': , ? ++ ^ ^^^^ 'py': , - 'pyparsing': , ? ^ ^ ^ + 'pyparsing': , ? ^ ^ ^^^ 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': , } FAILED tests/functional/python/test_resolvers_python.py::test_no_optimistic_backtracking_resolver[cheroot-PythonInputProviderNarrowRequirements] - AssertionError: assert {'coverage': , 'pytest-mock': , 'pytest-sugar': , 'termcolor': , 'pytest-testmon': , 'packaging': , 'pyparsing': , 'pytest': , 'atomicwrites': , 'attrs': , 'more-itertools': , 'pluggy': , 'py': , 'setuptools': , 'six': } == {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'pluggy': , 'py': , 'pyparsing': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } Common items: {'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , 'py': , 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': } Differing items: {'pluggy': } != {'pluggy': } {'pyparsing': } != {'pyparsing': } Full diff: { 'atomicwrites': , 'attrs': , 'coverage': , 'more-itertools': , 'packaging': , - 'pluggy': , ? ^^ ^ + 'pluggy': , ? ++ ^ ^^^^ 'py': , - 'pyparsing': , ? ^ ^ ^ + 'pyparsing': , ? ^ ^ ^^^ 'pytest': , 'pytest-mock': , 'pytest-sugar': , 'pytest-testmon': , 'setuptools': , 'six': , 'termcolor': , } ============== 4 failed, 84 passed, 6 xfailed in 90.34s (0:01:30) ============== ==> ERROR: A failure occurred in check(). Aborting... [!p]104[?7h]3008;end=b8bebb51985e4c21a6031951bd94babe\==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/felix-2/build [?25h[?25h[?25hreceiving incremental file list python-resolvelib-1.2.1-2-riscv64-build.log python-resolvelib-1.2.1-2-riscv64-check.log sent 62 bytes received 5,132 bytes 10,388.00 bytes/sec total size is 71,589 speedup is 13.78