forked from ai-dynamo/aiconfigurator
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
155 lines (139 loc) · 4.82 KB
/
pyproject.toml
File metadata and controls
155 lines (139 loc) · 4.82 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
[project]
name = "aiconfigurator"
version = "0.5.0"
authors = [
{ name = "NVIDIA Inc.", email = "sw-dl-dynamo@nvidia.com" },
]
description = "aiconfigurator: automatic disaggregated serving offline configuration"
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Intended Audience :: Information Technology",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
keywords = [
"decode",
"distributed",
"dynamo",
"gpu",
"inference",
"llm",
"nvidia",
"prefill",
]
readme = "README.md"
license = "Apache-2.0"
license-files = ["LICENSE"]
requires-python = ">=3.9"
dependencies = [
"uv",
"fastapi>=0.115.12",
"jinja2>=3.1.0",
"matplotlib>=3.9.4",
"numpy~=1.26.4",
"orjson>=3.10.16",
"pandas>=2.2.3",
"plotext>=5.3.2",
"plotly>=6.0.1",
"prettytable>=3.16.0",
"pydantic~=2.11.4",
"pyyaml>=6.0",
"scipy>=1.13.1",
"uvicorn>=0.34.2",
"bokeh",
"nvidia-ml-py",
"munch>=4.0.0"
]
[project.optional-dependencies]
dev = [
"ruff==0.14.1",
"pre-commit==4.3.0",
"pytest>=8.3.5",
"pytest-asyncio>=0.26.0",
"pytest-cov>=6.1.1",
"pytest-md-report==0.7.0",
"pytest-mock>=3.14.0",
"pytest-split>=0.10.0",
"pytest-timeout>=2.3.1",
"pytest-xdist==3.8.0"
]
webapp = [
"gradio==5.47.1"
]
[project.urls]
GitHub = "https://github.com/ai-dynamo/aiconfigurator"
Repository = "https://github.com/ai-dynamo/aiconfigurator.git"
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project.scripts]
aiconfigurator = "aiconfigurator.main:main"
[tool.setuptools.package-data]
"aiconfigurator.cli" = ["*.yaml", "exps/*.yaml"]
"aiconfigurator.generator" = ["*.yaml", "templates/**/*.j2"]
"aiconfigurator" = ["systems/*.yaml", "systems/**/*.txt", "model_configs/*.json"]
[tool.setuptools.packages.find]
where = ["src"]
include = ["*"]
exclude = ["tests", "docker", "collector", "systems"]
[tool.ruff]
line-length = 120
target-version = "py39"
extend-exclude = ["*.ipynb"]
[tool.ruff.lint]
select = [
"YTT", # flake8-2020: check for misuse of sys.version
"B", # flake8-bugbear: find likely bugs and design problems
"A", # flake8-builtins: check for shadowing of Python builtins
"C4", # flake8-comprehensions: check for unnecessary/slow comprehensions
"T10", # flake8-debugger: check for debugger imports/calls
"SIM", # flake8-simplify: suggest simplifications to code
"I", # isort: check import sorting
"C90", # mccabe: check cyclomatic complexity
"E", # pycodestyle errors: PEP 8 error codes
"W", # pycodestyle warnings: PEP 8 warning codes
"F", # Pyflakes: check for various Python errors
"PGH", # pygrep-hooks: miscellaneous lints via regex patterns
"UP", # pyupgrade: check for outdated Python syntax
"RUF", # Ruff-specific rules: additional lints unique to Ruff
"TRY", # tryceratops: check for exception handling anti-patterns
"N", # pep8-naming: enforce PEP 8 naming conventions
# "ERA001", # TODO: enable checking for commented-out code
# "ANN", # TODO: enable checking for type annotations
]
ignore = [
"A005", # module shadows builtin name
"E731", # do not assign lambda, use def
"RUF005", # unpack instead of concatenation
"C901", # function is too complex
"C408", # unnecessary dict call, use literal
"B007", # unused loop control variable
"SIM105", # use contextlib.suppress instead of try-except-pass
"E402", # module level import not at top of file
"E722", # bare except
"C401", # unnecessary generator for set/dict
"TRY003", # avoid specifying long messages outside exception class
"TRY300", # consider moving statement to else block
"TRY301", # abstract raise to inner function
"SIM108", # use ternary operator instead of if-else
"B006", # mutable default argument
"RUF015", # prefer next(iter()) over list/tuple indexing
"N812", # lowercase imported as non-lowercase
"PGH003", # use specific rule codes for type ignore/noqa
"RUF059", # unpacked variable is never used
"UP007", # require using X | Y for type annotations
"UP045", # require using X | None for type annotations
]
[tool.ruff.lint.isort]
known-first-party = ["aiconfigurator", "utils", "helper"]
[tool.ruff.lint.per-file-ignores]
"src/aiconfigurator/webapp/components/**/*.py" = ["E501", "W291", "SIM117"]