==> Building on electivire ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list ./ .SRCINFO 1,238 100% 0.00kB/s 0:00:00 1,238 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=2/4) PKGBUILD 2,100 18% 2.00MB/s 0:00:00 11,213 100% 10.69MB/s 0:00:00 (xfr#2, to-chk=1/4) python-hatch-1.12.0-2.log 440 100% 429.69kB/s 0:00:00 440 100% 429.69kB/s 0:00:00 (xfr#3, to-chk=0/4) sent 2,061 bytes received 184 bytes 641.43 bytes/sec total size is 12,648 speedup is 5.63 ==> Running extra-riscv64-build -- -d /home/felix/packages/riscv64-pkg-cache:/var/cache/pacman/pkg -l felix16 on remote host... [?25l:: Synchronizing package databases... core downloading... extra downloading... :: Starting full system upgrade... there is nothing to do [?25h==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix16]...done ==> Making package: python-hatch 1.12.0-2 (Mon Aug 12 22:40:45 2024) ==> Retrieving sources...  -> Downloading hatch-v1.12.0.tar.gz... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 5150k 0 5150k 0 0 6164k 0 --:--:-- --:--:-- --:--:-- 6164k ==> Validating source files with sha256sums... hatch-v1.12.0.tar.gz ... Passed ==> Validating source files with b2sums... hatch-v1.12.0.tar.gz ... Passed ==> Making package: python-hatch 1.12.0-2 (Mon Aug 12 22:40:58 2024) ==> Checking runtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (44) New Version Net Change Download Size extra/python-anyio 4.4.0-1 1.23 MiB extra/python-certifi 2024.07.04-1 0.02 MiB extra/python-cffi 1.16.0-2 1.32 MiB extra/python-colorama 0.4.6-3 0.25 MiB extra/python-cryptography 42.0.6-1 4.51 MiB extra/python-distlib 0.3.8-2 1.29 MiB extra/python-distro 1.9.0-2 0.19 MiB extra/python-editables 0.5-3 0.03 MiB extra/python-filelock 3.13.3-2 0.08 MiB extra/python-h11 0.14.0-3 0.58 MiB extra/python-httpcore 1.0.5-1 0.92 MiB extra/python-idna 3.7-1 0.84 MiB extra/python-jaraco.classes 3.4.0-1 0.04 MiB extra/python-jaraco.context 5.3.0-1 0.04 MiB extra/python-jaraco.functools 4.0.2-1 0.07 MiB extra/python-jeepney 0.8.0-3 0.53 MiB extra/python-markdown-it-py 3.0.0-2 0.68 MiB extra/python-mdurl 0.1.2-5 0.06 MiB extra/python-more-itertools 10.3.0-1 0.63 MiB extra/python-pathspec 0.12.1-2 0.23 MiB extra/python-pluggy 1.5.0-1 0.20 MiB extra/python-ptyprocess 0.7.0-6 0.12 MiB extra/python-pycparser 2.22-2 1.71 MiB extra/python-pygments 2.18.0-1 14.10 MiB extra/python-secretstorage 3.3.3-5 0.11 MiB extra/python-sniffio 1.3.1-3 0.04 MiB extra/python-trove-classifiers 2024.7.2-1 0.12 MiB extra/python-uc-micro-py 1.0.3-2 0.02 MiB extra/uv 0.2.32-1 27.24 MiB 7.26 MiB extra/python-click 8.1.7-3 1.18 MiB extra/python-hatchling 1.24.2-1 1.05 MiB extra/python-httpx 0.27.0-1 0.95 MiB extra/python-hyperlink 21.0.0-6 0.59 MiB extra/python-keyring 25.2.1-1 0.32 MiB extra/python-packaging 24.1-1 0.49 MiB extra/python-pexpect 4.9.0-2 0.39 MiB extra/python-platformdirs 4.2.2-1 0.24 MiB extra/python-rich 13.7.1-2 3.11 MiB extra/python-shellingham 1.5.4-2 0.05 MiB extra/python-tomli-w 1.0.0-7 0.03 MiB extra/python-tomlkit 0.13.0-1 0.56 MiB extra/python-userpath 1.9.2-2 0.08 MiB extra/python-uv 0.2.32-1 0.10 MiB 0.02 MiB extra/python-virtualenv 20.25.0-3 4.61 MiB Total Download Size: 7.28 MiB Total Installed Size: 70.94 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... uv-0.2.32-1-riscv64 downloading... python-uv-0.2.32-1-riscv64 downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing python-click... installing python-packaging... installing python-pathspec... installing python-pluggy... installing python-editables... installing python-trove-classifiers... installing python-hatchling... installing python-certifi... installing python-h11... installing python-httpcore... Optional dependencies for python-httpcore python-h2: for HTTP/2 support python-socksio: for SOCKS support python-anyio: for asyncio backend [pending] python-trio: for trio backend python-sniffio: for async support [pending] installing python-idna... installing python-sniffio... installing python-anyio... Optional dependencies for python-anyio python-trio: trio backend python-outcome: trio backend python-uvloop: use uvloop for asyncio backend python-pytest: pytest plugin installing python-httpx... Optional dependencies for python-httpx python-brotli: for brotli response decompression python-brotlicffi: for brotli response decompression python-h2: HTTP/2 support python-socksio: SOCKS proxy support python-click: command line client support [installed] python-rich: command line client support [pending] python-pygments: command line client support [pending] python-trio: alternative async library installing python-hyperlink... installing python-more-itertools... installing python-jaraco.classes... installing python-pycparser... installing python-cffi... Optional dependencies for python-cffi python-setuptools: "limited api" version checking in cffi.setuptools_ext installing python-cryptography... installing python-jeepney... installing python-secretstorage... installing python-jaraco.functools... installing python-jaraco.context... installing python-keyring... Optional dependencies for python-keyring python-keyrings-alt: Alternative backends python-dbus: kwallet backend installing python-ptyprocess... installing python-pexpect... installing python-platformdirs... installing python-colorama... installing python-uc-micro-py... installing python-mdurl... installing python-markdown-it-py... Optional dependencies for python-markdown-it-py python-mdit_py_plugins: core plugins installing python-pygments... installing python-rich... installing python-shellingham... installing python-tomli-w... installing python-tomlkit... installing python-distro... installing python-userpath... installing uv... installing python-uv... installing python-distlib... installing python-filelock... installing python-virtualenv... [?25h==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (26) New Version Net Change Download Size core/libedit 20240517_3.1-1 0.24 MiB extra/llvm-libs 18.1.8-4 121.23 MiB extra/perl-error 0.17029-6 0.04 MiB extra/perl-mailtools 2.21-8 0.10 MiB extra/perl-timedate 2.33-6 0.08 MiB extra/python-autocommand 2.2.2-6 0.08 MiB extra/python-fastjsonschema 2.20.0-1 0.27 MiB extra/python-iniconfig 2.0.0-5 0.04 MiB extra/python-jaraco.text 4.0.0-1 0.08 MiB extra/python-ordered-set 4.1.0-5 0.06 MiB extra/python-pyproject-hooks 1.1.0-1 0.10 MiB extra/python-setuptools 1:69.0.3-6 4.39 MiB extra/python-setuptools-scm 8.1.0-1 0.36 MiB extra/python-tomli 2.0.1-4 0.10 MiB extra/python-validate-pyproject 0.18-1 0.33 MiB extra/git 2.46.0-1 26.98 MiB core/libxcrypt-compat 4.4.36-2 0.18 MiB 0.08 MiB extra/python-build 1.2.1-3 0.19 MiB extra/python-hatch-vcs 0.4.0-3 0.04 MiB extra/python-installer 0.7.0-8 0.18 MiB extra/python-pyfakefs 5.6.0-1 4.40 MiB 0.48 MiB extra/python-pytest 1:8.3.1-1 3.90 MiB extra/python-pytest-mock 3.14.0-1 0.09 MiB extra/python-wheel 0.44.0-1 0.26 MiB extra/python-zstandard 0.22.0-2 1.18 MiB extra/rust 1:1.80.1-1 232.42 MiB 59.58 MiB Total Download Size: 60.14 MiB Total Installed Size: 397.32 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... rust-1:1.80.1-1-riscv64 downloading... python-pyfakefs-5.6.0-1-any downloading... libxcrypt-compat-4.4.36-2-riscv64 downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... 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 [installed] python-virtualenv: to use virtualenv for build isolation [installed] installing python-autocommand... installing python-jaraco.text... Optional dependencies for python-jaraco.text python-inflect: for show-newlines script installing python-ordered-set... installing python-tomli... installing python-fastjsonschema... installing python-validate-pyproject... installing python-setuptools... installing python-setuptools-scm... installing python-hatch-vcs... installing python-installer... installing python-wheel... Optional dependencies for python-wheel python-keyring: for wheel.signatures [installed] python-xdg: for wheel.signatures installing perl-error... installing perl-timedate... installing perl-mailtools... installing git... Optional dependencies for git tk: gitk and git gui openssh: ssh transport and crypto perl-libwww: git svn perl-term-readkey: git svn and interactive.singlekey setting perl-io-socket-ssl: git send-email TLS support perl-authen-sasl: git send-email TLS support perl-mediawiki-api: git mediawiki support perl-datetime-format-iso8601: git mediawiki support perl-lwp-protocol-https: git mediawiki https support perl-cgi: gitweb (web interface) support python: git svn & git p4 [installed] subversion: git svn org.freedesktop.secrets: keyring credential helper libsecret: libsecret credential helper [installed] installing libxcrypt-compat... installing python-iniconfig... installing python-pytest... installing python-pyfakefs... installing python-pytest-mock... installing python-zstandard... Optional dependencies for python-zstandard python-cffi [installed] installing libedit... installing llvm-libs... installing rust... Optional dependencies for rust gdb: rust-gdb script lldb: rust-lldb script :: Running post-transaction hooks... (1/1) Warn about old perl modules [?25h==> Retrieving sources...  -> Found hatch-v1.12.0.tar.gz ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Extracting hatch-v1.12.0.tar.gz with bsdtar ==> Starting build()... * Getting build dependencies for wheel... * Building wheel... Successfully built hatch-1.12.0-py3-none-any.whl ==> Starting check()... ============================= test session starts ============================== platform linux -- Python 3.12.4, pytest-8.3.1, pluggy-1.5.0 -- /usr/bin/python cachedir: .pytest_cache rootdir: /build/python-hatch/src/hatch-hatch-v1.12.0 configfile: pyproject.toml plugins: anyio-4.4.0, pyfakefs-5.6.0, mock-3.14.0 collecting ... collected 2077 items / 105 deselected / 1972 selected tests/backend/builders/hooks/test_custom.py::test_no_path PASSED [ 0%] tests/backend/builders/hooks/test_custom.py::test_path_not_string PASSED [ 0%] tests/backend/builders/hooks/test_custom.py::test_nonexistent PASSED [ 0%] tests/backend/builders/hooks/test_custom.py::test_default PASSED [ 0%] tests/backend/builders/hooks/test_custom.py::test_explicit_path PASSED [ 0%] tests/backend/builders/hooks/test_custom.py::test_no_subclass PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestConfigPath::test_correct PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestConfigPath::test_missing PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestConfigPath::test_not_string PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestConfigTemplate::test_correct PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestConfigTemplate::test_not_string PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestConfigPattern::test_correct PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestConfigPattern::test_not_string PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestTemplate::test_default PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestTemplate::test_create_necessary_directories PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestTemplate::test_custom PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestPattern::test_default PASSED [ 0%] tests/backend/builders/hooks/test_version.py::TestPattern::test_custom PASSED [ 0%] tests/backend/builders/plugin/test_interface.py::TestClean::test_default PASSED [ 0%] tests/backend/builders/plugin/test_interface.py::TestPluginManager::test_default PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestPluginManager::test_reuse PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestRawConfig::test_default PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestRawConfig::test_reuse PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestRawConfig::test_read PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestMetadata::test_base PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestMetadata::test_core PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestMetadata::test_hatch PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestMetadata::test_build_config PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestMetadata::test_build_config_not_table PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestMetadata::test_target_config PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestMetadata::test_target_config_not_table PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestProjectID::test_normalization PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestBuildValidation::test_unknown_version PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestBuildValidation::test_invalid_metadata PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestHookConfig::test_unknown PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestDirectoryRecursion::test_infinite_loop_prevention PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestDirectoryRecursion::test_only_include PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestDirectoryRecursion::test_no_duplication_force_include_only PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestDirectoryRecursion::test_no_duplication_force_include_and_selection PASSED [ 1%] tests/backend/builders/plugin/test_interface.py::TestDirectoryRecursion::test_no_duplication_force_include_with_sources PASSED [ 2%] tests/backend/builders/plugin/test_interface.py::TestDirectoryRecursion::test_exists PASSED [ 2%] tests/backend/builders/plugin/test_interface.py::TestDirectoryRecursion::test_order PASSED [ 2%] tests/backend/builders/test_binary.py::test_class PASSED [ 2%] tests/backend/builders/test_binary.py::test_class_legacy PASSED [ 2%] tests/backend/builders/test_binary.py::test_default_versions PASSED [ 2%] tests/backend/builders/test_binary.py::TestScripts::test_unset PASSED [ 2%] tests/backend/builders/test_binary.py::TestScripts::test_default PASSED [ 2%] tests/backend/builders/test_binary.py::TestScripts::test_specific PASSED [ 2%] tests/backend/builders/test_binary.py::TestScripts::test_not_array PASSED [ 2%] tests/backend/builders/test_binary.py::TestScripts::test_script_not_string PASSED [ 2%] tests/backend/builders/test_binary.py::TestScripts::test_unknown_script PASSED [ 2%] tests/backend/builders/test_binary.py::TestPythonVersion::test_default_no_source PASSED [ 2%] tests/backend/builders/test_binary.py::TestPythonVersion::test_default_explicit_source PASSED [ 2%] tests/backend/builders/test_binary.py::TestPythonVersion::test_set PASSED [ 2%] tests/backend/builders/test_binary.py::TestPythonVersion::test_not_string PASSED [ 2%] tests/backend/builders/test_binary.py::TestPythonVersion::test_compatibility PASSED [ 2%] tests/backend/builders/test_binary.py::TestPythonVersion::test_incompatible PASSED [ 2%] tests/backend/builders/test_binary.py::TestPyAppVersion::test_default PASSED [ 2%] tests/backend/builders/test_binary.py::TestPyAppVersion::test_set PASSED [ 2%] tests/backend/builders/test_binary.py::TestPyAppVersion::test_not_string PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_default PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_default_build_target PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_scripts PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_scripts_build_target PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_custom_cargo PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_no_cargo PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_python_version PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_pyapp_version PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_verbosity PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_local_build_with_build_target PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_local_build_no_build_target PASSED [ 3%] tests/backend/builders/test_binary.py::TestBuildBootstrap::test_legacy PASSED [ 3%] tests/backend/builders/test_config.py::TestDirectory::test_default PASSED [ 3%] tests/backend/builders/test_config.py::TestDirectory::test_target PASSED [ 3%] tests/backend/builders/test_config.py::TestDirectory::test_target_not_boolean PASSED [ 3%] tests/backend/builders/test_config.py::TestDirectory::test_global PASSED [ 3%] tests/backend/builders/test_config.py::TestDirectory::test_global_not_boolean PASSED [ 3%] tests/backend/builders/test_config.py::TestDirectory::test_target_overrides_global PASSED [ 3%] tests/backend/builders/test_config.py::TestDirectory::test_absolute_path PASSED [ 4%] tests/backend/builders/test_config.py::TestSkipExcludedDirs::test_default PASSED [ 4%] tests/backend/builders/test_config.py::TestSkipExcludedDirs::test_target PASSED [ 4%] tests/backend/builders/test_config.py::TestSkipExcludedDirs::test_target_not_boolean PASSED [ 4%] tests/backend/builders/test_config.py::TestSkipExcludedDirs::test_global PASSED [ 4%] tests/backend/builders/test_config.py::TestSkipExcludedDirs::test_global_not_boolean PASSED [ 4%] tests/backend/builders/test_config.py::TestSkipExcludedDirs::test_target_overrides_global PASSED [ 4%] tests/backend/builders/test_config.py::TestIgnoreVCS::test_default PASSED [ 4%] tests/backend/builders/test_config.py::TestIgnoreVCS::test_target PASSED [ 4%] tests/backend/builders/test_config.py::TestIgnoreVCS::test_target_not_boolean PASSED [ 4%] tests/backend/builders/test_config.py::TestIgnoreVCS::test_global PASSED [ 4%] tests/backend/builders/test_config.py::TestIgnoreVCS::test_global_not_boolean PASSED [ 4%] tests/backend/builders/test_config.py::TestIgnoreVCS::test_target_overrides_global PASSED [ 4%] tests/backend/builders/test_config.py::TestRequireRuntimeDependencies::test_default PASSED [ 4%] tests/backend/builders/test_config.py::TestRequireRuntimeDependencies::test_target PASSED [ 4%] tests/backend/builders/test_config.py::TestRequireRuntimeDependencies::test_target_not_boolean PASSED [ 4%] tests/backend/builders/test_config.py::TestRequireRuntimeDependencies::test_global PASSED [ 4%] tests/backend/builders/test_config.py::TestRequireRuntimeDependencies::test_global_not_boolean PASSED [ 4%] tests/backend/builders/test_config.py::TestRequireRuntimeDependencies::test_target_overrides_global PASSED [ 4%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_default PASSED [ 4%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_target PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_target_not_array PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_target_feature_not_string PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_target_feature_empty_string PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_target_feature_unknown PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_global PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_global_not_array PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_global_feature_not_string PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_global_feature_empty_string PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_global_feature_unknown PASSED [ 5%] tests/backend/builders/test_config.py::TestRequireRuntimeFeatures::test_target_overrides_global PASSED [ 5%] tests/backend/builders/test_config.py::TestOnlyPackages::test_default PASSED [ 5%] tests/backend/builders/test_config.py::TestOnlyPackages::test_target PASSED [ 5%] tests/backend/builders/test_config.py::TestOnlyPackages::test_target_not_boolean PASSED [ 5%] tests/backend/builders/test_config.py::TestOnlyPackages::test_global PASSED [ 5%] tests/backend/builders/test_config.py::TestOnlyPackages::test_global_not_boolean PASSED [ 5%] tests/backend/builders/test_config.py::TestOnlyPackages::test_target_overrides_global PASSED [ 5%] tests/backend/builders/test_config.py::TestReproducible::test_default PASSED [ 5%] tests/backend/builders/test_config.py::TestReproducible::test_target PASSED [ 5%] tests/backend/builders/test_config.py::TestReproducible::test_target_not_boolean PASSED [ 5%] tests/backend/builders/test_config.py::TestReproducible::test_global PASSED [ 6%] tests/backend/builders/test_config.py::TestReproducible::test_global_not_boolean PASSED [ 6%] tests/backend/builders/test_config.py::TestReproducible::test_target_overrides_global PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_default PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_global_invalid_type PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_global PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_global_pattern_not_string PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_global_pattern_empty_string PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_target PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_target_pattern_not_string PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_target_pattern_empty_string PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeDirs::test_target_overrides_global PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeExact::test_default PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeExact::test_target PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeExact::test_target_not_boolean PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeExact::test_global PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeExact::test_global_not_boolean PASSED [ 6%] tests/backend/builders/test_config.py::TestDevModeExact::test_target_overrides_global PASSED [ 6%] tests/backend/builders/test_config.py::TestPackages::test_default PASSED [ 6%] tests/backend/builders/test_config.py::TestPackages::test_global_invalid_type PASSED [ 6%] tests/backend/builders/test_config.py::TestPackages::test_global PASSED [ 7%] tests/backend/builders/test_config.py::TestPackages::test_global_package_not_string PASSED [ 7%] tests/backend/builders/test_config.py::TestPackages::test_global_package_empty_string PASSED [ 7%] tests/backend/builders/test_config.py::TestPackages::test_target PASSED [ 7%] tests/backend/builders/test_config.py::TestPackages::test_target_package_not_string PASSED [ 7%] tests/backend/builders/test_config.py::TestPackages::test_target_package_empty_string PASSED [ 7%] tests/backend/builders/test_config.py::TestPackages::test_target_overrides_global PASSED [ 7%] tests/backend/builders/test_config.py::TestPackages::test_no_source PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_default PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_global_invalid_type PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_global_array PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_global_array_source_not_string PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_global_array_source_empty_string PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_global_mapping PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_global_mapping_source_empty_string PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_global_mapping_path_empty_string PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_global_mapping_replacement_not_string PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_target_invalid_type PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_target_array PASSED [ 7%] tests/backend/builders/test_config.py::TestSources::test_target_array_source_not_string PASSED [ 8%] tests/backend/builders/test_config.py::TestSources::test_target_array_source_empty_string PASSED [ 8%] tests/backend/builders/test_config.py::TestSources::test_target_mapping PASSED [ 8%] tests/backend/builders/test_config.py::TestSources::test_target_mapping_source_empty_string PASSED [ 8%] tests/backend/builders/test_config.py::TestSources::test_target_mapping_path_empty_string PASSED [ 8%] tests/backend/builders/test_config.py::TestSources::test_target_mapping_replacement_not_string PASSED [ 8%] tests/backend/builders/test_config.py::TestSources::test_target_overrides_global PASSED [ 8%] tests/backend/builders/test_config.py::TestSources::test_no_source PASSED [ 8%] tests/backend/builders/test_config.py::TestSources::test_compatible_with_packages PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_default PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_global_invalid_type PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_global_absolute PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_global_relative PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_global_source_empty_string PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_global_relative_path_not_string PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_global_relative_path_empty_string PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_target_invalid_type PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_target_absolute PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_target_relative PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_target_source_empty_string PASSED [ 8%] tests/backend/builders/test_config.py::TestForceInclude::test_target_relative_path_not_string PASSED [ 9%] tests/backend/builders/test_config.py::TestForceInclude::test_target_relative_path_empty_string PASSED [ 9%] tests/backend/builders/test_config.py::TestForceInclude::test_order PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_default PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_global_invalid_type PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_global_path_not_string PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_global_not_relative[/] PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_global_not_relative[~/foo] PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_global_not_relative[../foo] PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_global_duplicate PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_global_correct PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_target_invalid_type PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_target_path_not_string PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_target_not_relative[/] PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_target_not_relative[~/foo] PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_target_not_relative[../foo] PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_target_duplicate PASSED [ 9%] tests/backend/builders/test_config.py::TestOnlyInclude::test_target_correct PASSED [ 9%] tests/backend/builders/test_config.py::TestVersions::test_default_known PASSED [ 9%] tests/backend/builders/test_config.py::TestVersions::test_default_override PASSED [ 9%] tests/backend/builders/test_config.py::TestVersions::test_invalid_type PASSED [ 10%] tests/backend/builders/test_config.py::TestVersions::test_correct PASSED [ 10%] tests/backend/builders/test_config.py::TestVersions::test_empty_default PASSED [ 10%] tests/backend/builders/test_config.py::TestVersions::test_version_not_string PASSED [ 10%] tests/backend/builders/test_config.py::TestVersions::test_version_empty_string PASSED [ 10%] tests/backend/builders/test_config.py::TestVersions::test_unknown_version PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_default PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_target_not_table PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_target_hook_not_table PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_global_not_table PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_global_hook_not_table PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_global PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_order PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_target_overrides_global PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_env_var_no_hooks PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_enable_by_default PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_env_var_all_override_enable_by_default PASSED [ 10%] tests/backend/builders/test_config.py::TestHookConfig::test_env_var_specific_override_enable_by_default PASSED [ 10%] tests/backend/builders/test_config.py::TestDependencies::test_default PASSED [ 10%] tests/backend/builders/test_config.py::TestDependencies::test_target_not_array PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_target_dependency_not_string PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_global_not_array PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_global_dependency_not_string PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hook_require_runtime_dependencies_not_boolean PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hook_require_runtime_features_not_array PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hook_require_runtime_features_feature_not_string PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hook_require_runtime_features_feature_empty_string PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hook_require_runtime_features_feature_unknown PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hook_dependencies_not_array PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hook_dependency_not_string PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_correct PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_require_runtime_dependencies PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_require_runtime_features PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_env_var_no_hooks PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hooks_enable_by_default PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hooks_env_var_all_override_enable_by_default PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hooks_env_var_specific_override_enable_by_default PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hooks_require_runtime_dependencies PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hooks_require_runtime_dependencies_disabled PASSED [ 11%] tests/backend/builders/test_config.py::TestDependencies::test_hooks_require_runtime_features PASSED [ 12%] tests/backend/builders/test_config.py::TestDependencies::test_hooks_require_runtime_features_disabled PASSED [ 12%] tests/backend/builders/test_config.py::TestFileSelectionDefaults::test_include PASSED [ 12%] tests/backend/builders/test_config.py::TestFileSelectionDefaults::test_exclude PASSED [ 12%] tests/backend/builders/test_config.py::TestFileSelectionDefaults::test_packages PASSED [ 12%] tests/backend/builders/test_config.py::TestFileSelectionDefaults::test_only_include PASSED [ 12%] tests/backend/builders/test_config.py::TestFileSelectionDefaults::test_global_exclude PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_default PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_global_becomes_spec PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_global_invalid_type PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_global[/] PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_global[\\] SKIPPED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_global_pattern_not_string PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_global_pattern_empty_string PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_global_packages_included[/] PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_global_packages_included[\\] SKIPPED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_target[/] PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_target[\\] SKIPPED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_target_pattern_not_string PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_target_pattern_empty_string PASSED [ 12%] tests/backend/builders/test_config.py::TestPatternInclude::test_target_overrides_global[/] PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternInclude::test_target_overrides_global[\\] SKIPPED [ 13%] tests/backend/builders/test_config.py::TestPatternInclude::test_target_packages_included[/] PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternInclude::test_target_packages_included[\\] SKIPPED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_default[/] PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_default[\\] SKIPPED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_global_invalid_type PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_global[/] PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_global[\\] SKIPPED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_global_pattern_not_string PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_global_pattern_empty_string PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_target[/] PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_target[\\] SKIPPED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_target_pattern_not_string PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_target_pattern_empty_string PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_target_overrides_global[/] PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_target_overrides_global[\\] SKIPPED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_git[/] PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_git[\\] SKIPPED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_ignore_vcs_git[/] PASSED [ 13%] tests/backend/builders/test_config.py::TestPatternExclude::test_ignore_vcs_git[\\] SKIPPED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_git_boundary[/] PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_git_boundary[\\] SKIPPED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_git_exclude_whitelisted_file[/] PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_git_exclude_whitelisted_file[\\] SKIPPED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_mercurial[/] PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_mercurial[\\] SKIPPED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_ignore_vcs_mercurial[/] PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_ignore_vcs_mercurial[\\] SKIPPED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_mercurial_boundary[/] PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_vcs_mercurial_boundary[\\] SKIPPED [ 14%] tests/backend/builders/test_config.py::TestPatternExclude::test_override_default_global_exclude_patterns PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_default PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_global_becomes_spec PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_global_invalid_type PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_global[/] PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_global[\\] SKIPPED [ 14%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_global_pattern_not_string PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_global_pattern_empty_string PASSED [ 14%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_target[/] PASSED [ 15%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_target[\\] SKIPPED [ 15%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_target_pattern_not_string PASSED [ 15%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_target_pattern_empty_string PASSED [ 15%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_target_overrides_global[/] PASSED [ 15%] tests/backend/builders/test_config.py::TestPatternArtifacts::test_target_overrides_global[\\] SKIPPED [ 15%] tests/backend/builders/test_config.py::TestPatternMatching::test_include_explicit PASSED [ 15%] tests/backend/builders/test_config.py::TestPatternMatching::test_no_include_greedy PASSED [ 15%] tests/backend/builders/test_config.py::TestPatternMatching::test_exclude_precedence PASSED [ 15%] tests/backend/builders/test_config.py::TestPatternMatching::test_artifact_super_precedence PASSED [ 15%] tests/backend/builders/test_custom.py::test_target_config_not_table PASSED [ 15%] tests/backend/builders/test_custom.py::test_no_path PASSED [ 15%] tests/backend/builders/test_custom.py::test_path_not_string PASSED [ 15%] tests/backend/builders/test_custom.py::test_nonexistent PASSED [ 15%] tests/backend/builders/test_custom.py::test_no_subclass PASSED [ 15%] tests/backend/builders/test_custom.py::test_multiple_subclasses PASSED [ 15%] tests/backend/builders/test_custom.py::test_dynamic_dependencies PASSED [ 15%] tests/backend/builders/test_sdist.py::test_class PASSED [ 15%] tests/backend/builders/test_sdist.py::test_default_versions PASSED [ 15%] tests/backend/builders/test_sdist.py::TestSupportLegacy::test_default PASSED [ 15%] tests/backend/builders/test_sdist.py::TestSupportLegacy::test_target PASSED [ 16%] tests/backend/builders/test_sdist.py::TestCoreMetadataConstructor::test_default PASSED [ 16%] tests/backend/builders/test_sdist.py::TestCoreMetadataConstructor::test_not_string PASSED [ 16%] tests/backend/builders/test_sdist.py::TestCoreMetadataConstructor::test_unknown PASSED [ 16%] tests/backend/builders/test_sdist.py::TestStrictNaming::test_default PASSED [ 16%] tests/backend/builders/test_sdist.py::TestStrictNaming::test_target PASSED [ 16%] tests/backend/builders/test_sdist.py::TestStrictNaming::test_target_not_boolean PASSED [ 16%] tests/backend/builders/test_sdist.py::TestStrictNaming::test_global PASSED [ 16%] tests/backend/builders/test_sdist.py::TestStrictNaming::test_global_not_boolean PASSED [ 16%] tests/backend/builders/test_sdist.py::TestStrictNaming::test_target_overrides_global PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_default PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_packages PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_description PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_readme PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_authors_name PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_authors_email PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_authors_name_and_email PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_authors_multiple PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_maintainers_name PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_maintainers_email PASSED [ 16%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_maintainers_name_and_email PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_maintainers_multiple PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_classifiers PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_dependencies PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_dependencies_extra PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_optional_dependencies PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_scripts PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_gui_scripts PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_entry_points PASSED [ 17%] tests/backend/builders/test_sdist.py::TestConstructSetupPyFile::test_all PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_default PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_default_no_reproducible PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_default_support_legacy PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_default_build_script_artifacts PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_default_build_script_extra_dependencies PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_include_project_file PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_project_file_always_included PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_config_file_always_included PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_include_readme PASSED [ 17%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_readme_always_included PASSED [ 18%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_include_license_files PASSED [ 18%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_license_files_always_included PASSED [ 18%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_default_vcs_git_exclusion_files PASSED [ 18%] tests/backend/builders/test_sdist.py::TestBuildStandard::test_default_vcs_mercurial_exclusion_files PASSED [ 18%] tests/backend/builders/test_wheel.py::test_class PASSED [ 18%] tests/backend/builders/test_wheel.py::test_default_versions PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_already_defined PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_flat_layout PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_src_layout PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_single_module PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_namespace PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_default_error PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_bypass_selection_option PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_force_include_option_considered_selection PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_force_include_build_data_considered_selection PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_artifacts_build_data_considered_selection PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_unnormalized_name_with_unnormalized_directory PASSED [ 18%] tests/backend/builders/test_wheel.py::TestDefaultFileSelection::test_unnormalized_name_with_normalized_directory PASSED [ 18%] tests/backend/builders/test_wheel.py::TestCoreMetadataConstructor::test_default PASSED [ 18%] tests/backend/builders/test_wheel.py::TestCoreMetadataConstructor::test_not_string PASSED [ 19%] tests/backend/builders/test_wheel.py::TestCoreMetadataConstructor::test_unknown PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedData::test_default PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedData::test_invalid_type PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedData::test_absolute PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedData::test_relative PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedData::test_source_empty_string PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedData::test_relative_path_not_string PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedData::test_relative_path_empty_string PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedData::test_order PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedScripts::test_default PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedScripts::test_invalid_type PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedScripts::test_absolute PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedScripts::test_relative PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedScripts::test_source_empty_string PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedScripts::test_relative_path_not_string PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedScripts::test_relative_path_empty_string PASSED [ 19%] tests/backend/builders/test_wheel.py::TestSharedScripts::test_order PASSED [ 19%] tests/backend/builders/test_wheel.py::TestExtraMetadata::test_default PASSED [ 19%] tests/backend/builders/test_wheel.py::TestExtraMetadata::test_invalid_type PASSED [ 19%] tests/backend/builders/test_wheel.py::TestExtraMetadata::test_absolute PASSED [ 20%] tests/backend/builders/test_wheel.py::TestExtraMetadata::test_relative PASSED [ 20%] tests/backend/builders/test_wheel.py::TestExtraMetadata::test_source_empty_string PASSED [ 20%] tests/backend/builders/test_wheel.py::TestExtraMetadata::test_relative_path_not_string PASSED [ 20%] tests/backend/builders/test_wheel.py::TestExtraMetadata::test_relative_path_empty_string PASSED [ 20%] tests/backend/builders/test_wheel.py::TestExtraMetadata::test_order PASSED [ 20%] tests/backend/builders/test_wheel.py::TestStrictNaming::test_default PASSED [ 20%] tests/backend/builders/test_wheel.py::TestStrictNaming::test_target PASSED [ 20%] tests/backend/builders/test_wheel.py::TestStrictNaming::test_target_not_boolean PASSED [ 20%] tests/backend/builders/test_wheel.py::TestStrictNaming::test_global PASSED [ 20%] tests/backend/builders/test_wheel.py::TestStrictNaming::test_global_not_boolean PASSED [ 20%] tests/backend/builders/test_wheel.py::TestStrictNaming::test_target_overrides_global PASSED [ 20%] tests/backend/builders/test_wheel.py::TestMacOSMaxCompat::test_correct PASSED [ 20%] tests/backend/builders/test_wheel.py::TestMacOSMaxCompat::test_not_boolean PASSED [ 20%] tests/backend/builders/test_wheel.py::TestBypassSelection::test_default PASSED [ 20%] tests/backend/builders/test_wheel.py::TestBypassSelection::test_correct PASSED [ 20%] tests/backend/builders/test_wheel.py::TestBypassSelection::test_not_boolean PASSED [ 20%] tests/backend/builders/test_wheel.py::TestConstructEntryPointsFile::test_default PASSED [ 20%] tests/backend/builders/test_wheel.py::TestConstructEntryPointsFile::test_scripts PASSED [ 20%] tests/backend/builders/test_wheel.py::TestConstructEntryPointsFile::test_gui_scripts PASSED [ 20%] tests/backend/builders/test_wheel.py::TestConstructEntryPointsFile::test_entry_points PASSED [ 21%] tests/backend/builders/test_wheel.py::TestConstructEntryPointsFile::test_all PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_reproducible_timestamp PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_no_reproducible PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_multiple_licenses PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_include PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_only_packages PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_only_packages_artifact_override PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_python_constraint[>3] PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_python_constraint[==3.11.4] PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_build_script_default_tag PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_build_script_set_tag PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_shared_data PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_shared_data_from_build_data PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_shared_scripts PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_shared_scripts_from_build_data PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_extra_metadata PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_extra_metadata_build_data PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_namespace_package PASSED [ 21%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_default_entry_points PASSED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_explicit_selection_with_src_layout PASSED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_single_module PASSED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_no_strict_naming PASSED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_editable_sources_rewrite_error PASSED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_macos_archflags[-arch x86_64-x86_64] SKIPPED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_macos_archflags[-arch arm64-arm64] SKIPPED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_macos_archflags[-arch arm64 -arch x86_64-universal2] SKIPPED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_macos_max_compat[True] SKIPPED [ 22%] tests/backend/builders/test_wheel.py::TestBuildStandard::test_macos_max_compat[False] SKIPPED [ 22%] tests/backend/dep/test_core.py::test_no_dependencies FAILED [ 22%] tests/backend/dep/test_core.py::test_dependency_not_found FAILED [ 22%] tests/backend/dep/test_core.py::test_dependency_found FAILED [ 22%] tests/backend/dep/test_core.py::test_version_unmet FAILED [ 22%] tests/backend/dep/test_core.py::test_marker_met FAILED [ 22%] tests/backend/dep/test_core.py::test_marker_unmet FAILED [ 22%] tests/backend/dep/test_core.py::test_extra_no_dependencies FAILED [ 22%] tests/backend/dep/test_core.py::test_unknown_extra FAILED [ 22%] tests/backend/dep/test_core.py::test_extra_unmet FAILED [ 22%] tests/backend/dep/test_core.py::test_extra_met FAILED [ 22%] tests/backend/dep/test_core.py::test_dependency_git_pip PASSED [ 23%] tests/backend/dep/test_core.py::test_dependency_git_uv FAILED [ 23%] tests/backend/dep/test_core.py::test_dependency_git_revision_pip PASSED [ 23%] tests/backend/dep/test_core.py::test_dependency_git_revision_uv FAILED [ 23%] tests/backend/dep/test_core.py::test_dependency_git_commit FAILED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[or] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[and] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[with] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[mit or] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[mit and] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[mit with] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[or mit] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[and mit] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[with mit] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[(mit] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[mit)] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[mit or or apache-2.0] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_syntax_errors[mit or apache-2.0 (bsd-3-clause and MPL-2.0)] PASSED [ 23%] tests/backend/licenses/test_parse.py::test_unknown_license PASSED [ 23%] tests/backend/licenses/test_parse.py::test_unknown_license_exception PASSED [ 23%] tests/backend/licenses/test_parse.py::test_normalization[mIt-MIT] PASSED [ 24%] tests/backend/licenses/test_parse.py::test_normalization[mit or apache-2.0-MIT OR Apache-2.0] PASSED [ 24%] tests/backend/licenses/test_parse.py::test_normalization[mit and apache-2.0-MIT AND Apache-2.0] PASSED [ 24%] tests/backend/licenses/test_parse.py::test_normalization[gpl-2.0-or-later with bison-exception-2.2-GPL-2.0-or-later WITH Bison-exception-2.2] PASSED [ 24%] tests/backend/licenses/test_parse.py::test_normalization[mit or apache-2.0 and (bsd-3-clause or mpl-2.0)-MIT OR Apache-2.0 AND (BSD-3-Clause OR MPL-2.0)] PASSED [ 24%] tests/backend/licenses/test_parse.py::test_normalization[mit and (apache-2.0+ or mpl-2.0+)-MIT AND (Apache-2.0+ OR MPL-2.0+)] PASSED [ 24%] tests/backend/licenses/test_parse.py::test_normalization[licenseref-public-domain-LicenseRef-Public-Domain] PASSED [ 24%] tests/backend/licenses/test_parse.py::test_normalization[licenseref-proprietary-LicenseRef-Proprietary] PASSED [ 24%] tests/backend/licenses/test_supported.py::test_licenses PASSED [ 24%] tests/backend/licenses/test_supported.py::test_exceptions PASSED [ 24%] tests/backend/metadata/test_build.py::TestRequires::test_default PASSED [ 24%] tests/backend/metadata/test_build.py::TestRequires::test_not_array PASSED [ 24%] tests/backend/metadata/test_build.py::TestRequires::test_entry_not_string PASSED [ 24%] tests/backend/metadata/test_build.py::TestRequires::test_invalid_specifier PASSED [ 24%] tests/backend/metadata/test_build.py::TestRequires::test_correct PASSED [ 24%] tests/backend/metadata/test_build.py::TestRequires::test_correct_complex_type PASSED [ 24%] tests/backend/metadata/test_build.py::TestBuildBackend::test_default PASSED [ 24%] tests/backend/metadata/test_build.py::TestBuildBackend::test_not_string PASSED [ 24%] tests/backend/metadata/test_build.py::TestBuildBackend::test_correct PASSED [ 24%] tests/backend/metadata/test_build.py::TestBackendPath::test_default PASSED [ 25%] tests/backend/metadata/test_build.py::TestBackendPath::test_not_array PASSED [ 25%] tests/backend/metadata/test_build.py::TestBackendPath::test_entry_not_string PASSED [ 25%] tests/backend/metadata/test_build.py::TestBackendPath::test_correct PASSED [ 25%] tests/backend/metadata/test_core.py::TestConfig::test_default PASSED [ 25%] tests/backend/metadata/test_core.py::TestConfig::test_reuse PASSED [ 25%] tests/backend/metadata/test_core.py::TestConfig::test_read PASSED [ 25%] tests/backend/metadata/test_core.py::TestInterface::test_types PASSED [ 25%] tests/backend/metadata/test_core.py::TestInterface::test_missing_core_metadata PASSED [ 25%] tests/backend/metadata/test_core.py::TestInterface::test_core_metadata_not_table PASSED [ 25%] tests/backend/metadata/test_core.py::TestInterface::test_tool_metadata_not_table PASSED [ 25%] tests/backend/metadata/test_core.py::TestInterface::test_hatch_metadata_not_table PASSED [ 25%] tests/backend/metadata/test_core.py::TestInterface::test_build_metadata_not_table PASSED [ 25%] tests/backend/metadata/test_core.py::TestDynamic::test_not_array PASSED [ 25%] tests/backend/metadata/test_core.py::TestDynamic::test_entry_not_string PASSED [ 25%] tests/backend/metadata/test_core.py::TestDynamic::test_correct PASSED [ 25%] tests/backend/metadata/test_core.py::TestDynamic::test_cache_not_array PASSED [ 25%] tests/backend/metadata/test_core.py::TestDynamic::test_cache_entry_not_string PASSED [ 25%] tests/backend/metadata/test_core.py::TestDynamic::test_cache_correct PASSED [ 25%] tests/backend/metadata/test_core.py::TestRawName::test_dynamic PASSED [ 25%] tests/backend/metadata/test_core.py::TestRawName::test_missing PASSED [ 26%] tests/backend/metadata/test_core.py::TestRawName::test_not_string PASSED [ 26%] tests/backend/metadata/test_core.py::TestRawName::test_invalid PASSED [ 26%] tests/backend/metadata/test_core.py::TestRawName::test_correct PASSED [ 26%] tests/backend/metadata/test_core.py::TestName::test_normalization[My--App] PASSED [ 26%] tests/backend/metadata/test_core.py::TestName::test_normalization[My__App] PASSED [ 26%] tests/backend/metadata/test_core.py::TestName::test_normalization[My..App] PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_static_missing PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_static_not_string PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_static_invalid PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_static_normalization PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic_missing PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic_not_table PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic_source_empty PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic_source_not_string PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic_unknown_source PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic_source_regex PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic_source_regex_invalid PASSED [ 26%] tests/backend/metadata/test_core.py::TestVersion::test_dynamic_error PASSED [ 26%] tests/backend/metadata/test_core.py::TestDescription::test_dynamic PASSED [ 27%] tests/backend/metadata/test_core.py::TestDescription::test_not_string PASSED [ 27%] tests/backend/metadata/test_core.py::TestDescription::test_default PASSED [ 27%] tests/backend/metadata/test_core.py::TestDescription::test_custom PASSED [ 27%] tests/backend/metadata/test_core.py::TestDescription::test_normaliza PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_dynamic PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_unknown_type[readme] PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_unknown_type[readme_content_type] PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_default PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_string_path_unknown_content_type PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_string_path_nonexistent PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_string_correct[.md-text/markdown] PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_string_correct[.rst-text/x-rst] PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_string_correct[.txt-text/plain] PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_table_content_type_missing PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_table_content_type_not_string PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_table_content_type_not_unknown PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_table_multiple_options PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_table_no_option PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_table_file_not_string PASSED [ 27%] tests/backend/metadata/test_core.py::TestReadme::test_table_file_nonexistent PASSED [ 28%] tests/backend/metadata/test_core.py::TestReadme::test_table_file_correct PASSED [ 28%] tests/backend/metadata/test_core.py::TestReadme::test_table_text_not_string PASSED [ 28%] tests/backend/metadata/test_core.py::TestReadme::test_table_text_correct PASSED [ 28%] tests/backend/metadata/test_core.py::TestRequiresPython::test_dynamic PASSED [ 28%] tests/backend/metadata/test_core.py::TestRequiresPython::test_not_string[requires_python] PASSED [ 28%] tests/backend/metadata/test_core.py::TestRequiresPython::test_not_string[python_constraint] PASSED [ 28%] tests/backend/metadata/test_core.py::TestRequiresPython::test_invalid PASSED [ 28%] tests/backend/metadata/test_core.py::TestRequiresPython::test_default PASSED [ 28%] tests/backend/metadata/test_core.py::TestRequiresPython::test_custom PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_dynamic PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_invalid_type PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_default PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_normalization PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_invalid_expression PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_multiple_options PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_no_option PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_file_not_string PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_file_nonexistent PASSED [ 28%] tests/backend/metadata/test_core.py::TestLicense::test_file_correct PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicense::test_text_not_string PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicense::test_text_correct PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_dynamic PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_not_table PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_multiple_options PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_no_option PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_paths_not_array PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_paths_entry_not_string PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_globs_not_array PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_globs_entry_not_string PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_default_globs_no_licenses PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_default_globs_with_licenses PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_globs_with_licenses PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_paths_with_licenses PASSED [ 29%] tests/backend/metadata/test_core.py::TestLicenseFiles::test_paths_missing_license PASSED [ 29%] tests/backend/metadata/test_core.py::TestAuthors::test_dynamic PASSED [ 29%] tests/backend/metadata/test_core.py::TestAuthors::test_not_array PASSED [ 29%] tests/backend/metadata/test_core.py::TestAuthors::test_default PASSED [ 29%] tests/backend/metadata/test_core.py::TestAuthors::test_not_table PASSED [ 29%] tests/backend/metadata/test_core.py::TestAuthors::test_no_data PASSED [ 30%] tests/backend/metadata/test_core.py::TestAuthors::test_name_not_string PASSED [ 30%] tests/backend/metadata/test_core.py::TestAuthors::test_name_only PASSED [ 30%] tests/backend/metadata/test_core.py::TestAuthors::test_email_not_string PASSED [ 30%] tests/backend/metadata/test_core.py::TestAuthors::test_email_only PASSED [ 30%] tests/backend/metadata/test_core.py::TestAuthors::test_name_and_email PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_dynamic PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_not_array PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_default PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_not_table PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_no_data PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_name_not_string PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_name_only PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_email_not_string PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_email_only PASSED [ 30%] tests/backend/metadata/test_core.py::TestMaintainers::test_name_and_email PASSED [ 30%] tests/backend/metadata/test_core.py::TestKeywords::test_dynamic PASSED [ 30%] tests/backend/metadata/test_core.py::TestKeywords::test_not_array PASSED [ 30%] tests/backend/metadata/test_core.py::TestKeywords::test_entry_not_string PASSED [ 30%] tests/backend/metadata/test_core.py::TestKeywords::test_correct PASSED [ 30%] tests/backend/metadata/test_core.py::TestClassifiers::test_dynamic PASSED [ 31%] tests/backend/metadata/test_core.py::TestClassifiers::test_not_array PASSED [ 31%] tests/backend/metadata/test_core.py::TestClassifiers::test_entry_not_string PASSED [ 31%] tests/backend/metadata/test_core.py::TestClassifiers::test_entry_unknown PASSED [ 31%] tests/backend/metadata/test_core.py::TestClassifiers::test_correct PASSED [ 31%] tests/backend/metadata/test_core.py::TestURLs::test_dynamic PASSED [ 31%] tests/backend/metadata/test_core.py::TestURLs::test_not_table PASSED [ 31%] tests/backend/metadata/test_core.py::TestURLs::test_entry_not_string PASSED [ 31%] tests/backend/metadata/test_core.py::TestURLs::test_correct PASSED [ 31%] tests/backend/metadata/test_core.py::TestScripts::test_dynamic PASSED [ 31%] tests/backend/metadata/test_core.py::TestScripts::test_not_table PASSED [ 31%] tests/backend/metadata/test_core.py::TestScripts::test_entry_not_string PASSED [ 31%] tests/backend/metadata/test_core.py::TestScripts::test_correct PASSED [ 31%] tests/backend/metadata/test_core.py::TestGUIScripts::test_dynamic PASSED [ 31%] tests/backend/metadata/test_core.py::TestGUIScripts::test_not_table PASSED [ 31%] tests/backend/metadata/test_core.py::TestGUIScripts::test_entry_not_string PASSED [ 31%] tests/backend/metadata/test_core.py::TestGUIScripts::test_correct PASSED [ 31%] tests/backend/metadata/test_core.py::TestEntryPoints::test_dynamic PASSED [ 31%] tests/backend/metadata/test_core.py::TestEntryPoints::test_not_table PASSED [ 31%] tests/backend/metadata/test_core.py::TestEntryPoints::test_forbidden_fields[console_scripts-scripts] PASSED [ 31%] tests/backend/metadata/test_core.py::TestEntryPoints::test_forbidden_fields[gui-scripts-gui-scripts] PASSED [ 32%] tests/backend/metadata/test_core.py::TestEntryPoints::test_data_not_table PASSED [ 32%] tests/backend/metadata/test_core.py::TestEntryPoints::test_data_entry_not_string PASSED [ 32%] tests/backend/metadata/test_core.py::TestEntryPoints::test_data_empty PASSED [ 32%] tests/backend/metadata/test_core.py::TestEntryPoints::test_default PASSED [ 32%] tests/backend/metadata/test_core.py::TestEntryPoints::test_correct PASSED [ 32%] tests/backend/metadata/test_core.py::TestDependencies::test_dynamic PASSED [ 32%] tests/backend/metadata/test_core.py::TestDependencies::test_not_array PASSED [ 32%] tests/backend/metadata/test_core.py::TestDependencies::test_entry_not_string PASSED [ 32%] tests/backend/metadata/test_core.py::TestDependencies::test_invalid PASSED [ 32%] tests/backend/metadata/test_core.py::TestDependencies::test_direct_reference PASSED [ 32%] tests/backend/metadata/test_core.py::TestDependencies::test_direct_reference_allowed PASSED [ 32%] tests/backend/metadata/test_core.py::TestDependencies::test_context_formatting PASSED [ 32%] tests/backend/metadata/test_core.py::TestDependencies::test_correct PASSED [ 32%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_dynamic PASSED [ 32%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_not_table PASSED [ 32%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_invalid_name PASSED [ 32%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_definitions_not_array PASSED [ 32%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_entry_not_string PASSED [ 32%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_invalid PASSED [ 33%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_conflict PASSED [ 33%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_recursive_circular PASSED [ 33%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_recursive_unknown PASSED [ 33%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_allow_ambiguity PASSED [ 33%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_direct_reference PASSED [ 33%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_context_formatting PASSED [ 33%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_direct_reference_allowed PASSED [ 33%] tests/backend/metadata/test_core.py::TestOptionalDependencies::test_correct PASSED [ 33%] tests/backend/metadata/test_core.py::TestHook::test_unknown PASSED [ 33%] tests/backend/metadata/test_core.py::TestHook::test_custom PASSED [ 33%] tests/backend/metadata/test_core.py::TestHook::test_custom_missing_dynamic PASSED [ 33%] tests/backend/metadata/test_core.py::TestHatchPersonalProjectConfigFile::test_correct PASSED [ 33%] tests/backend/metadata/test_core.py::TestHatchPersonalProjectConfigFile::test_precedence PASSED [ 33%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_required_only PASSED [ 33%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_dynamic PASSED [ 33%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_description PASSED [ 33%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_urls PASSED [ 33%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_authors PASSED [ 33%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_maintainers PASSED [ 33%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_keywords PASSED [ 34%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_classifiers PASSED [ 34%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_license_files PASSED [ 34%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_license_expression PASSED [ 34%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_license_legacy PASSED [ 34%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_readme PASSED [ 34%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_requires_python PASSED [ 34%] tests/backend/metadata/test_core.py::TestMetadataConversion::test_dependencies PASSED [ 34%] tests/backend/metadata/test_core.py::TestSourceDistributionMetadata::test_basic_persistence PASSED [ 34%] tests/backend/metadata/test_core.py::TestSourceDistributionMetadata::test_metadata_hooks PASSED [ 34%] tests/backend/metadata/test_custom_hook.py::test_no_path PASSED [ 34%] tests/backend/metadata/test_custom_hook.py::test_path_not_string PASSED [ 34%] tests/backend/metadata/test_custom_hook.py::test_nonexistent PASSED [ 34%] tests/backend/metadata/test_custom_hook.py::test_default PASSED [ 34%] tests/backend/metadata/test_custom_hook.py::test_explicit_path PASSED [ 34%] tests/backend/metadata/test_custom_hook.py::test_no_subclass PASSED [ 34%] tests/backend/metadata/test_hatch.py::TestBuildConfig::test_default PASSED [ 34%] tests/backend/metadata/test_hatch.py::TestBuildConfig::test_not_table PASSED [ 34%] tests/backend/metadata/test_hatch.py::TestBuildConfig::test_correct PASSED [ 34%] tests/backend/metadata/test_hatch.py::TestBuildTargets::test_default PASSED [ 34%] tests/backend/metadata/test_hatch.py::TestBuildTargets::test_not_table PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestBuildTargets::test_correct PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSourceName::test_empty PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSourceName::test_not_table PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSourceName::test_correct PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSourceName::test_default PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSchemeName::test_missing PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSchemeName::test_not_table PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSchemeName::test_correct PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSchemeName::test_default PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSource::test_unknown PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionSource::test_cached PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionScheme::test_unknown PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestVersionScheme::test_cached PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestMetadata::test_default PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestMetadata::test_not_table PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestMetadata::test_correct PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestMetadataAllowDirectReferences::test_default PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestMetadataAllowDirectReferences::test_not_boolean PASSED [ 35%] tests/backend/metadata/test_hatch.py::TestMetadataAllowDirectReferences::test_correct PASSED [ 36%] tests/backend/metadata/test_hatch.py::TestMetadataAllowAmbiguousFeatures::test_default PASSED [ 36%] tests/backend/metadata/test_hatch.py::TestMetadataAllowAmbiguousFeatures::test_not_boolean PASSED [ 36%] tests/backend/metadata/test_hatch.py::TestMetadataAllowAmbiguousFeatures::test_correct PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_missing_name PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_missing_version PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_dynamic PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_description PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_urls PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_authors PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_maintainers PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_keywords PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_classifiers PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_license_files PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_license_expression PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_license_legacy PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_readme PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_readme_default_content_type PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_requires_python PASSED [ 36%] tests/backend/metadata/test_spec.py::TestProjectMetadataFromCoreMetadata::test_dependencies PASSED [ 36%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_default[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_description[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_urls[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_authors_name[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_authors_email[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_authors_name_and_email[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_authors_multiple[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_maintainers_name[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_maintainers_email[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_maintainers_name_and_email[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_maintainers_multiple[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_license[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_keywords_single[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_keywords_multiple[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_classifiers[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_requires_python[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_dependencies[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_extra_runtime_dependencies[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV12::test_all[construct_metadata_file_1_2] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_default[construct_metadata_file_2_1] PASSED [ 37%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_description[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_urls[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_authors_name[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_authors_email[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_authors_name_and_email[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_authors_multiple[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_maintainers_name[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_maintainers_email[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_maintainers_name_and_email[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_maintainers_multiple[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_license[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_license_expression[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_keywords_single[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_keywords_multiple[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_classifiers[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_requires_python[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_dependencies[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_optional_dependencies[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_extra_runtime_dependencies[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_readme[construct_metadata_file_2_1] PASSED [ 38%] tests/backend/metadata/test_spec.py::TestCoreMetadataV21::test_all[construct_metadata_file_2_1] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_default[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_dynamic[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_description[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_urls[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_authors_name[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_authors_email[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_authors_name_and_email[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_authors_multiple[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_maintainers_name[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_maintainers_email[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_maintainers_name_and_email[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_maintainers_multiple[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_license[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_license_expression[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_keywords_single[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_keywords_multiple[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_classifiers[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_requires_python[construct_metadata_file_2_2] PASSED [ 39%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_dependencies[construct_metadata_file_2_2] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_optional_dependencies[construct_metadata_file_2_2] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_optional_complex_dependencies[construct_metadata_file_2_2] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_extra_runtime_dependencies[construct_metadata_file_2_2] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_readme[construct_metadata_file_2_2] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV22::test_all[construct_metadata_file_2_2] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_default[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_description[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_dynamic[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_urls[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_authors_name[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_authors_email[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_authors_name_and_email[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_authors_multiple[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_maintainers_name[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_maintainers_email[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_maintainers_name_and_email[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_maintainers_multiple[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_license[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_license_expression[construct_metadata_file_2_3] PASSED [ 40%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_license_files[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_keywords_single[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_keywords_multiple[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_classifiers[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_requires_python[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_dependencies[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_optional_dependencies[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_extra_runtime_dependencies[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_readme[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/metadata/test_spec.py::TestCoreMetadataV23::test_all[construct_metadata_file_2_3] PASSED [ 41%] tests/backend/test_build.py::test_sdist PASSED [ 41%] tests/backend/test_build.py::test_wheel PASSED [ 41%] tests/backend/test_build.py::test_editable PASSED [ 41%] tests/backend/utils/test_context.py::test_normal PASSED [ 41%] tests/backend/utils/test_context.py::TestStatic::test_directory_separator PASSED [ 41%] tests/backend/utils/test_context.py::TestStatic::test_path_separator PASSED [ 41%] tests/backend/utils/test_context.py::TestRoot::test_default PASSED [ 41%] tests/backend/utils/test_context.py::TestRoot::test_parent PASSED [ 41%] tests/backend/utils/test_context.py::TestRoot::test_parent_parent PASSED [ 41%] tests/backend/utils/test_context.py::TestRoot::test_uri PASSED [ 41%] tests/backend/utils/test_context.py::TestRoot::test_uri_parent PASSED [ 42%] tests/backend/utils/test_context.py::TestRoot::test_uri_parent_parent PASSED [ 42%] tests/backend/utils/test_context.py::TestRoot::test_real PASSED [ 42%] tests/backend/utils/test_context.py::TestRoot::test_real_parent PASSED [ 42%] tests/backend/utils/test_context.py::TestRoot::test_real_parent_parent PASSED [ 42%] tests/backend/utils/test_context.py::TestRoot::test_unknown_modifier PASSED [ 42%] tests/backend/utils/test_context.py::TestRoot::test_too_many_modifiers_after_parent PASSED [ 42%] tests/backend/utils/test_context.py::TestHome::test_default PASSED [ 42%] tests/backend/utils/test_context.py::TestHome::test_uri PASSED [ 42%] tests/backend/utils/test_context.py::TestHome::test_real PASSED [ 42%] tests/backend/utils/test_context.py::TestHome::test_unknown_modifier PASSED [ 42%] tests/backend/utils/test_context.py::TestEnvVars::test_set PASSED [ 42%] tests/backend/utils/test_context.py::TestEnvVars::test_default PASSED [ 42%] tests/backend/utils/test_context.py::TestEnvVars::test_default_empty_string PASSED [ 42%] tests/backend/utils/test_context.py::TestEnvVars::test_default_nested_set PASSED [ 42%] tests/backend/utils/test_context.py::TestEnvVars::test_default_nested_default PASSED [ 42%] tests/backend/utils/test_context.py::TestEnvVars::test_no_selection PASSED [ 42%] tests/backend/utils/test_context.py::TestEnvVars::test_unset_without_default PASSED [ 42%] tests/backend/utils/test_fs.py::TestPathToURI::test_unix PASSED [ 42%] tests/backend/utils/test_fs.py::TestPathToURI::test_character_escaping PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_not_higher PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_specific PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_specific_not_higher_allowed PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_release PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_major PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_minor PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_micro[micro] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_micro[patch] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::test_micro[fix] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_begin[a] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_begin[b] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_begin[c] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_begin[rc] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_begin[alpha] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_begin[beta] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_begin[pre] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_begin[preview] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_continue[a] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_continue[b] PASSED [ 43%] tests/backend/version/scheme/test_standard.py::TestPre::test_continue[c] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_continue[rc] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_continue[alpha] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_continue[beta] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_continue[pre] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_continue[preview] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_restart[a] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_restart[b] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_restart[c] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_restart[rc] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_restart[alpha] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_restart[beta] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_restart[pre] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPre::test_restart[preview] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPost::test_begin[post] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPost::test_begin[rev] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPost::test_begin[r] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPost::test_continue[post] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPost::test_continue[rev] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestPost::test_continue[r] PASSED [ 44%] tests/backend/version/scheme/test_standard.py::TestDev::test_begin PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestDev::test_continue PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestMultiple::test_explicit_error PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestMultiple::test_correct[fix,rc-0.0.2rc0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestMultiple::test_correct[minor,dev-0.1.0.dev0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestMultiple::test_correct[minor,preview-0.1.0rc0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestMultiple::test_correct[major,beta-1.0.0b0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestMultiple::test_correct[major,major,major-3.0.0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestWithEpoch::test_correct[patch,dev,release-1!0.0.2] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestWithEpoch::test_correct[fix,rc-1!0.0.2rc0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestWithEpoch::test_correct[minor,dev-1!0.1.0.dev0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestWithEpoch::test_correct[minor,preview-1!0.1.0rc0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestWithEpoch::test_correct[major,beta-1!1.0.0b0] PASSED [ 45%] tests/backend/version/scheme/test_standard.py::TestWithEpoch::test_correct[major,major,major-1!3.0.0] PASSED [ 45%] tests/backend/version/source/test_code.py::test_no_path PASSED [ 45%] tests/backend/version/source/test_code.py::test_path_not_string PASSED [ 45%] tests/backend/version/source/test_code.py::test_path_nonexistent PASSED [ 45%] tests/backend/version/source/test_code.py::test_expression_not_string PASSED [ 45%] tests/backend/version/source/test_code.py::test_search_paths_not_array PASSED [ 45%] tests/backend/version/source/test_code.py::test_search_paths_entry_not_string PASSED [ 45%] tests/backend/version/source/test_code.py::test_match_default_expression PASSED [ 46%] tests/backend/version/source/test_code.py::test_match_custom_expression_basic PASSED [ 46%] tests/backend/version/source/test_code.py::test_match_custom_expression_complex PASSED [ 46%] tests/backend/version/source/test_code.py::test_search_paths PASSED [ 46%] tests/backend/version/source/test_env.py::test_no_variable PASSED [ 46%] tests/backend/version/source/test_env.py::test_variable_not_string PASSED [ 46%] tests/backend/version/source/test_env.py::test_variable_not_available PASSED [ 46%] tests/backend/version/source/test_env.py::test_variable_contains_version PASSED [ 46%] tests/backend/version/source/test_regex.py::test_no_path PASSED [ 46%] tests/backend/version/source/test_regex.py::test_path_not_string PASSED [ 46%] tests/backend/version/source/test_regex.py::test_path_nonexistent PASSED [ 46%] tests/backend/version/source/test_regex.py::test_pattern_not_string PASSED [ 46%] tests/backend/version/source/test_regex.py::test_no_version PASSED [ 46%] tests/backend/version/source/test_regex.py::test_pattern_no_version_group PASSED [ 46%] tests/backend/version/source/test_regex.py::test_match_custom_pattern PASSED [ 46%] tests/backend/version/source/test_regex.py::test_match_default_pattern[__version__-"-] PASSED [ 46%] tests/backend/version/source/test_regex.py::test_match_default_pattern[__version__-"-v] PASSED [ 46%] tests/backend/version/source/test_regex.py::test_match_default_pattern[__version__-'-] PASSED [ 46%] tests/backend/version/source/test_regex.py::test_match_default_pattern[__version__-'-v] PASSED [ 46%] tests/backend/version/source/test_regex.py::test_match_default_pattern[VERSION-"-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_match_default_pattern[VERSION-"-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_match_default_pattern[VERSION-'-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_match_default_pattern[VERSION-'-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_match_default_pattern[version-"-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_match_default_pattern[version-"-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_match_default_pattern[version-'-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_match_default_pattern[version-'-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[__version__-"-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[__version__-"-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[__version__-'-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[__version__-'-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[VERSION-"-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[VERSION-"-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[VERSION-'-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[VERSION-'-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[version-"-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[version-"-v] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[version-'-] PASSED [ 47%] tests/backend/version/source/test_regex.py::test_set_default_pattern[version-'-v] PASSED [ 47%] tests/cli/build/test_build.py::TestOtherBackend::test_standard FAILED [ 48%] tests/cli/build/test_build.py::TestOtherBackend::test_legacy FAILED [ 48%] tests/cli/build/test_build.py::test_no_compatibility_check_if_exists FAILED [ 48%] tests/cli/config/test_find.py::test PASSED [ 48%] tests/cli/config/test_restore.py::test_standard PASSED [ 48%] tests/cli/config/test_restore.py::test_allow_invalid_config PASSED [ 48%] tests/cli/config/test_set.py::test_standard PASSED [ 48%] tests/cli/config/test_set.py::test_standard_deep PASSED [ 48%] tests/cli/config/test_set.py::test_standard_complex_sequence PASSED [ 48%] tests/cli/config/test_set.py::test_standard_complex_map PASSED [ 48%] tests/cli/config/test_set.py::test_standard_hidden PASSED [ 48%] tests/cli/config/test_set.py::test_prompt PASSED [ 48%] tests/cli/config/test_set.py::test_prompt_hidden PASSED [ 48%] tests/cli/config/test_set.py::test_prevent_invalid_config PASSED [ 48%] tests/cli/config/test_set.py::test_resolve_project_location_basic PASSED [ 48%] tests/cli/config/test_set.py::test_resolve_project_location_complex PASSED [ 48%] tests/cli/config/test_set.py::test_booleans PASSED [ 48%] tests/cli/config/test_show.py::test_default_scrubbed PASSED [ 48%] tests/cli/config/test_show.py::test_reveal PASSED [ 48%] tests/cli/dep/show/test_requirements.py::test_incompatible_environment PASSED [ 48%] tests/cli/dep/show/test_requirements.py::test_project_only PASSED [ 49%] tests/cli/dep/show/test_requirements.py::test_environment_only PASSED [ 49%] tests/cli/dep/show/test_requirements.py::test_default_both PASSED [ 49%] tests/cli/dep/show/test_requirements.py::test_unknown_feature PASSED [ 49%] tests/cli/dep/show/test_requirements.py::test_features_only PASSED [ 49%] tests/cli/dep/show/test_requirements.py::test_include_features PASSED [ 49%] tests/cli/dep/show/test_table.py::test_incompatible_environment PASSED [ 49%] tests/cli/dep/show/test_table.py::test_project_only PASSED [ 49%] tests/cli/dep/show/test_table.py::test_environment_only PASSED [ 49%] tests/cli/dep/show/test_table.py::test_default_both PASSED [ 49%] tests/cli/dep/show/test_table.py::test_optional_columns PASSED [ 49%] tests/cli/dep/test_hash.py::test_incompatible_environment PASSED [ 49%] tests/cli/dep/test_hash.py::test_all PASSED [ 49%] tests/cli/dep/test_hash.py::test_project_only PASSED [ 49%] tests/cli/env/test_create.py::test_undefined PASSED [ 49%] tests/cli/env/test_create.py::test_unknown_type PASSED [ 49%] tests/cli/env/test_create.py::test_new FAILED [ 49%] tests/cli/env/test_create.py::test_uv_shipped FAILED [ 49%] tests/cli/env/test_create.py::test_uv_env FAILED [ 49%] tests/cli/env/test_create.py::test_selected_absolute_directory FAILED [ 50%] tests/cli/env/test_create.py::test_option_absolute_directory FAILED [ 50%] tests/cli/env/test_create.py::test_env_var_absolute_directory FAILED [ 50%] tests/cli/env/test_create.py::test_selected_local_directory FAILED [ 50%] tests/cli/env/test_create.py::test_option_local_directory FAILED [ 50%] tests/cli/env/test_create.py::test_env_var_local_directory FAILED [ 50%] tests/cli/env/test_create.py::test_enter_project_directory FAILED [ 50%] tests/cli/env/test_create.py::test_already_created FAILED [ 50%] tests/cli/env/test_create.py::test_default FAILED [ 50%] tests/cli/env/test_create.py::test_matrix FAILED [ 50%] tests/cli/env/test_create.py::test_incompatible_single PASSED [ 50%] tests/cli/env/test_create.py::test_incompatible_matrix_full PASSED [ 50%] tests/cli/env/test_create.py::test_incompatible_matrix_partial FAILED [ 50%] tests/cli/env/test_create.py::test_install_project_default_dev_mode FAILED [ 50%] tests/cli/env/test_create.py::test_install_project_no_dev_mode FAILED [ 50%] tests/cli/env/test_create.py::test_pre_install_commands FAILED [ 50%] tests/cli/env/test_create.py::test_pre_install_commands_error FAILED [ 50%] tests/cli/env/test_create.py::test_post_install_commands FAILED [ 50%] tests/cli/env/test_create.py::test_post_install_commands_error FAILED [ 50%] tests/cli/env/test_create.py::test_sync_dependencies_uv FAILED [ 50%] tests/cli/env/test_create.py::test_sync_dependencies_pip PASSED [ 51%] tests/cli/env/test_create.py::test_features FAILED [ 51%] tests/cli/env/test_create.py::test_sync_dynamic_dependencies FAILED [ 51%] tests/cli/env/test_create.py::test_unknown_dynamic_feature FAILED [ 51%] tests/cli/env/test_create.py::test_no_project_file FAILED [ 51%] tests/cli/env/test_create.py::test_no_compatible_python PASSED [ 51%] tests/cli/env/test_create.py::test_no_compatible_python_ok_if_not_installed FAILED [ 51%] tests/cli/env/test_find.py::test_undefined PASSED [ 51%] tests/cli/env/test_find.py::test_single FAILED [ 51%] tests/cli/env/test_find.py::test_matrix FAILED [ 51%] tests/cli/env/test_find.py::test_case_sensitivity SKIPPED (Case insensitive file system required) [ 51%] tests/cli/env/test_prune.py::test_unknown_type PASSED [ 51%] tests/cli/env/test_prune.py::test_all FAILED [ 51%] tests/cli/env/test_prune.py::test_incompatible_ok PASSED [ 51%] tests/cli/env/test_prune.py::test_active PASSED [ 51%] tests/cli/env/test_remove.py::test_unknown PASSED [ 51%] tests/cli/env/test_remove.py::test_nonexistent PASSED [ 51%] tests/cli/env/test_remove.py::test_single FAILED [ 51%] tests/cli/env/test_remove.py::test_all FAILED [ 51%] tests/cli/env/test_remove.py::test_matrix_all FAILED [ 51%] tests/cli/env/test_remove.py::test_matrix_all_local_directory FAILED [ 52%] tests/cli/env/test_remove.py::test_incompatible_ok PASSED [ 52%] tests/cli/env/test_remove.py::test_active PASSED [ 52%] tests/cli/env/test_remove.py::test_active_override FAILED [ 52%] tests/cli/env/test_run.py::test_filter_not_mapping PASSED [ 52%] tests/cli/env/test_run.py::test_filter FAILED [ 52%] tests/cli/env/test_run.py::test_force_continue FAILED [ 52%] tests/cli/env/test_run.py::test_ignore_compatibility PASSED [ 52%] tests/cli/env/test_show.py::test_default PASSED [ 52%] tests/cli/env/test_show.py::test_default_as_json PASSED [ 52%] tests/cli/env/test_show.py::test_single_only PASSED [ 52%] tests/cli/env/test_show.py::test_single_and_matrix PASSED [ 52%] tests/cli/env/test_show.py::test_default_matrix_only PASSED [ 52%] tests/cli/env/test_show.py::test_all_matrix_types_with_single PASSED [ 52%] tests/cli/env/test_show.py::test_specific PASSED [ 52%] tests/cli/env/test_show.py::test_specific_unknown PASSED [ 52%] tests/cli/env/test_show.py::test_optional_columns PASSED [ 52%] tests/cli/env/test_show.py::test_context_formatting PASSED [ 52%] tests/cli/fmt/test_fmt.py::TestDefaults::test_fix PASSED [ 52%] tests/cli/fmt/test_fmt.py::TestDefaults::test_check PASSED [ 52%] tests/cli/fmt/test_fmt.py::TestDefaults::test_existing_config PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestPreview::test_fix_flag PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestPreview::test_check_flag PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestComponents::test_only_linter PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestComponents::test_only_formatter PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestComponents::test_select_multiple PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestArguments::test_forwarding PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestConfigPath::test_sync_without_config PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestConfigPath::test_sync PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestConfigPath::test_no_sync PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestConfigPath::test_sync_legacy_config PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestCustomScripts::test_only_linter_fix PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestCustomScripts::test_only_linter_check PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestCustomScripts::test_only_formatter_fix PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestCustomScripts::test_only_formatter_check PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestCustomScripts::test_fix PASSED [ 53%] tests/cli/fmt/test_fmt.py::TestCustomScripts::test_check PASSED [ 53%] tests/cli/new/test_new.py::TestErrors::test_path_is_file PASSED [ 53%] tests/cli/new/test_new.py::TestErrors::test_path_not_empty PASSED [ 53%] tests/cli/new/test_new.py::TestErrors::test_no_plugins_found PASSED [ 54%] tests/cli/new/test_new.py::TestErrors::test_some_not_plugins_found PASSED [ 54%] tests/cli/new/test_new.py::test_default PASSED [ 54%] tests/cli/new/test_new.py::test_default_explicit_path PASSED [ 54%] tests/cli/new/test_new.py::test_default_empty_plugins_table PASSED [ 54%] tests/cli/new/test_new.py::test_default_no_license_cache PASSED [ 54%] tests/cli/new/test_new.py::test_licenses_multiple PASSED [ 54%] tests/cli/new/test_new.py::test_licenses_empty PASSED [ 54%] tests/cli/new/test_new.py::test_projects_urls_space_in_label PASSED [ 54%] tests/cli/new/test_new.py::test_projects_urls_empty PASSED [ 54%] tests/cli/new/test_new.py::test_feature_cli PASSED [ 54%] tests/cli/new/test_new.py::test_feature_ci PASSED [ 54%] tests/cli/new/test_new.py::test_feature_no_src_layout PASSED [ 54%] tests/cli/new/test_new.py::test_feature_tests_disable PASSED [ 54%] tests/cli/new/test_new.py::test_no_project_name_error PASSED [ 54%] tests/cli/new/test_new.py::test_interactive PASSED [ 54%] tests/cli/new/test_new.py::test_no_project_name_enables_interactive PASSED [ 54%] tests/cli/new/test_new.py::test_initialize_fresh PASSED [ 54%] tests/cli/new/test_new.py::test_initialize_update PASSED [ 54%] tests/cli/new/test_new.py::test_initialize_setup_cfg_only PASSED [ 54%] tests/cli/project/test_metadata.py::TestBuildDependenciesMissing::test_no_compatibility_check_if_exists FAILED [ 55%] tests/cli/python/test_find.py::test_not_installed PASSED [ 55%] tests/cli/python/test_find.py::test_binary ERROR [ 55%] tests/cli/python/test_find.py::test_parent ERROR [ 55%] tests/cli/python/test_install.py::test_unknown PASSED [ 55%] tests/cli/python/test_install.py::test_incompatible_single ERROR [ 55%] tests/cli/python/test_install.py::test_incompatible_all PASSED [ 55%] tests/cli/python/test_install.py::test_installation FAILED [ 55%] tests/cli/python/test_install.py::test_already_installed_latest ERROR [ 55%] tests/cli/python/test_install.py::test_already_installed_update_disabled ERROR [ 55%] tests/cli/python/test_install.py::test_already_installed_update_prompt ERROR [ 55%] tests/cli/python/test_install.py::test_already_installed_update_flag ERROR [ 55%] tests/cli/python/test_install.py::test_already_in_path[in_current_path] ERROR [ 55%] tests/cli/python/test_install.py::test_already_in_path[in_new_path] ERROR [ 55%] tests/cli/python/test_install.py::test_private ERROR [ 55%] tests/cli/python/test_install.py::test_specific_location ERROR [ 55%] tests/cli/python/test_install.py::test_all FAILED [ 55%] tests/cli/python/test_remove.py::test_not_installed PASSED [ 55%] tests/cli/python/test_remove.py::test_basic FAILED [ 55%] tests/cli/python/test_remove.py::test_specific_location ERROR [ 55%] tests/cli/python/test_remove.py::test_all FAILED [ 56%] tests/cli/python/test_show.py::test_nothing_installed FAILED [ 56%] tests/cli/python/test_show.py::test_some_installed ERROR [ 56%] tests/cli/python/test_show.py::test_all_installed FAILED [ 56%] tests/cli/python/test_show.py::test_specific_location ERROR [ 56%] tests/cli/python/test_show.py::test_outdated ERROR [ 56%] tests/cli/python/test_update.py::test_not_installed PASSED [ 56%] tests/cli/python/test_update.py::test_basic ERROR [ 56%] tests/cli/python/test_update.py::test_specific_location ERROR [ 56%] tests/cli/python/test_update.py::test_all FAILED [ 56%] tests/cli/run/test_run.py::test_help PASSED [ 56%] tests/cli/run/test_run.py::test_automatic_creation FAILED [ 56%] tests/cli/run/test_run.py::test_no_compatibility_check_if_exists FAILED [ 56%] tests/cli/run/test_run.py::test_enter_project_directory FAILED [ 56%] tests/cli/run/test_run.py::test_sync_dependencies FAILED [ 56%] tests/cli/run/test_run.py::test_sync_project_dependencies FAILED [ 56%] tests/cli/run/test_run.py::test_sync_project_features FAILED [ 56%] tests/cli/run/test_run.py::test_dependency_hash_checking FAILED [ 56%] tests/cli/run/test_run.py::test_scripts FAILED [ 56%] tests/cli/run/test_run.py::test_scripts_specific_environment FAILED [ 56%] tests/cli/run/test_run.py::test_scripts_no_environment PASSED [ 57%] tests/cli/run/test_run.py::test_error FAILED [ 57%] tests/cli/run/test_run.py::test_ignore_error FAILED [ 57%] tests/cli/run/test_run.py::test_command_expansion_error FAILED [ 57%] tests/cli/run/test_run.py::test_verbosity FAILED [ 57%] tests/cli/run/test_run.py::test_matrix_no_environments PASSED [ 57%] tests/cli/run/test_run.py::test_matrix FAILED [ 57%] tests/cli/run/test_run.py::test_incompatible_single PASSED [ 57%] tests/cli/run/test_run.py::test_incompatible_matrix_full PASSED [ 57%] tests/cli/run/test_run.py::test_incompatible_matrix_partial FAILED [ 57%] tests/cli/run/test_run.py::test_incompatible_missing_python FAILED [ 57%] tests/cli/run/test_run.py::test_env_detection FAILED [ 57%] tests/cli/run/test_run.py::test_env_detection_override FAILED [ 57%] tests/cli/run/test_run.py::test_matrix_variable_selection_no_command PASSED [ 57%] tests/cli/run/test_run.py::test_matrix_variable_selection_duplicate_inclusion PASSED [ 57%] tests/cli/run/test_run.py::test_matrix_variable_selection_duplicate_exclusion PASSED [ 57%] tests/cli/run/test_run.py::test_matrix_variable_selection_python_alias PASSED [ 57%] tests/cli/run/test_run.py::test_matrix_variable_selection_not_matrix PASSED [ 57%] tests/cli/run/test_run.py::test_matrix_variable_selection_inclusion FAILED [ 57%] tests/cli/run/test_run.py::test_matrix_variable_selection_exclusion FAILED [ 58%] tests/cli/run/test_run.py::test_matrix_variable_selection_exclude_all PASSED [ 58%] tests/cli/run/test_run.py::test_matrix_variable_selection_include_none PASSED [ 58%] tests/cli/run/test_run.py::test_matrix_variable_selection_inclusion_multiple_variables FAILED [ 58%] tests/cli/run/test_run.py::test_context_formatting_recursion FAILED [ 58%] tests/cli/run/test_run.py::test_install_python_specific ERROR [ 58%] tests/cli/run/test_run.py::test_update_python_specific ERROR [ 58%] tests/cli/run/test_run.py::test_install_python_max_compatible ERROR [ 58%] tests/cli/run/test_run.py::test_update_python_max_compatible ERROR [ 58%] tests/cli/run/test_run.py::test_python_installation_with_metadata_hook ERROR [ 58%] tests/cli/run/test_run.py::TestScriptRunner::test_not_file FAILED [ 58%] tests/cli/run/test_run.py::TestScriptRunner::test_dependencies FAILED [ 58%] tests/cli/run/test_run.py::TestScriptRunner::test_dependencies_from_tool_config FAILED [ 58%] tests/cli/run/test_run.py::TestScriptRunner::test_unsupported_python_version PASSED [ 58%] tests/cli/run/test_run.py::TestScriptRunner::test_python_version_constraint FAILED [ 58%] tests/cli/run/test_run.py::TestScriptRunner::test_python_version_constraint_from_tool_config FAILED [ 58%] tests/cli/self/test_report.py::test_binary PASSED [ 58%] tests/cli/self/test_report.py::test_pipx PASSED [ 58%] tests/cli/self/test_report.py::test_system PASSED [ 58%] tests/cli/self/test_report.py::test_windows_store SKIPPED (Not running on Windows) [ 58%] tests/cli/self/test_self.py::test PASSED [ 59%] tests/cli/status/test_status.py::TestModeLocalDefault::test_no_project PASSED [ 59%] tests/cli/status/test_status.py::TestModeLocalDefault::test_found_project PASSED [ 59%] tests/cli/status/test_status.py::TestProjectExplicit::test_found_project_flag[pyproject.toml] PASSED [ 59%] tests/cli/status/test_status.py::TestProjectExplicit::test_found_project_flag[setup.py] PASSED [ 59%] tests/cli/status/test_status.py::TestProjectExplicit::test_found_project_env[pyproject.toml] PASSED [ 59%] tests/cli/status/test_status.py::TestProjectExplicit::test_found_project_env[setup.py] PASSED [ 59%] tests/cli/status/test_status.py::TestProjectExplicit::test_unknown_project PASSED [ 59%] tests/cli/status/test_status.py::TestProjectExplicit::test_not_a_project PASSED [ 59%] tests/cli/status/test_status.py::TestModeProject::test_no_project PASSED [ 59%] tests/cli/status/test_status.py::TestModeProject::test_unknown_project PASSED [ 59%] tests/cli/status/test_status.py::TestModeProject::test_not_a_project PASSED [ 59%] tests/cli/status/test_status.py::TestModeProject::test_found_project[pyproject.toml] PASSED [ 59%] tests/cli/status/test_status.py::TestModeProject::test_found_project[setup.py] PASSED [ 59%] tests/cli/status/test_status.py::TestModeAware::test_no_detection_no_project PASSED [ 59%] tests/cli/status/test_status.py::TestModeAware::test_unknown_project PASSED [ 59%] tests/cli/status/test_status.py::TestModeAware::test_not_a_project PASSED [ 59%] tests/cli/status/test_status.py::TestModeAware::test_found_project[pyproject.toml] PASSED [ 59%] tests/cli/status/test_status.py::TestModeAware::test_found_project[setup.py] PASSED [ 59%] tests/cli/status/test_status.py::TestModeAware::test_local_override PASSED [ 59%] tests/cli/test/test_test.py::TestDefaults::test_basic PASSED [ 60%] tests/cli/test/test_test.py::TestDefaults::test_arguments PASSED [ 60%] tests/cli/test/test_test.py::TestArguments::test_default_args PASSED [ 60%] tests/cli/test/test_test.py::TestArguments::test_args_override PASSED [ 60%] tests/cli/test/test_test.py::TestArguments::test_extra_args PASSED [ 60%] tests/cli/test/test_test.py::TestCoverage::test_flag PASSED [ 60%] tests/cli/test/test_test.py::TestCoverage::test_flag_with_arguments PASSED [ 60%] tests/cli/test/test_test.py::TestCoverage::test_quiet_implicitly_enables PASSED [ 60%] tests/cli/test/test_test.py::TestCoverage::test_legacy_config_define_section PASSED [ 60%] tests/cli/test/test_test.py::TestCoverage::test_legacy_config_enable_parallel PASSED [ 60%] tests/cli/test/test_test.py::TestRandomize::test_flag PASSED [ 60%] tests/cli/test/test_test.py::TestRandomize::test_flag_with_arguments PASSED [ 60%] tests/cli/test/test_test.py::TestRandomize::test_config PASSED [ 60%] tests/cli/test/test_test.py::TestParallel::test_flag PASSED [ 60%] tests/cli/test/test_test.py::TestParallel::test_flag_with_arguments PASSED [ 60%] tests/cli/test/test_test.py::TestParallel::test_config PASSED [ 60%] tests/cli/test/test_test.py::TestRetries::test_flag PASSED [ 60%] tests/cli/test/test_test.py::TestRetries::test_flag_with_arguments PASSED [ 60%] tests/cli/test/test_test.py::TestRetries::test_config PASSED [ 60%] tests/cli/test/test_test.py::TestRetryDelay::test_no_retries PASSED [ 61%] tests/cli/test/test_test.py::TestRetryDelay::test_flag PASSED [ 61%] tests/cli/test/test_test.py::TestRetryDelay::test_flag_with_arguments PASSED [ 61%] tests/cli/test/test_test.py::TestRetryDelay::test_config PASSED [ 61%] tests/cli/test/test_test.py::TestCustomScripts::test_basic PASSED [ 61%] tests/cli/test/test_test.py::TestCustomScripts::test_coverage PASSED [ 61%] tests/cli/test/test_test.py::TestCustomScripts::test_single PASSED [ 61%] tests/cli/test/test_test.py::TestCustomScripts::test_matrix PASSED [ 61%] tests/cli/test/test_test.py::TestFilters::test_usage_with_all[--include] PASSED [ 61%] tests/cli/test/test_test.py::TestFilters::test_usage_with_all[--exclude] PASSED [ 61%] tests/cli/test/test_test.py::TestFilters::test_include PASSED [ 61%] tests/cli/test/test_test.py::TestFilters::test_exclude PASSED [ 61%] tests/cli/test/test_test.py::TestFilters::test_python PASSED [ 61%] tests/cli/test/test_test.py::TestShow::test_default_compact PASSED [ 61%] tests/cli/test/test_test.py::TestShow::test_verbose PASSED [ 61%] tests/cli/test_root.py::TestFreshInstallation::test_config_file_creation_default PASSED [ 61%] tests/cli/test_root.py::TestFreshInstallation::test_config_file_creation_verbose PASSED [ 61%] tests/cli/test_root.py::test_no_subcommand_shows_help PASSED [ 61%] tests/cli/test_root.py::test_no_config_file PASSED [ 61%] tests/cli/version/test_version.py::TestNoProject::test_random_directory PASSED [ 61%] tests/cli/version/test_version.py::TestNoProject::test_configured_project PASSED [ 62%] tests/cli/version/test_version.py::test_incompatible_environment PASSED [ 62%] tests/cli/version/test_version.py::test_show_dynamic PASSED [ 62%] tests/cli/version/test_version.py::test_no_compatibility_check_if_exists FAILED [ 62%] tests/cli/version/test_version.py::test_set_dynamic PASSED [ 62%] tests/cli/version/test_version.py::test_show_static PASSED [ 62%] tests/cli/version/test_version.py::test_set_static PASSED [ 62%] tests/config/test_model.py::test_default PASSED [ 62%] tests/config/test_model.py::TestMode::test_default PASSED [ 62%] tests/config/test_model.py::TestMode::test_defined PASSED [ 62%] tests/config/test_model.py::TestMode::test_not_string PASSED [ 62%] tests/config/test_model.py::TestMode::test_unknown PASSED [ 62%] tests/config/test_model.py::TestMode::test_set_lazy_error PASSED [ 62%] tests/config/test_model.py::TestProject::test_default PASSED [ 62%] tests/config/test_model.py::TestProject::test_defined PASSED [ 62%] tests/config/test_model.py::TestProject::test_not_string PASSED [ 62%] tests/config/test_model.py::TestProject::test_set_lazy_error PASSED [ 62%] tests/config/test_model.py::TestShell::test_default PASSED [ 62%] tests/config/test_model.py::TestShell::test_invalid_type PASSED [ 62%] tests/config/test_model.py::TestShell::test_string PASSED [ 62%] tests/config/test_model.py::TestShell::test_table PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_with_path PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_with_path_and_args PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_no_name PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_name_not_string PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_path_not_string PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_args_not_array PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_args_entry_not_string PASSED [ 63%] tests/config/test_model.py::TestShell::test_set_lazy_error PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_name_set_lazy_error PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_path_set_lazy_error PASSED [ 63%] tests/config/test_model.py::TestShell::test_table_args_set_lazy_error PASSED [ 63%] tests/config/test_model.py::TestDirs::test_default PASSED [ 63%] tests/config/test_model.py::TestDirs::test_not_table PASSED [ 63%] tests/config/test_model.py::TestDirs::test_set_lazy_error PASSED [ 63%] tests/config/test_model.py::TestDirs::test_project PASSED [ 63%] tests/config/test_model.py::TestDirs::test_project_not_array PASSED [ 63%] tests/config/test_model.py::TestDirs::test_project_entry_not_string PASSED [ 63%] tests/config/test_model.py::TestDirs::test_project_set_lazy_error PASSED [ 63%] tests/config/test_model.py::TestDirs::test_env PASSED [ 63%] tests/config/test_model.py::TestDirs::test_env_not_table PASSED [ 64%] tests/config/test_model.py::TestDirs::test_env_value_not_string PASSED [ 64%] tests/config/test_model.py::TestDirs::test_env_set_lazy_error PASSED [ 64%] tests/config/test_model.py::TestDirs::test_python PASSED [ 64%] tests/config/test_model.py::TestDirs::test_python_not_string PASSED [ 64%] tests/config/test_model.py::TestDirs::test_python_set_lazy_error PASSED [ 64%] tests/config/test_model.py::TestDirs::test_data PASSED [ 64%] tests/config/test_model.py::TestDirs::test_data_not_string PASSED [ 64%] tests/config/test_model.py::TestDirs::test_data_set_lazy_error PASSED [ 64%] tests/config/test_model.py::TestDirs::test_cache PASSED [ 64%] tests/config/test_model.py::TestDirs::test_cache_not_string PASSED [ 64%] tests/config/test_model.py::TestDirs::test_cache_set_lazy_error PASSED [ 64%] tests/config/test_model.py::TestProjects::test_default PASSED [ 64%] tests/config/test_model.py::TestProjects::test_not_table PASSED [ 64%] tests/config/test_model.py::TestProjects::test_set_lazy_error PASSED [ 64%] tests/config/test_model.py::TestProjects::test_entry_invalid_type PASSED [ 64%] tests/config/test_model.py::TestProjects::test_string PASSED [ 64%] tests/config/test_model.py::TestProjects::test_table PASSED [ 64%] tests/config/test_model.py::TestProjects::test_table_no_location PASSED [ 64%] tests/config/test_model.py::TestProjects::test_location_not_string PASSED [ 65%] tests/config/test_model.py::TestProjects::test_location_set_lazy_error PASSED [ 65%] tests/config/test_model.py::TestPublish::test_default PASSED [ 65%] tests/config/test_model.py::TestPublish::test_defined PASSED [ 65%] tests/config/test_model.py::TestPublish::test_not_table PASSED [ 65%] tests/config/test_model.py::TestPublish::test_data_not_table PASSED [ 65%] tests/config/test_model.py::TestPublish::test_set_lazy_error PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_not_table PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_set_lazy_error PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_name PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_name_default_env_var PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_name_default_git PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_name_default_no_git PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_name_not_string PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_name_set_lazy_error PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_email PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_email_default_env_var PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_email_default_git PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_email_default_no_git PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_email_not_string PASSED [ 65%] tests/config/test_model.py::TestTemplate::test_email_set_lazy_error PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_not_table PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_set_lazy_error PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_headers PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_headers_default PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_headers_not_boolean PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_headers_set_lazy_error PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_default PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_default_default PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_default_not_array PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_default_entry_not_string PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_licenses_default_set_lazy_error PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_plugins PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_plugins_default PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_plugins_not_table PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_plugins_data_not_table PASSED [ 66%] tests/config/test_model.py::TestTemplate::test_plugins_set_lazy_error PASSED [ 66%] tests/config/test_model.py::TestTerminal::test_default PASSED [ 66%] tests/config/test_model.py::TestTerminal::test_not_table PASSED [ 66%] tests/config/test_model.py::TestTerminal::test_set_lazy_error PASSED [ 66%] tests/config/test_model.py::TestTerminal::test_styles_not_table PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_set_lazy_error PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_info PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_info_not_string PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_info_set_lazy_error PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_success PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_success_not_string PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_success_set_lazy_error PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_error PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_error_not_string PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_error_set_lazy_error PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_warning PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_warning_not_string PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_warning_set_lazy_error PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_waiting PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_waiting_not_string PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_waiting_set_lazy_error PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_debug PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_debug_not_string PASSED [ 67%] tests/config/test_model.py::TestTerminal::test_styles_debug_set_lazy_error PASSED [ 68%] tests/config/test_model.py::TestTerminal::test_styles_spinner PASSED [ 68%] tests/config/test_model.py::TestTerminal::test_styles_spinner_not_string PASSED [ 68%] tests/config/test_model.py::TestTerminal::test_styles_spinner_set_lazy_error PASSED [ 68%] tests/env/collectors/test_custom.py::test_no_path PASSED [ 68%] tests/env/collectors/test_custom.py::test_path_not_string PASSED [ 68%] tests/env/collectors/test_custom.py::test_nonexistent PASSED [ 68%] tests/env/collectors/test_custom.py::test_default PASSED [ 68%] tests/env/collectors/test_custom.py::test_explicit_path PASSED [ 68%] tests/env/collectors/test_custom.py::test_no_subclass PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvVars::test_default PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvVars::test_not_table PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvVars::test_value_not_string PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvVars::test_correct PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvVars::test_context_formatting PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvInclude::test_default PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvInclude::test_not_array PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvInclude::test_pattern_not_string PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvInclude::test_correct PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvExclude::test_default PASSED [ 68%] tests/env/plugin/test_interface.py::TestEnvExclude::test_not_array PASSED [ 69%] tests/env/plugin/test_interface.py::TestEnvExclude::test_pattern_not_string PASSED [ 69%] tests/env/plugin/test_interface.py::TestEnvExclude::test_correct PASSED [ 69%] tests/env/plugin/test_interface.py::TestPlatforms::test_default PASSED [ 69%] tests/env/plugin/test_interface.py::TestPlatforms::test_not_array PASSED [ 69%] tests/env/plugin/test_interface.py::TestPlatforms::test_entry_not_string PASSED [ 69%] tests/env/plugin/test_interface.py::TestPlatforms::test_correct PASSED [ 69%] tests/env/plugin/test_interface.py::TestSkipInstall::test_default_project PASSED [ 69%] tests/env/plugin/test_interface.py::TestSkipInstall::test_default_no_project PASSED [ 69%] tests/env/plugin/test_interface.py::TestSkipInstall::test_not_boolean PASSED [ 69%] tests/env/plugin/test_interface.py::TestSkipInstall::test_enable PASSED [ 69%] tests/env/plugin/test_interface.py::TestDevMode::test_default PASSED [ 69%] tests/env/plugin/test_interface.py::TestDevMode::test_not_boolean PASSED [ 69%] tests/env/plugin/test_interface.py::TestDevMode::test_disable PASSED [ 69%] tests/env/plugin/test_interface.py::TestFeatures::test_default PASSED [ 69%] tests/env/plugin/test_interface.py::TestFeatures::test_invalid_type PASSED [ 69%] tests/env/plugin/test_interface.py::TestFeatures::test_correct PASSED [ 69%] tests/env/plugin/test_interface.py::TestFeatures::test_feature_not_string PASSED [ 69%] tests/env/plugin/test_interface.py::TestFeatures::test_feature_empty_string PASSED [ 69%] tests/env/plugin/test_interface.py::TestFeatures::test_feature_undefined PASSED [ 69%] tests/env/plugin/test_interface.py::TestDescription::test_default PASSED [ 70%] tests/env/plugin/test_interface.py::TestDescription::test_not_string PASSED [ 70%] tests/env/plugin/test_interface.py::TestDescription::test_correct PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_default PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_not_array PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_entry_not_string PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_invalid PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_extra_not_array PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_extra_entry_not_string PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_extra_invalid PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_full PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_context_formatting PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_full_skip_install PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_full_skip_install_and_features PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_full_dev_mode PASSED [ 70%] tests/env/plugin/test_interface.py::TestDependencies::test_unknown_dynamic_feature PASSED [ 70%] tests/env/plugin/test_interface.py::TestScripts::test_not_table[scripts] PASSED [ 70%] tests/env/plugin/test_interface.py::TestScripts::test_not_table[extra-scripts] PASSED [ 70%] tests/env/plugin/test_interface.py::TestScripts::test_name_contains_spaces[scripts] PASSED [ 70%] tests/env/plugin/test_interface.py::TestScripts::test_name_contains_spaces[extra-scripts] PASSED [ 70%] tests/env/plugin/test_interface.py::TestScripts::test_default PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_single_commands[scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_single_commands[extra-scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_multiple_commands[scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_multiple_commands[extra-scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_multiple_commands_not_string[scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_multiple_commands_not_string[extra-scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_config_invalid_type[scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_config_invalid_type[extra-scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_basic[scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_basic[extra-scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_multiple_nested[scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_multiple_nested[extra-scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_multiple_nested_ignore_exit_code[scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_multiple_nested_ignore_exit_code[extra-scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_modification[scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_modification[extra-scripts] PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_command_expansion_circular_inheritance PASSED [ 71%] tests/env/plugin/test_interface.py::TestScripts::test_extra_less_precedence PASSED [ 71%] tests/env/plugin/test_interface.py::TestPreInstallCommands::test_default PASSED [ 72%] tests/env/plugin/test_interface.py::TestPreInstallCommands::test_not_array PASSED [ 72%] tests/env/plugin/test_interface.py::TestPreInstallCommands::test_entry_not_string PASSED [ 72%] tests/env/plugin/test_interface.py::TestPreInstallCommands::test_correct PASSED [ 72%] tests/env/plugin/test_interface.py::TestPostInstallCommands::test_default PASSED [ 72%] tests/env/plugin/test_interface.py::TestPostInstallCommands::test_not_array PASSED [ 72%] tests/env/plugin/test_interface.py::TestPostInstallCommands::test_entry_not_string PASSED [ 72%] tests/env/plugin/test_interface.py::TestPostInstallCommands::test_correct PASSED [ 72%] tests/env/plugin/test_interface.py::TestEnvVarOption::test_unset PASSED [ 72%] tests/env/plugin/test_interface.py::TestEnvVarOption::test_set PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_env_name PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_env_type PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_default PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_unknown_modifier PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment_not_integer PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[-9000-command -qqq] PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[-3-command -qqq] PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[-2-command -qq] PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[-1-command -q] PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[0-command] PASSED [ 72%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[1-command -v] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[2-command -vv] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[3-command -vvv] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_default[9000-command -vvv] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[-9000-command -qqq] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[-3-command -qqq] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[-2-command -qq] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[-1-command -q] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[0-command] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[1-command -v] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[2-command -vv] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[3-command -vvv] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_verbosity_flag_adjustment[9000-command -vvv] PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_args_undefined PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_args_default PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_args_default_override PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_matrix_no_selection PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_matrix_no_default PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_matrix_default PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_matrix_default_override PASSED [ 73%] tests/env/plugin/test_interface.py::TestContextFormatting::test_env_vars_override PASSED [ 74%] tests/index/test_core.py::TestRepo::test_normalization PASSED [ 74%] tests/index/test_core.py::TestURLs::test_simple[PyPI main] PASSED [ 74%] tests/index/test_core.py::TestURLs::test_simple[PyPI test] PASSED [ 74%] tests/index/test_core.py::TestURLs::test_simple[default] PASSED [ 74%] tests/index/test_core.py::TestURLs::test_project[PyPI main] PASSED [ 74%] tests/index/test_core.py::TestURLs::test_project[PyPI test] PASSED [ 74%] tests/index/test_core.py::TestURLs::test_project[default] PASSED [ 74%] tests/project/test_config.py::TestEnv::test_not_table PASSED [ 74%] tests/project/test_config.py::TestEnv::test_default PASSED [ 74%] tests/project/test_config.py::TestEnvRequires::test_not_array PASSED [ 74%] tests/project/test_config.py::TestEnvRequires::test_requirement_not_string PASSED [ 74%] tests/project/test_config.py::TestEnvRequires::test_requirement_invalid PASSED [ 74%] tests/project/test_config.py::TestEnvRequires::test_default PASSED [ 74%] tests/project/test_config.py::TestEnvRequires::test_defined PASSED [ 74%] tests/project/test_config.py::TestEnvCollectors::test_not_table PASSED [ 74%] tests/project/test_config.py::TestEnvCollectors::test_collector_not_table PASSED [ 74%] tests/project/test_config.py::TestEnvCollectors::test_default PASSED [ 74%] tests/project/test_config.py::TestEnvCollectors::test_defined PASSED [ 74%] tests/project/test_config.py::TestEnvs::test_not_table PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_config_not_table PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_unknown_collector PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_unknown_template PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_default_undefined PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_default_partially_defined PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_default_defined PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_basic PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_basic_override PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_multiple_inheritance PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_circular_inheritance PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_scripts_inheritance PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_self_referential PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_detached PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_matrices_not_array PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_matrix_not_table PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_matrix_empty PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_matrix_variable_empty_string PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_matrix_variable_not_array PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_matrix_variable_array_empty PASSED [ 75%] tests/project/test_config.py::TestEnvs::test_matrix_variable_entry_not_string PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_variable_entry_empty_string PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_variable_entry_duplicate PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_multiple_python_variables PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_name_format_not_string PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_name_format_invalid PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_platform_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_env_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_name_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_platform_entry_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_env_entry_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_entry_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_overrides_name_entry_not_table PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_simple_no_python PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_simple_no_python_custom_name_format PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_simple_only_python[py] PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_simple_only_python[python] PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_simple[py] PASSED [ 76%] tests/project/test_config.py::TestEnvs::test_matrix_simple[python] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_matrix_simple_custom_name_format[py] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_matrix_simple_custom_name_format[python] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_matrix_multiple_non_python PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_matrix_series PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_matrices_not_inherited PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_matrix_default_naming PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_matrix_pypy_naming PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_invalid_type[env-vars] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_invalid_type[scripts] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_entry_invalid_type[env-vars] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_entry_invalid_type[scripts] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_no_key[env-vars] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_no_key[scripts] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_key_not_string[env-vars] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_key_not_string[scripts] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_key_empty_string[env-vars] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_key_empty_string[scripts] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_value_not_string[env-vars] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_value_not_string[scripts] PASSED [ 77%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_if_not_array[env-vars] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_table_entry_if_not_array[scripts] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_invalid_type[dependencies] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_invalid_type[extra-dependencies] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_invalid_type[env-exclude] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_invalid_type[env-include] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_invalid_type[features] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_invalid_type[platforms] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_invalid_type[post-install-commands] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_invalid_type[pre-install-commands] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_no_value[dependencies] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_no_value[extra-dependencies] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_no_value[env-exclude] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_no_value[env-include] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_no_value[features] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_no_value[platforms] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_no_value[post-install-commands] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_no_value[pre-install-commands] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_not_string[dependencies] PASSED [ 78%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_not_string[extra-dependencies] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_not_string[env-exclude] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_not_string[env-include] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_not_string[features] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_not_string[platforms] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_not_string[post-install-commands] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_not_string[pre-install-commands] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_empty_string[dependencies] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_empty_string[extra-dependencies] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_empty_string[env-exclude] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_empty_string[env-include] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_empty_string[features] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_empty_string[platforms] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_empty_string[post-install-commands] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_value_empty_string[pre-install-commands] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_if_not_array[dependencies] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_if_not_array[extra-dependencies] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_if_not_array[env-exclude] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_if_not_array[env-include] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_if_not_array[features] PASSED [ 79%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_if_not_array[platforms] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_if_not_array[post-install-commands] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_entry_if_not_array[pre-install-commands] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_entry_invalid_type[dependencies] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_entry_invalid_type[extra-dependencies] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_entry_invalid_type[env-exclude] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_entry_invalid_type[env-include] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_entry_invalid_type[features] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_entry_invalid_type[platforms] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_entry_invalid_type[post-install-commands] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_entry_invalid_type[pre-install-commands] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_invalid_type[python] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_invalid_type[type] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_no_value[python] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_no_value[type] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_value_not_string[python] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_value_not_string[type] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_entry_invalid_type[python] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_entry_invalid_type[type] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_no_value[python] PASSED [ 80%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_no_value[type] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_value_not_string[python] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_value_not_string[type] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_if_not_array[python] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_if_not_array[type] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_invalid_type[dev-mode] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_invalid_type[skip-install] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_no_value[dev-mode] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_no_value[skip-install] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_value_not_boolean[dev-mode] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_value_not_boolean[skip-install] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_entry_invalid_type[dev-mode] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_entry_invalid_type[skip-install] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_no_value[dev-mode] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_no_value[skip-install] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_value_not_boolean[dev-mode] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_value_not_boolean[skip-install] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_if_not_array[dev-mode] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_if_not_array[skip-install] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_platform_not_array[dev-mode] PASSED [ 81%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_platform_not_array[skip-install] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_platform_item_not_string[dev-mode] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_platform_item_not_string[skip-install] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_env_not_array[dev-mode] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_env_not_array[skip-install] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_env_item_not_string[dev-mode] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_env_item_not_string[skip-install] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_string_with_value[env-vars] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_string_with_value[scripts] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_string_without_value[env-vars] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_string_without_value[scripts] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_string_override[env-vars] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_string_override[scripts] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_string_with_value[env-vars] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_string_with_value[scripts] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_string_without_value[env-vars] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_string_without_value[scripts] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_string_override[env-vars] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_string_override[scripts] PASSED [ 82%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_table_key_with_value[env-vars] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_table_key_with_value[scripts] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_table_key_without_value[env-vars] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_table_key_without_value[scripts] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_table_override[env-vars] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_table_override[scripts] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_table_conditional[env-vars] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_array_table_conditional[scripts] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_overwrite[env-vars] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_mapping_overwrite[scripts] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string[dependencies] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string[extra-dependencies] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string[env-exclude] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string[env-include] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string[features] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string[platforms] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string[post-install-commands] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string[pre-install-commands] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string_existing_append[dependencies] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string_existing_append[extra-dependencies] PASSED [ 83%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string_existing_append[env-exclude] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string_existing_append[env-include] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string_existing_append[features] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string_existing_append[platforms] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string_existing_append[post-install-commands] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_string_existing_append[pre-install-commands] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table[dependencies] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table[extra-dependencies] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table[env-exclude] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table[env-include] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table[features] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table[platforms] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table[post-install-commands] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table[pre-install-commands] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_existing_append[dependencies] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_existing_append[extra-dependencies] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_existing_append[env-exclude] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_existing_append[env-include] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_existing_append[features] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_existing_append[platforms] PASSED [ 84%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_existing_append[post-install-commands] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_existing_append[pre-install-commands] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional[dependencies] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional[extra-dependencies] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional[env-exclude] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional[env-include] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional[features] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional[platforms] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional[post-install-commands] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional[pre-install-commands] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_platform[dependencies] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_platform[extra-dependencies] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_platform[env-exclude] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_platform[env-include] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_platform[features] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_platform[platforms] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_platform[post-install-commands] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_platform[pre-install-commands] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_wrong_platform[dependencies] PASSED [ 85%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_wrong_platform[extra-dependencies] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_wrong_platform[env-exclude] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_wrong_platform[env-include] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_wrong_platform[features] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_wrong_platform[platforms] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_wrong_platform[post-install-commands] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_wrong_platform[pre-install-commands] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match[dependencies] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match[extra-dependencies] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match[env-exclude] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match[env-include] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match[features] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match[platforms] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match[post-install-commands] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match[pre-install-commands] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match_empty_string[dependencies] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match_empty_string[extra-dependencies] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match_empty_string[env-exclude] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match_empty_string[env-include] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match_empty_string[features] PASSED [ 86%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match_empty_string[platforms] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match_empty_string[post-install-commands] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_match_empty_string[pre-install-commands] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_present[dependencies] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_present[extra-dependencies] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_present[env-exclude] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_present[env-include] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_present[features] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_present[platforms] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_present[post-install-commands] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_present[pre-install-commands] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_no_match[dependencies] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_no_match[extra-dependencies] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_no_match[env-exclude] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_no_match[env-include] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_no_match[features] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_no_match[platforms] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_no_match[post-install-commands] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_no_match[pre-install-commands] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_missing[dependencies] PASSED [ 87%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_missing[extra-dependencies] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_missing[env-exclude] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_missing[env-include] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_missing[features] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_missing[platforms] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_missing[post-install-commands] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_table_conditional_with_env_var_missing[pre-install-commands] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_set_with_no_type_information PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_set_with_no_type_information_not_table PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_overwrite[dependencies] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_overwrite[extra-dependencies] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_overwrite[env-exclude] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_overwrite[env-include] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_overwrite[features] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_overwrite[platforms] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_overwrite[post-install-commands] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_array_overwrite[pre-install-commands] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_string_create[python] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_string_create[type] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_string_overwrite[python] PASSED [ 88%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_string_overwrite[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_create[python] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_create[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_override[python] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_override[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_conditional[python] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_table_conditional[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_create[python] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_create[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_override[python] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_override[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_conditional[python] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_conditional[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_conditional_eager_string[python] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_conditional_eager_string[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_conditional_eager_table[python] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_string_array_table_conditional_eager_table[type] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_boolean_create[dev-mode] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_boolean_create[skip-install] PASSED [ 89%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_boolean_overwrite[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_boolean_overwrite[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_create[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_create[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_override[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_override[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_conditional[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_table_conditional[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_create[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_create[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_override[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_override[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_conditional[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_conditional[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_conditional_eager_boolean[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_conditional_eager_boolean[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_conditional_eager_table[dev-mode] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_boolean_array_table_conditional_eager_table[skip-install] PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_platform_boolean_boolean_create PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_platform_boolean_boolean_overwrite PASSED [ 90%] tests/project/test_config.py::TestEnvs::test_overrides_platform_boolean_table_create PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_platform_boolean_table_overwrite PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_env_boolean_boolean_create PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_env_boolean_boolean_overwrite PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_env_boolean_table_create PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_env_boolean_table_overwrite PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_env_boolean_conditional PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_name_boolean_boolean_create PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_name_boolean_boolean_overwrite PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_name_boolean_table_create PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_name_boolean_table_overwrite PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_name_precedence_over_matrix PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_precedence_over_platform PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_matrix_precedence_over_env PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_env_precedence_over_platform PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_overrides_for_environment_plugins PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_environment_collector_finalize_config PASSED [ 91%] tests/project/test_config.py::TestEnvs::test_environment_collector_finalize_environments PASSED [ 91%] tests/project/test_config.py::TestPublish::test_not_table PASSED [ 91%] tests/project/test_config.py::TestPublish::test_config_not_table PASSED [ 91%] tests/project/test_config.py::TestPublish::test_default PASSED [ 92%] tests/project/test_config.py::TestPublish::test_defined PASSED [ 92%] tests/project/test_config.py::TestScripts::test_not_table PASSED [ 92%] tests/project/test_config.py::TestScripts::test_name_contains_spaces PASSED [ 92%] tests/project/test_config.py::TestScripts::test_default PASSED [ 92%] tests/project/test_config.py::TestScripts::test_single_commands PASSED [ 92%] tests/project/test_config.py::TestScripts::test_multiple_commands PASSED [ 92%] tests/project/test_config.py::TestScripts::test_multiple_commands_not_string PASSED [ 92%] tests/project/test_config.py::TestScripts::test_config_invalid_type PASSED [ 92%] tests/project/test_config.py::TestScripts::test_command_expansion_basic PASSED [ 92%] tests/project/test_config.py::TestScripts::test_command_expansion_multiple_nested PASSED [ 92%] tests/project/test_config.py::TestScripts::test_command_expansion_multiple_nested_ignore_exit_code PASSED [ 92%] tests/project/test_config.py::TestScripts::test_command_expansion_modification PASSED [ 92%] tests/project/test_config.py::TestScripts::test_command_expansion_circular_inheritance PASSED [ 92%] tests/project/test_core.py::TestFindProjectRoot::test_no_project PASSED [ 92%] tests/project/test_core.py::TestFindProjectRoot::test_direct[pyproject.toml] PASSED [ 92%] tests/project/test_core.py::TestFindProjectRoot::test_direct[setup.py] PASSED [ 92%] tests/project/test_core.py::TestFindProjectRoot::test_recurse[pyproject.toml] PASSED [ 92%] tests/project/test_core.py::TestFindProjectRoot::test_recurse[setup.py] PASSED [ 92%] tests/project/test_core.py::TestFindProjectRoot::test_no_path[pyproject.toml] PASSED [ 93%] tests/project/test_core.py::TestFindProjectRoot::test_no_path[setup.py] PASSED [ 93%] tests/project/test_core.py::TestLoadProjectFromConfig::test_no_project_no_project_dirs PASSED [ 93%] tests/project/test_core.py::TestLoadProjectFromConfig::test_project_empty_string PASSED [ 93%] tests/project/test_core.py::TestLoadProjectFromConfig::test_project_basic_string PASSED [ 93%] tests/project/test_core.py::TestLoadProjectFromConfig::test_project_complex PASSED [ 93%] tests/project/test_core.py::TestLoadProjectFromConfig::test_project_complex_null_location PASSED [ 93%] tests/project/test_core.py::TestLoadProjectFromConfig::test_project_dirs PASSED [ 93%] tests/project/test_core.py::TestLoadProjectFromConfig::test_project_dirs_null_dir PASSED [ 93%] tests/project/test_core.py::TestLoadProjectFromConfig::test_project_dirs_not_directory PASSED [ 93%] tests/project/test_core.py::TestChosenName::test_selected PASSED [ 93%] tests/project/test_core.py::TestChosenName::test_cwd PASSED [ 93%] tests/project/test_core.py::TestLocation::test_no_project PASSED [ 93%] tests/project/test_core.py::TestLocation::test_project[pyproject.toml] PASSED [ 93%] tests/project/test_core.py::TestLocation::test_project[setup.py] PASSED [ 93%] tests/project/test_core.py::TestRawConfig::test_missing PASSED [ 93%] tests/project/test_core.py::TestRawConfig::test_exists PASSED [ 93%] tests/project/test_core.py::TestRawConfig::test_exists_without_project_table PASSED [ 93%] tests/project/test_core.py::TestEnsureCWD::test_location_is_file PASSED [ 93%] tests/project/test_core.py::TestEnsureCWD::test_cwd_is_location PASSED [ 93%] tests/project/test_core.py::TestEnsureCWD::test_cwd_inside_location PASSED [ 94%] tests/project/test_core.py::TestEnsureCWD::test_cwd_outside_location PASSED [ 94%] tests/project/test_utils.py::TestParseInlineScriptMetadata::test_no_metadata PASSED [ 94%] tests/project/test_utils.py::TestParseInlineScriptMetadata::test_too_many_blocks PASSED [ 94%] tests/project/test_utils.py::TestParseInlineScriptMetadata::test_correct PASSED [ 94%] tests/publish/plugin/test_interface.py::TestDisable::test_default PASSED [ 94%] tests/publish/plugin/test_interface.py::TestDisable::test_project_config PASSED [ 94%] tests/publish/plugin/test_interface.py::TestDisable::test_project_config_not_boolean PASSED [ 94%] tests/publish/plugin/test_interface.py::TestDisable::test_plugin_config PASSED [ 94%] tests/publish/plugin/test_interface.py::TestDisable::test_plugin_config_not_boolean PASSED [ 94%] tests/publish/plugin/test_interface.py::TestDisable::test_project_config_overrides_plugin_config PASSED [ 94%] tests/python/test_core.py::test_custom_source[3.7] FAILED [ 94%] tests/python/test_core.py::test_custom_source[3.8] FAILED [ 94%] tests/python/test_core.py::test_custom_source[3.9] FAILED [ 94%] tests/python/test_core.py::test_custom_source[3.10] FAILED [ 94%] tests/python/test_core.py::test_custom_source[3.11] FAILED [ 94%] tests/python/test_core.py::test_custom_source[3.12] FAILED [ 94%] tests/python/test_core.py::test_custom_source[pypy2.7] FAILED [ 94%] tests/python/test_core.py::test_custom_source[pypy3.9] FAILED [ 94%] tests/python/test_core.py::test_custom_source[pypy3.10] FAILED [ 94%] tests/python/test_core.py::test_installation[3.7] FAILED [ 95%] tests/python/test_core.py::test_installation[3.8] FAILED [ 95%] tests/python/test_core.py::test_installation[3.9] FAILED [ 95%] tests/python/test_core.py::test_installation[3.10] FAILED [ 95%] tests/python/test_core.py::test_installation[3.11] FAILED [ 95%] tests/python/test_core.py::test_installation[3.12] FAILED [ 95%] tests/python/test_core.py::test_installation[pypy2.7] FAILED [ 95%] tests/python/test_core.py::test_installation[pypy3.9] FAILED [ 95%] tests/python/test_core.py::test_installation[pypy3.10] FAILED [ 95%] tests/python/test_core.py::TestGetInstalled::test_source_does_not_exist PASSED [ 95%] tests/python/test_core.py::TestGetInstalled::test_not_a_directory FAILED [ 95%] tests/python/test_core.py::TestGetInstalled::test_no_metadata_file FAILED [ 95%] tests/python/test_core.py::TestGetInstalled::test_no_python_path FAILED [ 95%] tests/python/test_core.py::TestGetInstalled::test_order PASSED [ 95%] tests/python/test_resolve.py::TestErrors::test_unknown_distribution PASSED [ 95%] tests/python/test_resolve.py::TestErrors::test_resolution_error SKIPPED [ 95%] tests/python/test_resolve.py::TestDistributionVersions::test_cpython_standalone PASSED [ 95%] tests/python/test_resolve.py::TestDistributionVersions::test_cpython_standalone_custom FAILED [ 95%] tests/python/test_resolve.py::TestDistributionVersions::test_pypy PASSED [ 95%] tests/python/test_resolve.py::TestDistributionVersions::test_pypy_custom FAILED [ 95%] tests/python/test_resolve.py::TestDistributionPaths::test_cpython_standalone_custom FAILED [ 96%] tests/python/test_resolve.py::TestDistributionPaths::test_pypy_custom FAILED [ 96%] tests/python/test_resolve.py::test_variants[linux-v1] FAILED [ 96%] tests/python/test_resolve.py::test_variants[linux-v2] FAILED [ 96%] tests/python/test_resolve.py::test_variants[linux-v3] FAILED [ 96%] tests/python/test_resolve.py::test_variants[linux-v4] FAILED [ 96%] tests/python/test_resolve.py::test_guess_variant[v1] SKIPPED (No variants for this platform and architecture combination) [ 96%] tests/python/test_resolve.py::test_guess_variant[v2] SKIPPED (No variants for this platform and architecture combination) [ 96%] tests/python/test_resolve.py::test_guess_variant[v3] SKIPPED (No variants for this platform and architecture combination) [ 96%] tests/python/test_resolve.py::test_guess_variant[v4] SKIPPED (No variants for this platform and architecture combination) [ 96%] tests/utils/test_auth.py::test_pypirc PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_type PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_resolve_relative_non_existent PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_ensure_dir_exists PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_ensure_parent_dir_exists PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_as_cwd PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_as_cwd_env_vars PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_remove_file PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_remove_directory PASSED [ 96%] tests/utils/test_fs.py::TestPath::test_remove_non_existent PASSED [ 97%] tests/utils/test_fs.py::TestPath::test_temp_hide_file PASSED [ 97%] tests/utils/test_fs.py::TestPath::test_temp_hide_dir PASSED [ 97%] tests/utils/test_fs.py::TestPath::test_temp_hide_non_existent PASSED [ 97%] tests/utils/test_fs.py::test_temp_directory PASSED [ 97%] tests/utils/test_fs.py::test_temp_chdir PASSED [ 97%] tests/utils/test_platform.py::TestWindows::test_tag SKIPPED (Not running on Windows) [ 97%] tests/utils/test_platform.py::TestWindows::test_default_shell SKIPPED [ 97%] tests/utils/test_platform.py::TestWindows::test_format_for_subprocess_list SKIPPED [ 97%] tests/utils/test_platform.py::TestWindows::test_format_for_subprocess_list_shell SKIPPED [ 97%] tests/utils/test_platform.py::TestWindows::test_format_for_subprocess_string SKIPPED [ 97%] tests/utils/test_platform.py::TestWindows::test_format_for_subprocess_string_shell SKIPPED [ 97%] tests/utils/test_platform.py::TestWindows::test_home SKIPPED (Not running on Windows) [ 97%] tests/utils/test_platform.py::TestWindows::test_populate_default_popen_kwargs_executable SKIPPED [ 97%] tests/utils/test_platform.py::TestMacOS::test_tag SKIPPED (Not running on macOS) [ 97%] tests/utils/test_platform.py::TestMacOS::test_default_shell SKIPPED (Not running on macOS) [ 97%] tests/utils/test_platform.py::TestMacOS::test_format_for_subprocess_list SKIPPED [ 97%] tests/utils/test_platform.py::TestMacOS::test_format_for_subprocess_list_shell SKIPPED [ 97%] tests/utils/test_platform.py::TestMacOS::test_format_for_subprocess_string SKIPPED [ 97%] tests/utils/test_platform.py::TestMacOS::test_format_for_subprocess_string_shell SKIPPED [ 97%] tests/utils/test_platform.py::TestMacOS::test_home SKIPPED (Not running on macOS) [ 98%] tests/utils/test_platform.py::TestMacOS::test_populate_default_popen_kwargs_executable SKIPPED [ 98%] tests/utils/test_platform.py::TestLinux::test_tag PASSED [ 98%] tests/utils/test_platform.py::TestLinux::test_default_shell PASSED [ 98%] tests/utils/test_platform.py::TestLinux::test_format_for_subprocess_list PASSED [ 98%] tests/utils/test_platform.py::TestLinux::test_format_for_subprocess_list_shell PASSED [ 98%] tests/utils/test_platform.py::TestLinux::test_format_for_subprocess_string PASSED [ 98%] tests/utils/test_platform.py::TestLinux::test_format_for_subprocess_string_shell PASSED [ 98%] tests/utils/test_platform.py::TestLinux::test_home PASSED [ 98%] tests/utils/test_platform.py::TestLinux::test_populate_default_popen_kwargs_executable PASSED [ 98%] tests/utils/test_runner.py::TestParseMatrixVariables::test_empty PASSED [ 98%] tests/utils/test_runner.py::TestParseMatrixVariables::test_single PASSED [ 98%] tests/utils/test_runner.py::TestParseMatrixVariables::test_multiple PASSED [ 98%] tests/utils/test_runner.py::TestParseMatrixVariables::test_no_values PASSED [ 98%] tests/utils/test_runner.py::TestParseMatrixVariables::test_duplicate PASSED [ 98%] tests/utils/test_runner.py::TestSelectEnvironments::test_empty PASSED [ 98%] tests/utils/test_runner.py::TestSelectEnvironments::test_no_filters PASSED [ 98%] tests/utils/test_runner.py::TestSelectEnvironments::test_include_any PASSED [ 98%] tests/utils/test_runner.py::TestSelectEnvironments::test_include_specific PASSED [ 98%] tests/utils/test_runner.py::TestSelectEnvironments::test_include_multiple PASSED [ 98%] tests/utils/test_runner.py::TestSelectEnvironments::test_exclude_any PASSED [ 99%] tests/utils/test_runner.py::TestSelectEnvironments::test_exclude_specific PASSED [ 99%] tests/utils/test_runner.py::TestSelectEnvironments::test_exclude_multiple PASSED [ 99%] tests/utils/test_runner.py::TestSelectEnvironments::test_include_and_exclude PASSED [ 99%] tests/utils/test_structures.py::TestEnvVars::test_restoration PASSED [ 99%] tests/utils/test_structures.py::TestEnvVars::test_set PASSED [ 99%] tests/utils/test_structures.py::TestEnvVars::test_include PASSED [ 99%] tests/utils/test_structures.py::TestEnvVars::test_exclude PASSED [ 99%] tests/utils/test_structures.py::TestEnvVars::test_precedence PASSED [ 99%] tests/venv/test_core.py::test_initialization_does_not_create PASSED [ 99%] tests/venv/test_core.py::test_remove_non_existent_no_error PASSED [ 99%] tests/venv/test_core.py::test_creation PASSED [ 99%] tests/venv/test_core.py::test_executables_directory PASSED [ 99%] tests/venv/test_core.py::test_activation PASSED [ 99%] tests/venv/test_core.py::test_activation_path_env_var_missing PASSED [ 99%] tests/venv/test_core.py::test_context_manager PASSED [ 99%] tests/venv/test_core.py::test_creation_allow_system_packages PASSED [ 99%] tests/venv/test_core.py::test_python_data PASSED [ 99%] tests/venv/test_utils.py::TestGetRandomVenvName::test_length PASSED [ 99%] tests/venv/test_utils.py::TestGetRandomVenvName::test_different PASSED [100%] ==================================== ERRORS ==================================== ________________________ ERROR at setup of test_binary _________________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ________________________ ERROR at setup of test_parent _________________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError __________________ ERROR at setup of test_incompatible_single __________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError _______________ ERROR at setup of test_already_installed_latest ________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ___________ ERROR at setup of test_already_installed_update_disabled ___________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ____________ ERROR at setup of test_already_installed_update_prompt ____________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError _____________ ERROR at setup of test_already_installed_update_flag _____________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ___________ ERROR at setup of test_already_in_path[in_current_path] ____________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError _____________ ERROR at setup of test_already_in_path[in_new_path] ______________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ________________________ ERROR at setup of test_private ________________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ___________________ ERROR at setup of test_specific_location ___________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ___________________ ERROR at setup of test_specific_location ___________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ____________________ ERROR at setup of test_some_installed _____________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ___________________ ERROR at setup of test_specific_location ___________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError _______________________ ERROR at setup of test_outdated ________________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError _________________________ ERROR at setup of test_basic _________________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ___________________ ERROR at setup of test_specific_location ___________________ compatible_python_distributions = () @pytest.fixture def dist_name(compatible_python_distributions): > return secrets.choice(compatible_python_distributions) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/conftest.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = () def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ________________ ERROR at setup of test_install_python_specific ________________ @pytest.fixture(scope='module') def available_python_version(): compatible_distributions = get_compatible_distributions() current_version = f'{sys.version_info.major}.{sys.version_info.minor}' if current_version in compatible_distributions: return current_version versions = [d for d in get_compatible_distributions() if not d.startswith('pypy')] > return versions[-1] E IndexError: list index out of range /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:23: IndexError ________________ ERROR at setup of test_update_python_specific _________________ @pytest.fixture(scope='module') def available_python_version(): compatible_distributions = get_compatible_distributions() current_version = f'{sys.version_info.major}.{sys.version_info.minor}' if current_version in compatible_distributions: return current_version versions = [d for d in get_compatible_distributions() if not d.startswith('pypy')] > return versions[-1] E IndexError: list index out of range /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:23: IndexError _____________ ERROR at setup of test_install_python_max_compatible _____________ @pytest.fixture(scope='module') def available_python_version(): compatible_distributions = get_compatible_distributions() current_version = f'{sys.version_info.major}.{sys.version_info.minor}' if current_version in compatible_distributions: return current_version versions = [d for d in get_compatible_distributions() if not d.startswith('pypy')] > return versions[-1] E IndexError: list index out of range /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:23: IndexError _____________ ERROR at setup of test_update_python_max_compatible ______________ @pytest.fixture(scope='module') def available_python_version(): compatible_distributions = get_compatible_distributions() current_version = f'{sys.version_info.major}.{sys.version_info.minor}' if current_version in compatible_distributions: return current_version versions = [d for d in get_compatible_distributions() if not d.startswith('pypy')] > return versions[-1] E IndexError: list index out of range /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:23: IndexError ________ ERROR at setup of test_python_installation_with_metadata_hook _________ @pytest.fixture(scope='module') def available_python_version(): compatible_distributions = get_compatible_distributions() current_version = f'{sys.version_info.major}.{sys.version_info.minor}' if current_version in compatible_distributions: return current_version versions = [d for d in get_compatible_distributions() if not d.startswith('pypy')] > return versions[-1] E IndexError: list index out of range /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:23: IndexError =================================== FAILURES =================================== _____________________________ test_no_dependencies _____________________________ platform = def test_no_dependencies(platform): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:31: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{old_path}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpvd0x3bcu/dRE0 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path __________________________ test_dependency_not_found ___________________________ platform = def test_dependency_not_found(platform): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:16: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpeo4gs0s2/cDyJ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ____________________________ test_dependency_found _____________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet def test_dependency_found(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:22: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpvmmnpup_/XXBZ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ______________________________ test_version_unmet ______________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet def test_version_unmet(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:29: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpekmdjfiq/wckv /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path _______________________________ test_marker_met ________________________________ platform = def test_marker_met(platform): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:35: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpg9x8c_hz/7Aus /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ______________________________ test_marker_unmet _______________________________ platform = def test_marker_unmet(platform): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:40: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpjhjd_u6z/SgLl /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path __________________________ test_extra_no_dependencies __________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet def test_extra_no_dependencies(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:46: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpo1mnf6zd/wb6e /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ______________________________ test_unknown_extra ______________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet def test_unknown_extra(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:53: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp92h177x5/K0zl /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path _______________________________ test_extra_unmet _______________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet def test_extra_unmet(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:62: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpoiokyhek/AVFd /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ________________________________ test_extra_met ________________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet def test_extra_met(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:69: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpv9i0nkyd/ruup /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ____________________________ test_dependency_git_uv ____________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet @pytest.mark.requires_git def test_dependency_git_uv(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:89: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpq88dkz03/tXB4 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path _______________________ test_dependency_git_revision_uv ________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet @pytest.mark.requires_git def test_dependency_git_revision_uv(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:111: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpoartzd6b/slU0 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path __________________________ test_dependency_git_commit __________________________ platform = uv_on_path = '/usr/bin/uv' @pytest.mark.requires_internet @pytest.mark.requires_git def test_dependency_git_commit(platform, uv_on_path): > with TempUVVirtualEnv(sys.executable, platform) as venv: /build/python-hatch/src/hatch-hatch-v1.12.0/tests/backend/dep/test_core.py:125: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:125: in __enter__ return super().__enter__() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp0lzcu5rl/d-Tr /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ________________________ TestOtherBackend.test_standard ________________________ self = hatch = temp_dir = Path('/tmp/tmp7xwufqwy') helpers = def test_standard(self, hatch, temp_dir, helpers): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(path) config = dict(project.raw_config) config['build-system']['requires'] = ['flit-core'] config['build-system']['build-backend'] = 'flit_core.buildapi' config['project']['version'] = '0.0.1' config['project']['dynamic'] = [] del config['project']['license'] project.save_config(config) build_directory = path / 'dist' assert not build_directory.is_dir() with path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('build') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/build/test_build.py:39: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/build/__init__.py:72: in build for context in app.runner_context(['hatch-build']): /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:224: in runner_context self.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:148: in prepare_environment dependencies_in_sync = environment.dependencies_in_sync() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:189: in dependencies_in_sync with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp7xwufqwy/data/env/.internal/hatch-build/my-app/7SViaki0/hatch-build /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________ TestOtherBackend.test_legacy _________________________ self = hatch = temp_dir = Path('/tmp/tmpssfsbirk') helpers = def test_legacy(self, hatch, temp_dir, helpers): path = temp_dir / 'tmp' path.mkdir() data_path = temp_dir / 'data' data_path.mkdir() (path / 'pyproject.toml').write_text( """\ [build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" """ ) (path / 'setup.py').write_text( """\ import setuptools setuptools.setup(name="tmp", version="0.0.1") """ ) (path / 'tmp.py').write_text( """\ print("Hello World!") """ ) build_directory = path / 'dist' assert not build_directory.is_dir() with path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('build') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/build/test_build.py:105: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/build/__init__.py:72: in build for context in app.runner_context(['hatch-build']): /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:224: in runner_context self.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:148: in prepare_environment dependencies_in_sync = environment.dependencies_in_sync() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:189: in dependencies_in_sync with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpssfsbirk/data/env/.internal/hatch-build/tmp/pSNWbNcd/hatch-build /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ____________________ test_no_compatibility_check_if_exists _____________________ hatch = temp_dir = Path('/tmp/tmp48zk2erv') helpers = mocker = @pytest.mark.allow_backend_process @pytest.mark.requires_internet def test_no_compatibility_check_if_exists(hatch, temp_dir, helpers, mocker): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('build') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/build/test_build.py:161: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/build/__init__.py:114: in build with app.status_if( /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:208: in build_environment with self.get_env_vars(), self.build_virtual_env: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp48zk2erv/data/env/virtual/my-app/oUJ__fxu/my-app-build /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ___________________________________ test_new ___________________________________ hatch = helpers = temp_dir = Path('/tmp/tmpxbhirasy') config_file = def test_new(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'type': 'virtual', 'skip-install': True}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {}, } env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpxbhirasy/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:114: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________________ test_uv_shipped ________________________________ hatch = helpers = temp_dir = Path('/tmp/tmpnh_hm7t8') config_file = def test_uv_shipped(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', {'skip-install': True, 'installer': 'uv', **project.config.envs['default']}, ) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(), EnvVars( {ConfigEnvVars.DATA: str(data_path)}, exclude=[get_env_var(plugin_name='virtual', option='uv_path')] ): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpnh_hm7t8/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:170: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_uv_env __________________________________ hatch = helpers = temp_dir = Path('/tmp/tmpgwib3sqg') config_file = def test_uv_env(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', {'skip-install': True, 'installer': 'uv', **project.config.envs['default']}, ) helpers.update_project_environment(project, 'hatch-uv', {'dependencies': ['uv>=0.1.31']}) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(), EnvVars( {ConfigEnvVars.DATA: str(data_path)}, exclude=[get_env_var(plugin_name='virtual', option='uv_path')] ): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:216: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:111: in prepare_environment environment.create() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:157: in create with self.expose_uv(): /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:102: in expose_uv return EnvVars({'HATCH_UV': self.uv_path}) /usr/lib/python3.12/functools.py:995: in __get__ val = self.func(instance) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:119: in uv_path self.app.prepare_environment(uv_env) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:148: in prepare_environment dependencies_in_sync = environment.dependencies_in_sync() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:189: in dependencies_in_sync with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpgwib3sqg/data/env/virtual/my-app/kWhLgsv7/hatch-uv /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_selected_absolute_directory _______________________ hatch = helpers = temp_dir = Path('/tmp/tmpxhpvfu91') config_file = def test_selected_absolute_directory(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.model.dirs.env = {'virtual': '$VENVS_DIR'} config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' env_data_path = temp_dir / '.venvs' project = Project(project_path) assert project.config.envs == {'default': {'type': 'virtual'}} helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd({'VENVS_DIR': str(env_data_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'type': 'virtual', 'skip-install': True}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {}, } > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpxhpvfu91/.venvs').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:350: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________________ test_option_absolute_directory ________________________ hatch = helpers = temp_dir = Path('/tmp/tmpti6tiu_a') config_file = def test_option_absolute_directory(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.model.dirs.env = {'virtual': '$VENVS_DIR'} config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' env_data_path = temp_dir / '.venvs' env_path = temp_dir / 'foo' project = Project(project_path) assert project.config.envs == {'default': {'type': 'virtual'}} helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'path': str(env_path)}) with project_path.as_cwd({'VENVS_DIR': str(env_data_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'type': 'virtual', 'skip-install': True, 'path': str(env_path)}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'path': str(env_path)}, } assert not env_data_path.is_dir() > assert env_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpti6tiu_a/foo').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:412: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_env_var_absolute_directory ________________________ hatch = helpers = temp_dir = Path('/tmp/tmpdvjinu2s') config_file = def test_env_var_absolute_directory(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.model.dirs.env = {'virtual': '$VENVS_DIR'} config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' env_data_path = temp_dir / '.venvs' env_path = temp_dir / 'foo' env_path_overridden = temp_dir / 'bar' project = Project(project_path) assert project.config.envs == {'default': {'type': 'virtual'}} helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'path': str(env_path_overridden)}) with project_path.as_cwd({'VENVS_DIR': str(env_data_path), 'HATCH_ENV_TYPE_VIRTUAL_PATH': str(env_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'type': 'virtual', 'skip-install': True, 'path': str(env_path_overridden)}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'path': str(env_path_overridden)}, } assert not env_data_path.is_dir() > assert env_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpdvjinu2s/foo').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:459: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________________ test_selected_local_directory _________________________ hatch = helpers = temp_dir = Path('/tmp/tmp3dzqx_fi') config_file = def test_selected_local_directory(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.model.dirs.env = {'virtual': '$VENVS_DIR'} config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'matrix': [{'version': ['9000', '42']}]}) with project_path.as_cwd({'VENVS_DIR': '.hatch'}): result = hatch('env', 'create') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) with project_path.as_cwd({'VENVS_DIR': '.hatch'}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test.9000 Checking dependencies Creating environment: test.42 Checking dependencies """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test.9000': {'type': 'virtual', 'skip-install': True}, 'test.42': {'type': 'virtual', 'skip-install': True}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'matrix': [{'version': ['9000', '42']}]}, } env_data_path = project_path / '.hatch' assert env_data_path.is_dir() env_dirs = list(env_data_path.iterdir()) > assert len(env_dirs) == 4 E AssertionError: assert 1 == 4 E + where 1 = len([Path('/tmp/tmp3dzqx_fi/my-app/.hatch/.gitignore')]) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:519: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________ test_option_local_directory __________________________ hatch = helpers = temp_dir = Path('/tmp/tmpi6pcekov') config_file = def test_option_local_directory(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.model.dirs.env = {'virtual': '$VENVS_DIR'} config_file.save() project_name = 'My.App' env_data_path = temp_dir / '.venvs' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' project = Project(project_path) assert project.config.envs == {'default': {'type': 'virtual'}} helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'path': '.venv'}) with project_path.as_cwd({'VENVS_DIR': str(env_data_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'type': 'virtual', 'skip-install': True, 'path': '.venv'}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'path': '.venv'}, } assert not env_data_path.is_dir() > assert (project_path / '.venv').is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = (Path('/tmp/tmpi6pcekov/my-app') / '.venv').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:565: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________ test_env_var_local_directory _________________________ hatch = helpers = temp_dir = Path('/tmp/tmpc84gjqen') config_file = def test_env_var_local_directory(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.model.dirs.env = {'virtual': '$VENVS_DIR'} config_file.save() project_name = 'My.App' env_data_path = temp_dir / '.venvs' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' project = Project(project_path) assert project.config.envs == {'default': {'type': 'virtual'}} helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'path': '.foo'}) with project_path.as_cwd({'VENVS_DIR': str(env_data_path), 'HATCH_ENV_TYPE_VIRTUAL_PATH': '.venv'}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'type': 'virtual', 'skip-install': True, 'path': '.foo'}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'path': '.foo'}, } assert not env_data_path.is_dir() > assert (project_path / '.venv').is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = (Path('/tmp/tmpc84gjqen/my-app') / '.venv').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:609: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________ test_enter_project_directory _________________________ hatch = config_file = helpers = temp_dir = Path('/tmp/tmpx7hz3mc3') def test_enter_project_directory(hatch, config_file, helpers, temp_dir): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = 'foo' config_file.model.mode = 'project' config_file.model.project = project config_file.model.projects = {project: str(project_path)} config_file.save() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {}) with EnvVars({ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpx7hz3mc3/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:649: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _____________________________ test_already_created _____________________________ hatch = config_file = helpers = temp_dir = Path('/tmp/tmp_5id1h1t') def test_already_created(hatch, config_file, helpers, temp_dir): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmp_5id1h1t/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:699: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_default _________________________________ hatch = config_file = helpers = temp_dir = Path('/tmp/tmpbo_9uf0u') def test_default(hatch, config_file, helpers, temp_dir): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpbo_9uf0u/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:758: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_matrix __________________________________ hatch = helpers = temp_dir = Path('/tmp/tmpjsgserh_') config_file = def test_matrix(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'matrix': [{'version': ['9000', '42']}]}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test.9000 Checking dependencies Creating environment: test.42 Checking dependencies """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test.9000': {'type': 'virtual', 'skip-install': True}, 'test.42': {'type': 'virtual', 'skip-install': True}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': {'matrix': [{'version': ['9000', '42']}]}, } env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpjsgserh_/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:821: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_incompatible_matrix_partial _______________________ hatch = helpers = temp_dir = Path('/tmp/tmpq1qr8s_s') config_file = def test_incompatible_matrix_partial(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment( project, 'test', { 'matrix': [{'version': ['9000', '42']}], 'overrides': {'matrix': {'version': {'platforms': [{'value': 'foo', 'if': ['9000']}]}}}, }, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test.42 Checking dependencies Skipped 1 incompatible environment: test.9000 -> unsupported platform """ ) project = Project(project_path) assert project.config.envs == { 'default': {'type': 'virtual', 'skip-install': True}, 'test.9000': {'type': 'virtual', 'skip-install': True, 'platforms': ['foo']}, 'test.42': {'type': 'virtual', 'skip-install': True}, } assert project.raw_config['tool']['hatch']['envs'] == { 'default': {'type': 'virtual', 'skip-install': True}, 'test': { 'matrix': [{'version': ['9000', '42']}], 'overrides': {'matrix': {'version': {'platforms': [{'value': 'foo', 'if': ['9000']}]}}}, }, } env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpq1qr8s_s/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:986: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ____________________ test_install_project_default_dev_mode _____________________ hatch = helpers = temp_dir = Path('/tmp/tmppk9eijt2') platform = uv_on_path = '/usr/bin/uv' extract_installed_requirements = . at 0x7ab2367af740> @pytest.mark.requires_internet def test_install_project_default_dev_mode( hatch, helpers, temp_dir, platform, uv_on_path, extract_installed_requirements ): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1022: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmppk9eijt2/data/env/virtual/my-app/C6Uadw2W/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_install_project_no_dev_mode _______________________ hatch = helpers = temp_dir = Path('/tmp/tmp5036xf9x') platform = uv_on_path = '/usr/bin/uv' extract_installed_requirements = . at 0x7ab2367af740> @pytest.mark.requires_internet def test_install_project_no_dev_mode(hatch, helpers, temp_dir, platform, uv_on_path, extract_installed_requirements): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'dev-mode': False, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1080: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:129: in prepare_environment environment.install_project() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:174: in install_project with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp5036xf9x/data/env/virtual/my-app/7jACI3xS/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) __________________________ test_pre_install_commands ___________________________ hatch = helpers = temp_dir = Path('/tmp/tmpc2hmegrd') config_file = @pytest.mark.requires_internet def test_pre_install_commands(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', { 'pre-install-commands': ["python -c \"with open('test.txt', 'w') as f: f.write('content')\""], **project.config.envs['default'], }, ) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1148: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:116: in prepare_environment self.run_shell_commands( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpc2hmegrd/data/env/virtual/my-app/vr7Y4F6u/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_pre_install_commands_error ________________________ hatch = helpers = temp_dir = Path('/tmp/tmpckvssn2x') config_file = def test_pre_install_commands_error(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', {'pre-install-commands': ['python -c "import sys;sys.exit(7)"'], **project.config.envs['default']}, ) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1186: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:116: in prepare_environment self.run_shell_commands( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpckvssn2x/data/env/virtual/my-app/u4oYp2zp/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) __________________________ test_post_install_commands __________________________ hatch = helpers = temp_dir = Path('/tmp/tmpymdnim0p') config_file = @pytest.mark.requires_internet def test_post_install_commands(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', { 'post-install-commands': ["python -c \"with open('test.txt', 'w') as f: f.write('content')\""], **project.config.envs['default'], }, ) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1226: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpymdnim0p/data/env/virtual/my-app/v0pC7o-w/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_post_install_commands_error _______________________ hatch = helpers = temp_dir = Path('/tmp/tmph_2xs50a') config_file = @pytest.mark.requires_internet def test_post_install_commands_error(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', {'post-install-commands': ['python -c "import sys;sys.exit(7)"'], **project.config.envs['default']}, ) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1265: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmph_2xs50a/data/env/virtual/my-app/jHuMnN4i/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) __________________________ test_sync_dependencies_uv ___________________________ hatch = helpers = temp_dir = Path('/tmp/tmp152wedo9') platform = uv_on_path = '/usr/bin/uv' extract_installed_requirements = . at 0x7ab2367af740> @pytest.mark.requires_internet def test_sync_dependencies_uv(hatch, helpers, temp_dir, platform, uv_on_path, extract_installed_requirements): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', { 'dependencies': ['binary'], 'post-install-commands': ["python -c \"with open('test.txt', 'w') as f: f.write('content')\""], **project.config.envs['default'], }, ) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1304: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp152wedo9/data/env/virtual/my-app/dfjzsi1V/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________________________ test_features _________________________________ hatch = helpers = temp_dir = Path('/tmp/tmp1vx4sq_6') platform = uv_on_path = '/usr/bin/uv' extract_installed_requirements = . at 0x7ab2367af740> @pytest.mark.requires_internet def test_features(hatch, helpers, temp_dir, platform, uv_on_path, extract_installed_requirements): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) config = dict(project.raw_config) config['project']['optional-dependencies'] = {'foo': ['binary']} project.save_config(config) helpers.update_project_environment(project, 'default', {'features': ['foo'], **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1439: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp1vx4sq_6/data/env/virtual/my-app/SKSjjctp/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________________ test_sync_dynamic_dependencies ________________________ hatch = helpers = temp_dir = Path('/tmp/tmpjc8429ii') platform = uv_on_path = '/usr/bin/uv' extract_installed_requirements = . at 0x7ab2367af740> @pytest.mark.requires_internet def test_sync_dynamic_dependencies(hatch, helpers, temp_dir, platform, uv_on_path, extract_installed_requirements): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output for i in range(2): with temp_dir.as_cwd(): result = hatch('new', f'{project_name}{i}') assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) config = dict(project.raw_config) config['project'].pop('dependencies') config['project']['dynamic'].extend(('dependencies', 'optional-dependencies')) config['tool']['hatch']['metadata'] = {'allow-direct-references': True, 'hooks': {'custom': {}}} project.save_config(config) helpers.update_project_environment( project, 'default', { 'dependencies': ['my-app1 @ {root:uri}/../my-app1'], 'features': ['foo'], 'post-install-commands': ["python -c \"with open('test.txt', 'w') as f: f.write('content')\""], **project.config.envs['default'], }, ) helpers.update_project_environment(project, 'test', {}) build_script = project_path / DEFAULT_BUILD_SCRIPT build_script.write_text( helpers.dedent( """ from hatchling.metadata.plugin.interface import MetadataHookInterface class CustomHook(MetadataHookInterface): def update(self, metadata): metadata['dependencies'] = ['my-app0 @ {root:uri}/../my-app0'] metadata['optional-dependencies'] = {'foo': ['binary']} """ ) ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1532: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpjc8429ii/data/env/virtual/my-app/HO52uwbL/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________ test_unknown_dynamic_feature _________________________ hatch = helpers = temp_dir = Path('/tmp/tmp0skm781v') config_file = @pytest.mark.requires_internet def test_unknown_dynamic_feature(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output with temp_dir.as_cwd(): result = hatch('new', f'{project_name}1') assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) config = dict(project.raw_config) config['build-system']['requires'].append(f'my-app1 @ {path_to_uri(project_path).lower()}/../my-app1') config['project']['dynamic'].append('optional-dependencies') config['tool']['hatch']['metadata'] = {'hooks': {'custom': {}}} project.save_config(config) helpers.update_project_environment( project, 'default', { 'features': ['foo'], 'post-install-commands': ["python -c \"with open('test.txt', 'w') as f: f.write('content')\""], **project.config.envs['default'], }, ) helpers.update_project_environment(project, 'test', {}) build_script = project_path / DEFAULT_BUILD_SCRIPT build_script.write_text( helpers.dedent( """ from hatchling.metadata.plugin.interface import MetadataHookInterface class CustomHook(MetadataHookInterface): def update(self, metadata): metadata['optional-dependencies'] = {'bar': ['binary']} """ ) ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}), pytest.raises( ValueError, match=( 'Feature `foo` of field `tool.hatch.envs.test.features` is not defined in the dynamic ' 'field `project.optional-dependencies`' ), ): > hatch('env', 'create', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1637: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp0skm781v/data/env/virtual/my-app/_trJ3Fl3/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _____________________________ test_no_project_file _____________________________ hatch = helpers = temp_dir = Path('/tmp/tmpbrbi_dgx') config_file = def test_no_project_file(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() (project_path / 'pyproject.toml').remove() with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpbrbi_dgx/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1669: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________ test_no_compatible_python_ok_if_not_installed _________________ hatch = helpers = temp_dir = Path('/tmp/tmp1me74aqb') config_file = def test_no_compatible_python_ok_if_not_installed(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) config = dict(project.raw_config) config['project']['requires-python'] = '==9000' project.save_config(config) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmp1me74aqb/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_create.py:1936: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_single __________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmpijouuc4v') config_file = def test_single(hatch, helpers, temp_dir_data, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir_data.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir_data / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) with project_path.as_cwd(): result = hatch('env', 'create') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) env_data_path = temp_dir_data / 'data' / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpijouuc4v/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_find.py:62: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_matrix __________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmpf0kvgpf7') config_file = def test_matrix(hatch, helpers, temp_dir_data, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir_data.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir_data / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment( project, 'test', { 'matrix': [{'version': ['9000', '42']}], 'overrides': {'matrix': {'version': {'platforms': [{'value': 'foo', 'if': ['9000']}]}}}, }, ) with project_path.as_cwd(): result = hatch('env', 'create', 'test') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: test.42 Checking dependencies Skipped 1 incompatible environment: test.9000 -> unsupported platform """ ) env_data_path = temp_dir_data / 'data' / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpf0kvgpf7/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_find.py:122: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ___________________________________ test_all ___________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmp6bysh83u') config_file = def test_all(hatch, helpers, temp_dir_data, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir_data.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir_data / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'foo', {}) helpers.update_project_environment(project, 'bar', {}) with project_path.as_cwd(): result = hatch('env', 'create', 'foo') assert result.exit_code == 0, result.output with project_path.as_cwd(): result = hatch('env', 'create', 'bar') assert result.exit_code == 0, result.output env_data_path = temp_dir_data / 'data' / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmp6bysh83u/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_prune.py:66: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_single __________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmphl9e9xa9') config_file = def test_single(hatch, helpers, temp_dir_data, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir_data.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir_data / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'foo', {}) helpers.update_project_environment(project, 'bar', {}) with project_path.as_cwd(): result = hatch('env', 'create', 'foo') assert result.exit_code == 0, result.output with project_path.as_cwd(): result = hatch('env', 'create', 'bar') assert result.exit_code == 0, result.output env_data_path = temp_dir_data / 'data' / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmphl9e9xa9/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_remove.py:75: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ___________________________________ test_all ___________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmph8azxgdg') config_file = def test_all(hatch, helpers, temp_dir_data, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir_data.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir_data / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'foo', {}) helpers.update_project_environment(project, 'bar', {}) with project_path.as_cwd(): result = hatch('env', 'create', 'foo') assert result.exit_code == 0, result.output with project_path.as_cwd(): result = hatch('env', 'create', 'bar') assert result.exit_code == 0, result.output env_data_path = temp_dir_data / 'data' / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmph8azxgdg/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_remove.py:138: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________________ test_matrix_all ________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmpzkho_20_') config_file = def test_matrix_all(hatch, helpers, temp_dir_data, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir_data.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir_data / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'foo', {'matrix': [{'version': ['9000', '42']}]}) with project_path.as_cwd(): result = hatch('env', 'create', 'foo') assert result.exit_code == 0, result.output env_data_path = temp_dir_data / 'data' / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpzkho_20_/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_remove.py:204: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_matrix_all_local_directory ________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmp48kzwzhv') config_file = def test_matrix_all_local_directory(hatch, helpers, temp_dir_data, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.model.dirs.env = {'virtual': '.hatch'} config_file.save() project_name = 'My.App' with temp_dir_data.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir_data / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'foo', {'matrix': [{'version': ['9000', '42']}]}) with project_path.as_cwd(): result = hatch('env', 'create', 'foo') assert result.exit_code == 0, result.output env_data_path = project_path / '.hatch' assert env_data_path.is_dir() env_dirs = list(env_data_path.iterdir()) > assert len(env_dirs) == 3 E AssertionError: assert 1 == 3 E + where 1 = len([Path('/tmp/tmp48kzwzhv/my-app/.hatch/.gitignore')]) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_remove.py:265: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _____________________________ test_active_override _____________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmp0xowng__') config_file = def test_active_override(hatch, helpers, temp_dir_data, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir_data.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir_data / 'my-app' project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'foo', {}) with project_path.as_cwd(): result = hatch('env', 'create') assert result.exit_code == 0, result.output env_data_path = temp_dir_data / 'data' / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmp0xowng__/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_remove.py:349: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_filter __________________________________ hatch = helpers = temp_dir = Path('/tmp/tmp1ogu2qi4') config_file = def test_filter(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment( project, 'test', { 'matrix': [{'version': ['9000', '42']}], 'overrides': {'matrix': {'version': {'foo-bar-option': {'value': True, 'if': ['42']}}}}, }, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch( 'env', 'run', '--env', 'test', '--filter', '{"foo-bar-option":true}', '--', 'python', '-c', "import os,sys;open('test.txt', 'a').write(sys.executable+os.linesep[-1])", ) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_run.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp1ogu2qi4/data/env/virtual/my-app/mFS0z30t/test.42 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _____________________________ test_force_continue ______________________________ hatch = helpers = temp_dir = Path('/tmp/tmp9u2j8ujs') config_file = def test_force_continue(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', { 'skip-install': True, 'scripts': { 'error': [ 'python -c "import sys;sys.exit(2)"', '- python -c "import sys;sys.exit(3)"', 'python -c "import sys;sys.exit(1)"', 'python -c "import pathlib,sys;pathlib.Path(\'test.txt\').write_text(sys.executable)"', ], }, **project.config.envs['default'], }, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'run', '--force-continue', '--', 'error') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/env/test_run.py:157: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp9u2j8ujs/data/env/virtual/my-app/UBwOEBJ0/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ______ TestBuildDependenciesMissing.test_no_compatibility_check_if_exists ______ self = hatch = temp_dir = Path('/tmp/tmp6njn9cov') helpers = mocker = @pytest.mark.allow_backend_process @pytest.mark.requires_internet def test_no_compatibility_check_if_exists(self, hatch, temp_dir, helpers, mocker): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) config = dict(project.raw_config) config['build-system']['requires'].append('binary') project.save_config(config) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('project', 'metadata', 'license') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/project/test_metadata.py:403: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/project/metadata.py:40: in metadata with app.status_if( /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:208: in build_environment with self.get_env_vars(), self.build_virtual_env: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp6njn9cov/data/env/virtual/my-app/dPIH7cnj/my-app-build /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ______________________________ test_installation _______________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmp78zpanky') platform = path_append = default_shells = ['sh'], compatible_python_distributions = () @pytest.mark.requires_internet def test_installation( hatch, helpers, temp_dir_data, platform, path_append, default_shells, compatible_python_distributions ): selection = [name for name in compatible_python_distributions if not name.startswith('pypy')] > dist_name = secrets.choice(selection) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/test_install.py:67: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , seq = [] def choice(self, seq): """Choose a random element from a non-empty sequence.""" # As an accommodation for NumPy, we don't use "if not seq" # because bool(numpy.array()) raises a ValueError. if not len(seq): > raise IndexError('Cannot choose from an empty sequence') E IndexError: Cannot choose from an empty sequence /usr/lib/python3.12/random.py:347: IndexError ___________________________________ test_all ___________________________________ hatch = temp_dir_data = Path('/tmp/tmpmvnyrwpu') path_append = default_shells = ['sh'] mocker = compatible_python_distributions = () def test_all(hatch, temp_dir_data, path_append, default_shells, mocker, compatible_python_distributions): mocked_dists = [] for name in compatible_python_distributions: dist_dir = temp_dir_data / 'data' / 'pythons' / name python_path = dist_dir / get_distribution(name).python_path mocked_dists.append(mocker.MagicMock(path=dist_dir, python_path=python_path)) install = mocker.patch('hatch.python.core.PythonManager.install', side_effect=mocked_dists) result = hatch('python', 'install', 'all') > assert result.exit_code == 0, result.output E AssertionError: Incompatible distributions: 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, pypy2.7, pypy3.9, pypy3.10 E E assert 1 == 0 E + where 1 = .exit_code /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/test_install.py:271: AssertionError __________________________________ test_basic __________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmp7mw4t5vi') def test_basic(hatch, helpers, temp_dir_data): install_dir = temp_dir_data / 'data' / 'pythons' for name in ('3.9', '3.10'): > helpers.write_distribution(install_dir, name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/test_remove.py:16: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/helpers/helpers.py:135: in write_distribution dist = get_distribution(name) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.9', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________________ test_all ___________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmp2m0_ugf0') def test_all(hatch, helpers, temp_dir_data): installed_distributions = ('3.9', '3.10', '3.11') for name in installed_distributions: install_dir = temp_dir_data / 'data' / 'pythons' > helpers.write_distribution(install_dir, name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/test_remove.py:51: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/helpers/helpers.py:135: in write_distribution dist = get_distribution(name) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.9', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ____________________________ test_nothing_installed ____________________________ hatch = def test_nothing_installed(hatch): compatible_distributions = get_compatible_distributions() available_table = render_table( 'Available', [ ['Name', 'Version'], *[[d.name, d.version.base_version] for d in compatible_distributions.values()], ], ) result = hatch('python', 'show', '--ascii') assert result.exit_code == 0, result.output > assert result.output == available_table E AssertionError: assert '' == ' Available \n+------+---------+\n| Name | Version |\n+======+=========+\n+------+---------+\n' E E - Available E - +------+---------+ E - | Name | Version | E - +======+=========+ E - +------+---------+ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/test_show.py:37: AssertionError ______________________________ test_all_installed ______________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmptlvuravq') def test_all_installed(hatch, helpers, temp_dir_data): install_dir = temp_dir_data / 'data' / 'pythons' compatible_distributions = get_compatible_distributions() for dist_name in compatible_distributions: helpers.write_distribution(install_dir, dist_name) installed_table = render_table( 'Installed', [ ['Name', 'Version'], *[[d.name, d.version.base_version] for d in compatible_distributions.values()], ], ) result = hatch('python', 'show', '--ascii') assert result.exit_code == 0, result.output > assert result.output == installed_table E AssertionError: assert '' == ' Installed \n+------+---------+\n| Name | Version |\n+======+=========+\n+------+---------+\n' E E - Installed E - +------+---------+ E - | Name | Version | E - +======+=========+ E - +------+---------+ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/test_show.py:84: AssertionError ___________________________________ test_all ___________________________________ hatch = helpers = temp_dir_data = Path('/tmp/tmpkuqggree') path_append = mocker = def test_all(hatch, helpers, temp_dir_data, path_append, mocker): installed_distributions = ('3.9', '3.10', '3.11') mocked_dists = [] for name in installed_distributions: install_dir = temp_dir_data / 'data' / 'pythons' > helpers.write_distribution(install_dir, name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/python/test_update.py:69: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/helpers/helpers.py:135: in write_distribution dist = get_distribution(name) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.9', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_automatic_creation ____________________________ hatch = helpers = temp_dir = Path('/tmp/tmpovbkaxww') config_file = def test_automatic_creation(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'python', '-c', "import pathlib,sys;pathlib.Path('test.txt').write_text(sys.executable)") /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:55: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpovbkaxww/data/env/virtual/my-app/Vr7fHwLi/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ____________________ test_no_compatibility_check_if_exists _____________________ hatch = helpers = temp_dir = Path('/tmp/tmp61wubc8g') config_file = mocker = def test_no_compatibility_check_if_exists(hatch, helpers, temp_dir, config_file, mocker): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'python', '-c', "import pathlib,sys;pathlib.Path('test.txt').write_text(sys.executable)") /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:108: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp61wubc8g/data/env/virtual/my-app/lZSNW1kS/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________ test_enter_project_directory _________________________ hatch = config_file = helpers = temp_dir = Path('/tmp/tmpi56qsmt5') def test_enter_project_directory(hatch, config_file, helpers, temp_dir): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = 'foo' config_file.model.mode = 'project' config_file.model.project = project config_file.model.projects = {project: str(project_path)} config_file.save() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) with EnvVars({ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'python', '-c', "import pathlib,sys;pathlib.Path('test.txt').write_text(sys.executable)") /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:176: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpi56qsmt5/data/env/virtual/my-app/HBcFpIOS/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ____________________________ test_sync_dependencies ____________________________ hatch = helpers = temp_dir = Path('/tmp/tmpdu300hu7') config_file = @pytest.mark.requires_internet def test_sync_dependencies(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'default') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpdu300hu7/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:241: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________________ test_sync_project_dependencies ________________________ hatch = helpers = temp_dir = Path('/tmp/tmpo290plvo') config_file = @pytest.mark.requires_internet def test_sync_project_dependencies(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'default') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:302: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpo290plvo/data/env/virtual/my-app/vcZ8SkIp/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) __________________________ test_sync_project_features __________________________ hatch = helpers = temp_dir = Path('/tmp/tmpr6zo87hx') config_file = @pytest.mark.requires_internet def test_sync_project_features(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) config = dict(project.raw_config) config['project']['optional-dependencies'] = {'foo': []} project.save_config(config) helpers.update_project_environment(project, 'default', {'features': ['foo'], **project.config.envs['default']}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('env', 'create', 'default') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:381: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/create.py:38: in create app.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:127: in prepare_environment environment.install_project_dev_mode() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:178: in install_project_dev_mode with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpr6zo87hx/data/env/virtual/my-app/G0h-LQD3/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________________ test_dependency_hash_checking _________________________ hatch = helpers = temp_dir = Path('/tmp/tmppcir5ovd') config_file = mocker = @pytest.mark.requires_internet def test_dependency_hash_checking(hatch, helpers, temp_dir, config_file, mocker): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'default') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmppcir5ovd/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:468: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_scripts _________________________________ hatch = helpers = temp_dir = Path('/tmp/tmprl9lqu96') config_file = def test_scripts(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', {'skip-install': True, 'scripts': {'py': 'python -c {args}'}, **project.config.envs['default']}, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'py', "import pathlib,sys;pathlib.Path('test.txt').write_text(sys.executable)") /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:596: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmprl9lqu96/data/env/virtual/my-app/vlzfXg1b/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ______________________ test_scripts_specific_environment _______________________ hatch = helpers = temp_dir = Path('/tmp/tmpc8onbkfd') config_file = def test_scripts_specific_environment(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', {'skip-install': True, 'scripts': {'py': 'python -c {args}'}, **project.config.envs['default']}, ) helpers.update_project_environment(project, 'test', {'env-vars': {'foo': 'bar'}}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch( 'run', 'test:py', "import os,pathlib,sys;pathlib.Path('test.txt').write_text(" "sys.executable+os.linesep[-1]+os.environ['foo'])", ) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:654: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpc8onbkfd/data/env/virtual/my-app/4xu9bKF7/test /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) __________________________________ test_error __________________________________ hatch = helpers = temp_dir = Path('/tmp/tmpnvc6isho') config_file = def test_error(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', { 'skip-install': True, 'scripts': { 'error': [ 'python -c "import sys;sys.exit(3)"', 'python -c "import pathlib,sys;pathlib.Path(\'test.txt\').write_text(sys.executable)"', ], }, **project.config.envs['default'], }, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'error') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:767: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpnvc6isho/data/env/virtual/my-app/ZxyZIJgM/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ______________________________ test_ignore_error _______________________________ hatch = helpers = temp_dir = Path('/tmp/tmpthgy643v') config_file = def test_ignore_error(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', { 'skip-install': True, 'scripts': { 'error': [ '- python -c "import sys;sys.exit(3)"', 'python -c "import pathlib,sys;pathlib.Path(\'test.txt\').write_text(sys.executable)"', ], }, **project.config.envs['default'], }, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'error') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:813: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpthgy643v/data/env/virtual/my-app/E4yCc5-G/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________ test_command_expansion_error _________________________ hatch = helpers = temp_dir = Path('/tmp/tmpgz2thhcm') config_file = def test_command_expansion_error(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', {'skip-install': True, 'scripts': {'error': ['echo {env:FOOBAR}']}, **project.config.envs['default']}, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'error') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:872: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpgz2thhcm/data/env/virtual/my-app/bS7s8Stm/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________________________ test_verbosity ________________________________ hatch = helpers = temp_dir = Path('/tmp/tmpwnn02tu1') config_file = def test_verbosity(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', { 'skip-install': True, 'scripts': { 'write-exe': [ 'python -c "import pathlib,sys;pathlib.Path(\'{args}1.txt\').write_text(sys.executable)"', 'python -c "import pathlib,sys;pathlib.Path(\'{args}2.txt\').write_text(sys.executable)"', 'python -c "import pathlib,sys;pathlib.Path(\'{args}3.txt\').write_text(sys.executable)"', ], }, **project.config.envs['default'], }, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('-v', 'run', 'write-exe', 'test') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:919: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpwnn02tu1/data/env/virtual/my-app/LtBecBrX/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________________ test_matrix __________________________________ hatch = helpers = temp_dir = Path('/tmp/tmp8hlgcswe') config_file = def test_matrix(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'matrix': [{'version': ['9000', '42']}]}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch( 'run', 'test:python', '-c', "import os,sys;open('test.txt', 'a').write(sys.executable+os.linesep[-1])" ) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1013: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp8hlgcswe/data/env/virtual/my-app/Jkr0bnjV/test.9000 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_incompatible_matrix_partial _______________________ hatch = helpers = temp_dir = Path('/tmp/tmpwqa12l4v') config_file = def test_incompatible_matrix_partial(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment( project, 'test', { 'matrix': [{'version': ['9000', '42']}], 'overrides': {'matrix': {'version': {'platforms': [{'value': 'foo', 'if': ['9000']}]}}}, }, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch( 'run', 'test:python', '-c', "import os,sys;open('test.txt', 'a').write(sys.executable+os.linesep[-1])" ) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1159: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpwqa12l4v/data/env/virtual/my-app/_ogf5xIP/test.42 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________________ test_incompatible_missing_python _______________________ hatch = helpers = temp_dir = Path('/tmp/tmpj_i2z3s0') config_file = def test_incompatible_missing_python(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() known_version = ''.join(map(str, sys.version_info[:2])) project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'matrix': [{'python': [known_version, '9000']}]}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch( 'run', 'test:python', '-c', "import os,sys;open('test.txt', 'a').write(sys.executable+os.linesep[-1])" ) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1220: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpj_i2z3s0/data/env/virtual/my-app/cBR2eMf9/test.py312 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ______________________________ test_env_detection ______________________________ hatch = helpers = temp_dir = Path('/tmp/tmp4prwdmag') config_file = def test_env_detection(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'foo', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'foo') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: foo Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmp4prwdmag/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1306: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________________________ test_env_detection_override __________________________ hatch = helpers = temp_dir = Path('/tmp/tmpi2ujqamy') config_file = def test_env_detection_override(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'foo', {}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: default Checking dependencies """ ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): result = hatch('env', 'create', 'foo') assert result.exit_code == 0, result.output assert result.output == helpers.dedent( """ Creating environment: foo Checking dependencies """ ) env_data_path = data_path / 'env' / 'virtual' > assert env_data_path.is_dir() E AssertionError: assert False E + where False = is_dir() E + where is_dir = Path('/tmp/tmpi2ujqamy/data/env/virtual').is_dir /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1377: AssertionError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ___________________ test_matrix_variable_selection_inclusion ___________________ hatch = helpers = temp_dir = Path('/tmp/tmpcry4zhmn') config_file = def test_matrix_variable_selection_inclusion(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'matrix': [{'version': ['9000', '42']}]}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch( 'run', '+version=9000', 'test:python', '-c', "import os,sys;open('test.txt', 'a').write(sys.executable+os.linesep[-1])", ) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1605: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpcry4zhmn/data/env/virtual/my-app/Q3bYeVWR/test.9000 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ___________________ test_matrix_variable_selection_exclusion ___________________ hatch = helpers = temp_dir = Path('/tmp/tmpoq7deqk5') config_file = def test_matrix_variable_selection_exclusion(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment(project, 'test', {'matrix': [{'version': ['9000', '42']}]}) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch( 'run', '-version=9000', 'test:python', '-c', "import os,sys;open('test.txt', 'a').write(sys.executable+os.linesep[-1])", ) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1666: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpoq7deqk5/data/env/virtual/my-app/d3AmRK4g/test.42 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _________ test_matrix_variable_selection_inclusion_multiple_variables __________ hatch = helpers = temp_dir = Path('/tmp/tmp2zzybno8') config_file = def test_matrix_variable_selection_inclusion_multiple_variables(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment(project, 'default', {'skip-install': True, **project.config.envs['default']}) helpers.update_project_environment( project, 'test', {'matrix': [{'version1': ['9000', '42'], 'version2': ['3.14']}]} ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch( 'run', '+version1=9000', 'test:python', '-c', "import os,sys;open('test.txt', 'a').write(sys.executable+os.linesep[-1])", ) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1801: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp2zzybno8/data/env/virtual/my-app/6VFDm4R4/test.9000-3.14 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ______________________ test_context_formatting_recursion _______________________ hatch = helpers = temp_dir = Path('/tmp/tmpixzzv_kk') config_file = def test_context_formatting_recursion(hatch, helpers, temp_dir, config_file): config_file.model.template.plugins['default']['tests'] = False config_file.save() project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', { 'skip-install': True, 'scripts': {'py': 'python -c "{env:FOO:{env:BAR:{env:BAZ}}}"'}, **project.config.envs['default'], }, ) with project_path.as_cwd( env_vars={ ConfigEnvVars.DATA: str(data_path), 'BAZ': "import pathlib,sys;pathlib.Path('test.txt').write_text(sys.executable)", } ): > result = hatch('run', 'py') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:1874: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpixzzv_kk/data/env/virtual/my-app/_XRk77Mg/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ________________________ TestScriptRunner.test_not_file ________________________ self = hatch = helpers = temp_dir = Path('/tmp/tmptf5r0eme') @pytest.mark.requires_internet def test_not_file(self, hatch, helpers, temp_dir): project_name = 'My.App' with temp_dir.as_cwd(): result = hatch('new', project_name) assert result.exit_code == 0, result.output project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) helpers.update_project_environment( project, 'default', {'skip-install': True, 'scripts': {'script.py': 'python -c {args}'}, **project.config.envs['default']}, ) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'script.py', "import pathlib,sys;pathlib.Path('test.txt').write_text(sys.executable)") /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:2349: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:147: in run ctx.invoke( /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/env/run.py:134: in run for context in app.runner_context( /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmptf5r0eme/data/env/virtual/my-app/p3eOlaVQ/my-app /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ______________________ TestScriptRunner.test_dependencies ______________________ self = hatch = helpers = temp_dir = Path('/tmp/tmpu4f9o06m') @pytest.mark.requires_internet def test_dependencies(self, hatch, helpers, temp_dir): data_path = temp_dir / 'data' data_path.mkdir() script = (temp_dir / 'script.py').resolve() script.write_text( helpers.dedent( """ # /// script # dependencies = [ # "binary", # ] # /// import pathlib import sys import binary pathlib.Path('test.txt').write_text( f'{sys.executable}\\n{str(binary.convert_units(1024))}' ) """ ) ) with temp_dir.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'script.py') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:2408: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:115: in run for context in app.runner_context([script.id]): /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:224: in runner_context self.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:148: in prepare_environment dependencies_in_sync = environment.dependencies_in_sync() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:189: in dependencies_in_sync with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpu4f9o06m/data/env/virtual/.scripts/kXl_4EyB /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _____________ TestScriptRunner.test_dependencies_from_tool_config ______________ self = hatch = helpers = temp_dir = Path('/tmp/tmp9rj_7qun') @pytest.mark.requires_internet def test_dependencies_from_tool_config(self, hatch, helpers, temp_dir): data_path = temp_dir / 'data' data_path.mkdir() script = (temp_dir / 'script.py').resolve() script.write_text( helpers.dedent( """ # /// script # dependencies = [] # # [tool.hatch] # dependencies = [ # "binary", # ] # /// import pathlib import sys import binary pathlib.Path('test.txt').write_text( f'{sys.executable}\\n{str(binary.convert_units(1024))}' ) """ ) ) with temp_dir.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'script.py') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:2464: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:115: in run for context in app.runner_context([script.id]): /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:224: in runner_context self.prepare_environment(environment) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:148: in prepare_environment dependencies_in_sync = environment.dependencies_in_sync() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:189: in dependencies_in_sync with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp9rj_7qun/data/env/virtual/.scripts/YSYkEG3W /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______________ TestScriptRunner.test_python_version_constraint ________________ self = hatch = helpers = temp_dir = Path('/tmp/tmp3o_i8nvb') def test_python_version_constraint(self, hatch, helpers, temp_dir): data_path = temp_dir / 'data' data_path.mkdir() script = (temp_dir / 'script.py').resolve() # Cap the range at the current minor version so that the current Python # will be used and distributions don't have to be downloaded major, minor = sys.version_info[:2] minor += 1 script.write_text( helpers.dedent( f""" # /// script # requires-python = "<{major}.{minor}" # /// import pathlib import sys pathlib.Path('test.txt').write_text(sys.executable) """ ) ) with temp_dir.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'script.py') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:2544: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:115: in run for context in app.runner_context([script.id]): /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmp3o_i8nvb/data/env/virtual/.scripts/EaPFQjtW /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) _______ TestScriptRunner.test_python_version_constraint_from_tool_config _______ self = hatch = helpers = temp_dir = Path('/tmp/tmpma8unye3') def test_python_version_constraint_from_tool_config(self, hatch, helpers, temp_dir): data_path = temp_dir / 'data' data_path.mkdir() script = (temp_dir / 'script.py').resolve() # Use the current minor version so that the current Python # will be used and distributions don't have to be downloaded major, minor = sys.version_info[:2] script.write_text( helpers.dedent( f""" # /// script # requires-python = ">9000" # # [tool.hatch] # python = "{major}.{minor}" # /// import pathlib import sys pathlib.Path('test.txt').write_text(sys.executable) """ ) ) with temp_dir.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('run', 'script.py') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/run/test_run.py:2594: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:33: in new_func return f(get_current_context(), *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/run/__init__.py:115: in run for context in app.runner_context([script.id]): /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:226: in runner_context self.run_shell_commands(context) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/application.py:158: in run_shell_commands with context.env.command_context(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:223: in command_context with self.safe_activation(): /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:457: in safe_activation with self.get_env_vars(), self.expose_uv(), self: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/plugin/interface.py:977: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:135: in activate self.virtual_env.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpma8unye3/data/env/virtual/.scripts/bwN1pyF1 /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ____________________ test_no_compatibility_check_if_exists _____________________ hatch = helpers = temp_dir = Path('/tmp/tmpz4r_gz4h') mocker = @pytest.mark.requires_internet def test_no_compatibility_check_if_exists(hatch, helpers, temp_dir, mocker): project_name = 'My.App' with temp_dir.as_cwd(): hatch('new', project_name) project_path = temp_dir / 'my-app' data_path = temp_dir / 'data' data_path.mkdir() project = Project(project_path) config = dict(project.raw_config) config['build-system']['requires'].append('binary') project.save_config(config) with project_path.as_cwd(env_vars={ConfigEnvVars.DATA: str(data_path)}): > result = hatch('version') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/cli/version/test_version.py:178: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/tests/conftest.py:53: in __call__ return self.invoke(self._command, args, **kwargs) /usr/lib/python3.12/site-packages/click/testing.py:408: in invoke return_value = cli.main(args=args or (), prog_name=prog_name, **extra) /usr/lib/python3.12/site-packages/click/core.py:1078: in main rv = self.invoke(ctx) /usr/lib/python3.12/site-packages/click/core.py:1688: in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) /usr/lib/python3.12/site-packages/click/core.py:1434: in invoke return ctx.invoke(self.callback, **ctx.params) /usr/lib/python3.12/site-packages/click/core.py:783: in invoke return __callback(*args, **kwargs) /usr/lib/python3.12/site-packages/click/decorators.py:45: in new_func return f(get_current_context().obj, *args, **kwargs) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/cli/version/__init__.py:62: in version with app.status_if( /usr/lib/python3.12/contextlib.py:137: in __enter__ return next(self.gen) /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/env/virtual.py:208: in build_environment with self.get_env_vars(), self.build_virtual_env: /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:104: in __enter__ self.activate() /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:29: in activate os.environ['PATH'] = f'{self.executables_directory}{os.pathsep}{os.defpath}' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = @property def executables_directory(self): if self._executables_directory is None: exe_dir = self.directory / ('Scripts' if self.platform.windows else 'bin') if exe_dir.is_dir(): self._executables_directory = exe_dir # PyPy elif self.platform.windows: exe_dir = self.directory / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) # Debian elif (self.directory / 'local').is_dir(): # no cov exe_dir = self.directory / 'local' / 'bin' if exe_dir.is_dir(): self._executables_directory = exe_dir else: msg = f'Unable to locate executables directory within: {self.directory}' raise OSError(msg) else: msg = f'Unable to locate executables directory within: {self.directory}' > raise OSError(msg) E OSError: Unable to locate executables directory within: /tmp/tmpz4r_gz4h/data/env/virtual/my-app/69y4ZHFl/my-app-build /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/venv/core.py:91: OSError ----------------------------- Captured stderr call ----------------------------- × No interpreter found for path `/usr/bin/python` in system path ------------------------------ Captured log call ------------------------------- INFO root:builtin.py:58 find interpreter for spec PythonSpec() INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) INFO root:builtin.py:58 find interpreter for spec PythonSpec(major=3, minor=12) INFO root:builtin.py:65 proposed PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) DEBUG root:builtin.py:67 accepted PythonInfo(spec=CPython3.12.4.final.0-64, exe=/usr/bin/python, platform=linux, version='3.12.4 (main, Jun 18 2024, 22:12:28) [GCC 14.1.1 20240522]', encoding_fs_io=utf-8-utf-8) ___________________________ test_custom_source[3.7] ____________________________ platform = current_arch = 'riscv64', name = '3.7' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.7', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.7' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_custom_source[3.8] ____________________________ platform = current_arch = 'riscv64', name = '3.8' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.8', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.8' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_custom_source[3.9] ____________________________ platform = current_arch = 'riscv64', name = '3.9' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.9', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_custom_source[3.10] ___________________________ platform = current_arch = 'riscv64', name = '3.10' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_custom_source[3.11] ___________________________ platform = current_arch = 'riscv64', name = '3.11' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.11', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_custom_source[3.12] ___________________________ platform = current_arch = 'riscv64', name = '3.12' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.12', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.12' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError _________________________ test_custom_source[pypy2.7] __________________________ platform = current_arch = 'riscv64', name = 'pypy2.7' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'pypy2.7', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy2.7' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError _________________________ test_custom_source[pypy3.9] __________________________ platform = current_arch = 'riscv64', name = 'pypy3.9' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'pypy3.9', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.9' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError _________________________ test_custom_source[pypy3.10] _________________________ platform = current_arch = 'riscv64', name = 'pypy3.10' @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_custom_source(platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:17: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'pypy3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ____________________________ test_installation[3.7] ____________________________ temp_dir = Path('/tmp/tmpatbeck1g') platform = current_arch = 'riscv64', name = '3.7' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.7', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.7' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ____________________________ test_installation[3.8] ____________________________ temp_dir = Path('/tmp/tmp5hfg6fml') platform = current_arch = 'riscv64', name = '3.8' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.8', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.8' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ____________________________ test_installation[3.9] ____________________________ temp_dir = Path('/tmp/tmpjijs2b_l') platform = current_arch = 'riscv64', name = '3.9' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.9', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_installation[3.10] ____________________________ temp_dir = Path('/tmp/tmpecco1ce5') platform = current_arch = 'riscv64', name = '3.10' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_installation[3.11] ____________________________ temp_dir = Path('/tmp/tmpmaxw8hpa') platform = current_arch = 'riscv64', name = '3.11' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.11', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_installation[3.12] ____________________________ temp_dir = Path('/tmp/tmpywbfpsb8') platform = current_arch = 'riscv64', name = '3.12' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.12', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.12' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError __________________________ test_installation[pypy2.7] __________________________ temp_dir = Path('/tmp/tmpweju3wmg') platform = current_arch = 'riscv64', name = 'pypy2.7' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'pypy2.7', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy2.7' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError __________________________ test_installation[pypy3.9] __________________________ temp_dir = Path('/tmp/tmpyd7y1fil') platform = current_arch = 'riscv64', name = 'pypy3.9' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'pypy3.9', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.9' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError _________________________ test_installation[pypy3.10] __________________________ temp_dir = Path('/tmp/tmpt0db8kdx') platform = current_arch = 'riscv64', name = 'pypy3.10' @pytest.mark.requires_internet @pytest.mark.parametrize('name', ORDERED_DISTRIBUTIONS) def test_installation(temp_dir, platform, current_arch, name): if platform.name == 'macos' and current_arch == 'arm64' and name == '3.7': pytest.skip('No macOS 3.7 distribution for ARM') # Ensure the source and any parent directories get created manager = PythonManager(temp_dir / 'foo' / 'bar') > dist = manager.install(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:30: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/core.py:87: in install dist = get_distribution(identifier) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'pypy3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ____________________ TestGetInstalled.test_not_a_directory _____________________ self = temp_dir = Path('/tmp/tmp58n2qnv7') def test_not_a_directory(self, temp_dir): manager = PythonManager(temp_dir) > dist = get_distribution('3.10') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:56: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ____________________ TestGetInstalled.test_no_metadata_file ____________________ self = temp_dir = Path('/tmp/tmp29cvaakd') def test_no_metadata_file(self, temp_dir): manager = PythonManager(temp_dir) > dist = get_distribution('3.10') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:65: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError _____________________ TestGetInstalled.test_no_python_path _____________________ self = temp_dir = Path('/tmp/tmpl2hsr2s3') def test_no_python_path(self, temp_dir): manager = PythonManager(temp_dir) > dist = get_distribution('3.10') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_core.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________ TestDistributionVersions.test_cpython_standalone_custom ____________ self = def test_cpython_standalone_custom(self): name = '3.11' > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_resolve.py:40: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.11', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError __________________ TestDistributionVersions.test_pypy_custom ___________________ self = def test_pypy_custom(self): name = 'pypy3.10' > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_resolve.py:57: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'pypy3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError _____________ TestDistributionPaths.test_cpython_standalone_custom _____________ self = def test_cpython_standalone_custom(self): name = '3.11' > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_resolve.py:68: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.11', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ____________________ TestDistributionPaths.test_pypy_custom ____________________ self = def test_pypy_custom(self): name = 'pypy3.10' > dist = get_distribution(name) /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_resolve.py:74: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'pypy3.10', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.10' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_variants[linux-v1] ____________________________ platform = system = 'linux', variant = 'v1', current_arch = 'riscv64' @pytest.mark.parametrize( ('system', 'variant'), [ ('linux', 'v1'), ('linux', 'v2'), ('linux', 'v3'), ('linux', 'v4'), ], ) def test_variants(platform, system, variant, current_arch): if platform.name != system: pytest.skip(f'Skipping test for: {system}') with EnvVars({f'HATCH_PYTHON_VARIANT_{system.upper()}': variant}): > dist = get_distribution('3.11') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_resolve.py:93: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.11', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_variants[linux-v2] ____________________________ platform = system = 'linux', variant = 'v2', current_arch = 'riscv64' @pytest.mark.parametrize( ('system', 'variant'), [ ('linux', 'v1'), ('linux', 'v2'), ('linux', 'v3'), ('linux', 'v4'), ], ) def test_variants(platform, system, variant, current_arch): if platform.name != system: pytest.skip(f'Skipping test for: {system}') with EnvVars({f'HATCH_PYTHON_VARIANT_{system.upper()}': variant}): > dist = get_distribution('3.11') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_resolve.py:93: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.11', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_variants[linux-v3] ____________________________ platform = system = 'linux', variant = 'v3', current_arch = 'riscv64' @pytest.mark.parametrize( ('system', 'variant'), [ ('linux', 'v1'), ('linux', 'v2'), ('linux', 'v3'), ('linux', 'v4'), ], ) def test_variants(platform, system, variant, current_arch): if platform.name != system: pytest.skip(f'Skipping test for: {system}') with EnvVars({f'HATCH_PYTHON_VARIANT_{system.upper()}': variant}): > dist = get_distribution('3.11') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_resolve.py:93: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.11', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError ___________________________ test_variants[linux-v4] ____________________________ platform = system = 'linux', variant = 'v4', current_arch = 'riscv64' @pytest.mark.parametrize( ('system', 'variant'), [ ('linux', 'v1'), ('linux', 'v2'), ('linux', 'v3'), ('linux', 'v4'), ], ) def test_variants(platform, system, variant, current_arch): if platform.name != system: pytest.skip(f'Skipping test for: {system}') with EnvVars({f'HATCH_PYTHON_VARIANT_{system.upper()}': variant}): > dist = get_distribution('3.11') /build/python-hatch/src/hatch-hatch-v1.12.0/tests/python/test_resolve.py:93: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '3.11', source = '', variant = '' def get_distribution(name: str, source: str = '', variant: str = '') -> Distribution: if source: return _get_distribution_class(source)(name, source) if name not in DISTRIBUTIONS: message = f'Unknown distribution: {name}' raise PythonDistributionUnknownError(message) arch = platform.machine().lower() if sys.platform == 'win32': system = 'windows' abi = 'msvc' elif sys.platform == 'darwin': system = 'macos' abi = '' else: system = 'linux' abi = 'gnu' if any(platform.libc_ver()) else 'musl' if not variant: variant = _get_default_variant(name, system, arch) key = (system, arch, abi, variant) keys: dict[tuple, str] = DISTRIBUTIONS[name] if key not in keys: message = f'Could not find a default source for {name=} {system=} {arch=} {abi=} {variant=}' > raise PythonDistributionResolutionError(message) E hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' /build/python-hatch/src/hatch-hatch-v1.12.0/test_dir/usr/lib/python3.12/site-packages/hatch/python/resolve.py:195: PythonDistributionResolutionError =========================== short test summary info ============================ FAILED tests/backend/dep/test_core.py::test_no_dependencies - OSError: Unable to locate executables directory within: /tmp/tmpvd0x3bcu/dRE0 FAILED tests/backend/dep/test_core.py::test_dependency_not_found - OSError: Unable to locate executables directory within: /tmp/tmpeo4gs0s2/cDyJ FAILED tests/backend/dep/test_core.py::test_dependency_found - OSError: Unable to locate executables directory within: /tmp/tmpvmmnpup_/XXBZ FAILED tests/backend/dep/test_core.py::test_version_unmet - OSError: Unable to locate executables directory within: /tmp/tmpekmdjfiq/wckv FAILED tests/backend/dep/test_core.py::test_marker_met - OSError: Unable to locate executables directory within: /tmp/tmpg9x8c_hz/7Aus FAILED tests/backend/dep/test_core.py::test_marker_unmet - OSError: Unable to locate executables directory within: /tmp/tmpjhjd_u6z/SgLl FAILED tests/backend/dep/test_core.py::test_extra_no_dependencies - OSError: Unable to locate executables directory within: /tmp/tmpo1mnf6zd/wb6e FAILED tests/backend/dep/test_core.py::test_unknown_extra - OSError: Unable to locate executables directory within: /tmp/tmp92h177x5/K0zl FAILED tests/backend/dep/test_core.py::test_extra_unmet - OSError: Unable to locate executables directory within: /tmp/tmpoiokyhek/AVFd FAILED tests/backend/dep/test_core.py::test_extra_met - OSError: Unable to locate executables directory within: /tmp/tmpv9i0nkyd/ruup FAILED tests/backend/dep/test_core.py::test_dependency_git_uv - OSError: Unable to locate executables directory within: /tmp/tmpq88dkz03/tXB4 FAILED tests/backend/dep/test_core.py::test_dependency_git_revision_uv - OSError: Unable to locate executables directory within: /tmp/tmpoartzd6b/slU0 FAILED tests/backend/dep/test_core.py::test_dependency_git_commit - OSError: Unable to locate executables directory within: /tmp/tmp0lzcu5rl/d-Tr FAILED tests/cli/build/test_build.py::TestOtherBackend::test_standard - OSError: Unable to locate executables directory within: /tmp/tmp7xwufqwy/data/env/.internal/hatch-build/my-app/7SViaki0/hatch-build FAILED tests/cli/build/test_build.py::TestOtherBackend::test_legacy - OSError: Unable to locate executables directory within: /tmp/tmpssfsbirk/data/env/.internal/hatch-build/tmp/pSNWbNcd/hatch-build FAILED tests/cli/build/test_build.py::test_no_compatibility_check_if_exists - OSError: Unable to locate executables directory within: /tmp/tmp48zk2erv/data/env/virtual/my-app/oUJ__fxu/my-app-build FAILED tests/cli/env/test_create.py::test_new - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpxbhirasy/data/env/virtual').is_dir FAILED tests/cli/env/test_create.py::test_uv_shipped - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpnh_hm7t8/data/env/virtual').is_dir FAILED tests/cli/env/test_create.py::test_uv_env - OSError: Unable to locate executables directory within: /tmp/tmpgwib3sqg/data/env/virtual/my-app/kWhLgsv7/hatch-uv FAILED tests/cli/env/test_create.py::test_selected_absolute_directory - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpxhpvfu91/.venvs').is_dir FAILED tests/cli/env/test_create.py::test_option_absolute_directory - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpti6tiu_a/foo').is_dir FAILED tests/cli/env/test_create.py::test_env_var_absolute_directory - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpdvjinu2s/foo').is_dir FAILED tests/cli/env/test_create.py::test_selected_local_directory - AssertionError: assert 1 == 4 + where 1 = len([Path('/tmp/tmp3dzqx_fi/my-app/.hatch/.gitignore')]) FAILED tests/cli/env/test_create.py::test_option_local_directory - AssertionError: assert False + where False = is_dir() + where is_dir = (Path('/tmp/tmpi6pcekov/my-app') / '.venv').is_dir FAILED tests/cli/env/test_create.py::test_env_var_local_directory - AssertionError: assert False + where False = is_dir() + where is_dir = (Path('/tmp/tmpc84gjqen/my-app') / '.venv').is_dir FAILED tests/cli/env/test_create.py::test_enter_project_directory - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpx7hz3mc3/data/env/virtual').is_dir FAILED tests/cli/env/test_create.py::test_already_created - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmp_5id1h1t/data/env/virtual').is_dir FAILED tests/cli/env/test_create.py::test_default - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpbo_9uf0u/data/env/virtual').is_dir FAILED tests/cli/env/test_create.py::test_matrix - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpjsgserh_/data/env/virtual').is_dir FAILED tests/cli/env/test_create.py::test_incompatible_matrix_partial - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpq1qr8s_s/data/env/virtual').is_dir FAILED tests/cli/env/test_create.py::test_install_project_default_dev_mode - OSError: Unable to locate executables directory within: /tmp/tmppk9eijt2/data/env/virtual/my-app/C6Uadw2W/test FAILED tests/cli/env/test_create.py::test_install_project_no_dev_mode - OSError: Unable to locate executables directory within: /tmp/tmp5036xf9x/data/env/virtual/my-app/7jACI3xS/test FAILED tests/cli/env/test_create.py::test_pre_install_commands - OSError: Unable to locate executables directory within: /tmp/tmpc2hmegrd/data/env/virtual/my-app/vr7Y4F6u/test FAILED tests/cli/env/test_create.py::test_pre_install_commands_error - OSError: Unable to locate executables directory within: /tmp/tmpckvssn2x/data/env/virtual/my-app/u4oYp2zp/test FAILED tests/cli/env/test_create.py::test_post_install_commands - OSError: Unable to locate executables directory within: /tmp/tmpymdnim0p/data/env/virtual/my-app/v0pC7o-w/test FAILED tests/cli/env/test_create.py::test_post_install_commands_error - OSError: Unable to locate executables directory within: /tmp/tmph_2xs50a/data/env/virtual/my-app/jHuMnN4i/test FAILED tests/cli/env/test_create.py::test_sync_dependencies_uv - OSError: Unable to locate executables directory within: /tmp/tmp152wedo9/data/env/virtual/my-app/dfjzsi1V/test FAILED tests/cli/env/test_create.py::test_features - OSError: Unable to locate executables directory within: /tmp/tmp1vx4sq_6/data/env/virtual/my-app/SKSjjctp/test FAILED tests/cli/env/test_create.py::test_sync_dynamic_dependencies - OSError: Unable to locate executables directory within: /tmp/tmpjc8429ii/data/env/virtual/my-app/HO52uwbL/test FAILED tests/cli/env/test_create.py::test_unknown_dynamic_feature - OSError: Unable to locate executables directory within: /tmp/tmp0skm781v/data/env/virtual/my-app/_trJ3Fl3/test FAILED tests/cli/env/test_create.py::test_no_project_file - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpbrbi_dgx/data/env/virtual').is_dir FAILED tests/cli/env/test_create.py::test_no_compatible_python_ok_if_not_installed - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmp1me74aqb/data/env/virtual').is_dir FAILED tests/cli/env/test_find.py::test_single - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpijouuc4v/data/env/virtual').is_dir FAILED tests/cli/env/test_find.py::test_matrix - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpf0kvgpf7/data/env/virtual').is_dir FAILED tests/cli/env/test_prune.py::test_all - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmp6bysh83u/data/env/virtual').is_dir FAILED tests/cli/env/test_remove.py::test_single - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmphl9e9xa9/data/env/virtual').is_dir FAILED tests/cli/env/test_remove.py::test_all - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmph8azxgdg/data/env/virtual').is_dir FAILED tests/cli/env/test_remove.py::test_matrix_all - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpzkho_20_/data/env/virtual').is_dir FAILED tests/cli/env/test_remove.py::test_matrix_all_local_directory - AssertionError: assert 1 == 3 + where 1 = len([Path('/tmp/tmp48kzwzhv/my-app/.hatch/.gitignore')]) FAILED tests/cli/env/test_remove.py::test_active_override - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmp0xowng__/data/env/virtual').is_dir FAILED tests/cli/env/test_run.py::test_filter - OSError: Unable to locate executables directory within: /tmp/tmp1ogu2qi4/data/env/virtual/my-app/mFS0z30t/test.42 FAILED tests/cli/env/test_run.py::test_force_continue - OSError: Unable to locate executables directory within: /tmp/tmp9u2j8ujs/data/env/virtual/my-app/UBwOEBJ0/my-app FAILED tests/cli/project/test_metadata.py::TestBuildDependenciesMissing::test_no_compatibility_check_if_exists - OSError: Unable to locate executables directory within: /tmp/tmp6njn9cov/data/env/virtual/my-app/dPIH7cnj/my-app-build FAILED tests/cli/python/test_install.py::test_installation - IndexError: Cannot choose from an empty sequence FAILED tests/cli/python/test_install.py::test_all - AssertionError: Incompatible distributions: 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, pypy2.7, pypy3.9, pypy3.10 assert 1 == 0 + where 1 = .exit_code FAILED tests/cli/python/test_remove.py::test_basic - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/cli/python/test_remove.py::test_all - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/cli/python/test_show.py::test_nothing_installed - AssertionError: assert '' == ' Available \n+------+---------+\n| Name | Version |\n+======+=========+\n+------+---------+\n' - Available - +------+---------+ - | Name | Version | - +======+=========+ - +------+---------+ FAILED tests/cli/python/test_show.py::test_all_installed - AssertionError: assert '' == ' Installed \n+------+---------+\n| Name | Version |\n+======+=========+\n+------+---------+\n' - Installed - +------+---------+ - | Name | Version | - +======+=========+ - +------+---------+ FAILED tests/cli/python/test_update.py::test_all - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/cli/run/test_run.py::test_automatic_creation - OSError: Unable to locate executables directory within: /tmp/tmpovbkaxww/data/env/virtual/my-app/Vr7fHwLi/my-app FAILED tests/cli/run/test_run.py::test_no_compatibility_check_if_exists - OSError: Unable to locate executables directory within: /tmp/tmp61wubc8g/data/env/virtual/my-app/lZSNW1kS/my-app FAILED tests/cli/run/test_run.py::test_enter_project_directory - OSError: Unable to locate executables directory within: /tmp/tmpi56qsmt5/data/env/virtual/my-app/HBcFpIOS/my-app FAILED tests/cli/run/test_run.py::test_sync_dependencies - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpdu300hu7/data/env/virtual').is_dir FAILED tests/cli/run/test_run.py::test_sync_project_dependencies - OSError: Unable to locate executables directory within: /tmp/tmpo290plvo/data/env/virtual/my-app/vcZ8SkIp/my-app FAILED tests/cli/run/test_run.py::test_sync_project_features - OSError: Unable to locate executables directory within: /tmp/tmpr6zo87hx/data/env/virtual/my-app/G0h-LQD3/my-app FAILED tests/cli/run/test_run.py::test_dependency_hash_checking - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmppcir5ovd/data/env/virtual').is_dir FAILED tests/cli/run/test_run.py::test_scripts - OSError: Unable to locate executables directory within: /tmp/tmprl9lqu96/data/env/virtual/my-app/vlzfXg1b/my-app FAILED tests/cli/run/test_run.py::test_scripts_specific_environment - OSError: Unable to locate executables directory within: /tmp/tmpc8onbkfd/data/env/virtual/my-app/4xu9bKF7/test FAILED tests/cli/run/test_run.py::test_error - OSError: Unable to locate executables directory within: /tmp/tmpnvc6isho/data/env/virtual/my-app/ZxyZIJgM/my-app FAILED tests/cli/run/test_run.py::test_ignore_error - OSError: Unable to locate executables directory within: /tmp/tmpthgy643v/data/env/virtual/my-app/E4yCc5-G/my-app FAILED tests/cli/run/test_run.py::test_command_expansion_error - OSError: Unable to locate executables directory within: /tmp/tmpgz2thhcm/data/env/virtual/my-app/bS7s8Stm/my-app FAILED tests/cli/run/test_run.py::test_verbosity - OSError: Unable to locate executables directory within: /tmp/tmpwnn02tu1/data/env/virtual/my-app/LtBecBrX/my-app FAILED tests/cli/run/test_run.py::test_matrix - OSError: Unable to locate executables directory within: /tmp/tmp8hlgcswe/data/env/virtual/my-app/Jkr0bnjV/test.9000 FAILED tests/cli/run/test_run.py::test_incompatible_matrix_partial - OSError: Unable to locate executables directory within: /tmp/tmpwqa12l4v/data/env/virtual/my-app/_ogf5xIP/test.42 FAILED tests/cli/run/test_run.py::test_incompatible_missing_python - OSError: Unable to locate executables directory within: /tmp/tmpj_i2z3s0/data/env/virtual/my-app/cBR2eMf9/test.py312 FAILED tests/cli/run/test_run.py::test_env_detection - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmp4prwdmag/data/env/virtual').is_dir FAILED tests/cli/run/test_run.py::test_env_detection_override - AssertionError: assert False + where False = is_dir() + where is_dir = Path('/tmp/tmpi2ujqamy/data/env/virtual').is_dir FAILED tests/cli/run/test_run.py::test_matrix_variable_selection_inclusion - OSError: Unable to locate executables directory within: /tmp/tmpcry4zhmn/data/env/virtual/my-app/Q3bYeVWR/test.9000 FAILED tests/cli/run/test_run.py::test_matrix_variable_selection_exclusion - OSError: Unable to locate executables directory within: /tmp/tmpoq7deqk5/data/env/virtual/my-app/d3AmRK4g/test.42 FAILED tests/cli/run/test_run.py::test_matrix_variable_selection_inclusion_multiple_variables - OSError: Unable to locate executables directory within: /tmp/tmp2zzybno8/data/env/virtual/my-app/6VFDm4R4/test.9000-3.14 FAILED tests/cli/run/test_run.py::test_context_formatting_recursion - OSError: Unable to locate executables directory within: /tmp/tmpixzzv_kk/data/env/virtual/my-app/_XRk77Mg/my-app FAILED tests/cli/run/test_run.py::TestScriptRunner::test_not_file - OSError: Unable to locate executables directory within: /tmp/tmptf5r0eme/data/env/virtual/my-app/p3eOlaVQ/my-app FAILED tests/cli/run/test_run.py::TestScriptRunner::test_dependencies - OSError: Unable to locate executables directory within: /tmp/tmpu4f9o06m/data/env/virtual/.scripts/kXl_4EyB FAILED tests/cli/run/test_run.py::TestScriptRunner::test_dependencies_from_tool_config - OSError: Unable to locate executables directory within: /tmp/tmp9rj_7qun/data/env/virtual/.scripts/YSYkEG3W FAILED tests/cli/run/test_run.py::TestScriptRunner::test_python_version_constraint - OSError: Unable to locate executables directory within: /tmp/tmp3o_i8nvb/data/env/virtual/.scripts/EaPFQjtW FAILED tests/cli/run/test_run.py::TestScriptRunner::test_python_version_constraint_from_tool_config - OSError: Unable to locate executables directory within: /tmp/tmpma8unye3/data/env/virtual/.scripts/bwN1pyF1 FAILED tests/cli/version/test_version.py::test_no_compatibility_check_if_exists - OSError: Unable to locate executables directory within: /tmp/tmpz4r_gz4h/data/env/virtual/my-app/69y4ZHFl/my-app-build FAILED tests/python/test_core.py::test_custom_source[3.7] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.7' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_custom_source[3.8] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.8' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_custom_source[3.9] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_custom_source[3.10] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_custom_source[3.11] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_custom_source[3.12] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.12' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_custom_source[pypy2.7] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy2.7' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_custom_source[pypy3.9] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.9' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_custom_source[pypy3.10] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[3.7] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.7' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[3.8] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.8' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[3.9] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.9' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[3.10] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[3.11] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[3.12] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.12' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[pypy2.7] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy2.7' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[pypy3.9] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.9' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::test_installation[pypy3.10] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::TestGetInstalled::test_not_a_directory - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::TestGetInstalled::test_no_metadata_file - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_core.py::TestGetInstalled::test_no_python_path - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_resolve.py::TestDistributionVersions::test_cpython_standalone_custom - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_resolve.py::TestDistributionVersions::test_pypy_custom - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_resolve.py::TestDistributionPaths::test_cpython_standalone_custom - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_resolve.py::TestDistributionPaths::test_pypy_custom - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='pypy3.10' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_resolve.py::test_variants[linux-v1] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_resolve.py::test_variants[linux-v2] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_resolve.py::test_variants[linux-v3] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' FAILED tests/python/test_resolve.py::test_variants[linux-v4] - hatch.errors.PythonDistributionResolutionError: Could not find a default source for name='3.11' system='linux' arch='riscv64' abi='gnu' variant='' ERROR tests/cli/python/test_find.py::test_binary - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_find.py::test_parent - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_incompatible_single - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_already_installed_latest - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_already_installed_update_disabled - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_already_installed_update_prompt - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_already_installed_update_flag - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_already_in_path[in_current_path] - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_already_in_path[in_new_path] - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_private - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_install.py::test_specific_location - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_remove.py::test_specific_location - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_show.py::test_some_installed - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_show.py::test_specific_location - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_show.py::test_outdated - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_update.py::test_basic - IndexError: Cannot choose from an empty sequence ERROR tests/cli/python/test_update.py::test_specific_location - IndexError: Cannot choose from an empty sequence ERROR tests/cli/run/test_run.py::test_install_python_specific - IndexError: list index out of range ERROR tests/cli/run/test_run.py::test_update_python_specific - IndexError: list index out of range ERROR tests/cli/run/test_run.py::test_install_python_max_compatible - IndexError: list index out of range ERROR tests/cli/run/test_run.py::test_update_python_max_compatible - IndexError: list index out of range ERROR tests/cli/run/test_run.py::test_python_installation_with_metadata_hook - IndexError: list index out of range = 117 failed, 1786 passed, 47 skipped, 105 deselected, 22 errors in 480.59s (0:08:00) = ==> ERROR: A failure occurred in check().  Aborting... ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/felix16/build [?25h[?25hreceiving incremental file list python-hatch-1.12.0-2-riscv64-build.log python-hatch-1.12.0-2-riscv64-check.log sent 62 bytes received 39,634 bytes 11,341.71 bytes/sec total size is 721,997 speedup is 18.19