@@ -10,9 +10,6 @@ include = ["*"]
1010[tool .setuptools .package-data ]
1111"guidellm.data" = [" *.gz" ]
1212
13- [tool .pdm ]
14- distribution = true
15-
1613
1714# ************************************************
1815# ********** Project Metadata **********
@@ -24,9 +21,8 @@ name = "guidellm"
2421description = " Guidance platform for deploying and managing large language models."
2522readme = { file = " README.md" , content-type = " text/markdown" }
2623requires-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" }]
3026keywords = [
3127 " ai" ,
3228 " benchmarking" ,
@@ -47,25 +43,28 @@ keywords = [
4743]
4844dependencies = [
4945 " click>=8.0.0,<8.2.0" ,
46+ " culsans~=0.9.0" ,
5047 " datasets" ,
48+ " eval_type_backport" ,
49+ " faker" ,
5150 " ftfy>=6.0.0" ,
5251 " httpx[http2]<1.0.0" ,
5352 " loguru" ,
53+ " msgpack" ,
5454 " numpy" ,
5555 " pillow" ,
5656 " protobuf" ,
5757 " pydantic>=2.11.7" ,
5858 " pydantic-settings>=2.0.0" ,
59+ " pyhumps>=3.8.0" ,
5960 " pyyaml>=6.0.0" ,
6061 " rich" ,
62+ " sanic" ,
6163 " transformers" ,
64+ " uvloop>=0.18" ,
6265]
6366
6467[project .optional-dependencies ]
65- recommended = [
66- " tiktoken>=0.11.0" , # For OpenAI tokenizer
67- " blobfile>=3.1.0" , # For OpenAI tokenizer
68- ]
6968dev = [
7069 # build
7170 " build>=1.0.0" ,
@@ -81,7 +80,7 @@ dev = [
8180 # testing
8281 " lorem~=0.1.1" ,
8382 " pytest~=8.2.2" ,
84- " pytest-asyncio~=0.23.8 " ,
83+ " pytest-asyncio~=1.1.0 " ,
8584 " pytest-cov~=5.0.0" ,
8685 " pytest-mock~=3.14.0" ,
8786 " pytest-rerunfailures~=14.0" ,
@@ -106,9 +105,6 @@ dev = [
106105 " mkdocs-linkcheck~=1.0.6" ,
107106]
108107
109- [dependency-groups ]
110- dev = [ " guidellm[dev]" ]
111-
112108[project .urls ]
113109homepage = " https://github.com/vllm-project/guidellm"
114110source = " https://github.com/vllm-project/guidellm"
@@ -143,11 +139,17 @@ exclude = ["venv", ".tox"]
143139follow_imports = ' silent'
144140
145141[[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
148149
149150
150151[tool .ruff ]
152+ target-version = " py39"
151153line-length = 88
152154indent-width = 4
153155exclude = [" build" , " dist" , " env" , " .venv" ]
@@ -158,82 +160,83 @@ indent-style = "space"
158160
159161[tool .ruff .lint ]
160162ignore = [
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
166166 " 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
170173]
171174select = [
172175 # Rules reference: https://docs.astral.sh/ruff/rules/
173176
174177 # 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
191194 " RUF022" , # flake8-ruff: enforce sorting of __all__ in modules
192195
193196 # 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
195198 " C90" , # mccabe: checks for overly complex code using cyclomatic complexity
196199 " ISC" , # flake8-implicit-str-concat: prevents implicit string concatenation
197200 " 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
199202 " SIM" , # flake8-simplify: simplifies complex expressions and improves code readability
200203
201204 # 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
203206 " 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
219222
220223 # Code Documentation
221224 " FIX" , # flake8-fixme: detects FIXMEs and other temporary comments that should be resolved
222225]
223226
224227[tool .ruff .lint .extend-per-file-ignores ]
225228"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
228231 " 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
237240 " PLR0915" , # allow complext statements in tests
238241]
239242
@@ -246,5 +249,5 @@ addopts = '-s -vvv --cache-clear'
246249markers = [
247250 " smoke: quick tests to check basic functionality" ,
248251 " 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" ,
250253]
0 commit comments