diff --git a/src/packse/inspect.py b/src/packse/inspect.py index d888f4ba..45150bd7 100644 --- a/src/packse/inspect.py +++ b/src/packse/inspect.py @@ -37,13 +37,20 @@ def inspect( scenarios_by_path[target] = load_scenarios(target) except Exception as exc: invalid = InvalidScenario(target, reason=str(exc)) - print(f"Skipping file: {invalid}") + if skip_invalid: + print(f"Skipping file: {invalid}") + else: + raise invalid else: try: logger.debug("Loading %s", target) scenarios_by_path[target] = load_scenarios(target) except Exception as exc: - raise InvalidScenario(target, reason=str(exc)) from exc + invalid = InvalidScenario(target, reason=str(exc)) + if skip_invalid: + print(f"Skipping file: {invalid}") + else: + raise invalid # Collect a JSON-compatible representation for each scenario result = {"scenarios": []} diff --git a/tests/__snapshots__/test_inspect.ambr b/tests/__snapshots__/test_inspect.ambr index fc139eb7..be297dd7 100644 --- a/tests/__snapshots__/test_inspect.ambr +++ b/tests/__snapshots__/test_inspect.ambr @@ -149,6 +149,7 @@ 'exit_code': 0, 'stderr': '', 'stdout': ''' + Skipping file: File at '[PWD]/test.json' is not a valid scenario: Input data was truncated { "scenarios": [ { @@ -298,7515 +299,11 @@ # --- # name: test_inspect_target_does_not_exist dict({ - 'exit_code': 0, - 'stderr': '', - 'stdout': ''' - { - "scenarios": [ - { - "name": "requires-package-does-not-exist", - "packages": [], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-package-does-not-exist-a-388e8135", - "name": "requires-package-does-not-exist-a-388e8135", - "module_name": "requires_package_does_not_exist_a_388e8135" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires any version of package `a` which does not exist.", - "source": "foo/does-not-exist.json", - "version": "388e8135", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u2514\u2500\u2500 root", - " \u2514\u2500\u2500 requires a", - " \u2514\u2500\u2500 unsatisfied: no versions for package" - ], - "module_name": "requires_package_does_not_exist" - }, - { - "name": "requires-exact-version-does-not-exist", - "packages": [ - { - "name": "requires-exact-version-does-not-exist-a-ef648a78", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-exact-version-does-not-exist-a-ef648a78==2.0.0", - "name": "requires-exact-version-does-not-exist-a-ef648a78", - "module_name": "requires_exact_version_does_not_exist_a_ef648a78" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires an exact version of package `a` but only other versions exist", - "source": "foo/does-not-exist.json", - "version": "ef648a78", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==2.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "requires_exact_version_does_not_exist" - }, - { - "name": "requires-greater-version-does-not-exist", - "packages": [ - { - "name": "requires-greater-version-does-not-exist-a-b33b2dca", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-greater-version-does-not-exist-a-b33b2dca>1.0.0", - "name": "requires-greater-version-does-not-exist-a-b33b2dca", - "module_name": "requires_greater_version_does_not_exist_a_b33b2dca" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a version of `a` greater than `1.0.0` but only smaller or equal versions exist", - "source": "foo/does-not-exist.json", - "version": "b33b2dca", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>1.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "requires_greater_version_does_not_exist" - }, - { - "name": "requires-less-version-does-not-exist", - "packages": [ - { - "name": "requires-less-version-does-not-exist-a-a71baf60", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "4.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-less-version-does-not-exist-a-a71baf60<2.0.0", - "name": "requires-less-version-does-not-exist-a-a71baf60", - "module_name": "requires_less_version_does_not_exist_a_a71baf60" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a version of `a` less than `1.0.0` but only larger versions exist", - "source": "foo/does-not-exist.json", - "version": "a71baf60", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a<2.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-2.0.0", - " \u251c\u2500\u2500 a-3.0.0", - " \u2514\u2500\u2500 a-4.0.0" - ], - "module_name": "requires_less_version_does_not_exist" - }, - { - "name": "transitive-requires-package-does-not-exist", - "packages": [ - { - "name": "transitive-requires-package-does-not-exist-a-ed146f67", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-requires-package-does-not-exist-b-ed146f67" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-requires-package-does-not-exist-a-ed146f67", - "name": "transitive-requires-package-does-not-exist-a-ed146f67", - "module_name": "transitive_requires_package_does_not_exist_a_ed146f67" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires package `a` but `a` requires package `b` which does not exist", - "source": "foo/does-not-exist.json", - "version": "ed146f67", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires b", - " \u2514\u2500\u2500 unsatisfied: no versions for package" - ], - "module_name": "transitive_requires_package_does_not_exist" - }, - { - "name": "example", - "packages": [ - { - "name": "example-a-961b4c22", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "example-b-961b4c22>1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "example-b-961b4c22", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "example-c-961b4c22" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "example-a-961b4c22", - "name": "example-a-961b4c22", - "module_name": "example_a_961b4c22" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "example-a-961b4c22", - "version": "1.0.0", - "module_name": "example_a_961b4c22" - }, - { - "name": "example-b-961b4c22", - "version": "3.0.0", - "module_name": "example_b_961b4c22" - } - ], - "explanation": "The latest valid version of `b` should be installed. `b==3.0.0` is not valid because it requires `c` which does not exist." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "This is an example scenario, in which the user depends on a single package `a` which requires `b`.", - "source": "foo/example.json", - "version": "961b4c22", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires b>1.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-3.0.0", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-1.0.0", - " \u251c\u2500\u2500 b-2.0.0", - " \u2514\u2500\u2500 b-3.0.0", - " \u2514\u2500\u2500 requires c", - " \u2514\u2500\u2500 unsatisfied: no versions for package" - ], - "module_name": "example" - }, - { - "name": "excluded-only-version", - "packages": [ - { - "name": "excluded-only-version-a-d5e62e6c", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "excluded-only-version-a-d5e62e6c!=1.0.0", - "name": "excluded-only-version-a-d5e62e6c", - "module_name": "excluded_only_version_a_d5e62e6c" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Only `a==1.0.0` is available but the user excluded it." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Only one version of the requested package is available, but the user has banned that version.", - "source": "foo/excluded.json", - "version": "d5e62e6c", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a!=1.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "excluded_only_version" - }, - { - "name": "excluded-only-compatible-version", - "packages": [ - { - "name": "excluded-only-compatible-version-a-26dd59e3", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "excluded-only-compatible-version-b-26dd59e3==1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "excluded-only-compatible-version-b-26dd59e3==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "excluded-only-compatible-version-b-26dd59e3==3.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - } - ] - }, - { - "name": "excluded-only-compatible-version-b-26dd59e3", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "excluded-only-compatible-version-a-26dd59e3!=2.0.0", - "name": "excluded-only-compatible-version-a-26dd59e3", - "module_name": "excluded_only_compatible_version_a_26dd59e3" - }, - { - "requirement": "excluded-only-compatible-version-b-26dd59e3<3.0.0,>=2.0.0", - "name": "excluded-only-compatible-version-b-26dd59e3", - "module_name": "excluded_only_compatible_version_b_26dd59e3" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Only `a==1.2.0` is available since `a==1.0.0` and `a==3.0.0` require incompatible versions of `b`. The user has excluded that version of `a` so resolution fails." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Only one version of the requested package `a` is compatible, but the user has banned that version.", - "source": "foo/excluded.json", - "version": "26dd59e3", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a!=2.0.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-3.0.0", - "\u2502 \u2514\u2500\u2500 requires b<3.0.0,>=2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u251c\u2500\u2500 a-2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u2514\u2500\u2500 a-3.0.0", - "\u2502 \u2514\u2500\u2500 requires b==3.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-3.0.0", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-1.0.0", - " \u251c\u2500\u2500 b-2.0.0", - " \u2514\u2500\u2500 b-3.0.0" - ], - "module_name": "excluded_only_compatible_version" - }, - { - "name": "dependency-excludes-range-of-compatible-versions", - "packages": [ - { - "name": "dependency-excludes-range-of-compatible-versions-a-cb8d51de", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-range-of-compatible-versions-b-cb8d51de==1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-range-of-compatible-versions-b-cb8d51de==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-range-of-compatible-versions-b-cb8d51de==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-range-of-compatible-versions-b-cb8d51de==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.2.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-range-of-compatible-versions-b-cb8d51de==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.3.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-range-of-compatible-versions-b-cb8d51de==3.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - } - ] - }, - { - "name": "dependency-excludes-range-of-compatible-versions-b-cb8d51de", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - } - ] - }, - { - "name": "dependency-excludes-range-of-compatible-versions-c-cb8d51de", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-range-of-compatible-versions-a-cb8d51de<2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-range-of-compatible-versions-a-cb8d51de>=3.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "dependency-excludes-range-of-compatible-versions-a-cb8d51de", - "name": "dependency-excludes-range-of-compatible-versions-a-cb8d51de", - "module_name": "dependency_excludes_range_of_compatible_versions_a_cb8d51de" - }, - { - "requirement": "dependency-excludes-range-of-compatible-versions-b-cb8d51de<3.0.0,>=2.0.0", - "name": "dependency-excludes-range-of-compatible-versions-b-cb8d51de", - "module_name": "dependency_excludes_range_of_compatible_versions_b_cb8d51de" - }, - { - "requirement": "dependency-excludes-range-of-compatible-versions-c-cb8d51de", - "name": "dependency-excludes-range-of-compatible-versions-c-cb8d51de", - "module_name": "dependency_excludes_range_of_compatible_versions_c_cb8d51de" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Only the `2.x` versions of `a` are available since `a==1.0.0` and `a==3.0.0` require incompatible versions of `b`, but all available versions of `c` exclude that range of `a` so resolution fails." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "There is a range of compatible versions for the requested package `a`, but another dependency `c` excludes that range.", - "source": "foo/excluded.json", - "version": "cb8d51de", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.0.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.1.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.2.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.3.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-3.0.0", - "\u2502 \u251c\u2500\u2500 requires b<3.0.0,>=2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u2514\u2500\u2500 requires c", - "\u2502 \u251c\u2500\u2500 satisfied by c-1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-2.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u251c\u2500\u2500 a-2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u251c\u2500\u2500 a-2.1.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u251c\u2500\u2500 a-2.2.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u251c\u2500\u2500 a-2.3.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u2514\u2500\u2500 a-3.0.0", - "\u2502 \u2514\u2500\u2500 requires b==3.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-3.0.0", - "\u251c\u2500\u2500 b", - "\u2502 \u251c\u2500\u2500 b-1.0.0", - "\u2502 \u251c\u2500\u2500 b-2.0.0", - "\u2502 \u2514\u2500\u2500 b-3.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u2502 \u2514\u2500\u2500 requires a<2.0.0", - " \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - " \u2514\u2500\u2500 c-2.0.0", - " \u2514\u2500\u2500 requires a>=3.0.0", - " \u2514\u2500\u2500 satisfied by a-3.0.0" - ], - "module_name": "dependency_excludes_range_of_compatible_versions" - }, - { - "name": "dependency-excludes-non-contiguous-range-of-compatible-versions", - "packages": [ - { - "name": "dependency-excludes-non-contiguous-range-of-compatible-versions-a-5d038b4f", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f==1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f==2.0.0", - "dependency-excludes-non-contiguous-range-of-compatible-versions-d-5d038b4f" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.2.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f==2.0.0", - "dependency-excludes-non-contiguous-range-of-compatible-versions-d-5d038b4f" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.3.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.4.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f==3.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - } - ] - }, - { - "name": "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - } - ] - }, - { - "name": "dependency-excludes-non-contiguous-range-of-compatible-versions-c-5d038b4f", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-a-5d038b4f<2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [ - "dependency-excludes-non-contiguous-range-of-compatible-versions-a-5d038b4f>=3.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "dependency-excludes-non-contiguous-range-of-compatible-versions-a-5d038b4f", - "name": "dependency-excludes-non-contiguous-range-of-compatible-versions-a-5d038b4f", - "module_name": "dependency_excludes_non_contiguous_range_of_compatible_versions_a_5d038b4f" - }, - { - "requirement": "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f<3.0.0,>=2.0.0", - "name": "dependency-excludes-non-contiguous-range-of-compatible-versions-b-5d038b4f", - "module_name": "dependency_excludes_non_contiguous_range_of_compatible_versions_b_5d038b4f" - }, - { - "requirement": "dependency-excludes-non-contiguous-range-of-compatible-versions-c-5d038b4f", - "name": "dependency-excludes-non-contiguous-range-of-compatible-versions-c-5d038b4f", - "module_name": "dependency_excludes_non_contiguous_range_of_compatible_versions_c_5d038b4f" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Only the `2.x` versions of `a` are available since `a==1.0.0` and `a==3.0.0` require incompatible versions of `b`, but all available versions of `c` exclude that range of `a` so resolution fails." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "There is a non-contiguous range of compatible versions for the requested package `a`, but another dependency `c` excludes the range. This is the same as `dependency-excludes-range-of-compatible-versions` but some of the versions of `a` are incompatible for another reason e.g. dependency on non-existant package `d`.", - "source": "foo/excluded.json", - "version": "5d038b4f", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.0.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.1.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.2.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.3.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-2.4.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-3.0.0", - "\u2502 \u251c\u2500\u2500 requires b<3.0.0,>=2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u2514\u2500\u2500 requires c", - "\u2502 \u251c\u2500\u2500 satisfied by c-1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-2.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u251c\u2500\u2500 a-2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u251c\u2500\u2500 a-2.1.0", - "\u2502 \u2502 \u251c\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires d", - "\u2502 \u2502 \u2514\u2500\u2500 unsatisfied: no versions for package", - "\u2502 \u251c\u2500\u2500 a-2.2.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u251c\u2500\u2500 a-2.3.0", - "\u2502 \u2502 \u251c\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires d", - "\u2502 \u2502 \u2514\u2500\u2500 unsatisfied: no versions for package", - "\u2502 \u251c\u2500\u2500 a-2.4.0", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2502 \u2514\u2500\u2500 a-3.0.0", - "\u2502 \u2514\u2500\u2500 requires b==3.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-3.0.0", - "\u251c\u2500\u2500 b", - "\u2502 \u251c\u2500\u2500 b-1.0.0", - "\u2502 \u251c\u2500\u2500 b-2.0.0", - "\u2502 \u2514\u2500\u2500 b-3.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u2502 \u2514\u2500\u2500 requires a<2.0.0", - " \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - " \u2514\u2500\u2500 c-2.0.0", - " \u2514\u2500\u2500 requires a>=3.0.0", - " \u2514\u2500\u2500 satisfied by a-3.0.0" - ], - "module_name": "dependency_excludes_non_contiguous_range_of_compatible_versions" - }, - { - "name": "extra-required", - "packages": [ - { - "name": "extra-required-a-bbd42201", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [ - { - "name": "extra", - "requires": [ - "extra-required-b-bbd42201" - ] - } - ], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "extra-required-b-bbd42201", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "extra-required-a-bbd42201[extra]", - "name": "extra-required-a-bbd42201", - "module_name": "extra_required_a_bbd42201" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "extra-required-a-bbd42201", - "version": "1.0.0", - "module_name": "extra_required_a_bbd42201" - }, - { - "name": "extra-required-b-bbd42201", - "version": "1.0.0", - "module_name": "extra_required_b_bbd42201" - } - ], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Optional dependencies are requested for the package.", - "source": "foo/extras.json", - "version": "bbd42201", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a[extra]", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0[extra]", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 a-1.0.0[extra]", - "\u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2514\u2500\u2500 b", - " \u2514\u2500\u2500 b-1.0.0" - ], - "module_name": "extra_required" - }, - { - "name": "missing-extra", - "packages": [ - { - "name": "missing-extra-a-d7b6e0b1", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "missing-extra-a-d7b6e0b1[extra]", - "name": "missing-extra-a-d7b6e0b1", - "module_name": "missing_extra_a_d7b6e0b1" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "missing-extra-a-d7b6e0b1", - "version": "1.0.0", - "module_name": "missing_extra_a_d7b6e0b1" - } - ], - "explanation": "Missing extras are ignored during resolution." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Optional dependencies are requested for the package, but the extra does not exist.", - "source": "foo/extras.json", - "version": "d7b6e0b1", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a[extra]", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "missing_extra" - }, - { - "name": "multiple-extras-required", - "packages": [ - { - "name": "multiple-extras-required-a-73ee83b9", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [ - { - "name": "extra_b", - "requires": [ - "multiple-extras-required-b-73ee83b9" - ] - }, - { - "name": "extra_c", - "requires": [ - "multiple-extras-required-c-73ee83b9" - ] - } - ], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "multiple-extras-required-b-73ee83b9", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "multiple-extras-required-c-73ee83b9", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "multiple-extras-required-a-73ee83b9[extra_b,extra_c]", - "name": "multiple-extras-required-a-73ee83b9", - "module_name": "multiple_extras_required_a_73ee83b9" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "multiple-extras-required-a-73ee83b9", - "version": "1.0.0", - "module_name": "multiple_extras_required_a_73ee83b9" - }, - { - "name": "multiple-extras-required-b-73ee83b9", - "version": "1.0.0", - "module_name": "multiple_extras_required_b_73ee83b9" - }, - { - "name": "multiple-extras-required-c-73ee83b9", - "version": "1.0.0", - "module_name": "multiple_extras_required_c_73ee83b9" - } - ], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Multiple optional dependencies are requested for the package.", - "source": "foo/extras.json", - "version": "73ee83b9", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a[extra_b,extra_c]", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[extra_b]", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0[extra_c]", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u251c\u2500\u2500 a-1.0.0[extra_b]", - "\u2502 \u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u2514\u2500\u2500 a-1.0.0[extra_c]", - "\u2502 \u2514\u2500\u2500 requires c", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2514\u2500\u2500 c", - " \u2514\u2500\u2500 c-1.0.0" - ], - "module_name": "multiple_extras_required" - }, - { - "name": "all-extras-required", - "packages": [ - { - "name": "all-extras-required-a-61571b3c", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [ - { - "name": "all", - "requires": [ - "all-extras-required-a-61571b3c[extra_b]", - "all-extras-required-a-61571b3c[extra_c]" - ] - }, - { - "name": "extra_b", - "requires": [ - "all-extras-required-b-61571b3c" - ] - }, - { - "name": "extra_c", - "requires": [ - "all-extras-required-c-61571b3c" - ] - } - ], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "all-extras-required-b-61571b3c", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "all-extras-required-c-61571b3c", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "all-extras-required-a-61571b3c[all]", - "name": "all-extras-required-a-61571b3c", - "module_name": "all_extras_required_a_61571b3c" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "all-extras-required-a-61571b3c", - "version": "1.0.0", - "module_name": "all_extras_required_a_61571b3c" - }, - { - "name": "all-extras-required-b-61571b3c", - "version": "1.0.0", - "module_name": "all_extras_required_b_61571b3c" - }, - { - "name": "all-extras-required-c-61571b3c", - "version": "1.0.0", - "module_name": "all_extras_required_c_61571b3c" - } - ], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Multiple optional dependencies are requested for the package via an 'all' extra.", - "source": "foo/extras.json", - "version": "61571b3c", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a[all]", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[all]", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[extra_b]", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0[extra_c]", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u251c\u2500\u2500 a-1.0.0[all]", - "\u2502 \u2502 \u251c\u2500\u2500 requires a[extra_b]", - "\u2502 \u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[all]", - "\u2502 \u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[extra_b]", - "\u2502 \u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0[extra_c]", - "\u2502 \u2502 \u2514\u2500\u2500 requires a[extra_c]", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[all]", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[extra_b]", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0[extra_c]", - "\u2502 \u251c\u2500\u2500 a-1.0.0[extra_b]", - "\u2502 \u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u2514\u2500\u2500 a-1.0.0[extra_c]", - "\u2502 \u2514\u2500\u2500 requires c", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2514\u2500\u2500 c", - " \u2514\u2500\u2500 c-1.0.0" - ], - "module_name": "all_extras_required" - }, - { - "name": "extra-incompatible-with-extra", - "packages": [ - { - "name": "extra-incompatible-with-extra-a-eeb916b5", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [ - { - "name": "extra_b", - "requires": [ - "extra-incompatible-with-extra-b-eeb916b5==1.0.0" - ] - }, - { - "name": "extra_c", - "requires": [ - "extra-incompatible-with-extra-b-eeb916b5==2.0.0" - ] - } - ], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "extra-incompatible-with-extra-b-eeb916b5", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "extra-incompatible-with-extra-a-eeb916b5[extra_b,extra_c]", - "name": "extra-incompatible-with-extra-a-eeb916b5", - "module_name": "extra_incompatible_with_extra_a_eeb916b5" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Because both `extra_b` and `extra_c` are requested and they require incompatible versions of `b`, `a` cannot be installed." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Multiple optional dependencies are requested for the package, but they have conflicting requirements with each other.", - "source": "foo/extras.json", - "version": "eeb916b5", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a[extra_b,extra_c]", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[extra_b]", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0[extra_c]", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u251c\u2500\u2500 a-1.0.0[extra_b]", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u2514\u2500\u2500 a-1.0.0[extra_c]", - "\u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-1.0.0", - " \u2514\u2500\u2500 b-2.0.0" - ], - "module_name": "extra_incompatible_with_extra" - }, - { - "name": "extra-incompatible-with-extra-not-requested", - "packages": [ - { - "name": "extra-incompatible-with-extra-not-requested-a-97cf0638", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [ - { - "name": "extra_b", - "requires": [ - "extra-incompatible-with-extra-not-requested-b-97cf0638==1.0.0" - ] - }, - { - "name": "extra_c", - "requires": [ - "extra-incompatible-with-extra-not-requested-b-97cf0638==2.0.0" - ] - } - ], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "extra-incompatible-with-extra-not-requested-b-97cf0638", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "extra-incompatible-with-extra-not-requested-a-97cf0638[extra_c]", - "name": "extra-incompatible-with-extra-not-requested-a-97cf0638", - "module_name": "extra_incompatible_with_extra_not_requested_a_97cf0638" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "extra-incompatible-with-extra-not-requested-a-97cf0638", - "version": "1.0.0", - "module_name": "extra_incompatible_with_extra_not_requested_a_97cf0638" - }, - { - "name": "extra-incompatible-with-extra-not-requested-b-97cf0638", - "version": "2.0.0", - "module_name": "extra_incompatible_with_extra_not_requested_b_97cf0638" - } - ], - "explanation": "Because the user does not request both extras, it is okay that one is incompatible with the other." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "One of two incompatible optional dependencies are requested for the package.", - "source": "foo/extras.json", - "version": "97cf0638", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a[extra_c]", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[extra_b]", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0[extra_c]", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u251c\u2500\u2500 a-1.0.0[extra_b]", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u2514\u2500\u2500 a-1.0.0[extra_c]", - "\u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-1.0.0", - " \u2514\u2500\u2500 b-2.0.0" - ], - "module_name": "extra_incompatible_with_extra_not_requested" - }, - { - "name": "extra-incompatible-with-root", - "packages": [ - { - "name": "extra-incompatible-with-root-a-6faf09f6", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [ - { - "name": "extra", - "requires": [ - "extra-incompatible-with-root-b-6faf09f6==1.0.0" - ] - } - ], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "extra-incompatible-with-root-b-6faf09f6", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "extra-incompatible-with-root-a-6faf09f6[extra]", - "name": "extra-incompatible-with-root-a-6faf09f6", - "module_name": "extra_incompatible_with_root_a_6faf09f6" - }, - { - "requirement": "extra-incompatible-with-root-b-6faf09f6==2.0.0", - "name": "extra-incompatible-with-root-b-6faf09f6", - "module_name": "extra_incompatible_with_root_b_6faf09f6" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Because the user requested `b==2.0.0` but the requested extra requires `b==1.0.0`, the dependencies cannot be satisfied." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Optional dependencies are requested for the package, but the extra is not compatible with other requested versions.", - "source": "foo/extras.json", - "version": "6faf09f6", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a[extra]", - "\u2502 \u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0[extra]", - "\u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 a-1.0.0[extra]", - "\u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-1.0.0", - " \u2514\u2500\u2500 b-2.0.0" - ], - "module_name": "extra_incompatible_with_root" - }, - { - "name": "extra-does-not-exist-backtrack", - "packages": [ - { - "name": "extra-does-not-exist-backtrack-a-05f843a2", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [ - { - "name": "extra", - "requires": [ - "extra-does-not-exist-backtrack-b-05f843a2==1.0.0" - ] - } - ], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - } - ] - }, - { - "name": "extra-does-not-exist-backtrack-b-05f843a2", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "extra-does-not-exist-backtrack-a-05f843a2[extra]", - "name": "extra-does-not-exist-backtrack-a-05f843a2", - "module_name": "extra_does_not_exist_backtrack_a_05f843a2" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "extra-does-not-exist-backtrack-a-05f843a2", - "version": "3.0.0", - "module_name": "extra_does_not_exist_backtrack_a_05f843a2" - } - ], - "explanation": "The resolver should not backtrack to `a==1.0.0` because missing extras are allowed during resolution. `b` should not be installed." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "Optional dependencies are requested for the package, the extra is only available on an older version.", - "source": "foo/extras.json", - "version": "05f843a2", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a[extra]", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0[extra]", - "\u2502 \u251c\u2500\u2500 satisfied by a-2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-3.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u251c\u2500\u2500 a-1.0.0", - "\u2502 \u251c\u2500\u2500 a-1.0.0[extra]", - "\u2502 \u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u251c\u2500\u2500 a-2.0.0", - "\u2502 \u2514\u2500\u2500 a-3.0.0", - "\u2514\u2500\u2500 b", - " \u2514\u2500\u2500 b-1.0.0" - ], - "module_name": "extra_does_not_exist_backtrack" - }, - { - "name": "direct-incompatible-versions", - "packages": [ - { - "name": "direct-incompatible-versions-a-516a39b2", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "direct-incompatible-versions-a-516a39b2==1.0.0", - "name": "direct-incompatible-versions-a-516a39b2", - "module_name": "direct_incompatible_versions_a_516a39b2" - }, - { - "requirement": "direct-incompatible-versions-a-516a39b2==2.0.0", - "name": "direct-incompatible-versions-a-516a39b2", - "module_name": "direct_incompatible_versions_a_516a39b2" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires two incompatible, existing versions of package `a`", - "source": "foo/incompatible-versions.json", - "version": "516a39b2", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a==1.0.0", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires a==2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-2.0.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 a-2.0.0" - ], - "module_name": "direct_incompatible_versions" - }, - { - "name": "transitive-incompatible-with-root-version", - "packages": [ - { - "name": "transitive-incompatible-with-root-version-a-c4bc5b1f", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-incompatible-with-root-version-b-c4bc5b1f==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-incompatible-with-root-version-b-c4bc5b1f", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-incompatible-with-root-version-a-c4bc5b1f", - "name": "transitive-incompatible-with-root-version-a-c4bc5b1f", - "module_name": "transitive_incompatible_with_root_version_a_c4bc5b1f" - }, - { - "requirement": "transitive-incompatible-with-root-version-b-c4bc5b1f==1.0.0", - "name": "transitive-incompatible-with-root-version-b-c4bc5b1f", - "module_name": "transitive_incompatible_with_root_version_b_c4bc5b1f" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires packages `a` and `b` but `a` requires a different version of `b`", - "source": "foo/incompatible-versions.json", - "version": "c4bc5b1f", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires b==2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by b-2.0.0", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-1.0.0", - " \u2514\u2500\u2500 b-2.0.0" - ], - "module_name": "transitive_incompatible_with_root_version" - }, - { - "name": "transitive-incompatible-with-transitive", - "packages": [ - { - "name": "transitive-incompatible-with-transitive-a-4132b57a", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-incompatible-with-transitive-c-4132b57a==1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-incompatible-with-transitive-b-4132b57a", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-incompatible-with-transitive-c-4132b57a==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-incompatible-with-transitive-c-4132b57a", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-incompatible-with-transitive-a-4132b57a", - "name": "transitive-incompatible-with-transitive-a-4132b57a", - "module_name": "transitive_incompatible_with_transitive_a_4132b57a" - }, - { - "requirement": "transitive-incompatible-with-transitive-b-4132b57a", - "name": "transitive-incompatible-with-transitive-b-4132b57a", - "module_name": "transitive_incompatible_with_transitive_b_4132b57a" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires package `a` and `b`; `a` and `b` require different versions of `c`", - "source": "foo/incompatible-versions.json", - "version": "4132b57a", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c==2.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-2.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u2514\u2500\u2500 c-2.0.0" - ], - "module_name": "transitive_incompatible_with_transitive" - }, - { - "name": "package-only-prereleases", - "packages": [ - { - "name": "package-only-prereleases-a-85d9c93d", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-only-prereleases-a-85d9c93d", - "name": "package-only-prereleases-a-85d9c93d", - "module_name": "package_only_prereleases_a_85d9c93d" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-only-prereleases-a-85d9c93d", - "version": "1.0.0a1", - "module_name": "package_only_prereleases_a_85d9c93d" - } - ], - "explanation": "Since there are only prerelease versions of `a` available, it should be installed even though the user did not include a prerelease specifier." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires any version of package `a` which only has prerelease versions available.", - "source": "foo/prereleases.json", - "version": "85d9c93d", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0a1" - ], - "module_name": "package_only_prereleases" - }, - { - "name": "package-only-prereleases-in-range", - "packages": [ - { - "name": "package-only-prereleases-in-range-a-4c7ed550", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-only-prereleases-in-range-a-4c7ed550>0.1.0", - "name": "package-only-prereleases-in-range-a-4c7ed550", - "module_name": "package_only_prereleases_in_range_a_4c7ed550" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since there are stable versions of `a` available, prerelease versions should not be selected without explicit opt-in." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a version of package `a` which only matches prerelease versions but they did not include a prerelease specifier.", - "source": "foo/prereleases.json", - "version": "4c7ed550", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>0.1.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u2514\u2500\u2500 a-1.0.0a1" - ], - "module_name": "package_only_prereleases_in_range" - }, - { - "name": "requires-package-only-prereleases-in-range-global-opt-in", - "packages": [ - { - "name": "requires-package-only-prereleases-in-range-global-opt-in-a-8229237e", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-package-only-prereleases-in-range-global-opt-in-a-8229237e>0.1.0", - "name": "requires-package-only-prereleases-in-range-global-opt-in-a-8229237e", - "module_name": "requires_package_only_prereleases_in_range_global_opt_in_a_8229237e" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "requires-package-only-prereleases-in-range-global-opt-in-a-8229237e", - "version": "1.0.0a1", - "module_name": "requires_package_only_prereleases_in_range_global_opt_in_a_8229237e" - } - ], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": true, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a version of package `a` which only matches prerelease versions. They did not include a prerelease specifier for the package, but they opted into prereleases globally.", - "source": "foo/prereleases.json", - "version": "8229237e", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>0.1.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u2514\u2500\u2500 a-1.0.0a1" - ], - "module_name": "requires_package_only_prereleases_in_range_global_opt_in" - }, - { - "name": "requires-package-prerelease-and-final-any", - "packages": [ - { - "name": "requires-package-prerelease-and-final-any-a-7c7cec06", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-package-prerelease-and-final-any-a-7c7cec06", - "name": "requires-package-prerelease-and-final-any-a-7c7cec06", - "module_name": "requires_package_prerelease_and_final_any_a_7c7cec06" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "requires-package-prerelease-and-final-any-a-7c7cec06", - "version": "0.1.0", - "module_name": "requires_package_prerelease_and_final_any_a_7c7cec06" - } - ], - "explanation": "Since the user did not provide a prerelease specifier, the older stable version should be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires any version of package `a` has a prerelease version available and an older non-prerelease version.", - "source": "foo/prereleases.json", - "version": "7c7cec06", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u2514\u2500\u2500 a-1.0.0a1" - ], - "module_name": "requires_package_prerelease_and_final_any" - }, - { - "name": "package-prerelease-specified-only-final-available", - "packages": [ - { - "name": "package-prerelease-specified-only-final-available-a-1284cb1e", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.3.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-prerelease-specified-only-final-available-a-1284cb1e>=0.1.0a1", - "name": "package-prerelease-specified-only-final-available-a-1284cb1e", - "module_name": "package_prerelease_specified_only_final_available_a_1284cb1e" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-prerelease-specified-only-final-available-a-1284cb1e", - "version": "0.3.0", - "module_name": "package_prerelease_specified_only_final_available_a_1284cb1e" - } - ], - "explanation": "The latest stable version should be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a version of `a` with a prerelease specifier and only stable releases are available.", - "source": "foo/prereleases.json", - "version": "1284cb1e", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>=0.1.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-0.1.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-0.2.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.3.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u251c\u2500\u2500 a-0.2.0", - " \u2514\u2500\u2500 a-0.3.0" - ], - "module_name": "package_prerelease_specified_only_final_available" - }, - { - "name": "package-prerelease-specified-only-prerelease-available", - "packages": [ - { - "name": "package-prerelease-specified-only-prerelease-available-a-2b59d4b1", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.3.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-prerelease-specified-only-prerelease-available-a-2b59d4b1>=0.1.0a1", - "name": "package-prerelease-specified-only-prerelease-available-a-2b59d4b1", - "module_name": "package_prerelease_specified_only_prerelease_available_a_2b59d4b1" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-prerelease-specified-only-prerelease-available-a-2b59d4b1", - "version": "0.3.0a1", - "module_name": "package_prerelease_specified_only_prerelease_available_a_2b59d4b1" - } - ], - "explanation": "The latest prerelease version should be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a version of `a` with a prerelease specifier and only prerelease releases are available.", - "source": "foo/prereleases.json", - "version": "2b59d4b1", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>=0.1.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-0.1.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-0.2.0a1", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.3.0a1", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0a1", - " \u251c\u2500\u2500 a-0.2.0a1", - " \u2514\u2500\u2500 a-0.3.0a1" - ], - "module_name": "package_prerelease_specified_only_prerelease_available" - }, - { - "name": "package-prerelease-specified-mixed-available", - "packages": [ - { - "name": "package-prerelease-specified-mixed-available-a-4204a13b", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.3.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-prerelease-specified-mixed-available-a-4204a13b>=0.1.0a1", - "name": "package-prerelease-specified-mixed-available-a-4204a13b", - "module_name": "package_prerelease_specified_mixed_available_a_4204a13b" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-prerelease-specified-mixed-available-a-4204a13b", - "version": "1.0.0a1", - "module_name": "package_prerelease_specified_mixed_available_a_4204a13b" - } - ], - "explanation": "Since the user provided a prerelease specifier, the latest prerelease version should be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a version of `a` with a prerelease specifier and both prerelease and stable releases are available.", - "source": "foo/prereleases.json", - "version": "4204a13b", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>=0.1.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-0.1.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-0.2.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-0.3.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0a1", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u251c\u2500\u2500 a-0.2.0a1", - " \u251c\u2500\u2500 a-0.3.0", - " \u2514\u2500\u2500 a-1.0.0a1" - ], - "module_name": "package_prerelease_specified_mixed_available" - }, - { - "name": "package-multiple-prereleases-kinds", - "packages": [ - { - "name": "package-multiple-prereleases-kinds-a-ca392ea8", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0b1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0rc1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-multiple-prereleases-kinds-a-ca392ea8>=1.0.0a1", - "name": "package-multiple-prereleases-kinds-a-ca392ea8", - "module_name": "package_multiple_prereleases_kinds_a_ca392ea8" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-multiple-prereleases-kinds-a-ca392ea8", - "version": "1.0.0rc1", - "module_name": "package_multiple_prereleases_kinds_a_ca392ea8" - } - ], - "explanation": "Release candidates should be the highest precedence prerelease kind." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires `a` which has multiple prereleases available with different labels.", - "source": "foo/prereleases.json", - "version": "ca392ea8", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>=1.0.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0b1", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0rc1", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-1.0.0a1", - " \u251c\u2500\u2500 a-1.0.0b1", - " \u2514\u2500\u2500 a-1.0.0rc1" - ], - "module_name": "package_multiple_prereleases_kinds" - }, - { - "name": "package-multiple-prereleases-numbers", - "packages": [ - { - "name": "package-multiple-prereleases-numbers-a-b08385b3", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a2" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a3" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-multiple-prereleases-numbers-a-b08385b3>=1.0.0a1", - "name": "package-multiple-prereleases-numbers-a-b08385b3", - "module_name": "package_multiple_prereleases_numbers_a_b08385b3" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-multiple-prereleases-numbers-a-b08385b3", - "version": "1.0.0a3", - "module_name": "package_multiple_prereleases_numbers_a_b08385b3" - } - ], - "explanation": "The latest alpha version should be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires `a` which has multiple alphas available.", - "source": "foo/prereleases.json", - "version": "b08385b3", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>=1.0.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0a2", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0a3", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-1.0.0a1", - " \u251c\u2500\u2500 a-1.0.0a2", - " \u2514\u2500\u2500 a-1.0.0a3" - ], - "module_name": "package_multiple_prereleases_numbers" - }, - { - "name": "transitive-package-only-prereleases", - "packages": [ - { - "name": "transitive-package-only-prereleases-a-589ddff5", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-package-only-prereleases-b-589ddff5" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - } - ] - }, - { - "name": "transitive-package-only-prereleases-b-589ddff5", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-package-only-prereleases-a-589ddff5", - "name": "transitive-package-only-prereleases-a-589ddff5", - "module_name": "transitive_package_only_prereleases_a_589ddff5" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "transitive-package-only-prereleases-a-589ddff5", - "version": "0.1.0", - "module_name": "transitive_package_only_prereleases_a_589ddff5" - }, - { - "name": "transitive-package-only-prereleases-b-589ddff5", - "version": "1.0.0a1", - "module_name": "transitive_package_only_prereleases_b_589ddff5" - } - ], - "explanation": "Since there are only prerelease versions of `b` available, it should be selected even though the user did not opt-in to prereleases." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires any version of package `a` which requires `b` which only has prerelease versions available.", - "source": "foo/prereleases.json", - "version": "589ddff5", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-0.1.0", - "\u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 b", - " \u2514\u2500\u2500 b-1.0.0a1" - ], - "module_name": "transitive_package_only_prereleases" - }, - { - "name": "transitive-package-only-prereleases-in-range", - "packages": [ - { - "name": "transitive-package-only-prereleases-in-range-a-91d42144", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-package-only-prereleases-in-range-b-91d42144>0.1" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - } - ] - }, - { - "name": "transitive-package-only-prereleases-in-range-b-91d42144", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-package-only-prereleases-in-range-a-91d42144", - "name": "transitive-package-only-prereleases-in-range-a-91d42144", - "module_name": "transitive_package_only_prereleases_in_range_a_91d42144" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since there are stable versions of `b` available, the prerelease version should not be selected without explicit opt-in. The available version is excluded by the range requested by the user." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires package `a` which has a dependency on a package which only matches prerelease versions but they did not include a prerelease specifier.", - "source": "foo/prereleases.json", - "version": "91d42144", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-0.1.0", - "\u2502 \u2514\u2500\u2500 requires b>0.1", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-0.1.0", - " \u2514\u2500\u2500 b-1.0.0a1" - ], - "module_name": "transitive_package_only_prereleases_in_range" - }, - { - "name": "transitive-package-only-prereleases-in-range-opt-in", - "packages": [ - { - "name": "transitive-package-only-prereleases-in-range-opt-in-a-dc3b4feb", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-package-only-prereleases-in-range-opt-in-b-dc3b4feb>0.1" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - } - ] - }, - { - "name": "transitive-package-only-prereleases-in-range-opt-in-b-dc3b4feb", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-package-only-prereleases-in-range-opt-in-a-dc3b4feb", - "name": "transitive-package-only-prereleases-in-range-opt-in-a-dc3b4feb", - "module_name": "transitive_package_only_prereleases_in_range_opt_in_a_dc3b4feb" - }, - { - "requirement": "transitive-package-only-prereleases-in-range-opt-in-b-dc3b4feb>0.0.0a1", - "name": "transitive-package-only-prereleases-in-range-opt-in-b-dc3b4feb", - "module_name": "transitive_package_only_prereleases_in_range_opt_in_b_dc3b4feb" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "transitive-package-only-prereleases-in-range-opt-in-a-dc3b4feb", - "version": "0.1.0", - "module_name": "transitive_package_only_prereleases_in_range_opt_in_a_dc3b4feb" - }, - { - "name": "transitive-package-only-prereleases-in-range-opt-in-b-dc3b4feb", - "version": "1.0.0a1", - "module_name": "transitive_package_only_prereleases_in_range_opt_in_b_dc3b4feb" - } - ], - "explanation": "Since the user included a dependency on `b` with a prerelease specifier, a prerelease version can be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires package `a` which has a dependency on a package which only matches prerelease versions; the user has opted into allowing prereleases in `b` explicitly.", - "source": "foo/prereleases.json", - "version": "dc3b4feb", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u2502 \u2514\u2500\u2500 requires b>0.0.0a1", - "\u2502 \u2514\u2500\u2500 satisfied by b-0.1.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-0.1.0", - "\u2502 \u2514\u2500\u2500 requires b>0.1", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-0.1.0", - " \u2514\u2500\u2500 b-1.0.0a1" - ], - "module_name": "transitive_package_only_prereleases_in_range_opt_in" - }, - { - "name": "transitive-prerelease-and-stable-dependency", - "packages": [ - { - "name": "transitive-prerelease-and-stable-dependency-a-73a8bb29", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-prerelease-and-stable-dependency-c-73a8bb29==2.0.0b1" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-prerelease-and-stable-dependency-b-73a8bb29", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-prerelease-and-stable-dependency-c-73a8bb29<=3.0.0,>=1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-prerelease-and-stable-dependency-c-73a8bb29", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-prerelease-and-stable-dependency-a-73a8bb29", - "name": "transitive-prerelease-and-stable-dependency-a-73a8bb29", - "module_name": "transitive_prerelease_and_stable_dependency_a_73a8bb29" - }, - { - "requirement": "transitive-prerelease-and-stable-dependency-b-73a8bb29", - "name": "transitive-prerelease-and-stable-dependency-b-73a8bb29", - "module_name": "transitive_prerelease_and_stable_dependency_b_73a8bb29" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since the user did not explicitly opt-in to a prerelease, it cannot be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "A transitive dependency has both a prerelease and a stable selector, but can only be satisfied by a prerelease", - "source": "foo/prereleases.json", - "version": "73a8bb29", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c==2.0.0b1", - "\u2502 \u2514\u2500\u2500 satisfied by c-2.0.0b1", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c<=3.0.0,>=1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u2514\u2500\u2500 c-2.0.0b1" - ], - "module_name": "transitive_prerelease_and_stable_dependency" - }, - { - "name": "transitive-prerelease-and-stable-dependency-opt-in", - "packages": [ - { - "name": "transitive-prerelease-and-stable-dependency-opt-in-a-87b86d9c", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-prerelease-and-stable-dependency-opt-in-c-87b86d9c==2.0.0b1" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-prerelease-and-stable-dependency-opt-in-b-87b86d9c", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-prerelease-and-stable-dependency-opt-in-c-87b86d9c<=3.0.0,>=1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-prerelease-and-stable-dependency-opt-in-c-87b86d9c", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-prerelease-and-stable-dependency-opt-in-a-87b86d9c", - "name": "transitive-prerelease-and-stable-dependency-opt-in-a-87b86d9c", - "module_name": "transitive_prerelease_and_stable_dependency_opt_in_a_87b86d9c" - }, - { - "requirement": "transitive-prerelease-and-stable-dependency-opt-in-b-87b86d9c", - "name": "transitive-prerelease-and-stable-dependency-opt-in-b-87b86d9c", - "module_name": "transitive_prerelease_and_stable_dependency_opt_in_b_87b86d9c" - }, - { - "requirement": "transitive-prerelease-and-stable-dependency-opt-in-c-87b86d9c>=0.0.0a1", - "name": "transitive-prerelease-and-stable-dependency-opt-in-c-87b86d9c", - "module_name": "transitive_prerelease_and_stable_dependency_opt_in_c_87b86d9c" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "transitive-prerelease-and-stable-dependency-opt-in-a-87b86d9c", - "version": "1.0.0", - "module_name": "transitive_prerelease_and_stable_dependency_opt_in_a_87b86d9c" - }, - { - "name": "transitive-prerelease-and-stable-dependency-opt-in-b-87b86d9c", - "version": "1.0.0", - "module_name": "transitive_prerelease_and_stable_dependency_opt_in_b_87b86d9c" - }, - { - "name": "transitive-prerelease-and-stable-dependency-opt-in-c-87b86d9c", - "version": "2.0.0b1", - "module_name": "transitive_prerelease_and_stable_dependency_opt_in_c_87b86d9c" - } - ], - "explanation": "Since the user explicitly opted-in to a prerelease for `c`, it can be installed." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "A transitive dependency has both a prerelease and a stable selector, but can only be satisfied by a prerelease. The user includes an opt-in to prereleases of the transitive dependency.", - "source": "foo/prereleases.json", - "version": "87b86d9c", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u251c\u2500\u2500 requires b", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c>=0.0.0a1", - "\u2502 \u251c\u2500\u2500 satisfied by c-1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-2.0.0b1", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c==2.0.0b1", - "\u2502 \u2514\u2500\u2500 satisfied by c-2.0.0b1", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c<=3.0.0,>=1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u2514\u2500\u2500 c-2.0.0b1" - ], - "module_name": "transitive_prerelease_and_stable_dependency_opt_in" - }, - { - "name": "transitive-prerelease-and-stable-dependency-many-versions", - "packages": [ - { - "name": "transitive-prerelease-and-stable-dependency-many-versions-a-b550f888", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-prerelease-and-stable-dependency-many-versions-c-b550f888>=2.0.0b1" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-prerelease-and-stable-dependency-many-versions-b-b550f888", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-prerelease-and-stable-dependency-many-versions-c-b550f888<=3.0.0,>=1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-prerelease-and-stable-dependency-many-versions-c-b550f888", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a2" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a3" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a4" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a5" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a6" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a7" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a8" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a9" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b2" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b3" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b4" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b5" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b6" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b7" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b8" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b9" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-prerelease-and-stable-dependency-many-versions-a-b550f888", - "name": "transitive-prerelease-and-stable-dependency-many-versions-a-b550f888", - "module_name": "transitive_prerelease_and_stable_dependency_many_versions_a_b550f888" - }, - { - "requirement": "transitive-prerelease-and-stable-dependency-many-versions-b-b550f888", - "name": "transitive-prerelease-and-stable-dependency-many-versions-b-b550f888", - "module_name": "transitive_prerelease_and_stable_dependency_many_versions_b_b550f888" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since the user did not explicitly opt-in to a prerelease, it cannot be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "A transitive dependency has both a prerelease and a stable selector, but can only be satisfied by a prerelease. There are many prerelease versions.", - "source": "foo/prereleases.json", - "version": "b550f888", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c>=2.0.0b1", - "\u2502 \u251c\u2500\u2500 satisfied by c-2.0.0b1", - "\u2502 \u251c\u2500\u2500 satisfied by c-2.0.0b2", - "\u2502 \u251c\u2500\u2500 satisfied by c-2.0.0b3", - "\u2502 \u251c\u2500\u2500 satisfied by c-2.0.0b4", - "\u2502 \u251c\u2500\u2500 satisfied by c-2.0.0b5", - "\u2502 \u251c\u2500\u2500 satisfied by c-2.0.0b6", - "\u2502 \u251c\u2500\u2500 satisfied by c-2.0.0b7", - "\u2502 \u251c\u2500\u2500 satisfied by c-2.0.0b8", - "\u2502 \u2514\u2500\u2500 satisfied by c-2.0.0b9", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c<=3.0.0,>=1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u251c\u2500\u2500 c-2.0.0a1", - " \u251c\u2500\u2500 c-2.0.0a2", - " \u251c\u2500\u2500 c-2.0.0a3", - " \u251c\u2500\u2500 c-2.0.0a4", - " \u251c\u2500\u2500 c-2.0.0a5", - " \u251c\u2500\u2500 c-2.0.0a6", - " \u251c\u2500\u2500 c-2.0.0a7", - " \u251c\u2500\u2500 c-2.0.0a8", - " \u251c\u2500\u2500 c-2.0.0a9", - " \u251c\u2500\u2500 c-2.0.0b1", - " \u251c\u2500\u2500 c-2.0.0b2", - " \u251c\u2500\u2500 c-2.0.0b3", - " \u251c\u2500\u2500 c-2.0.0b4", - " \u251c\u2500\u2500 c-2.0.0b5", - " \u251c\u2500\u2500 c-2.0.0b6", - " \u251c\u2500\u2500 c-2.0.0b7", - " \u251c\u2500\u2500 c-2.0.0b8", - " \u2514\u2500\u2500 c-2.0.0b9" - ], - "module_name": "transitive_prerelease_and_stable_dependency_many_versions" - }, - { - "name": "transitive-prerelease-and-stable-dependency-many-versions-holes", - "packages": [ - { - "name": "transitive-prerelease-and-stable-dependency-many-versions-holes-a-34e5a2d3", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-prerelease-and-stable-dependency-many-versions-holes-c-34e5a2d3!=2.0.0a5,!=2.0.0a6,!=2.0.0a7,!=2.0.0b1,<2.0.0b5,>1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-prerelease-and-stable-dependency-many-versions-holes-b-34e5a2d3", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-prerelease-and-stable-dependency-many-versions-holes-c-34e5a2d3<=3.0.0,>=1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-prerelease-and-stable-dependency-many-versions-holes-c-34e5a2d3", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a2" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a3" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a4" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a5" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a6" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a7" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a8" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0a9" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b2" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b3" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b4" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b5" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b6" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b7" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b8" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0b9" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-prerelease-and-stable-dependency-many-versions-holes-a-34e5a2d3", - "name": "transitive-prerelease-and-stable-dependency-many-versions-holes-a-34e5a2d3", - "module_name": "transitive_prerelease_and_stable_dependency_many_versions_holes_a_34e5a2d3" - }, - { - "requirement": "transitive-prerelease-and-stable-dependency-many-versions-holes-b-34e5a2d3", - "name": "transitive-prerelease-and-stable-dependency-many-versions-holes-b-34e5a2d3", - "module_name": "transitive_prerelease_and_stable_dependency_many_versions_holes_b_34e5a2d3" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since the user did not explicitly opt-in to a prerelease, it cannot be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "A transitive dependency has both a prerelease and a stable selector, but can only be satisfied by a prerelease. There are many prerelease versions and some are excluded.", - "source": "foo/prereleases.json", - "version": "34e5a2d3", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c!=2.0.0a5,!=2.0.0a6,!=2.0.0a7,!=2.0.0b1,<2.0.0b5,>1.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c<=3.0.0,>=1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u251c\u2500\u2500 c-2.0.0a1", - " \u251c\u2500\u2500 c-2.0.0a2", - " \u251c\u2500\u2500 c-2.0.0a3", - " \u251c\u2500\u2500 c-2.0.0a4", - " \u251c\u2500\u2500 c-2.0.0a5", - " \u251c\u2500\u2500 c-2.0.0a6", - " \u251c\u2500\u2500 c-2.0.0a7", - " \u251c\u2500\u2500 c-2.0.0a8", - " \u251c\u2500\u2500 c-2.0.0a9", - " \u251c\u2500\u2500 c-2.0.0b1", - " \u251c\u2500\u2500 c-2.0.0b2", - " \u251c\u2500\u2500 c-2.0.0b3", - " \u251c\u2500\u2500 c-2.0.0b4", - " \u251c\u2500\u2500 c-2.0.0b5", - " \u251c\u2500\u2500 c-2.0.0b6", - " \u251c\u2500\u2500 c-2.0.0b7", - " \u251c\u2500\u2500 c-2.0.0b8", - " \u2514\u2500\u2500 c-2.0.0b9" - ], - "module_name": "transitive_prerelease_and_stable_dependency_many_versions_holes" - }, - { - "name": "package-only-prereleases-boundary", - "packages": [ - { - "name": "package-only-prereleases-boundary-a-dd941311", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.3.0a1" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-only-prereleases-boundary-a-dd941311<0.2.0", - "name": "package-only-prereleases-boundary-a-dd941311", - "module_name": "package_only_prereleases_boundary_a_dd941311" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-only-prereleases-boundary-a-dd941311", - "version": "0.1.0a1", - "module_name": "package_only_prereleases_boundary_a_dd941311" - } - ], - "explanation": "Since there are only prerelease versions of `a` available, a prerelease is allowed. Since the user did not explictly request a pre-release, pre-releases at the boundary should not be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a non-prerelease version of `a` which only has prerelease versions available. There are pre-releases on the boundary of their range.", - "source": "foo/prereleases.json", - "version": "dd941311", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a<0.2.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0a1", - " \u251c\u2500\u2500 a-0.2.0a1", - " \u2514\u2500\u2500 a-0.3.0a1" - ], - "module_name": "package_only_prereleases_boundary" - }, - { - "name": "package-prereleases-boundary", - "packages": [ - { - "name": "package-prereleases-boundary-a-16ba0350", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.3.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-prereleases-boundary-a-16ba0350<0.2.0", - "name": "package-prereleases-boundary-a-16ba0350", - "module_name": "package_prereleases_boundary_a_16ba0350" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-prereleases-boundary-a-16ba0350", - "version": "0.1.0", - "module_name": "package_prereleases_boundary_a_16ba0350" - } - ], - "explanation": "Since the user did not use a pre-release specifier, pre-releases at the boundary should not be selected even though pre-releases are allowed." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": true, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a non-prerelease version of `a` but has enabled pre-releases. There are pre-releases on the boundary of their range.", - "source": "foo/prereleases.json", - "version": "16ba0350", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a<0.2.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u251c\u2500\u2500 a-0.2.0a1", - " \u2514\u2500\u2500 a-0.3.0" - ], - "module_name": "package_prereleases_boundary" - }, - { - "name": "package-prereleases-global-boundary", - "packages": [ - { - "name": "package-prereleases-global-boundary-a-ca458d54", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.3.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-prereleases-global-boundary-a-ca458d54<0.2.0", - "name": "package-prereleases-global-boundary-a-ca458d54", - "module_name": "package_prereleases_global_boundary_a_ca458d54" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-prereleases-global-boundary-a-ca458d54", - "version": "0.1.0", - "module_name": "package_prereleases_global_boundary_a_ca458d54" - } - ], - "explanation": "Since the user did not use a pre-release specifier, pre-releases at the boundary should not be selected even though pre-releases are allowed." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": true, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a non-prerelease version of `a` but has enabled pre-releases. There are pre-releases on the boundary of their range.", - "source": "foo/prereleases.json", - "version": "ca458d54", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a<0.2.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u251c\u2500\u2500 a-0.2.0a1", - " \u2514\u2500\u2500 a-0.3.0" - ], - "module_name": "package_prereleases_global_boundary" - }, - { - "name": "package-prereleases-specifier-boundary", - "packages": [ - { - "name": "package-prereleases-specifier-boundary-a-ed960178", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0a1" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0a2" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.2.0a3" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.3.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-prereleases-specifier-boundary-a-ed960178<0.2.0a2", - "name": "package-prereleases-specifier-boundary-a-ed960178", - "module_name": "package_prereleases_specifier_boundary_a_ed960178" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-prereleases-specifier-boundary-a-ed960178", - "version": "0.2.0a1", - "module_name": "package_prereleases_specifier_boundary_a_ed960178" - } - ], - "explanation": "Since the user used a pre-release specifier, pre-releases at the boundary should be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a prerelease version of `a`. There are pre-releases on the boundary of their range.", - "source": "foo/prereleases.json", - "version": "ed960178", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a<0.2.0a2", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u251c\u2500\u2500 a-0.2.0", - " \u251c\u2500\u2500 a-0.2.0a1", - " \u251c\u2500\u2500 a-0.2.0a2", - " \u251c\u2500\u2500 a-0.2.0a3", - " \u2514\u2500\u2500 a-0.3.0" - ], - "module_name": "package_prereleases_specifier_boundary" - }, - { - "name": "requires-python-version-does-not-exist", - "packages": [ - { - "name": "requires-python-version-does-not-exist-a-60569166", - "versions": [ - { - "requires_python": ">=3.30", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-version-does-not-exist-a-60569166==1.0.0", - "name": "requires-python-version-does-not-exist-a-60569166", - "module_name": "requires_python_version_does_not_exist_a_60569166" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a Python version that does not exist", - "source": "foo/requires-python.json", - "version": "60569166", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.30 (incompatible with environment)" - ], - "module_name": "requires_python_version_does_not_exist" - }, - { - "name": "requires-python-version-less-than-current", - "packages": [ - { - "name": "requires-python-version-less-than-current-a-825af31b", - "versions": [ - { - "requires_python": "<=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-version-less-than-current-a-825af31b==1.0.0", - "name": "requires-python-version-less-than-current-a-825af31b", - "module_name": "requires_python_version_less_than_current_a_825af31b" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a Python version less than the current version", - "source": "foo/requires-python.json", - "version": "825af31b", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python<=3.8 (incompatible with environment)" - ], - "module_name": "requires_python_version_less_than_current" - }, - { - "name": "requires-python-version-greater-than-current", - "packages": [ - { - "name": "requires-python-version-greater-than-current-a-84f56c42", - "versions": [ - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-version-greater-than-current-a-84f56c42==1.0.0", - "name": "requires-python-version-greater-than-current-a-84f56c42", - "module_name": "requires_python_version_greater_than_current_a_84f56c42" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a Python version greater than the current version", - "source": "foo/requires-python.json", - "version": "84f56c42", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)" - ], - "module_name": "requires_python_version_greater_than_current" - }, - { - "name": "requires-python-version-greater-than-current-patch", - "packages": [ - { - "name": "requires-python-version-greater-than-current-patch-a-b8692f29", - "versions": [ - { - "requires_python": ">=3.8.14", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-version-greater-than-current-patch-a-b8692f29==1.0.0", - "name": "requires-python-version-greater-than-current-patch-a-b8692f29", - "module_name": "requires_python_version_greater_than_current_patch_a_b8692f29" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8.12", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a Python version with a patch version greater than the current patch version", - "source": "foo/requires-python.json", - "version": "b8692f29", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8.12", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.8.14 (incompatible with environment)" - ], - "module_name": "requires_python_version_greater_than_current_patch" - }, - { - "name": "requires-python-version-greater-than-current-many", - "packages": [ - { - "name": "requires-python-version-greater-than-current-many-a-c3f96666", - "versions": [ - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.1.0" - }, - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.2.0" - }, - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.3.0" - }, - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.4.0" - }, - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.5.0" - }, - { - "requires_python": ">=3.11", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - }, - { - "requires_python": ">=3.11", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.1.0" - }, - { - "requires_python": ">=3.11", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.2.0" - }, - { - "requires_python": ">=3.11", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.3.0" - }, - { - "requires_python": ">=3.11", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.4.0" - }, - { - "requires_python": ">=3.11", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.5.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-version-greater-than-current-many-a-c3f96666==1.0.0", - "name": "requires-python-version-greater-than-current-many-a-c3f96666", - "module_name": "requires_python_version_greater_than_current_many_a_c3f96666" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which has many versions which all require a Python version greater than the current version", - "source": "foo/requires-python.json", - "version": "c3f96666", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-2.0.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u251c\u2500\u2500 a-2.1.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u251c\u2500\u2500 a-2.2.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u251c\u2500\u2500 a-2.3.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u251c\u2500\u2500 a-2.4.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u251c\u2500\u2500 a-2.5.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u251c\u2500\u2500 a-3.0.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.11 (incompatible with environment)", - " \u251c\u2500\u2500 a-3.1.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.11 (incompatible with environment)", - " \u251c\u2500\u2500 a-3.2.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.11 (incompatible with environment)", - " \u251c\u2500\u2500 a-3.3.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.11 (incompatible with environment)", - " \u251c\u2500\u2500 a-3.4.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.11 (incompatible with environment)", - " \u2514\u2500\u2500 a-3.5.0", - " \u2514\u2500\u2500 requires python>=3.11 (incompatible with environment)" - ], - "module_name": "requires_python_version_greater_than_current_many" - }, - { - "name": "requires-python-version-greater-than-current-backtrack", - "packages": [ - { - "name": "requires-python-version-greater-than-current-backtrack-a-38bdbe97", - "versions": [ - { - "requires_python": ">=3.9", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.11", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - }, - { - "requires_python": ">=3.12", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "4.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-version-greater-than-current-backtrack-a-38bdbe97", - "name": "requires-python-version-greater-than-current-backtrack-a-38bdbe97", - "module_name": "requires_python_version_greater_than_current_backtrack_a_38bdbe97" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "requires-python-version-greater-than-current-backtrack-a-38bdbe97", - "version": "1.0.0", - "module_name": "requires_python_version_greater_than_current_backtrack_a_38bdbe97" - } - ], - "explanation": null - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package where recent versions require a Python version greater than the current version, but an older version is compatible.", - "source": "foo/requires-python.json", - "version": "38bdbe97", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-2.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-3.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-4.0.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-1.0.0", - " \u251c\u2500\u2500 a-2.0.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u251c\u2500\u2500 a-3.0.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.11 (incompatible with environment)", - " \u2514\u2500\u2500 a-4.0.0", - " \u2514\u2500\u2500 requires python>=3.12 (incompatible with environment)" - ], - "module_name": "requires_python_version_greater_than_current_backtrack" - }, - { - "name": "requires-python-version-greater-than-current-excluded", - "packages": [ - { - "name": "requires-python-version-greater-than-current-excluded-a-289ae72d", - "versions": [ - { - "requires_python": ">=3.9", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - }, - { - "requires_python": ">=3.11", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "3.0.0" - }, - { - "requires_python": ">=3.12", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "4.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-version-greater-than-current-excluded-a-289ae72d>=2.0.0", - "name": "requires-python-version-greater-than-current-excluded-a-289ae72d", - "module_name": "requires_python_version_greater_than_current_excluded_a_289ae72d" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package where recent versions require a Python version greater than the current version, but an excluded older version is compatible.", - "source": "foo/requires-python.json", - "version": "289ae72d", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>=2.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-2.0.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-3.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-4.0.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-1.0.0", - " \u251c\u2500\u2500 a-2.0.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u251c\u2500\u2500 a-3.0.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.11 (incompatible with environment)", - " \u2514\u2500\u2500 a-4.0.0", - " \u2514\u2500\u2500 requires python>=3.12 (incompatible with environment)" - ], - "module_name": "requires_python_version_greater_than_current_excluded" - }, - { - "name": "requires-incompatible-python-version-compatible-override", - "packages": [ - { - "name": "requires-incompatible-python-version-compatible-override-a-039e6393", - "versions": [ - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-incompatible-python-version-compatible-override-a-039e6393==1.0.0", - "name": "requires-incompatible-python-version-compatible-override-a-039e6393", - "module_name": "requires_incompatible_python_version_compatible_override_a_039e6393" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "requires-incompatible-python-version-compatible-override-a-039e6393", - "version": "1.0.0", - "module_name": "requires_incompatible_python_version_compatible_override_a_039e6393" - } - ], - "explanation": null - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": "3.11", - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a Python version greater than the current version, but they use an alternative Python version for package resolution.", - "source": "foo/requires-python.json", - "version": "039e6393", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)" - ], - "module_name": "requires_incompatible_python_version_compatible_override" - }, - { - "name": "requires-compatible-python-version-incompatible-override", - "packages": [ - { - "name": "requires-compatible-python-version-incompatible-override-a-d6900949", - "versions": [ - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-compatible-python-version-incompatible-override-a-d6900949==1.0.0", - "name": "requires-compatible-python-version-incompatible-override-a-d6900949", - "module_name": "requires_compatible_python_version_incompatible_override_a_d6900949" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.11", - "additional_python": [] - }, - "resolver_options": { - "python": "3.9", - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a compatible Python version, but they request an incompatible Python version for package resolution.", - "source": "foo/requires-python.json", - "version": "d6900949", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.11", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.10" - ], - "module_name": "requires_compatible_python_version_incompatible_override" - }, - { - "name": "requires-incompatible-python-version-compatible-override-no-wheels", - "packages": [ - { - "name": "requires-incompatible-python-version-compatible-override-no-wheels-a-47be0a82", - "versions": [ - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": false, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-incompatible-python-version-compatible-override-no-wheels-a-47be0a82==1.0.0", - "name": "requires-incompatible-python-version-compatible-override-no-wheels-a-47be0a82", - "module_name": "requires_incompatible_python_version_compatible_override_no_wheels_a_47be0a82" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since there are no wheels for the package and it is not compatible with the local installation, we cannot build the source distribution to determine its dependencies." - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": "3.11", - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a incompatible Python version, but they request a compatible Python version for package resolution. There are only source distributions available for the package.", - "source": "foo/requires-python.json", - "version": "47be0a82", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)" - ], - "module_name": "requires_incompatible_python_version_compatible_override_no_wheels" - }, - { - "name": "requires-incompatible-python-version-compatible-override-no-wheels-available-system", - "packages": [ - { - "name": "requires-incompatible-python-version-compatible-override-no-wheels-available-system-a-f9eee6c7", - "versions": [ - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": false, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-incompatible-python-version-compatible-override-no-wheels-available-system-a-f9eee6c7==1.0.0", - "name": "requires-incompatible-python-version-compatible-override-no-wheels-available-system-a-f9eee6c7", - "module_name": "requires_incompatible_python_version_compatible_override_no_wheels_available_system_a_f9eee6c7" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "requires-incompatible-python-version-compatible-override-no-wheels-available-system-a-f9eee6c7", - "version": "1.0.0", - "module_name": "requires_incompatible_python_version_compatible_override_no_wheels_available_system_a_f9eee6c7" - } - ], - "explanation": "Since there is a compatible Python version available on the system, it should be used to build the source distributions." - }, - "environment": { - "python": "3.9", - "additional_python": [ - "3.11" - ] - }, - "resolver_options": { - "python": "3.11", - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a incompatible Python version, but they request a compatible Python version for package resolution. There are only source distributions available for the package. The user has a compatible Python version installed elsewhere on their system.", - "source": "foo/requires-python.json", - "version": "f9eee6c7", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u251c\u2500\u2500 python3.11", - "\u2502 \u2514\u2500\u2500 python3.9 (active)", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)" - ], - "module_name": "requires_incompatible_python_version_compatible_override_no_wheels_available_system" - }, - { - "name": "requires-incompatible-python-version-compatible-override-no-compatible-wheels", - "packages": [ - { - "name": "requires-incompatible-python-version-compatible-override-no-compatible-wheels-a-e8742545", - "versions": [ - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [ - "foo-none-any" - ], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-incompatible-python-version-compatible-override-no-compatible-wheels-a-e8742545==1.0.0", - "name": "requires-incompatible-python-version-compatible-override-no-compatible-wheels-a-e8742545", - "module_name": "requires_incompatible_python_version_compatible_override_no_compatible_wheels_a_e8742545" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since there are no compatible wheels for the package and it is not compatible with the local installation, we cannot build the source distribution to determine its dependencies." - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": "3.11", - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a incompatible Python version, but they request a compatible Python version for package resolution. There is a wheel available for the package, but it does not have a compatible tag.", - "source": "foo/requires-python.json", - "version": "e8742545", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)" - ], - "module_name": "requires_incompatible_python_version_compatible_override_no_compatible_wheels" - }, - { - "name": "requires-incompatible-python-version-compatible-override-other-wheel", - "packages": [ - { - "name": "requires-incompatible-python-version-compatible-override-other-wheel-a-a1d23099", - "versions": [ - { - "requires_python": ">=3.10", - "requires": [], - "extras": [], - "sdist": true, - "wheel": false, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.12", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-incompatible-python-version-compatible-override-other-wheel-a-a1d23099", - "name": "requires-incompatible-python-version-compatible-override-other-wheel-a-a1d23099", - "module_name": "requires_incompatible_python_version_compatible_override_other_wheel_a_a1d23099" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since there are no wheels for the version of the package compatible with the target and it is not compatible with the local installation, we cannot build the source distribution to determine its dependencies. The other version has wheels available, but is not compatible with the target version and cannot be used." - }, - "environment": { - "python": "3.9", - "additional_python": [] - }, - "resolver_options": { - "python": "3.11", - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a incompatible Python version, but they request a compatible Python version for package resolution. There are only source distributions available for the compatible version of the package, but there is an incompatible version with a wheel available.", - "source": "foo/requires-python.json", - "version": "a1d23099", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.9", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u251c\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-2.0.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-1.0.0", - " \u2502 \u2514\u2500\u2500 requires python>=3.10 (incompatible with environment)", - " \u2514\u2500\u2500 a-2.0.0", - " \u2514\u2500\u2500 requires python>=3.12 (incompatible with environment)" - ], - "module_name": "requires_incompatible_python_version_compatible_override_other_wheel" - }, - { - "name": "requires-python-patch-version-override-no-patch", - "packages": [ - { - "name": "requires-python-patch-version-override-no-patch-a-0449cf16", - "versions": [ - { - "requires_python": ">=3.8.4", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-patch-version-override-no-patch-a-0449cf16==1.0.0", - "name": "requires-python-patch-version-override-no-patch-a-0449cf16", - "module_name": "requires_python_patch_version_override_no_patch_a_0449cf16" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since the resolver is asked to solve with 3.8, the minimum compatible Python requirement is treated as 3.8.0." - }, - "environment": { - "python": "3.8.18", - "additional_python": [] - }, - "resolver_options": { - "python": "3.8", - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a Python version with a patch version and the user provides a target version without a patch version.", - "source": "foo/requires-python.json", - "version": "0449cf16", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8.18", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.8.4" - ], - "module_name": "requires_python_patch_version_override_no_patch" - }, - { - "name": "requires-python-patch-version-override-patch-compatible", - "packages": [ - { - "name": "requires-python-patch-version-override-patch-compatible-a-d65487b2", - "versions": [ - { - "requires_python": ">=3.8.0", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-python-patch-version-override-patch-compatible-a-d65487b2==1.0.0", - "name": "requires-python-patch-version-override-patch-compatible-a-d65487b2", - "module_name": "requires_python_patch_version_override_patch_compatible_a_d65487b2" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "requires-python-patch-version-override-patch-compatible-a-d65487b2", - "version": "1.0.0", - "module_name": "requires_python_patch_version_override_patch_compatible_a_d65487b2" - } - ], - "explanation": null - }, - "environment": { - "python": "3.8.18", - "additional_python": [] - }, - "resolver_options": { - "python": "3.8.0", - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a package which requires a Python version with a patch version and the user provides a target version with a compatible patch version.", - "source": "foo/requires-python.json", - "version": "d65487b2", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8.18", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a==1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0", - " \u2514\u2500\u2500 requires python>=3.8.0" - ], - "module_name": "requires_python_patch_version_override_patch_compatible" - }, - { - "name": "specific-tag-and-default", - "packages": [ - { - "name": "specific-tag-and-default-a-0336e09c", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [ - "cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64", - "py3-none-any" - ], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "specific-tag-and-default-a-0336e09c", - "name": "specific-tag-and-default-a-0336e09c", - "module_name": "specific_tag_and_default_a_0336e09c" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "A wheel for a specific platform is available alongside the default.", - "source": "foo/wheels.json", - "version": "0336e09c", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "specific_tag_and_default" - }, - { - "name": "only-wheels", - "packages": [ - { - "name": "only-wheels-a-f756804e", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": false, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "only-wheels-a-f756804e", - "name": "only-wheels-a-f756804e", - "module_name": "only_wheels_a_f756804e" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "No source distributions are available, only wheels.", - "source": "foo/wheels.json", - "version": "f756804e", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "only_wheels" - }, - { - "name": "no-wheels", - "packages": [ - { - "name": "no-wheels-a-0bb7827a", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": false, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "no-wheels-a-0bb7827a", - "name": "no-wheels-a-0bb7827a", - "module_name": "no_wheels_a_0bb7827a" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "No wheels are available, only source distributions.", - "source": "foo/wheels.json", - "version": "0bb7827a", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "no_wheels" - }, - { - "name": "no-wheels-with-matching-platform", - "packages": [ - { - "name": "no-wheels-with-matching-platform-a-c1494f5f", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [ - "py3-any-macosx_10_0_ppc64" - ], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "no-wheels-with-matching-platform-a-c1494f5f", - "name": "no-wheels-with-matching-platform-a-c1494f5f", - "module_name": "no_wheels_with_matching_platform_a_c1494f5f" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "No wheels with matching platform tags are available, just source distributions.", - "source": "foo/wheels.json", - "version": "c1494f5f", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "no_wheels_with_matching_platform" - }, - { - "name": "no-sdist-no-wheels-with-matching-platform", - "packages": [ - { - "name": "no-sdist-no-wheels-with-matching-platform-a-46f0c229", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": false, - "wheel": true, - "yanked": false, - "wheel_tags": [ - "py3-none-macosx_10_0_ppc64" - ], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "no-sdist-no-wheels-with-matching-platform-a-46f0c229", - "name": "no-sdist-no-wheels-with-matching-platform-a-46f0c229", - "module_name": "no_sdist_no_wheels_with_matching_platform_a_46f0c229" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "No wheels with matching platform tags are available, nor are any source distributions available", - "source": "foo/wheels.json", - "version": "46f0c229", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "no_sdist_no_wheels_with_matching_platform" - }, - { - "name": "no-sdist-no-wheels-with-matching-python", - "packages": [ - { - "name": "no-sdist-no-wheels-with-matching-python-a-7b1e0ba3", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": false, - "wheel": true, - "yanked": false, - "wheel_tags": [ - "jy27-none-any" - ], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "no-sdist-no-wheels-with-matching-python-a-7b1e0ba3", - "name": "no-sdist-no-wheels-with-matching-python-a-7b1e0ba3", - "module_name": "no_sdist_no_wheels_with_matching_python_a_7b1e0ba3" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "No wheels with matching Python tags are available, nor are any source distributions available", - "source": "foo/wheels.json", - "version": "7b1e0ba3", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "no_sdist_no_wheels_with_matching_python" - }, - { - "name": "no-sdist-no-wheels-with-matching-abi", - "packages": [ - { - "name": "no-sdist-no-wheels-with-matching-abi-a-2f8e7202", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": false, - "wheel": true, - "yanked": false, - "wheel_tags": [ - "py3-MMMMMM-any" - ], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "no-sdist-no-wheels-with-matching-abi-a-2f8e7202", - "name": "no-sdist-no-wheels-with-matching-abi-a-2f8e7202", - "module_name": "no_sdist_no_wheels_with_matching_abi_a_2f8e7202" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "No wheels with matching ABI tags are available, nor are any source distributions available", - "source": "foo/wheels.json", - "version": "2f8e7202", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "no_sdist_no_wheels_with_matching_abi" - }, - { - "name": "no-wheels-no-build", - "packages": [ - { - "name": "no-wheels-no-build-a-1db1b462", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": false, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "no-wheels-no-build-a-1db1b462", - "name": "no-wheels-no-build-a-1db1b462", - "module_name": "no_wheels_no_build_a_1db1b462" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [ - "a" - ], - "no_binary": [] - }, - "template": "package", - "description": "No wheels are available, only source distributions but the user has disabled builds.", - "source": "foo/wheels.json", - "version": "1db1b462", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "no_wheels_no_build" - }, - { - "name": "only-wheels-no-binary", - "packages": [ - { - "name": "only-wheels-no-binary-a-859a4cea", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": false, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "only-wheels-no-binary-a-859a4cea", - "name": "only-wheels-no-binary-a-859a4cea", - "module_name": "only_wheels_no_binary_a_859a4cea" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": null - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [ - "a" - ] - }, - "template": "package", - "description": "No source distributions are available, only wheels but the user has disabled using pre-built binaries.", - "source": "foo/wheels.json", - "version": "859a4cea", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "only_wheels_no_binary" - }, - { - "name": "no-build", - "packages": [ - { - "name": "no-build-a-bb7d81b8", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "no-build-a-bb7d81b8", - "name": "no-build-a-bb7d81b8", - "module_name": "no_build_a_bb7d81b8" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [], - "explanation": "The wheel should be used for install" - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [ - "a" - ], - "no_binary": [] - }, - "template": "package", - "description": "Both wheels and source distributions are available, and the user has disabled builds.", - "source": "foo/wheels.json", - "version": "bb7d81b8", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "no_build" - }, - { - "name": "no-binary", - "packages": [ - { - "name": "no-binary-a-b1d20084", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "no-binary-a-b1d20084", - "name": "no-binary-a-b1d20084", - "module_name": "no_binary_a_b1d20084" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [], - "explanation": "The source distribution should be used for install" - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [ - "a" - ] - }, - "template": "package", - "description": "Both wheels and source distributions are available, and the user has disabled binaries.", - "source": "foo/wheels.json", - "version": "b1d20084", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0" - ], - "module_name": "no_binary" - }, - { - "name": "package-only-yanked", - "packages": [ - { - "name": "package-only-yanked-a-2919761d", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-only-yanked-a-2919761d", - "name": "package-only-yanked-a-2919761d", - "module_name": "package_only_yanked_a_2919761d" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Yanked versions should not be installed, even if they are the only one available." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires any version of package `a` which only has yanked versions available.", - "source": "foo/yanked.json", - "version": "2919761d", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u2514\u2500\u2500 a-1.0.0 (yanked)" - ], - "module_name": "package_only_yanked" - }, - { - "name": "package-only-yanked-in-range", - "packages": [ - { - "name": "package-only-yanked-in-range-a-f1ab2a3f", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-only-yanked-in-range-a-f1ab2a3f>0.1.0", - "name": "package-only-yanked-in-range-a-f1ab2a3f", - "module_name": "package_only_yanked_in_range_a_f1ab2a3f" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since there are other versions of `a` available, yanked versions should not be selected without explicit opt-in." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires a version of package `a` which only matches yanked versions.", - "source": "foo/yanked.json", - "version": "f1ab2a3f", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>0.1.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u2514\u2500\u2500 a-1.0.0 (yanked)" - ], - "module_name": "package_only_yanked_in_range" - }, - { - "name": "requires-package-yanked-and-unyanked-any", - "packages": [ - { - "name": "requires-package-yanked-and-unyanked-any-a-c1d7f24e", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "requires-package-yanked-and-unyanked-any-a-c1d7f24e", - "name": "requires-package-yanked-and-unyanked-any-a-c1d7f24e", - "module_name": "requires_package_yanked_and_unyanked_any_a_c1d7f24e" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "requires-package-yanked-and-unyanked-any-a-c1d7f24e", - "version": "0.1.0", - "module_name": "requires_package_yanked_and_unyanked_any_a_c1d7f24e" - } - ], - "explanation": "The unyanked version should be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires any version of package `a` has a yanked version available and an older unyanked version.", - "source": "foo/yanked.json", - "version": "c1d7f24e", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u2514\u2500\u2500 a-1.0.0 (yanked)" - ], - "module_name": "requires_package_yanked_and_unyanked_any" - }, - { - "name": "package-yanked-specified-mixed-available", - "packages": [ - { - "name": "package-yanked-specified-mixed-available-a-e9d957b6", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "0.2.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.3.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "package-yanked-specified-mixed-available-a-e9d957b6>=0.1.0", - "name": "package-yanked-specified-mixed-available-a-e9d957b6", - "module_name": "package_yanked_specified_mixed_available_a_e9d957b6" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "package-yanked-specified-mixed-available-a-e9d957b6", - "version": "0.3.0", - "module_name": "package_yanked_specified_mixed_available_a_e9d957b6" - } - ], - "explanation": "The latest unyanked version should be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires any version of `a` and both yanked and unyanked releases are available.", - "source": "foo/yanked.json", - "version": "e9d957b6", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a>=0.1.0", - "\u2502 \u251c\u2500\u2500 satisfied by a-0.1.0", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.3.0", - "\u2514\u2500\u2500 a", - " \u251c\u2500\u2500 a-0.1.0", - " \u251c\u2500\u2500 a-0.2.0 (yanked)", - " \u251c\u2500\u2500 a-0.3.0", - " \u2514\u2500\u2500 a-1.0.0 (yanked)" - ], - "module_name": "package_yanked_specified_mixed_available" - }, - { - "name": "transitive-package-only-yanked", - "packages": [ - { - "name": "transitive-package-only-yanked-a-fbebea19", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-package-only-yanked-b-fbebea19" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - } - ] - }, - { - "name": "transitive-package-only-yanked-b-fbebea19", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-package-only-yanked-a-fbebea19", - "name": "transitive-package-only-yanked-a-fbebea19", - "module_name": "transitive_package_only_yanked_a_fbebea19" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Yanked versions should not be installed, even if they are the only one available." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires any version of package `a` which requires `b` which only has yanked versions available.", - "source": "foo/yanked.json", - "version": "fbebea19", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-0.1.0", - "\u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 b", - " \u2514\u2500\u2500 b-1.0.0 (yanked)" - ], - "module_name": "transitive_package_only_yanked" - }, - { - "name": "transitive-package-only-yanked-in-range", - "packages": [ - { - "name": "transitive-package-only-yanked-in-range-a-e2eb8cbc", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-package-only-yanked-in-range-b-e2eb8cbc>0.1" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - } - ] - }, - { - "name": "transitive-package-only-yanked-in-range-b-e2eb8cbc", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-package-only-yanked-in-range-a-e2eb8cbc", - "name": "transitive-package-only-yanked-in-range-a-e2eb8cbc", - "module_name": "transitive_package_only_yanked_in_range_a_e2eb8cbc" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Yanked versions should not be installed, even if they are the only valid version in a range." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires package `a` which has a dependency on a package which only matches yanked versions.", - "source": "foo/yanked.json", - "version": "e2eb8cbc", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u2514\u2500\u2500 requires a", - "\u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-0.1.0", - "\u2502 \u2514\u2500\u2500 requires b>0.1", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-0.1.0", - " \u2514\u2500\u2500 b-1.0.0 (yanked)" - ], - "module_name": "transitive_package_only_yanked_in_range" - }, - { - "name": "transitive-package-only-yanked-in-range-opt-in", - "packages": [ - { - "name": "transitive-package-only-yanked-in-range-opt-in-a-637e27eb", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-package-only-yanked-in-range-opt-in-b-637e27eb>0.1" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - } - ] - }, - { - "name": "transitive-package-only-yanked-in-range-opt-in-b-637e27eb", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "0.1.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-package-only-yanked-in-range-opt-in-a-637e27eb", - "name": "transitive-package-only-yanked-in-range-opt-in-a-637e27eb", - "module_name": "transitive_package_only_yanked_in_range_opt_in_a_637e27eb" - }, - { - "requirement": "transitive-package-only-yanked-in-range-opt-in-b-637e27eb==1.0.0", - "name": "transitive-package-only-yanked-in-range-opt-in-b-637e27eb", - "module_name": "transitive_package_only_yanked_in_range_opt_in_b_637e27eb" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "transitive-package-only-yanked-in-range-opt-in-a-637e27eb", - "version": "0.1.0", - "module_name": "transitive_package_only_yanked_in_range_opt_in_a_637e27eb" - }, - { - "name": "transitive-package-only-yanked-in-range-opt-in-b-637e27eb", - "version": "1.0.0", - "module_name": "transitive_package_only_yanked_in_range_opt_in_b_637e27eb" - } - ], - "explanation": "Since the user included a dependency on `b` with an exact specifier, the yanked version can be selected." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "The user requires package `a` which has a dependency on a package which only matches yanked versions; the user has opted into allowing the yanked version of `b` explicitly.", - "source": "foo/yanked.json", - "version": "637e27eb", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-0.1.0", - "\u2502 \u2514\u2500\u2500 requires b==1.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-0.1.0", - "\u2502 \u2514\u2500\u2500 requires b>0.1", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u2514\u2500\u2500 b", - " \u251c\u2500\u2500 b-0.1.0", - " \u2514\u2500\u2500 b-1.0.0 (yanked)" - ], - "module_name": "transitive_package_only_yanked_in_range_opt_in" - }, - { - "name": "transitive-yanked-and-unyanked-dependency", - "packages": [ - { - "name": "transitive-yanked-and-unyanked-dependency-a-0abad3b6", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-yanked-and-unyanked-dependency-c-0abad3b6==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-yanked-and-unyanked-dependency-b-0abad3b6", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-yanked-and-unyanked-dependency-c-0abad3b6<=3.0.0,>=1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-yanked-and-unyanked-dependency-c-0abad3b6", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-yanked-and-unyanked-dependency-a-0abad3b6", - "name": "transitive-yanked-and-unyanked-dependency-a-0abad3b6", - "module_name": "transitive_yanked_and_unyanked_dependency_a_0abad3b6" - }, - { - "requirement": "transitive-yanked-and-unyanked-dependency-b-0abad3b6", - "name": "transitive-yanked-and-unyanked-dependency-b-0abad3b6", - "module_name": "transitive_yanked_and_unyanked_dependency_b_0abad3b6" - } - ] - }, - "expected": { - "satisfiable": false, - "packages": [], - "explanation": "Since the user did not explicitly select the yanked version, it cannot be used." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "A transitive dependency has both a yanked and an unyanked version, but can only be satisfied by a yanked version", - "source": "foo/yanked.json", - "version": "0abad3b6", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires b", - "\u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c==2.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c<=3.0.0,>=1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u2514\u2500\u2500 c-2.0.0 (yanked)" - ], - "module_name": "transitive_yanked_and_unyanked_dependency" - }, - { - "name": "transitive-yanked-and-unyanked-dependency-opt-in", - "packages": [ - { - "name": "transitive-yanked-and-unyanked-dependency-opt-in-a-b2a53fbd", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-yanked-and-unyanked-dependency-opt-in-c-b2a53fbd==2.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-yanked-and-unyanked-dependency-opt-in-b-b2a53fbd", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [ - "transitive-yanked-and-unyanked-dependency-opt-in-c-b2a53fbd<=3.0.0,>=1.0.0" - ], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - } - ] - }, - { - "name": "transitive-yanked-and-unyanked-dependency-opt-in-c-b2a53fbd", - "versions": [ - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": false, - "wheel_tags": [], - "description": "", - "version": "1.0.0" - }, - { - "requires_python": ">=3.8", - "requires": [], - "extras": [], - "sdist": true, - "wheel": true, - "yanked": true, - "wheel_tags": [], - "description": "", - "version": "2.0.0" - } - ] - } - ], - "root": { - "requires_python": ">=3.8", - "requires": [ - { - "requirement": "transitive-yanked-and-unyanked-dependency-opt-in-a-b2a53fbd", - "name": "transitive-yanked-and-unyanked-dependency-opt-in-a-b2a53fbd", - "module_name": "transitive_yanked_and_unyanked_dependency_opt_in_a_b2a53fbd" - }, - { - "requirement": "transitive-yanked-and-unyanked-dependency-opt-in-b-b2a53fbd", - "name": "transitive-yanked-and-unyanked-dependency-opt-in-b-b2a53fbd", - "module_name": "transitive_yanked_and_unyanked_dependency_opt_in_b_b2a53fbd" - }, - { - "requirement": "transitive-yanked-and-unyanked-dependency-opt-in-c-b2a53fbd==2.0.0", - "name": "transitive-yanked-and-unyanked-dependency-opt-in-c-b2a53fbd", - "module_name": "transitive_yanked_and_unyanked_dependency_opt_in_c_b2a53fbd" - } - ] - }, - "expected": { - "satisfiable": true, - "packages": [ - { - "name": "transitive-yanked-and-unyanked-dependency-opt-in-a-b2a53fbd", - "version": "1.0.0", - "module_name": "transitive_yanked_and_unyanked_dependency_opt_in_a_b2a53fbd" - }, - { - "name": "transitive-yanked-and-unyanked-dependency-opt-in-b-b2a53fbd", - "version": "1.0.0", - "module_name": "transitive_yanked_and_unyanked_dependency_opt_in_b_b2a53fbd" - }, - { - "name": "transitive-yanked-and-unyanked-dependency-opt-in-c-b2a53fbd", - "version": "2.0.0", - "module_name": "transitive_yanked_and_unyanked_dependency_opt_in_c_b2a53fbd" - } - ], - "explanation": "Since the user explicitly selected the yanked version of `c`, it can be installed." - }, - "environment": { - "python": "3.8", - "additional_python": [] - }, - "resolver_options": { - "python": null, - "prereleases": false, - "no_build": [], - "no_binary": [] - }, - "template": "package", - "description": "A transitive dependency has both a yanked and an unyanked version, but can only be satisfied by a yanked. The user includes an opt-in to the yanked version of the transitive dependency.", - "source": "foo/yanked.json", - "version": "b2a53fbd", - "tree": [ - "\u251c\u2500\u2500 environment", - "\u2502 \u2514\u2500\u2500 python3.8", - "\u251c\u2500\u2500 root", - "\u2502 \u251c\u2500\u2500 requires a", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by a-1.0.0", - "\u2502 \u251c\u2500\u2500 requires b", - "\u2502 \u2502 \u2514\u2500\u2500 satisfied by b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c==2.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u251c\u2500\u2500 a", - "\u2502 \u2514\u2500\u2500 a-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c==2.0.0", - "\u2502 \u2514\u2500\u2500 unsatisfied: no matching version", - "\u251c\u2500\u2500 b", - "\u2502 \u2514\u2500\u2500 b-1.0.0", - "\u2502 \u2514\u2500\u2500 requires c<=3.0.0,>=1.0.0", - "\u2502 \u2514\u2500\u2500 satisfied by c-1.0.0", - "\u2514\u2500\u2500 c", - " \u251c\u2500\u2500 c-1.0.0", - " \u2514\u2500\u2500 c-2.0.0 (yanked)" - ], - "module_name": "transitive_yanked_and_unyanked_dependency_opt_in" - } - ] - } + 'exit_code': 1, + 'stderr': ''' + File 'foo' not found. ''', + 'stdout': '', }) # ---