-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathpyproject.toml
More file actions
86 lines (79 loc) · 3.54 KB
/
pyproject.toml
File metadata and controls
86 lines (79 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[project]
name = "pecos-workspace"
version = "0.8.0.dev5"
# Meta-package; runtime deps live in the member packages. Test/example/dev
# tooling is declared in [dependency-groups] below.
dependencies = []
[project.optional-dependencies]
cuda = ["quantum-pecos[cuda]"]
[tool.uv.workspace]
members = [
"python/pecos-rslib",
"python/pecos-rslib-exp",
"python/pecos-rslib-cuda",
"python/pecos-rslib-llvm",
"python/quantum-pecos",
"python/selene-plugins/pecos-selene-mast",
"python/selene-plugins/pecos-selene-stab-mps",
"python/selene-plugins/pecos-selene-stab-vec",
"python/selene-plugins/pecos-selene-stabilizer",
"python/selene-plugins/pecos-selene-statevec",
]
[tool.uv.sources]
quantum-pecos = { workspace = true }
[dependency-groups]
# Build, lint, and docs tooling. Runtime deps used by member packages
# (networkx, matplotlib, phir, ...) come in transitively via quantum-pecos.
dev = [
"maturin>=1.13.1,<2.0", # For building (matches sub-package build-system requirements)
"patchelf; platform_system != 'Windows'", # For setting rpath in shared libraries (Linux/macOS only)
"setuptools>=82.0.1", # Build system
"pre-commit", # Git hooks
"black", # Code formatting
"ruff", # Fast Python linting
"mkdocs", # Documentation framework
"mkdocs-material", # Material theme for MkDocs
"mkdocstrings[python]", # Code documentation extraction
"markdown-exec[ansi]", # Executable markdown blocks
]
test = [ # exact pins so workspace tests run against a reproducible environment
# Note: sub-package test extras (pecos-rslib, selene plugins) intentionally
# use `pytest>=9.0` lower bounds instead of these exact pins -- those
# packages ship to PyPI and must stay installable against newer pytest
# releases that downstream users may already have. Reproducibility for
# in-repo dev comes from uv.lock, not from over-constraining the sub-package
# requires-dist.
"pytest==9.0.3",
"pytest-cov==7.1.0",
"pytest-timeout==2.4.0",
"hypothesis==6.152.1",
"stim==1.15.0", # Stim-comparison and decomposition-invariant tests
"wasmtime==43.0.0", # WebAssembly runtime exercised by integration tests
"matplotlib>=2.2.0", # Surface-patch render tests import matplotlib directly
]
examples = [ # extras used by the examples/ tree and notebook walkthroughs
"jupyter>=1.1.1",
"polars>=1.0.0",
]
numpy-compat = [ # NumPy/SciPy compatibility tests - verify compatibility with scientific Python stack
"numpy>=1.15.0",
"scipy>=1.1.0",
]
cuda = [ # CUDA Python packages for GPU-accelerated simulations (requires CUDA toolkit)
"quantum-pecos[cuda]",
]
[tool.uv]
default-groups = ["dev", "test"]
# Prevent uv from caching pecos-rslib wheels - always use freshly built version
# This fixes stale code issues when uv sync/run reinstalls cached old wheels
# See: https://github.com/astral-sh/uv/issues/11390
reinstall-package = ["pecos-rslib", "pecos-rslib-cuda", "pecos-rslib-llvm"]
[tool.black]
line-length = 120
[tool.pytest.ini_options]
markers = [
"optional_dependency: mark a test as using one or more optional dependencies",
"optional_unix: mark tests as using an optional dependency that only work with Unix-based systems",
"slow: mark tests that provide extra integration coverage but are excluded from the default fast Python test lane",
"numpy: mark tests that verify NumPy compatibility (requires numpy installed)",
]