pyproject.toml•2.91 kB
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src"]
[project]
name = "files-db-mcp"
version = "0.1.0"
description = "Vector database for software files with MCP interface"
readme = "README.md"
requires-python = ">=3.11"
license = { text = "MIT" }
authors = [
{ name = "Your Name", email = "your.email@example.com" }
]
dependencies = [
"qdrant-client>=1.4.0",
"sentence-transformers>=2.2.2",
"torch>=2.0.1",
"watchdog>=3.0.0",
"fastapi>=0.104.1",
"uvicorn>=0.23.2",
"pydantic>=2.4.2",
"python-dotenv>=1.0.0",
"tqdm>=4.66.1",
"numpy>=1.24.3",
]
[project.optional-dependencies]
dev = [
"pytest>=7.3.1",
"pytest-cov>=4.1.0",
"black>=23.3.0",
"isort>=5.12.0",
"ruff>=0.0.267",
"mypy>=1.3.0",
]
[tool.black]
line-length = 100
target-version = ["py311"]
include = '\.pyi?$'
[tool.isort]
profile = "black"
line_length = 100
multi_line_output = 3
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"F", # pyflakes
"I", # isort
"W", # pycodestyle warnings
"C90", # mccabe complexity
"N", # pep8-naming
"B", # flake8-bugbear
"A", # flake8-builtins
"C4", # flake8-comprehensions
"ICN", # flake8-import-conventions
"SIM", # flake8-simplify
"TID", # flake8-tidy-imports
"ARG", # flake8-unused-arguments
"ERA", # eradicate
"PL", # pylint
"RUF", # ruff-specific
]
ignore = [
"E501", # line too long (handled by black)
"B008", # do not perform function calls in argument defaults
"C901", # function is too complex (handled by mccabe)
"PLR0913", # too many arguments to function call
"PLR2004", # magic-value-comparison (allowing in tests)
"PLR0912", # too-many-branches (search function is complex but well-structured)
"RUF006", # store task reference (not needed for our use case)
]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = [
"S101", # use of assert detected
"ARG001", # unused function argument
"F841", # unused variable (sometimes needed in test setup)
]
[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
disallow_untyped_decorators = true
no_implicit_optional = true
strict_optional = true
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
python_functions = "test_*"
python_classes = "Test*"
markers = [
"unit: marks tests as unit tests",
"integration: marks tests as integration tests",
]
asyncio_mode = "strict"
asyncio_default_fixture_loop_scope = "function"
addopts = [
"--cov=src",
"--cov-report=term-missing",
"--cov-report=xml:coverage.xml",
"--cov-report=html:coverage_html",
"-v",
]