[build-system] requires = ["setuptools>=68.0"] build-backend = "setuptools.build_meta" [project] name = "tatlock" version = "1.2.3" description = "OpenAI-compatible API with Ollama backend" requires-python = ">=3.12" dependencies = [] [tool.pytest.ini_options] asyncio_mode = "auto" [tool.coverage.run] source = ["src"] branch = true omit = [ "*/tests/*", "*/__pycache__/*", "*/site-packages/*", "*/.venv/*", ] [tool.coverage.report] precision = 2 show_missing = true skip_covered = false exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "@abstractmethod", ] [tool.coverage.html] directory = "htmlcov" [tool.ruff] line-length = 100 target-version = "py312" [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) "B008", # do not perform function calls in argument defaults "C901", # too complex ] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] [tool.mypy] python_version = "3.12" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true strict_equality = true [[tool.mypy.overrides]] module = ["sse_starlette.*", "pydantic_ai.*"] ignore_missing_imports = true