py$(PYV): commands[0]> python -m pytest --junitxml $(@D)/.tox/junit.py$(PYV).xml tests ============================= test session starts ============================== platform sunos5 -- Python $(PYTHON_VERSION).X -- $(@D)/.tox/py$(PYV)/bin/python cachedir: .tox/py$(PYV)/.pytest_cache rootdir: $(@D) configfile: pyproject.toml collecting ... collected 507 items tests/py_info/test_py_info.py::test_current_as_json PASSED tests/py_info/test_py_info.py::test_bad_exe_py_info_raise PASSED tests/py_info/test_py_info.py::test_bad_exe_py_info_no_raise PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[$(@D)/.tox/py$(PYV)/bin/python] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[CPython3] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[CPython3-64] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[CPython3.14] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[CPython3.14-64] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[CPython3.14.4] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[CPython3.14.4-64] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[python3] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[python3-64] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[python3.14] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[python3.14-64] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[python3.14.4] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[python3.14.4-64] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[cpython3] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[cpython3-64] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[cpython3.14] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[cpython3.14-64] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[cpython3.14.4] PASSED tests/py_info/test_py_info.py::test_satisfy_py_info[cpython3.14.4-64] PASSED tests/py_info/test_py_info.py::test_satisfy_not_arch PASSED tests/py_info/test_py_info.py::test_satisfy_not_threaded PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[2] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[4] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[2.14] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[4.14] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[3.13] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[3.15] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[2.14.4] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[4.14.4] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[3.13.4] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[3.15.4] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[3.14.3] PASSED tests/py_info/test_py_info.py::test_satisfy_not_version[3.14.5] PASSED tests/py_info/test_py_info.py::test_py_info_cached_error PASSED tests/py_info/test_py_info.py::test_py_info_cache_clear PASSED tests/py_info/test_py_info.py::test_system_executable_no_exact_match[target0-0-discovered0] PASSED tests/py_info/test_py_info.py::test_system_executable_no_exact_match[target1-0-discovered1] PASSED tests/py_info/test_py_info.py::test_system_executable_no_exact_match[target2-0-discovered2] PASSED tests/py_info/test_py_info.py::test_py_info_ignores_distutils_config PASSED tests/py_info/test_py_info.py::test_discover_exe_on_path_non_spec_name_match PASSED tests/py_info/test_py_info.py::test_discover_exe_on_path_non_spec_name_not_match PASSED tests/py_info/test_py_info.py::test_py_info_setuptools PASSED tests/py_info/test_py_info.py::test_py_info_to_system_raises SKIPPED tests/py_info/test_py_info.py::test_sysconfig_vars_include_shared_lib_keys PASSED tests/py_info/test_py_info.py::test_py_info_has_sysconfig_platform PASSED tests/py_info/test_py_info.py::test_py_info_machine_property PASSED tests/py_info/test_py_info.py::test_py_info_machine_in_spec PASSED tests/py_info/test_py_info.py::test_py_info_sysconfig_platform_matches_sysconfig PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[win32] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[win-amd64] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[win-arm64] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[linux-x86_64] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[linux-aarch64] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[linux-riscv64] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[linux-ppc64le] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[linux-s390x] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[macos-arm64] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation[macos-x86_64] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation_universal2[arm64] PASSED tests/py_info/test_py_info.py::test_py_info_machine_derivation_universal2[x86_64] PASSED tests/py_info/test_py_info.py::test_py_info_satisfies_with_machine PASSED tests/py_info/test_py_info.py::test_py_info_satisfies_not_machine PASSED tests/py_info/test_py_info.py::test_py_info_satisfies_no_machine_in_spec PASSED tests/py_info/test_py_info.py::test_py_info_satisfies_machine_cross_os_normalization[amd64-matches-x86_64] PASSED tests/py_info/test_py_info.py::test_py_info_satisfies_machine_cross_os_normalization[aarch64-matches-arm64] PASSED tests/py_info/test_py_info.py::test_py_info_debug_build_in_spec[debug] PASSED tests/py_info/test_py_info.py::test_py_info_debug_build_in_spec[release] PASSED tests/py_info/test_py_info.py::test_py_info_debug_build_exe_names[debug] PASSED tests/py_info/test_py_info.py::test_py_info_debug_build_exe_names[release] PASSED tests/py_info/test_py_info.py::test_py_info_debug_build_json_round_trip PASSED tests/py_info/test_py_info.py::test_py_info_to_dict_includes_sysconfig_platform PASSED tests/py_info/test_py_info.py::test_py_info_json_round_trip PASSED tests/py_info/test_py_info.py::test_select_most_likely_prefers_machine_match[x86_64-over-aarch64] PASSED tests/py_info/test_py_info.py::test_select_most_likely_prefers_machine_match[arm64-over-x86_64] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_empty_folder PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[CPython-3.14.4-64-.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[CPython-3.14.4--.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[CPython-3.14-64-.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[CPython-3.14--.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[CPython-3-64-.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[CPython-3--.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3.14.4-64-.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3.14.4--.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3.14-64-.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3.14--.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3-64-.-] PASSED tests/py_info/test_py_info_exe_based_of.py::test_discover_ok[python-3--.-] PASSED tests/test_cache.py::test_disk_content_store_read_valid_json PASSED tests/test_cache.py::test_disk_content_store_read_invalid_json PASSED tests/test_cache.py::test_disk_content_store_read_missing_file PASSED tests/test_cache.py::test_disk_content_store_remove PASSED tests/test_cache.py::test_disk_content_store_remove_missing_file PASSED tests/test_cache.py::test_disk_content_store_locked PASSED tests/test_cache.py::test_disk_content_store_exists PASSED tests/test_cache.py::test_disk_cache_py_info PASSED tests/test_cache.py::test_disk_cache_py_info_clear PASSED tests/test_cache.py::test_disk_cache_py_info_clear_empty PASSED tests/test_cache.py::test_disk_cache_py_info_clear_skips_non_json PASSED tests/test_cache.py::test_noop_content_store_exists PASSED tests/test_cache.py::test_noop_content_store_read PASSED tests/test_cache.py::test_noop_content_store_write PASSED tests/test_cache.py::test_noop_content_store_remove PASSED tests/test_cache.py::test_noop_content_store_locked PASSED tests/test_cache.py::test_noop_cache_py_info PASSED tests/test_cache.py::test_noop_cache_py_info_clear PASSED tests/test_cached_py_info.py::test_gen_cookie_length PASSED tests/test_cached_py_info.py::test_log_cmd_repr PASSED tests/test_cached_py_info.py::test_log_cmd_repr_with_env PASSED tests/test_cached_py_info.py::test_resolve_py_info_script_file_exists PASSED tests/test_cached_py_info.py::test_resolve_py_info_script_fallback_to_pkgutil PASSED tests/test_cached_py_info.py::test_resolve_py_info_script_pkgutil_returns_none PASSED tests/test_cached_py_info.py::test_run_subprocess_success PASSED tests/test_cached_py_info.py::test_run_subprocess_bad_exe PASSED tests/test_cached_py_info.py::test_run_subprocess_invalid_json PASSED tests/test_cached_py_info.py::test_run_subprocess_with_cookies PASSED tests/test_cached_py_info.py::test_run_subprocess_timeout PASSED tests/test_cached_py_info.py::test_run_subprocess_custom_timeout PASSED tests/test_cached_py_info.py::test_run_subprocess_nonzero_exit PASSED tests/test_cached_py_info.py::test_load_cached_py_info_valid PASSED tests/test_cached_py_info.py::test_load_cached_py_info_bad_data PASSED tests/test_cached_py_info.py::test_load_cached_py_info_system_exe_missing PASSED tests/test_cached_py_info.py::test_get_via_file_cache_uses_cached PASSED tests/test_cached_py_info.py::test_get_via_file_cache_stale_hash PASSED tests/test_cached_py_info.py::test_get_via_file_cache_nonexistent_path PASSED tests/test_cached_py_info.py::test_from_exe_retry_on_first_failure PASSED tests/test_cached_py_info.py::test_get_via_file_cache_hash_oserror PASSED tests/test_cached_py_info.py::test_get_via_file_cache_py_info_none PASSED tests/test_discovery.py::test_discovery_via_path[more-mixed] PASSED tests/test_discovery.py::test_discovery_via_path[more-lower] PASSED tests/test_discovery.py::test_discovery_via_path[more-upper] PASSED tests/test_discovery.py::test_discovery_via_path[less-mixed] PASSED tests/test_discovery.py::test_discovery_via_path[less-lower] PASSED tests/test_discovery.py::test_discovery_via_path[less-upper] PASSED tests/test_discovery.py::test_discovery_via_path[none-mixed] PASSED tests/test_discovery.py::test_discovery_via_path[none-lower] PASSED tests/test_discovery.py::test_discovery_via_path[none-upper] PASSED tests/test_discovery.py::test_discovery_via_path_not_found PASSED tests/test_discovery.py::test_discovery_via_path_in_nonbrowseable_directory PASSED tests/test_discovery.py::test_relative_path PASSED tests/test_discovery.py::test_uv_python PASSED tests/test_discovery.py::test_discovery_fallback_fail PASSED tests/test_discovery.py::test_discovery_fallback_ok PASSED tests/test_discovery.py::test_returns_first_python_specified PASSED tests/test_discovery.py::test_discovery_absolute_path_with_try_first PASSED tests/test_discovery.py::test_discovery_via_path_with_file PASSED tests/test_discovery.py::test_get_paths_no_path_env PASSED tests/test_discovery.py::test_lazy_path_dump_debug PASSED tests/test_discovery.py::test_discovery_via_version_specifier PASSED tests/test_discovery.py::test_shim_resolved_to_real_binary[pyenv] PASSED tests/test_discovery.py::test_shim_resolved_to_real_binary[mise] PASSED tests/test_discovery.py::test_shim_resolved_to_real_binary[asdf] PASSED tests/test_discovery.py::test_shim_not_resolved_without_version_manager_env PASSED tests/test_discovery.py::test_shim_falls_through_when_binary_missing PASSED tests/test_discovery.py::test_shim_uses_python_version_file PASSED tests/test_discovery.py::test_shim_pyenv_version_env_takes_priority_over_file PASSED tests/test_discovery.py::test_shim_uses_global_version_file PASSED tests/test_discovery.py::test_shim_colon_separated_pyenv_version_picks_first_match PASSED tests/test_discovery.py::test_predicate_filters_interpreters PASSED tests/test_discovery.py::test_predicate_accepts_interpreter PASSED tests/test_discovery.py::test_predicate_none_is_noop PASSED tests/test_discovery.py::test_predicate_with_fallback_specs PASSED tests/test_discovery_extra.py::test_propose_interpreters_abs_path_oserror PASSED tests/test_discovery_extra.py::test_propose_interpreters_try_first_with_valid PASSED tests/test_discovery_extra.py::test_propose_interpreters_try_first_with_missing PASSED tests/test_discovery_extra.py::test_propose_interpreters_try_first_with_duplicate PASSED tests/test_discovery_extra.py::test_propose_interpreters_relative_path PASSED tests/test_discovery_extra.py::test_lazy_path_dump_basic PASSED tests/test_discovery_extra.py::test_lazy_path_dump_debug_with_dir PASSED tests/test_discovery_extra.py::test_lazy_path_dump_debug_non_executable PASSED tests/test_discovery_extra.py::test_lazy_path_dump_debug_oserror PASSED tests/test_discovery_extra.py::test_active_versions_pyenv_version PASSED tests/test_discovery_extra.py::test_active_versions_python_version_file PASSED tests/test_discovery_extra.py::test_active_versions_global_version_file PASSED tests/test_discovery_extra.py::test_active_versions_no_source PASSED tests/test_discovery_extra.py::test_read_python_version_file_found PASSED tests/test_discovery_extra.py::test_read_python_version_file_not_found PASSED tests/test_discovery_extra.py::test_read_python_version_file_search_parents PASSED tests/test_discovery_extra.py::test_read_python_version_file_direct_path PASSED tests/test_discovery_extra.py::test_resolve_shim_no_match PASSED tests/test_discovery_extra.py::test_path_exe_finder_returns_callable PASSED tests/test_discovery_extra.py::test_get_paths_no_path_env PASSED tests/test_discovery_extra.py::test_propose_interpreters_abs_path_exists PASSED tests/test_discovery_extra.py::test_propose_interpreters_relative_spec_is_abs PASSED tests/test_discovery_extra.py::test_resolve_shim_match_no_binary PASSED tests/test_discovery_extra.py::test_resolve_shim_dir_no_match PASSED tests/test_discovery_extra.py::test_read_python_version_file_reaches_root PASSED tests/test_discovery_extra.py::test_read_python_version_file_empty_versions PASSED tests/test_discovery_extra.py::test_get_interpreter_multi_spec_all_fail PASSED tests/test_discovery_extra.py::test_get_interpreter_multi_spec_fallback PASSED tests/test_iter_interpreters.py::test_iter_interpreters_returns_iterator PASSED tests/test_iter_interpreters.py::test_iter_interpreters_with_abs_path_yields_one PASSED tests/test_iter_interpreters.py::test_iter_interpreters_sequence_dedups_across_keys PASSED tests/test_iter_interpreters.py::test_iter_interpreters_predicate[none-is-noop] PASSED tests/test_iter_interpreters.py::test_iter_interpreters_predicate[accepts-all] PASSED tests/test_iter_interpreters.py::test_iter_interpreters_predicate[rejects-all] PASSED tests/test_iter_interpreters.py::test_iter_interpreters_filters_to_empty[filename-cannot-match] PASSED tests/test_iter_interpreters.py::test_iter_interpreters_filters_to_empty[version-cannot-match] PASSED tests/test_iter_interpreters.py::test_iter_interpreters_no_key_includes_running_interpreter PASSED tests/test_iter_interpreters.py::test_iter_interpreters_dedups_symlinks PASSED tests/test_iter_interpreters.py::test_iter_interpreters_try_first_with_yields_first PASSED tests/test_iter_interpreters.py::test_iter_interpreters_skips_none_from_propose PASSED tests/test_iter_interpreters.py::test_iter_interpreters_skips_when_no_executable PASSED tests/test_iter_interpreters.py::test_iter_interpreters_uv_yields_when_interrogation_succeeds PASSED tests/test_iter_interpreters.py::test_iter_interpreters_uv_layout[pypy-unix-with-python-symlink] PASSED tests/test_iter_interpreters.py::test_iter_interpreters_uv_layout[graalpy-unix] PASSED tests/test_iter_interpreters.py::test_iter_interpreters_uv_layout[windows-all-impls] PASSED tests/test_py_info_extra.py::test_py_info_pypy_version PASSED tests/test_py_info_extra.py::test_py_info_canonicalizes_graalvm PASSED tests/test_py_info_extra.py::test_has_venv_attribute PASSED tests/test_py_info_extra.py::test_tcl_tk_libs_with_env PASSED tests/test_py_info_extra.py::test_get_tcl_tk_libs_returns_tuple PASSED tests/test_py_info_extra.py::test_get_tcl_tk_libs_tcl_error PASSED tests/test_py_info_extra.py::test_fast_get_system_executable_not_venv PASSED tests/test_py_info_extra.py::test_fast_get_system_executable_real_prefix PASSED tests/test_py_info_extra.py::test_fast_get_system_executable_no_base_executable PASSED tests/test_py_info_extra.py::test_fast_get_system_executable_same_as_current PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink_not_posix PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink[regular-file] PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink[broken-symlink] PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink[absolute-symlink] PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink[relative-chain] PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink[tree-preserved] PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink[normpath-mismatch] PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink_framework_kept PASSED tests/test_py_info_extra.py::test_resolve_executable_symlink_stdlib_landmark_kept PASSED tests/test_py_info_extra.py::test_from_exe_resolves_executable_only_symlink PASSED tests/test_py_info_extra.py::test_try_posix_fallback_not_posix PASSED tests/test_py_info_extra.py::test_try_posix_fallback_old_python PASSED tests/test_py_info_extra.py::test_try_posix_fallback_finds_versioned PASSED tests/test_py_info_extra.py::test_try_posix_fallback_pypy PASSED tests/test_py_info_extra.py::test_try_posix_fallback_not_found PASSED tests/test_py_info_extra.py::test_version_str PASSED tests/test_py_info_extra.py::test_version_release_str PASSED tests/test_py_info_extra.py::test_python_name PASSED tests/test_py_info_extra.py::test_is_old_virtualenv PASSED tests/test_py_info_extra.py::test_is_venv PASSED tests/test_py_info_extra.py::test_system_prefix PASSED tests/test_py_info_extra.py::test_system_exec_prefix PASSED tests/test_py_info_extra.py::test_repr PASSED tests/test_py_info_extra.py::test_str PASSED tests/test_py_info_extra.py::test_machine_none_platform PASSED tests/test_py_info_extra.py::test_from_json_round_trip PASSED tests/test_py_info_extra.py::test_from_dict PASSED tests/test_py_info_extra.py::test_resolve_to_system_circle PASSED tests/test_py_info_extra.py::test_resolve_to_system_single_prefix_self_link PASSED tests/test_py_info_extra.py::test_discover_exe_cache_hit PASSED tests/test_py_info_extra.py::test_check_exe_none_path PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_fails PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[alpha_match_exact] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[beta_match_exact] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[rc_match_exact] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[prerelease_match_major_minor] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[prerelease_not_match_full_precision] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[earlier_prerelease_less_than] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[prerelease_not_less_than_itself] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[prerelease_match_itself] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[prerelease_not_match_later] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[final_greater_than_prerelease] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[final_not_less_than_prerelease] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[final_match_major_minor] PASSED tests/test_py_info_extra.py::test_satisfies_version_specifier_prerelease[later_micro_prerelease_match] PASSED tests/test_py_info_extra.py::test_satisfies_path_not_abs_basename_match PASSED tests/test_py_info_extra.py::test_satisfies_path_not_abs_basename_no_match PASSED tests/test_py_info_extra.py::test_satisfies_path_win32 PASSED tests/test_py_info_extra.py::test_distutils_install PASSED tests/test_py_info_extra.py::test_install_path PASSED tests/test_py_info_extra.py::test_system_include PASSED tests/test_py_info_extra.py::test_system_include_fallback PASSED tests/test_py_info_extra.py::test_sysconfig_path_missing_key PASSED tests/test_py_info_extra.py::test_sysconfig_path_with_config_var PASSED tests/test_py_info_extra.py::test_current_system_cached PASSED tests/test_py_info_extra.py::test_current_cached PASSED tests/test_py_info_extra.py::test_from_exe_resolve_error PASSED tests/test_py_info_extra.py::test_sysconfig_path_no_config_var PASSED tests/test_py_info_extra.py::test_satisfies_abs_spec_path_falls_through PASSED tests/test_py_info_extra.py::test_satisfies_abs_spec_path_match PASSED tests/test_py_info_extra.py::test_current_returns_none_raises PASSED tests/test_py_info_extra.py::test_current_system_returns_none_raises PASSED tests/test_py_info_extra.py::test_check_exe_from_exe_returns_none PASSED tests/test_py_info_extra.py::test_check_exe_mismatch_not_exact PASSED tests/test_py_info_extra.py::test_check_exe_mismatch_exact PASSED tests/test_py_info_extra.py::test_find_possible_exe_names_free_threaded PASSED tests/test_py_info_extra.py::test_possible_base_python_basename PASSED tests/test_py_info_extra.py::test_possible_base_case_sensitive PASSED tests/test_py_info_extra.py::test_possible_base_case_sensitive_upper_equals_base PASSED tests/test_py_info_extra.py::test_resolve_to_system_resolved_from_exe PASSED tests/test_py_info_extra.py::test_resolve_to_system_from_exe_returns_none PASSED tests/test_py_spec.py::test_bad_py_spec PASSED tests/test_py_spec.py::test_py_spec_first_digit_only_major PASSED tests/test_py_spec.py::test_spec_satisfies_path_ok PASSED tests/test_py_spec.py::test_spec_satisfies_path_nok PASSED tests/test_py_spec.py::test_spec_satisfies_arch PASSED tests/test_py_spec.py::test_spec_satisfies_free_threaded PASSED tests/test_py_spec.py::test_spec_satisfies_implementation_ok[py-python] PASSED tests/test_py_spec.py::test_spec_satisfies_implementation_ok[jython-jython] PASSED tests/test_py_spec.py::test_spec_satisfies_implementation_ok[CPython-cpython] PASSED tests/test_py_spec.py::test_spec_satisfies_implementation_nok PASSED tests/test_py_spec.py::test_version_satisfies_ok[-] PASSED tests/test_py_spec.py::test_version_satisfies_ok[-3] PASSED tests/test_py_spec.py::test_version_satisfies_ok[-3.14] PASSED tests/test_py_spec.py::test_version_satisfies_ok[-3.14.4] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3-3] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3-3.14] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3-3.14.4] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14-3] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14-3.14] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14-3.14.4] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14.4-3] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14.4-3.14] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14.4-3.14.4] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14.4t-3.14.4t] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14.4t-3.14t] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14.4t-3t] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14t-3.14.4t] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14t-3.14t] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3.14t-3t] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3t-3.14.4t] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3t-3.14t] PASSED tests/test_py_spec.py::test_version_satisfies_ok[3t-3t] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3-2] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3-4] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14-2] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14-2.14] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14-3.13] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14-3.15] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14-4] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14-4.14] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-2] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-2.14] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-2.14.4] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-3.13] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-3.13.4] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-3.14.3] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-3.14.5] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-3.15] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-3.15.4] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-4] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-4.14] PASSED tests/test_py_spec.py::test_version_satisfies_nok[3.14.4-4.14.4] PASSED tests/test_py_spec.py::test_relative_spec PASSED tests/test_py_spec.py::test_specifier_parsing[>=3.12->=3.12] PASSED tests/test_py_spec.py::test_specifier_parsing[python>=3.12->=3.12] PASSED tests/test_py_spec.py::test_specifier_parsing[cpython!=3.11.*-!=3.11.*] PASSED tests/test_py_spec.py::test_specifier_parsing[<=3.13,>=3.12-<=3.13,>=3.12] PASSED tests/test_py_spec.py::test_specifier_with_implementation PASSED tests/test_py_spec.py::test_specifier_with_graalpy_implementation_alias PASSED tests/test_py_spec.py::test_specifier_satisfies_with_partial_information PASSED tests/test_py_spec.py::test_spec_parse_machine[arm64] PASSED tests/test_py_spec.py::test_spec_parse_machine[x86_64] PASSED tests/test_py_spec.py::test_spec_parse_machine[x86] PASSED tests/test_py_spec.py::test_spec_parse_machine[aarch64] PASSED tests/test_py_spec.py::test_spec_parse_machine[ppc64le] PASSED tests/test_py_spec.py::test_spec_parse_machine[s390x] PASSED tests/test_py_spec.py::test_spec_parse_machine[riscv64] PASSED tests/test_py_spec.py::test_spec_parse_machine[no-machine] PASSED tests/test_py_spec.py::test_spec_parse_machine[no-arch-no-machine] PASSED tests/test_py_spec.py::test_spec_parse_machine[python-impl] PASSED tests/test_py_spec.py::test_spec_parse_machine[dotted-machine] PASSED tests/test_py_spec.py::test_spec_parse_arch_and_machine_together[64bit-arm64] PASSED tests/test_py_spec.py::test_spec_parse_arch_and_machine_together[32bit-x86] PASSED tests/test_py_spec.py::test_spec_parse_arch_and_machine_together[64bit-no-machine] PASSED tests/test_py_spec.py::test_spec_satisfies_machine[same-machine] PASSED tests/test_py_spec.py::test_spec_satisfies_machine[different-machine] PASSED tests/test_py_spec.py::test_spec_satisfies_machine[none-matches-any] PASSED tests/test_py_spec.py::test_spec_satisfies_machine[amd64-eq-x86_64] PASSED tests/test_py_spec.py::test_spec_satisfies_machine[aarch64-eq-arm64] PASSED tests/test_py_spec.py::test_normalize_isa[amd64] PASSED tests/test_py_spec.py::test_normalize_isa[aarch64] PASSED tests/test_py_spec.py::test_normalize_isa[x86_64] PASSED tests/test_py_spec.py::test_normalize_isa[arm64] PASSED tests/test_py_spec.py::test_normalize_isa[x86] PASSED tests/test_py_spec.py::test_normalize_isa[i386] PASSED tests/test_py_spec.py::test_normalize_isa[i486] PASSED tests/test_py_spec.py::test_normalize_isa[i586] PASSED tests/test_py_spec.py::test_normalize_isa[i686] PASSED tests/test_py_spec.py::test_normalize_isa[ppc64le] PASSED tests/test_py_spec.py::test_normalize_isa[powerpc] PASSED tests/test_py_spec.py::test_normalize_isa[powerpc64] PASSED tests/test_py_spec.py::test_normalize_isa[powerpc64le] PASSED tests/test_py_spec.py::test_normalize_isa[riscv64] PASSED tests/test_py_spec.py::test_normalize_isa[s390x] PASSED tests/test_py_spec.py::test_normalize_isa[sparcv9] PASSED tests/test_py_spec.py::test_normalize_isa[sparc64] PASSED tests/test_py_spec.py::test_normalize_isa[alpha-passthrough] PASSED tests/test_py_spec.py::test_spec_repr_machine[with-machine] PASSED tests/test_py_spec.py::test_spec_repr_machine[without-machine] PASSED tests/test_py_spec.py::test_spec_satisfies_graalpy_implementation_aliases[graalpy-graalvm] PASSED tests/test_py_spec.py::test_spec_satisfies_graalpy_implementation_aliases[graalvm-graalpy] PASSED tests/test_py_spec_extra.py::test_specifier_parse_failure_fallback PASSED tests/test_py_spec_extra.py::test_version_specifier_satisfies_micro PASSED tests/test_py_spec_extra.py::test_version_specifier_satisfies_fails_micro PASSED tests/test_py_spec_extra.py::test_version_specifier_no_components PASSED tests/test_py_spec_extra.py::test_check_version_specifier_precision PASSED tests/test_py_spec_extra.py::test_check_version_specifier_precision_micro PASSED tests/test_py_spec_extra.py::test_check_version_specifier_fails PASSED tests/test_py_spec_extra.py::test_check_version_specifier_none PASSED tests/test_py_spec_extra.py::test_get_required_precision_none PASSED tests/test_py_spec_extra.py::test_get_required_precision_normal PASSED tests/test_py_spec_extra.py::test_generate_re_no_threaded PASSED tests/test_py_spec_extra.py::test_generate_re_with_threaded PASSED tests/test_py_spec_extra.py::test_single_digit_version PASSED tests/test_py_spec_extra.py::test_specifier_with_invalid_inner PASSED tests/test_py_spec_extra.py::test_two_digit_version PASSED tests/test_py_spec_extra.py::test_single_digit_major_only PASSED tests/test_py_spec_extra.py::test_specifier_set_parsed_for_valid_format PASSED tests/test_py_spec_extra.py::test_get_required_precision_attribute_error PASSED tests/test_specifier.py::test_version_parse[basic] PASSED tests/test_specifier.py::test_version_parse[alpha] PASSED tests/test_specifier.py::test_version_parse[beta] PASSED tests/test_specifier.py::test_version_parse[rc] PASSED tests/test_specifier.py::test_version_parse[major-only] PASSED tests/test_specifier.py::test_version_parse[major-minor] PASSED tests/test_specifier.py::test_version_invalid_raises PASSED tests/test_specifier.py::test_version_eq_same PASSED tests/test_specifier.py::test_version_eq_different PASSED tests/test_specifier.py::test_version_eq_not_implemented PASSED tests/test_specifier.py::test_version_hash PASSED tests/test_specifier.py::test_version_lt[release] PASSED tests/test_specifier.py::test_version_lt[prerelease-vs-final] PASSED tests/test_specifier.py::test_version_lt[final-not-less-than-prerelease] PASSED tests/test_specifier.py::test_version_lt[equal] PASSED tests/test_specifier.py::test_version_lt[alpha-lt-beta] PASSED tests/test_specifier.py::test_version_lt[beta-lt-rc] PASSED tests/test_specifier.py::test_version_lt[same-type-ordering] PASSED tests/test_specifier.py::test_version_lt_not_implemented PASSED tests/test_specifier.py::test_version_le PASSED tests/test_specifier.py::test_version_gt PASSED tests/test_specifier.py::test_version_gt_not_implemented PASSED tests/test_specifier.py::test_version_ge PASSED tests/test_specifier.py::test_version_str PASSED tests/test_specifier.py::test_version_repr PASSED tests/test_specifier.py::test_specifier_invalid_raises PASSED tests/test_specifier.py::test_specifier_parse_gte PASSED tests/test_specifier.py::test_specifier_parse_wildcard PASSED tests/test_specifier.py::test_specifier_contains[wildcard-eq-match] PASSED tests/test_specifier.py::test_specifier_contains[wildcard-eq-no-match] PASSED tests/test_specifier.py::test_specifier_contains[wildcard-ne-match] PASSED tests/test_specifier.py::test_specifier_contains[wildcard-ne-no-match] PASSED tests/test_specifier.py::test_specifier_contains[wildcard-unsupported-op] PASSED tests/test_specifier.py::test_specifier_contains[gte-match] PASSED tests/test_specifier.py::test_specifier_contains[gte-above] PASSED tests/test_specifier.py::test_specifier_contains[gte-below] PASSED tests/test_specifier.py::test_specifier_contains[lte-match] PASSED tests/test_specifier.py::test_specifier_contains[lte-below] PASSED tests/test_specifier.py::test_specifier_contains[lte-above] PASSED tests/test_specifier.py::test_specifier_contains[gt-above] PASSED tests/test_specifier.py::test_specifier_contains[gt-equal] PASSED tests/test_specifier.py::test_specifier_contains[lt-below] PASSED tests/test_specifier.py::test_specifier_contains[lt-equal] PASSED tests/test_specifier.py::test_specifier_contains[eq-match] PASSED tests/test_specifier.py::test_specifier_contains[eq-no-match] PASSED tests/test_specifier.py::test_specifier_contains[ne-match] PASSED tests/test_specifier.py::test_specifier_contains[ne-no-match] PASSED tests/test_specifier.py::test_specifier_contains[exact-match] PASSED tests/test_specifier.py::test_specifier_contains[exact-no-match] PASSED tests/test_specifier.py::test_specifier_contains[compatible-above] PASSED tests/test_specifier.py::test_specifier_contains[compatible-next-minor] PASSED tests/test_specifier.py::test_specifier_contains[compatible-below] PASSED tests/test_specifier.py::test_specifier_contains[compatible-just-below] PASSED tests/test_specifier.py::test_specifier_contains[invalid-version] PASSED tests/test_specifier.py::test_specifier_contains_version_none PASSED tests/test_specifier.py::test_specifier_wildcard_version_none PASSED tests/test_specifier.py::test_specifier_compatible_release_version_none PASSED tests/test_specifier.py::test_specifier_eq PASSED tests/test_specifier.py::test_specifier_eq_not_implemented PASSED tests/test_specifier.py::test_specifier_hash PASSED tests/test_specifier.py::test_specifier_str PASSED tests/test_specifier.py::test_specifier_repr PASSED tests/test_specifier.py::test_specifier_version_parse_failure_stores_none PASSED tests/test_specifier.py::test_specifier_unknown_operator PASSED tests/test_specifier.py::test_specifier_set_contains[empty-always-matches] PASSED tests/test_specifier.py::test_specifier_set_contains[single-match] PASSED tests/test_specifier.py::test_specifier_set_contains[single-no-match] PASSED tests/test_specifier.py::test_specifier_set_contains[compound-lower-bound] PASSED tests/test_specifier.py::test_specifier_set_contains[compound-middle] PASSED tests/test_specifier.py::test_specifier_set_contains[compound-upper-bound] PASSED tests/test_specifier.py::test_specifier_set_contains[compound-below] PASSED tests/test_specifier.py::test_specifier_set_iter PASSED tests/test_specifier.py::test_specifier_set_eq PASSED tests/test_specifier.py::test_specifier_set_eq_not_implemented PASSED tests/test_specifier.py::test_specifier_set_hash PASSED tests/test_specifier.py::test_specifier_set_str PASSED tests/test_specifier.py::test_specifier_set_repr PASSED tests/test_specifier.py::test_specifier_set_invalid_specifier_skipped PASSED tests/test_specifier.py::test_specifier_set_contains_no_specifiers PASSED tests/test_specifier.py::test_specifier_set_empty_item_in_comma_list PASSED tests/test_specifier.py::test_specifier_compatible_release_major_only PASSED tests/windows/test_windows.py::test_propose_interpreters[python3.10-C:\\Users\\user\\Miniconda3-64\\python.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[cpython3.10-C:\\Users\\user\\Miniconda3-64\\python.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[python3.12-C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python312\\python.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[cpython3.12-C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python312\\python.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[python-C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python313\\python3.13t.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[cpython-C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python313\\python3.13t.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[python3-C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python312\\python.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[cpython3-C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python312\\python.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[python3.6-Z:\\CompanyA\\Python\\3.6\\python.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[cpython3.6-Z:\\CompanyA\\Python\\3.6\\python.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[3t-C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python313\\python3.13t.exe] SKIPPED tests/windows/test_windows.py::test_propose_interpreters[python3.13t-C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python313\\python3.13t.exe] SKIPPED tests/windows/test_windows_pep514.py::test_pep514_discovers_interpreters PASSED tests/windows/test_windows_pep514.py::test_pep514_parse_functions PASSED tests/windows/test_windows_pep514.py::test_pep514 SKIPPED (path join...) tests/windows/test_windows_pep514.py::test_pep514_run SKIPPED (path ...) - generated xml file: $(@D)/.tox/junit.py$(PYV).xml - ======== 492 passed, 15 skipped ======== py$(PYV): OK congratulations :)