Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
a2d19cd
Base version update to what is pushed as latest to enable PR for base…
markurtz Sep 19, 2025
cd5a92d
Base version update to what is pushed as latest to enable PR for base…
markurtz Sep 19, 2025
8d6e19a
core changes for refactor including pyproject.toml updates and renami…
markurtz Sep 19, 2025
669848d
remove improper readdition of pyhumps
markurtz Sep 19, 2025
6b6ed98
refactors for the utility modules
markurtz Sep 19, 2025
d15cf17
Remove old pydantic file that is now replaced
markurtz Sep 19, 2025
5b83c2d
fixes from copilot review
markurtz Sep 19, 2025
c84299b
add refactored scheduler package and tests
markurtz Sep 19, 2025
a7ae737
Standardize on plural for modules/packages and update from copilot re…
markurtz Sep 19, 2025
02554b0
backend refactor implementations
markurtz Sep 19, 2025
a88605e
fixes from copilot review and standardize backend package to backends…
markurtz Sep 19, 2025
452eb65
remove renaming changes from benchmark package til after that PR is u…
markurtz Sep 19, 2025
7829fb8
Add in benchmark package refactor
markurtz Sep 19, 2025
4834767
fixes and rebase
markurtz Sep 19, 2025
61736f5
fixes from copilot review
markurtz Sep 19, 2025
a28bbe3
Mock server implementation for guidellm
markurtz Sep 19, 2025
bb98193
fixes from copilot review
markurtz Sep 19, 2025
a9a082a
Any missing changes / working state for refactor
markurtz Sep 19, 2025
6d0d4c2
add in the perf extras
markurtz Sep 19, 2025
bfc8e50
Complete CSV output
jaredoconnell Sep 8, 2025
c12c4f8
[GuideLLM Refactor] Core: Reintroduce changes from main (#364)
sjmonson Sep 24, 2025
ab5466b
[GuideLLM Refactor] Fix from-file (#366)
jaredoconnell Sep 24, 2025
78615f7
[GuideLLM Refactor] Entrypoint: Reintroduce changes from main (#363)
sjmonson Sep 25, 2025
3ac1537
Update GenerativeTextScenario to match current def
sjmonson Sep 11, 2025
c47a1f6
Add workaround for https://github.com/pydantic/pydantic/issues/9541
sjmonson Sep 12, 2025
965aca2
Rename rate_type -> profile in builtin scenarios
sjmonson Sep 24, 2025
d9a4df2
Always parse rate as list[float]
sjmonson Sep 12, 2025
03f9085
Fix bug where empty constraints in sweep caused error
jaredoconnell Sep 25, 2025
9c401da
Update HTML processing references for latest data output
jaredoconnell Sep 10, 2025
54556ae
Fix injection of data into the HTML output
jaredoconnell Sep 26, 2025
3f1ff7a
[GuideLLM Refactor] core updates for pyproject.toml and settings.py (…
markurtz Sep 29, 2025
4c70b5b
[GuideLLM Refactor] utility package updates, rewrites, and tests expa…
markurtz Sep 29, 2025
ad14178
[GuideLLM Refactor] scheduler package updates, rewrites, and tests ex…
markurtz Sep 29, 2025
8f48cf9
[GuideLLM Refactor] backend package updates, rewrites, and tests expa…
markurtz Sep 29, 2025
18e95be
[GuideLLM Refactor] benchmark package updates and rewrites (#356)
markurtz Sep 29, 2025
da02ee8
[GuideLLM Refactor] mock server package creation (#357)
markurtz Sep 29, 2025
46a2c1e
[GuideLLM Refactor] Edge case errors (#376)
jaredoconnell Sep 29, 2025
447101b
Merge branch 'features/refactor/base' into features/refactor/working
jaredoconnell Sep 29, 2025
47088f9
[GuideLLM Refactor] entrypoints and working state (base to create PRs…
markurtz Sep 29, 2025
6d31244
Merge branch 'main' into features/refactor/base
markurtz Sep 29, 2025
2c6637d
Share type alises between entrypoints and scenario
jaredoconnell Sep 29, 2025
2c70edd
Pluralize type.py > types.py
sjmonson Sep 30, 2025
4bff34a
Convert new types to TypeAliasTypes
sjmonson Sep 30, 2025
3057229
Address Copilot review
sjmonson Sep 30, 2025
30ab756
[GuideLLM Refactor] Scenarios reenablement #362
sjmonson Sep 30, 2025
eeebb6b
[GuideLLM Refactor] Features/refactor fix html #377
sjmonson Sep 30, 2025
aa81de8
[GuideLLM Refactor] Complete CSV output #378
sjmonson Sep 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 77 additions & 59 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,8 @@ name = "guidellm"
description = "Guidance platform for deploying and managing large language models."
readme = { file = "README.md", content-type = "text/markdown" }
requires-python = ">=3.9.0,<4.0"
license = "Apache-2.0"
license-files = ["LICENSE"]
authors = [ { name = "Red Hat" } ]
license = { text = "Apache-2.0" }
authors = [{ name = "Red Hat" }]
keywords = [
"ai",
"benchmarking",
Expand All @@ -47,21 +46,33 @@ keywords = [
]
dependencies = [
"click>=8.0.0,<8.2.0",
"culsans~=0.9.0",
"datasets",
"eval_type_backport",
"faker",
"ftfy>=6.0.0",
"httpx[http2]<1.0.0",
"loguru",
"msgpack",
"numpy",
"pillow",
"protobuf",
"pydantic>=2.11.7",
"pydantic-settings>=2.0.0",
"pyyaml>=6.0.0",
"rich",
"sanic",
"transformers",
"uvloop>=0.18",
]

[project.optional-dependencies]
perf = [
"orjson",
"msgpack",
"msgspec",
"uvloop",
]
recommended = [
"tiktoken>=0.11.0", # For OpenAI tokenizer
"blobfile>=3.1.0", # For OpenAI tokenizer
Expand All @@ -81,7 +92,7 @@ dev = [
# testing
"lorem~=0.1.1",
"pytest~=8.2.2",
"pytest-asyncio~=0.23.8",
"pytest-asyncio~=1.1.0",
"pytest-cov~=5.0.0",
"pytest-mock~=3.14.0",
"pytest-rerunfailures~=14.0",
Expand Down Expand Up @@ -143,11 +154,17 @@ exclude = ["venv", ".tox"]
follow_imports = 'silent'

[[tool.mypy.overrides]]
module = ["datasets.*", "transformers.*", "setuptools.*", "setuptools_git_versioning.*"]
ignore_missing_imports=true
module = [
"datasets.*",
"transformers.*",
"setuptools.*",
"setuptools_git_versioning.*",
]
ignore_missing_imports = true


[tool.ruff]
target-version = "py39"
line-length = 88
indent-width = 4
exclude = ["build", "dist", "env", ".venv"]
Expand All @@ -158,82 +175,83 @@ indent-style = "space"

[tool.ruff.lint]
ignore = [
"PLR0913",
"TC001",
"COM812",
"ISC001",
"TC002",
"COM812", # ignore trailing comma errors due to older Python versions
"PD011", # ignore .values usage since ruff assumes it's a Pandas DataFrame
"PLR0913", # ignore too many arguments in function definitions
"PLW1514", # allow Path.open without encoding
"RET505", # allow `else` blocks
"RET506", # allow `else` blocks
"PD011", # ignore .values usage since ruff assumes it's a Pandas DataFrame
"RET505", # allow `else` blocks
"RET506", # allow `else` blocks
"S311", # allow standard pseudo-random generators
"TC001", # ignore imports used only for type checking
"TC002", # ignore imports used only for type checking
"TC003", # ignore imports used only for type checking
]
select = [
# Rules reference: https://docs.astral.sh/ruff/rules/

# Code Style / Formatting
"E", # pycodestyle: checks adherence to PEP 8 conventions including spacing, indentation, and line length
"W", # pycodestyle: checks adherence to PEP 8 conventions including spacing, indentation, and line length
"A", # flake8-builtins: prevents shadowing of Python built-in names
"C", # Convention: ensures code adheres to specific style and formatting conventions
"COM", # flake8-commas: enforces the correct use of trailing commas
"ERA", # eradicate: detects commented-out code that should be removed
"I", # isort: ensures imports are sorted in a consistent manner
"ICN", # flake8-import-conventions: enforces import conventions for better readability
"N", # pep8-naming: enforces PEP 8 naming conventions for classes, functions, and variables
"NPY", # NumPy: enforces best practices for using the NumPy library
"PD", # pandas-vet: enforces best practices for using the pandas library
"PT", # flake8-pytest-style: enforces best practices and style conventions for pytest tests
"PTH", # flake8-use-pathlib: encourages the use of pathlib over os.path for file system operations
"Q", # flake8-quotes: enforces consistent use of single or double quotes
"TCH", # flake8-type-checking: enforces type checking practices and standards
"TID", # flake8-tidy-imports: enforces tidy and well-organized imports
"E", # pycodestyle: checks adherence to PEP 8 conventions including spacing, indentation, and line length
"W", # pycodestyle: checks adherence to PEP 8 conventions including spacing, indentation, and line length
"A", # flake8-builtins: prevents shadowing of Python built-in names
"C", # Convention: ensures code adheres to specific style and formatting conventions
"COM", # flake8-commas: enforces the correct use of trailing commas
"ERA", # eradicate: detects commented-out code that should be removed
"I", # isort: ensures imports are sorted in a consistent manner
"ICN", # flake8-import-conventions: enforces import conventions for better readability
"N", # pep8-naming: enforces PEP 8 naming conventions for classes, functions, and variables
"NPY", # NumPy: enforces best practices for using the NumPy library
"PD", # pandas-vet: enforces best practices for using the pandas library
"PT", # flake8-pytest-style: enforces best practices and style conventions for pytest tests
"PTH", # flake8-use-pathlib: encourages the use of pathlib over os.path for file system operations
"Q", # flake8-quotes: enforces consistent use of single or double quotes
"TCH", # flake8-type-checking: enforces type checking practices and standards
"TID", # flake8-tidy-imports: enforces tidy and well-organized imports
"RUF022", # flake8-ruff: enforce sorting of __all__ in modules

# Code Structure / Complexity
"C4", # flake8-comprehensions: improves readability and performance of list, set, and dict comprehensions
"C4", # flake8-comprehensions: improves readability and performance of list, set, and dict comprehensions
"C90", # mccabe: checks for overly complex code using cyclomatic complexity
"ISC", # flake8-implicit-str-concat: prevents implicit string concatenation
"PIE", # flake8-pie: identifies and corrects common code inefficiencies and mistakes
"R", # Refactor: suggests improvements to code structure and readability
"R", # Refactor: suggests improvements to code structure and readability
"SIM", # flake8-simplify: simplifies complex expressions and improves code readability

# Code Security / Bug Prevention
"ARG", # flake8-unused-arguments: detects unused function and method arguments
"ARG", # flake8-unused-arguments: detects unused function and method arguments
"ASYNC", # flake8-async: identifies incorrect or inefficient usage patterns in asynchronous code
"B", # flake8-bugbear: detects common programming mistakes and potential bugs
"BLE", # flake8-blind-except: prevents blind exceptions that catch all exceptions without handling
"E", # Error: detects and reports errors in the code
"F", # Pyflakes: detects unused imports, shadowed imports, undefined variables, and various formatting errors in string operations
"INP", # flake8-no-pep420: prevents implicit namespace packages by requiring __init__.py
"PGH", # pygrep-hooks: detects deprecated and dangerous code patterns
"PL", # Pylint: comprehensive source code analyzer for enforcing coding standards and detecting errors
"RSE", # flake8-raise: ensures exceptions are raised correctly
"S", # flake8-bandit: detects security issues and vulnerabilities in the code
"SLF", # flake8-self: prevents incorrect usage of the self argument in class methods
"T10", # flake8-debugger: detects the presence of debugging tools such as pdb
"T20", # flake8-print: detects print statements left in the code
"UP", # pyupgrade: automatically upgrades syntax for newer versions of Python
"W", # Warning: provides warnings about potential issues in the code
"YTT", # flake8-2020: identifies code that will break with future Python releases
"B", # flake8-bugbear: detects common programming mistakes and potential bugs
"BLE", # flake8-blind-except: prevents blind exceptions that catch all exceptions without handling
"E", # Error: detects and reports errors in the code
"F", # Pyflakes: detects unused imports, shadowed imports, undefined variables, and various formatting errors in string operations
"INP", # flake8-no-pep420: prevents implicit namespace packages by requiring __init__.py
"PGH", # pygrep-hooks: detects deprecated and dangerous code patterns
"PL", # Pylint: comprehensive source code analyzer for enforcing coding standards and detecting errors
"RSE", # flake8-raise: ensures exceptions are raised correctly
"S", # flake8-bandit: detects security issues and vulnerabilities in the code
"SLF", # flake8-self: prevents incorrect usage of the self argument in class methods
"T10", # flake8-debugger: detects the presence of debugging tools such as pdb
"T20", # flake8-print: detects print statements left in the code
"UP", # pyupgrade: automatically upgrades syntax for newer versions of Python
"W", # Warning: provides warnings about potential issues in the code
"YTT", # flake8-2020: identifies code that will break with future Python releases

# Code Documentation
"FIX", # flake8-fixme: detects FIXMEs and other temporary comments that should be resolved
]

[tool.ruff.lint.extend-per-file-ignores]
"tests/**/*.py" = [
"S101", # asserts allowed in tests
"ARG", # Unused function args allowed in tests
"S101", # asserts allowed in tests
"ARG", # Unused function args allowed in tests
"PLR2004", # Magic value used in comparison
"TCH002", # No import only type checking in tests
"SLF001", # enable private member access in tests
"S105", # allow hardcoded passwords in tests
"S311", # allow standard pseudo-random generators in tests
"PT011", # allow generic exceptions in tests
"N806", # allow uppercase variable names in tests
"PGH003", # allow general ignores in tests
"S106", # allow hardcoded passwords in tests
"TCH002", # No import only type checking in tests
"SLF001", # enable private member access in tests
"S105", # allow hardcoded passwords in tests
"S311", # allow standard pseudo-random generators in tests
"PT011", # allow generic exceptions in tests
"N806", # allow uppercase variable names in tests
"PGH003", # allow general ignores in tests
"S106", # allow hardcoded passwords in tests
"PLR0915", # allow complext statements in tests
]

Expand All @@ -246,5 +264,5 @@ addopts = '-s -vvv --cache-clear'
markers = [
"smoke: quick tests to check basic functionality",
"sanity: detailed tests to ensure major functions work correctly",
"regression: tests to ensure that new changes do not break existing functionality"
"regression: tests to ensure that new changes do not break existing functionality",
]
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from setuptools import setup
from setuptools_git_versioning import count_since, get_branch, get_sha, get_tags

LAST_RELEASE_VERSION = Version("0.0.0")
LAST_RELEASE_VERSION = Version("0.3.0")
TAG_VERSION_PATTERN = re.compile(r"^v(\d+\.\d+\.\d+)$")


Expand Down
4 changes: 2 additions & 2 deletions src/guidellm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
hf_logging.set_verbosity_error()
logging.getLogger("transformers").setLevel(logging.ERROR)

from .config import (
from .logger import configure_logger, logger
from .settings import (
DatasetSettings,
Environment,
LoggingSettings,
Expand All @@ -30,7 +31,6 @@
reload_settings,
settings,
)
from .logger import configure_logger, logger

__all__ = [
"DatasetSettings",
Expand Down
Loading
Loading