-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathpyproject.toml
More file actions
141 lines (129 loc) · 4.12 KB
/
pyproject.toml
File metadata and controls
141 lines (129 loc) · 4.12 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
[build-system]
requires = ["setuptools>=77.0.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "pyisolate"
version = "0.10.2"
description = "A Python library for dividing execution across multiple virtual environments"
readme = "README.md"
requires-python = ">=3.10"
license = "MIT"
license-files = ["LICENSE"]
authors = [
{name = "Jacob Segal", email = "jacob.e.segal@gmail.com"},
]
maintainers = [
{name = "Jacob Segal", email = "jacob.e.segal@gmail.com"},
{name = "John Pollock", email = "pollockjj@gmail.com"},
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
]
keywords = ["virtual environment", "venv", "development"]
dependencies = [
"uv>=0.1.0",
"tomli>=2.0.1; python_version < '3.11'",
"typing_extensions>=4.0; python_version < '3.11'",
"packaging>=23.0",
]
[project.optional-dependencies]
dev = [
"build>=1.2.2",
"twine>=5.1.1",
"pytest>=7.0",
"pytest-cov>=4.0",
"pytest-asyncio>=0.21.0",
"mypy>=1.0",
"pre-commit>=3.0",
"ruff>=0.11.0",
"pyyaml>=5.4.0", # Only for test manifest creation
"importlib-metadata>=4.0.0", # For type checking
]
test = [
"numpy>=1.26.0,<2.0.0", # For testing share_torch functionality
"psutil>=5.9.0", # For memory monitoring
"pytest-asyncio>=0.21.0", # Required for async test fixtures
"pytest>=7.0", # Required by benchmark scripts that import from tests
"pyyaml>=5.4.0", # For test manifest creation
"tabulate>=0.9.0", # For nice output formatting
"torch>=2.0.0", # For testing share_torch functionality
]
bench = [
"numpy>=1.26.0,<2.0.0", # For array benchmarking
"nvidia-ml-py3>=7.352.0", # For GPU memory monitoring
"psutil>=5.9.0", # For memory monitoring
"pytest-asyncio>=0.21.0", # Required for async test fixtures
"pytest>=7.0", # Required by benchmark scripts that import from tests
"pyyaml>=5.4.0", # Required by test files that benchmarks import
"tabulate>=0.9.0", # For nice output formatting
"torch>=2.0.0", # For tensor benchmarking
]
docs = [
"sphinx>=5.0",
"sphinx-rtd-theme>=1.0",
"myst-parser>=2.0",
"sphinx-markdown-builder>=0.5.4", # Optional: for markdown output if needed
]
[project.urls]
"Homepage" = "https://github.com/Comfy-Org/pyisolate"
"Bug Reports" = "https://github.com/Comfy-Org/pyisolate/issues"
"Source" = "https://github.com/Comfy-Org/pyisolate"
[project.scripts]
# TODO: Add any console scripts/entry points
# pyisolate = "pyisolate.cli:main"
[tool.setuptools.packages.find]
where = ["."]
include = ["pyisolate*"]
exclude = ["tests*"]
[tool.ruff]
line-length = 110
exclude = ["*.ipynb"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"N", # pep8-naming
"S", # bandit security
"T", # flake8-print
"UP", # pyupgrade
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"PIE", # flake8-pie
"SIM", # flake8-simplify
]
# T201: print statements allowed
# S101: assert allowed
# S108: /tmp usage is intentional for IPC sockets
# S110: try-except-pass for graceful degradation in serialization
# S306: mktemp used for UDS socket paths (race-safe via bind)
# S603: subprocess.Popen required for child process spawning
ignore = ["T201", "S101", "S108", "S110", "S306", "S603"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
[tool.mypy]
python_version = "3.10"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
[tool.pytest.ini_options]
minversion = "6.0"
addopts = "-ra -q --cov=pyisolate --cov-report=html --cov-report=term-missing -m 'not network'"
testpaths = ["tests"]
asyncio_mode = "auto"
filterwarnings = [
"ignore:The pynvml package is deprecated:FutureWarning",
]
markers = [
"network: tests that require network access to external wheel indices",
]
[tool.coverage.run]
source = ["pyisolate"]
omit = ["*/tests/*", "*/test_*.py"]