@@ -10,9 +10,6 @@ include = ["*"]
10
10
[tool .setuptools .package-data ]
11
11
"guidellm.data" = [" *.gz" ]
12
12
13
- [tool .pdm ]
14
- distribution = true
15
-
16
13
17
14
# ************************************************
18
15
# ********** Project Metadata **********
@@ -24,9 +21,8 @@ name = "guidellm"
24
21
description = " Guidance platform for deploying and managing large language models."
25
22
readme = { file = " README.md" , content-type = " text/markdown" }
26
23
requires-python = " >=3.9.0,<4.0"
27
- license = " Apache-2.0"
28
- license-files = [" LICENSE" ]
29
- authors = [ { name = " Red Hat" } ]
24
+ license = {text = " Apache-2.0" }
25
+ authors = [{ name = " Red Hat" }]
30
26
keywords = [
31
27
" ai" ,
32
28
" benchmarking" ,
@@ -47,25 +43,28 @@ keywords = [
47
43
]
48
44
dependencies = [
49
45
" click>=8.0.0,<8.2.0" ,
46
+ " culsans~=0.9.0" ,
50
47
" datasets" ,
48
+ " eval_type_backport" ,
49
+ " faker" ,
51
50
" ftfy>=6.0.0" ,
52
51
" httpx[http2]<1.0.0" ,
53
52
" loguru" ,
53
+ " msgpack" ,
54
54
" numpy" ,
55
55
" pillow" ,
56
56
" protobuf" ,
57
57
" pydantic>=2.11.7" ,
58
58
" pydantic-settings>=2.0.0" ,
59
+ " pyhumps>=3.8.0" ,
59
60
" pyyaml>=6.0.0" ,
60
61
" rich" ,
62
+ " sanic" ,
61
63
" transformers" ,
64
+ " uvloop>=0.18" ,
62
65
]
63
66
64
67
[project .optional-dependencies ]
65
- recommended = [
66
- " tiktoken>=0.11.0" , # For OpenAI tokenizer
67
- " blobfile>=3.1.0" , # For OpenAI tokenizer
68
- ]
69
68
dev = [
70
69
# build
71
70
" build>=1.0.0" ,
@@ -81,7 +80,7 @@ dev = [
81
80
# testing
82
81
" lorem~=0.1.1" ,
83
82
" pytest~=8.2.2" ,
84
- " pytest-asyncio~=0.23.8 " ,
83
+ " pytest-asyncio~=1.1.0 " ,
85
84
" pytest-cov~=5.0.0" ,
86
85
" pytest-mock~=3.14.0" ,
87
86
" pytest-rerunfailures~=14.0" ,
@@ -106,9 +105,6 @@ dev = [
106
105
" mkdocs-linkcheck~=1.0.6" ,
107
106
]
108
107
109
- [dependency-groups ]
110
- dev = [ " guidellm[dev]" ]
111
-
112
108
[project .urls ]
113
109
homepage = " https://github.com/vllm-project/guidellm"
114
110
source = " https://github.com/vllm-project/guidellm"
@@ -143,11 +139,17 @@ exclude = ["venv", ".tox"]
143
139
follow_imports = ' silent'
144
140
145
141
[[tool .mypy .overrides ]]
146
- module = [" datasets.*" , " transformers.*" , " setuptools.*" , " setuptools_git_versioning.*" ]
147
- ignore_missing_imports =true
142
+ module = [
143
+ " datasets.*" ,
144
+ " transformers.*" ,
145
+ " setuptools.*" ,
146
+ " setuptools_git_versioning.*" ,
147
+ ]
148
+ ignore_missing_imports = true
148
149
149
150
150
151
[tool .ruff ]
152
+ target-version = " py39"
151
153
line-length = 88
152
154
indent-width = 4
153
155
exclude = [" build" , " dist" , " env" , " .venv" ]
@@ -158,82 +160,83 @@ indent-style = "space"
158
160
159
161
[tool .ruff .lint ]
160
162
ignore = [
161
- " PLR0913" ,
162
- " TC001" ,
163
- " COM812" ,
164
- " ISC001" ,
165
- " TC002" ,
163
+ " COM812" , # ignore trailing comma errors due to older Python versions
164
+ " PD011" , # ignore .values usage since ruff assumes it's a Pandas DataFrame
165
+ " PLR0913" , # ignore too many arguments in function definitions
166
166
" PLW1514" , # allow Path.open without encoding
167
- " RET505" , # allow `else` blocks
168
- " RET506" , # allow `else` blocks
169
- " PD011" , # ignore .values usage since ruff assumes it's a Pandas DataFrame
167
+ " RET505" , # allow `else` blocks
168
+ " RET506" , # allow `else` blocks
169
+ " S311" , # allow standard pseudo-random generators
170
+ " TC001" , # ignore imports used only for type checking
171
+ " TC002" , # ignore imports used only for type checking
172
+ " TC003" , # ignore imports used only for type checking
170
173
]
171
174
select = [
172
175
# Rules reference: https://docs.astral.sh/ruff/rules/
173
176
174
177
# Code Style / Formatting
175
- " E" , # pycodestyle: checks adherence to PEP 8 conventions including spacing, indentation, and line length
176
- " W" , # pycodestyle: checks adherence to PEP 8 conventions including spacing, indentation, and line length
177
- " A" , # flake8-builtins: prevents shadowing of Python built-in names
178
- " C" , # Convention: ensures code adheres to specific style and formatting conventions
179
- " COM" , # flake8-commas: enforces the correct use of trailing commas
180
- " ERA" , # eradicate: detects commented-out code that should be removed
181
- " I" , # isort: ensures imports are sorted in a consistent manner
182
- " ICN" , # flake8-import-conventions: enforces import conventions for better readability
183
- " N" , # pep8-naming: enforces PEP 8 naming conventions for classes, functions, and variables
184
- " NPY" , # NumPy: enforces best practices for using the NumPy library
185
- " PD" , # pandas-vet: enforces best practices for using the pandas library
186
- " PT" , # flake8-pytest-style: enforces best practices and style conventions for pytest tests
187
- " PTH" , # flake8-use-pathlib: encourages the use of pathlib over os.path for file system operations
188
- " Q" , # flake8-quotes: enforces consistent use of single or double quotes
189
- " TCH" , # flake8-type-checking: enforces type checking practices and standards
190
- " TID" , # flake8-tidy-imports: enforces tidy and well-organized imports
178
+ " E" , # pycodestyle: checks adherence to PEP 8 conventions including spacing, indentation, and line length
179
+ " W" , # pycodestyle: checks adherence to PEP 8 conventions including spacing, indentation, and line length
180
+ " A" , # flake8-builtins: prevents shadowing of Python built-in names
181
+ " C" , # Convention: ensures code adheres to specific style and formatting conventions
182
+ " COM" , # flake8-commas: enforces the correct use of trailing commas
183
+ " ERA" , # eradicate: detects commented-out code that should be removed
184
+ " I" , # isort: ensures imports are sorted in a consistent manner
185
+ " ICN" , # flake8-import-conventions: enforces import conventions for better readability
186
+ " N" , # pep8-naming: enforces PEP 8 naming conventions for classes, functions, and variables
187
+ " NPY" , # NumPy: enforces best practices for using the NumPy library
188
+ " PD" , # pandas-vet: enforces best practices for using the pandas library
189
+ " PT" , # flake8-pytest-style: enforces best practices and style conventions for pytest tests
190
+ " PTH" , # flake8-use-pathlib: encourages the use of pathlib over os.path for file system operations
191
+ " Q" , # flake8-quotes: enforces consistent use of single or double quotes
192
+ " TCH" , # flake8-type-checking: enforces type checking practices and standards
193
+ " TID" , # flake8-tidy-imports: enforces tidy and well-organized imports
191
194
" RUF022" , # flake8-ruff: enforce sorting of __all__ in modules
192
195
193
196
# Code Structure / Complexity
194
- " C4" , # flake8-comprehensions: improves readability and performance of list, set, and dict comprehensions
197
+ " C4" , # flake8-comprehensions: improves readability and performance of list, set, and dict comprehensions
195
198
" C90" , # mccabe: checks for overly complex code using cyclomatic complexity
196
199
" ISC" , # flake8-implicit-str-concat: prevents implicit string concatenation
197
200
" PIE" , # flake8-pie: identifies and corrects common code inefficiencies and mistakes
198
- " R" , # Refactor: suggests improvements to code structure and readability
201
+ " R" , # Refactor: suggests improvements to code structure and readability
199
202
" SIM" , # flake8-simplify: simplifies complex expressions and improves code readability
200
203
201
204
# Code Security / Bug Prevention
202
- " ARG" , # flake8-unused-arguments: detects unused function and method arguments
205
+ " ARG" , # flake8-unused-arguments: detects unused function and method arguments
203
206
" ASYNC" , # flake8-async: identifies incorrect or inefficient usage patterns in asynchronous code
204
- " B" , # flake8-bugbear: detects common programming mistakes and potential bugs
205
- " BLE" , # flake8-blind-except: prevents blind exceptions that catch all exceptions without handling
206
- " E" , # Error: detects and reports errors in the code
207
- " F" , # Pyflakes: detects unused imports, shadowed imports, undefined variables, and various formatting errors in string operations
208
- " INP" , # flake8-no-pep420: prevents implicit namespace packages by requiring __init__.py
209
- " PGH" , # pygrep-hooks: detects deprecated and dangerous code patterns
210
- " PL" , # Pylint: comprehensive source code analyzer for enforcing coding standards and detecting errors
211
- " RSE" , # flake8-raise: ensures exceptions are raised correctly
212
- " S" , # flake8-bandit: detects security issues and vulnerabilities in the code
213
- " SLF" , # flake8-self: prevents incorrect usage of the self argument in class methods
214
- " T10" , # flake8-debugger: detects the presence of debugging tools such as pdb
215
- " T20" , # flake8-print: detects print statements left in the code
216
- " UP" , # pyupgrade: automatically upgrades syntax for newer versions of Python
217
- " W" , # Warning: provides warnings about potential issues in the code
218
- " YTT" , # flake8-2020: identifies code that will break with future Python releases
207
+ " B" , # flake8-bugbear: detects common programming mistakes and potential bugs
208
+ " BLE" , # flake8-blind-except: prevents blind exceptions that catch all exceptions without handling
209
+ " E" , # Error: detects and reports errors in the code
210
+ " F" , # Pyflakes: detects unused imports, shadowed imports, undefined variables, and various formatting errors in string operations
211
+ " INP" , # flake8-no-pep420: prevents implicit namespace packages by requiring __init__.py
212
+ " PGH" , # pygrep-hooks: detects deprecated and dangerous code patterns
213
+ " PL" , # Pylint: comprehensive source code analyzer for enforcing coding standards and detecting errors
214
+ " RSE" , # flake8-raise: ensures exceptions are raised correctly
215
+ " S" , # flake8-bandit: detects security issues and vulnerabilities in the code
216
+ " SLF" , # flake8-self: prevents incorrect usage of the self argument in class methods
217
+ " T10" , # flake8-debugger: detects the presence of debugging tools such as pdb
218
+ " T20" , # flake8-print: detects print statements left in the code
219
+ " UP" , # pyupgrade: automatically upgrades syntax for newer versions of Python
220
+ " W" , # Warning: provides warnings about potential issues in the code
221
+ " YTT" , # flake8-2020: identifies code that will break with future Python releases
219
222
220
223
# Code Documentation
221
224
" FIX" , # flake8-fixme: detects FIXMEs and other temporary comments that should be resolved
222
225
]
223
226
224
227
[tool .ruff .lint .extend-per-file-ignores ]
225
228
"tests/**/*.py" = [
226
- " S101" , # asserts allowed in tests
227
- " ARG" , # Unused function args allowed in tests
229
+ " S101" , # asserts allowed in tests
230
+ " ARG" , # Unused function args allowed in tests
228
231
" PLR2004" , # Magic value used in comparison
229
- " TCH002" , # No import only type checking in tests
230
- " SLF001" , # enable private member access in tests
231
- " S105" , # allow hardcoded passwords in tests
232
- " S311" , # allow standard pseudo-random generators in tests
233
- " PT011" , # allow generic exceptions in tests
234
- " N806" , # allow uppercase variable names in tests
235
- " PGH003" , # allow general ignores in tests
236
- " S106" , # allow hardcoded passwords in tests
232
+ " TCH002" , # No import only type checking in tests
233
+ " SLF001" , # enable private member access in tests
234
+ " S105" , # allow hardcoded passwords in tests
235
+ " S311" , # allow standard pseudo-random generators in tests
236
+ " PT011" , # allow generic exceptions in tests
237
+ " N806" , # allow uppercase variable names in tests
238
+ " PGH003" , # allow general ignores in tests
239
+ " S106" , # allow hardcoded passwords in tests
237
240
" PLR0915" , # allow complext statements in tests
238
241
]
239
242
@@ -246,5 +249,5 @@ addopts = '-s -vvv --cache-clear'
246
249
markers = [
247
250
" smoke: quick tests to check basic functionality" ,
248
251
" sanity: detailed tests to ensure major functions work correctly" ,
249
- " regression: tests to ensure that new changes do not break existing functionality"
252
+ " regression: tests to ensure that new changes do not break existing functionality" ,
250
253
]
0 commit comments