diff --git a/src/pickley/__init__.py b/src/pickley/__init__.py index 6f5c15e..896fd11 100644 --- a/src/pickley/__init__.py +++ b/src/pickley/__init__.py @@ -1103,7 +1103,10 @@ class VenvSettings: """Allows to define in one place how package_manager and python installation are to be resolved""" def __init__(self, canonical_name, python_spec, package_manager, uv_seed=None): - self.python_spec = python_spec or CFG.get_value("python", package_name=canonical_name) + if not python_spec: + python_spec = CFG.get_value("python", package_name=canonical_name) + + self.python_spec = python_spec self.python_installation = CFG.available_pythons.find_python(python_spec) if not package_manager: package_manager = CFG.get_value("package_manager", package_name=canonical_name) diff --git a/tests/test_describe.py b/tests/test_describe.py index 1972bd8..86ab6f2 100644 --- a/tests/test_describe.py +++ b/tests/test_describe.py @@ -10,7 +10,7 @@ def test_describe(cli, monkeypatch): assert "pickley: version 1.0 (pinned)\n" in cli.logged.stdout assert "entry-points: pickley\n" in cli.logged.stdout - runez.write(".pk/config.json", '{"bake_time": 300}', logger=None) + runez.write(".pk/config.json", '{"bake_time": 300, "pinned": {"cowsay": {"python": "3.999"}}}', logger=None) cli.run("-vv describe mgit==1.3.0") assert cli.succeeded assert " -vv describe " in cli.logged.stdout @@ -18,6 +18,10 @@ def test_describe(cli, monkeypatch): assert "mgit: version 1.3.0" in cli.logged.stdout assert "Applying bake_time of 5 minutes" in cli.logged.stdout + cli.run("-vv describe cowsay") + assert cli.failed + assert "Invalid python: 3.999 [not available]" in cli.logged + runez.delete(".pk/config.json", logger=None) if sys.version_info[:2] >= (3, 10): cli.run("describe .")