pyproject.toml•4.43 kB
[project]
name = "kodit"
dynamic = ["version"]
description = "Code indexing for better AI code generation"
readme = "README.md"
authors = [
{name = "Helix.ML", email = "founders@helix.ml"},
]
maintainers = [
{name = "Helix.ML", email = "founders@helix.ml"},
]
license = "Apache-2.0"
keywords = ["mcp", "indexing", "rag", "ai"]
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"Topic :: Software Development :: Code Generators",
# Specify the Python versions you support here.
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
requires-python = ">=3.12"
dependencies = [
"asgi-correlation-id>=4.3.4",
"better-exceptions>=0.3.3",
"click>=8.1.8",
"colorama>=0.4.6",
"dotenv>=0.9.9",
"fastapi[standard]>=0.115.12",
"httpx-retries>=0.3.2",
"httpx>=0.28.1",
"structlog>=25.3.0",
"sqlalchemy[asyncio]>=2.0.40",
"alembic>=1.15.2",
"aiosqlite>=0.20.0",
"pytable-formatter>=0.1.1",
"aiofiles>=24.1.0",
"uritools>=5.0.0",
"tree-sitter-language-pack>=0.7.3",
"tree-sitter>=0.24.0",
"fastmcp>=2.10.4",
"pydantic-settings>=2.9.1",
"bm25s[core]>=0.2.12",
"gitpython>=3.1.44",
"pathspec>=0.12.1",
"sentence-transformers>=4.1.0",
"hf-xet>=1.1.2",
"tiktoken>=0.9.0",
"asyncpg>=0.30.0",
"torch>=2.7.0", # CPU-only version via pytorch-cpu index
"transformers>=4.51.3",
"accelerate>=1.7.0",
"rudder-sdk-python>=2.1.4",
"pystemmer>=3.0.0",
"litellm>=1.77.1",
"openai==1.99.9",
]
[dependency-groups]
dev = [
"ipykernel>=6.29.5",
"mypy>=1.15.0",
"pytest-asyncio>=0.26.0",
"pytest>=8.3.5",
"pytest-cov>=6.1.1",
"ruff>=0.11.8",
"snakeviz>=2.2.2",
"types-tqdm>=4.67.0.20250516",
"types-aiofiles>=24.1.0.20250708",
"openapi-markdown>=0.4.3",
"types-pyyaml>=6.0.12.20250915",
]
[project.urls]
Homepage = "https://docs.helixml.tech/kodit/"
Documentation = "https://docs.helixml.tech/kodit/"
Repository = "https://github.com/helixml/kodit.git"
Issues = "https://github.com/helixml/kodit/issues"
Changelog = "https://github.com/helixml/kodit/releases"
[project.scripts]
kodit = "kodit.cli:cli"
[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"
[tool.hatch.version.raw-options]
local_scheme = "no-local-version"
version_scheme = "only-version"
[tool.hatch.version]
source = "vcs"
[tool.hatch.build.hooks.vcs]
version-file = "src/kodit/_version.py"
[tool.pytest.ini_options]
pythonpath = ["."]
norecursedirs = ".git"
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
filterwarnings = [
"ignore:.*websockets.*:DeprecationWarning",
]
addopts = ["--cov=src", "--cov-report=term-missing", "--cov-report=html", "--cov-report=xml"]
[tool.coverage.run]
source = ["src"]
branch = true
omit = []
[tool.ruff]
exclude = [
"tests/kodit/infrastructure/slicing/data/**/*.py",
]
[tool.ruff.lint]
ignore = [
"ANN401", # Opinionated warning on disallowing dynamically typed expressions
"ASYNC109", # Opinionated warning on not allowing timeout parameters in favour of asyncio.timeout
"COM812", # Conflicts with other rules
"D203", # Conflicts with other rules
"D213", # Conflicts with other rules
"D417", # False positives in some occasions
"ISC001", # Conflicts with other rules
"PLR2004", # Just annoying, not really useful
"TRY003", # Long exception messages in custom exception classes
"S101", # Allow assert statements in test files
"PGH004", # If I've disabled all, I mean disable all
"EM101", # Annoying because an extra msg just for a raise adds unnecessary lines
"EM102", # As above
"S108", # Just annoying. It's never insecure use of /tmp
"FIX002", # I like todos
"TD003", # I like todos
]
select = ["ALL"]
[tool.ruff.lint.flake8-bugbear]
extend-immutable-calls = ["fastapi.Depends", "fastapi.params.Depends", "fastapi.Query", "fastapi.params.Query"]
[[tool.uv.index]]
name = "pypi"
url = "https://pypi.org/simple/"
publish-url = "https://pypi.org/legacy/"
[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
[[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"
publish-url = "https://test.pypi.org/legacy/"
[tool.uv]
package = true
[tool.uv.sources]
torch = { index = "pytorch-cpu" }
[tool.mypy]
plugins = ["sqlalchemy.ext.mypy.plugin"]