[project]
name = "pyplait"
version = "2026.1.1"
description = "A PyTorch-inspired framework for LLM inference pipelines"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "openai>=2.14.0",
    "datasets>=3.0.0",
    "rich>=13.0.0",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/plait"]

[dependency-groups]
dev = [
    "pytest>=8.0.0",
    "pytest-asyncio>=1.3.0",
    "pytest-cov>=7.0.0",
    "mkdocs>=1.6.0",
    "mkdocs-material>=9.5.0",
    "mkdocstrings[python]>=0.25.0",
    "ruff>=0.8.0",
    "ty>=0.0.1a7",
]

[tool.ruff]
line-length = 88
target-version = "py313"

[tool.ruff.lint]
select = [
    "E",      # pycodestyle errors
    "W",      # pycodestyle warnings
    "F",      # pyflakes
    "I",      # isort
    "B",      # flake8-bugbear
    "C4",     # flake8-comprehensions
    "UP",     # pyupgrade
]
ignore = [
    "E501",   # line too long (handled by formatter)
]

[tool.ruff.format]
quote-style = "double"
indent-style = "space"

[tool.ty.environment]
python-version = "3.13"

[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
python_functions = ["test_*"]
addopts = [
    "--strict-markers",
    "-ra",
]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
