Skip to content

Commit e160426

Browse files
committed
core changes for refactor including pyproject.toml updates and renaming config.py to settings.py due to later config additions and potential conflicts in naming
1 parent a2d19cd commit e160426

File tree

21 files changed

+93
-90
lines changed

21 files changed

+93
-90
lines changed

pyproject.toml

Lines changed: 72 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -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"
2421
description = "Guidance platform for deploying and managing large language models."
2522
readme = { file = "README.md", content-type = "text/markdown" }
2623
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" }]
3026
keywords = [
3127
"ai",
3228
"benchmarking",
@@ -47,25 +43,28 @@ keywords = [
4743
]
4844
dependencies = [
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-
]
6968
dev = [
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]
113109
homepage = "https://github.com/vllm-project/guidellm"
114110
source = "https://github.com/vllm-project/guidellm"
@@ -143,11 +139,17 @@ exclude = ["venv", ".tox"]
143139
follow_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"
151153
line-length = 88
152154
indent-width = 4
153155
exclude = ["build", "dist", "env", ".venv"]
@@ -158,82 +160,83 @@ indent-style = "space"
158160

159161
[tool.ruff.lint]
160162
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
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
]
171174
select = [
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'
246249
markers = [
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
]

src/guidellm/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
hf_logging.set_verbosity_error()
2121
logging.getLogger("transformers").setLevel(logging.ERROR)
2222

23-
from .config import (
23+
from .logger import configure_logger, logger
24+
from .settings import (
2425
DatasetSettings,
2526
Environment,
2627
LoggingSettings,
@@ -30,7 +31,6 @@
3031
reload_settings,
3132
settings,
3233
)
33-
from .logger import configure_logger, logger
3434

3535
__all__ = [
3636
"DatasetSettings",

src/guidellm/__main__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
)
1414
from guidellm.benchmark.entrypoints import benchmark_with_scenario
1515
from guidellm.benchmark.scenario import GenerativeTextScenario, get_builtin_scenarios
16-
from guidellm.config import print_config
1716
from guidellm.preprocess.dataset import ShortPromptStrategy, process_dataset
1817
from guidellm.scheduler import StrategyType
18+
from guidellm.settings import print_config
1919
from guidellm.utils import DefaultGroupHandler
2020
from guidellm.utils import cli as cli_tools
2121

src/guidellm/backend/backend.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from PIL import Image
88

99
from guidellm.backend.response import ResponseSummary, StreamingTextResponse
10-
from guidellm.config import settings
10+
from guidellm.settings import settings
1111

1212
__all__ = [
1313
"Backend",

src/guidellm/backend/openai.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
ResponseSummary,
1717
StreamingTextResponse,
1818
)
19-
from guidellm.config import settings
19+
from guidellm.settings import settings
2020

2121
__all__ = [
2222
"CHAT_COMPLETIONS",

src/guidellm/backend/response.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
from pydantic import computed_field
44

5-
from guidellm.config import settings
65
from guidellm.objects.pydantic import StandardBaseModel
6+
from guidellm.settings import settings
77

88
__all__ = [
99
"RequestArgs",

src/guidellm/benchmark/aggregator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
GenerativeTextErrorStats,
2222
GenerativeTextResponseStats,
2323
)
24-
from guidellm.config import settings
2524
from guidellm.objects import (
2625
RunningStats,
2726
StandardBaseModel,
@@ -40,6 +39,7 @@
4039
SchedulerRequestResult,
4140
WorkerDescription,
4241
)
42+
from guidellm.settings import settings
4343
from guidellm.utils import check_load_processor
4444

4545
__all__ = [

src/guidellm/benchmark/output.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
SweepProfile,
2121
ThroughputProfile,
2222
)
23-
from guidellm.config import settings
2423
from guidellm.objects import (
2524
DistributionSummary,
2625
StandardBaseModel,
@@ -29,6 +28,7 @@
2928
from guidellm.presentation import UIDataBuilder
3029
from guidellm.presentation.injector import create_report
3130
from guidellm.scheduler import strategy_display_str
31+
from guidellm.settings import settings
3232
from guidellm.utils import Colors, split_text_list_by_length
3333
from guidellm.utils.dict import recursive_key_update
3434
from guidellm.utils.text import camelize_str

src/guidellm/benchmark/profile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import numpy as np
55
from pydantic import Field, computed_field
66

7-
from guidellm.config import settings
87
from guidellm.objects import StandardBaseModel
98
from guidellm.scheduler import (
109
AsyncConstantStrategy,
@@ -15,6 +14,7 @@
1514
SynchronousStrategy,
1615
ThroughputStrategy,
1716
)
17+
from guidellm.settings import settings
1818

1919
__all__ = [
2020
"AsyncProfile",

src/guidellm/logger.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
from loguru import logger
4343

44-
from guidellm.config import LoggingSettings, settings
44+
from guidellm.settings import LoggingSettings, settings
4545

4646
__all__ = ["configure_logger", "logger"]
4747

@@ -72,7 +72,7 @@ def configure_logger(config: LoggingSettings = settings.logging):
7272
sys.stdout,
7373
level=config.console_log_level.upper(),
7474
format="<green>{time:YY-MM-DD HH:mm:ss}</green>|<level>{level: <8}</level> \
75-
|<cyan>{name}:{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>"
75+
|<cyan>{name}:{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
7676
)
7777

7878
if config.log_file or config.log_file_level:

0 commit comments

Comments
 (0)