From 45162c3f56702795c7f4b7b2a2278fd1978df386 Mon Sep 17 00:00:00 2001 From: Martin Durant Date: Tue, 5 May 2026 09:49:33 -0400 Subject: [PATCH] Fix tools->tool in pyproject parsing --- src/projspec/proj/pixi.py | 4 ++-- src/projspec/proj/uv.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/projspec/proj/pixi.py b/src/projspec/proj/pixi.py index 08d9084..8a37e49 100644 --- a/src/projspec/proj/pixi.py +++ b/src/projspec/proj/pixi.py @@ -60,7 +60,7 @@ class Pixi(ProjectSpec): # https://pixi.sh/dev/reference/pixi_manifest/ def match(self) -> bool: - meta = self.proj.pyproject.get("tools", {}).get("pixi", {}) + meta = self.proj.pyproject.get("tool", {}).get("pixi", {}) return bool(meta) or "pixi.toml" in self.proj.basenames def parse(self) -> None: @@ -68,7 +68,7 @@ def parse(self) -> None: from projspec.artifact.python_env import CondaEnv, LockFile from projspec.content.environment import Environment, Precision, Stack - meta = self.proj.pyproject.get("tools", {}).get("pixi", {}) + meta = self.proj.pyproject.get("tool", {}).get("pixi", {}) if "pixi.toml" in self.proj.basenames: try: with self.proj.fs.open(self.proj.basenames["pixi.toml"], "rb") as f: diff --git a/src/projspec/proj/uv.py b/src/projspec/proj/uv.py index 10020f6..a5be467 100644 --- a/src/projspec/proj/uv.py +++ b/src/projspec/proj/uv.py @@ -113,7 +113,7 @@ def parse(self): stack=Stack.PIP, precision=Precision.SPEC, packages=packages, - channels=deep_get(meta, "tools.uv.index", default=[]), + channels=deep_get(meta, "tool.uv.index", default=[]), ) found = True except (KeyError, ValueError): @@ -160,7 +160,7 @@ def match(self): self.proj.basenames ): return True - if "uv" in self.proj.pyproject.get("tools", {}): + if "uv" in self.proj.pyproject.get("tool", {}): # even if it is present, uv can be explicitly directed to ignore the # project https://docs.astral.sh/uv/reference/settings/#managed return self.proj.pyproject["tool"]["uv"].get("managed", True) @@ -183,7 +183,7 @@ def parse(self): super().parse() meta = self.proj.pyproject - conf = meta.get("tools", {}).get("uv", {}) + conf = meta.get("tool", {}).get("uv", {}) try: with self.get_file("uv.toml") as f: conf2 = toml.load(f, decoder=PickleableTomlDecoder())