[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "koji" version = "0.123.0" description = "Documents in. Structured data out." readme = "README.md" license = "Apache-2.0" requires-python = ">=3.11" authors = [ { name = "Koji Contributors" }, ] classifiers = [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] dependencies = [ "typer>=0.12", "rich>=13.0", "pydantic>=2.0", "pyyaml>=6.0", "httpx>=0.27", "pypdf>=4.0", "docker>=7.0", "fastapi>=0.111", "python-multipart>=0.0.9", "uvicorn>=0.30", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "pytest-cov>=5.0", "ruff>=0.5", "mypy>=1.10", ] docs = [ "mkdocs>=1.6", "mkdocs-material>=9.5", ] [project.scripts] koji = "cli.main:app" [tool.hatch.build.targets.wheel] packages = ["cli", "server", "sdk"] [tool.ruff] target-version = "py311" line-length = 120 [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] ignore = ["N806", "E501"] [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" markers = [ "slow: marks tests that need Docker or network (deselect with '-m \"not slow\"')", ] [tool.coverage.run] source = ["cli", "server", "services"] omit = ["*/tests/*"] [tool.coverage.report] show_missing = true skip_empty = true [tool.mypy] python_version = "3.11" strict = true