Skip to content

Commit b990695

Browse files
Merge pull request #58 from renan-r-santos/check-transitive-deps
feat: check for transitive dependencies
2 parents db6735b + 171bfe1 commit b990695

File tree

5 files changed

+5723
-6
lines changed

5 files changed

+5723
-6
lines changed

pixi_kernel/readiness.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import json
12
import logging
23
from pathlib import Path
34

@@ -75,14 +76,28 @@ async def verify_env_readiness(
7576

7677
dependencies = pixi_environment.dependencies + pixi_environment.pypi_dependencies
7778
if required_package not in dependencies:
78-
return Failure(
79-
PIXI_KERNEL_NOT_FOUND.format(
80-
kernel_name=kernel_name,
81-
required_package=required_package,
82-
prefix=pixi_environment.prefix,
83-
)
79+
# Check transitive dependencies
80+
returncode, stdout, stderr = await subprocess_exec(
81+
"pixi", "list", "--json", cwd=cwd, env=env
8482
)
8583

84+
logger.info(f"pixi list stderr: {stderr}")
85+
logger.info(f"pixi list stdout: {stdout}")
86+
if returncode != 0:
87+
return Failure(f"Failed to run 'pixi list': {stderr}")
88+
89+
try:
90+
if required_package not in {dep["name"] for dep in json.loads(stdout)}:
91+
return Failure(
92+
PIXI_KERNEL_NOT_FOUND.format(
93+
kernel_name=kernel_name,
94+
required_package=required_package,
95+
prefix=pixi_environment.prefix,
96+
)
97+
)
98+
except (json.decoder.JSONDecodeError, KeyError) as exception:
99+
return Failure(f"Failed to parse 'pixi list' output: {stdout}\n{exception}")
100+
86101
# Make sure the environment can be solved and is up-to-date
87102
returncode, stdout, stderr = await subprocess_exec(
88103
"pixi",

0 commit comments

Comments
 (0)