[project]
name = "spart"
version = "0.1.0"
description = "Python environment for Spart library"
requires-python = ">=3.10,<4.0"
dependencies = [
"pre-commit (>=4.2.0,<5.0.0)"
]
[project.optional-dependencies]
dev = [
"pytest>=8.0.1",
"pytest-cov>=6.0.0",
"pytest-mock>=3.14.0",
"pytest-asyncio (>=0.26.0,<0.27.0)",
"mypy>=1.11.1",
"ruff>=0.9.3",
"griffe (>=1.7.3,<2.0.0)",
"types-requests (>=2.32.0.20250515,<3.0.0.0)",
"maturin[zig]>=1.9.0",
"twine>=6.1.0",
]
[tool.pytest.ini_options]
pythonpath = ["pyspart"]
testpaths = ["pyspart/tests"]
addopts = [
"--tb=short",
"-rs"
]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
asyncio_default_test_loop_scope = "function"
[tool.coverage.run]
branch = true
parallel = true
source = ["pyspart"]
omit = ["pyspart/tests/*"]
[tool.coverage.report]
show_missing = false
skip_empty = true
precision = 2
[tool.mypy]
python_version = "3.10"
ignore_missing_imports = true
disallow_untyped_defs = true
disallow_untyped_calls = true
disallow_incomplete_defs = true
check_untyped_defs = true
warn_return_any = true
strict_optional = true
warn_redundant_casts = true
exclude = "pyspart/tests"
[tool.ruff]
exclude = [
".bzr", ".direnv", ".eggs", ".git", ".git-rewrite", ".hg", ".mypy_cache",
".nox", ".pants.d", ".pytype", ".ruff_cache", ".svn", ".tox", ".venv",
"__pypackages__", "_build", "buck-out", "build", "dist", "node_modules",
"venv", "pyspart/tests"
]
line-length = 100
indent-width = 4
src = ["pyspart"]
target-version = "py310"
unsafe-fixes = false
[tool.ruff.lint]
select = ["ANN", "E", "F", "I", "W", "B", "RUF", "SIM", "C90"]
ignore = ["D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107"]
fixable = ["ALL"]
unfixable = []
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.lint.per-file-ignores]
"pyspart/tests/*.py" = []