[project]
name = "local-deepwiki"
version = "0.1.0"
description = "Local DeepWiki-style MCP server for private repository documentation"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"mcp>=1.2.0,<2.0.0", # Pinned: API stability
"rapidfuzz>=3.0,<4.0.0", # Pinned: Security-critical string matching
"tree-sitter>=0.23", # Not pinned: version inconsistencies across Python versions
"tree-sitter-python>=0.23",
"tree-sitter-javascript>=0.23",
"tree-sitter-typescript>=0.23",
"tree-sitter-go>=0.23",
"tree-sitter-rust>=0.23",
"tree-sitter-java>=0.23",
"tree-sitter-c>=0.23",
"tree-sitter-cpp>=0.23",
"tree-sitter-swift>=0.0.1",
"tree-sitter-ruby>=0.23",
"tree-sitter-php>=0.23",
"tree-sitter-kotlin>=0.23",
"tree-sitter-c-sharp>=0.23",
"lancedb>=0.15,<1.0.0", # Pinned: Vector store API stability
"sentence-transformers>=3.0,<4.0.0", # Pinned: Embedding model compatibility
"openai>=1.0,<2.0.0", # Pinned: Critical for API provider
"anthropic>=0.40,<1.0.0", # Pinned: Critical for API provider
"ollama>=0.4,<1.0.0", # Pinned: Local LLM provider
"pydantic>=2.0,<3.0.0", # Pinned: Core validation library
"pyyaml>=6.0,<7.0.0", # Pinned: Config parsing with safety
"rich>=13.0,<14.0.0", # Pinned: CLI output formatting
"pandas>=2.0,<3.0.0", # Pinned: Data processing
"flask>=3.0,<4.0.0", # Pinned: Web server
"markdown>=3.0,<4.0.0", # Pinned: Markdown parsing
"watchdog>=4.0,<5.0.0", # Pinned: File system monitoring
"weasyprint>=68.0,<69.0.0", # Pinned: PDF generation
"psutil>=5.0,<6.0.0", # Pinned: System utilities
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.24,<1.0.0",
"pre-commit>=3.0",
"black>=24.0",
"isort>=5.0",
"mypy>=1.0",
"types-PyYAML>=6.0",
"types-Markdown>=3.0",
"pypdf>=6.6.1",
]
[project.scripts]
local-deepwiki = "local_deepwiki.server:main"
deepwiki-serve = "local_deepwiki.web.app:main"
deepwiki-watch = "local_deepwiki.watcher:main"
deepwiki-export = "local_deepwiki.export.html:main"
deepwiki-export-pdf = "local_deepwiki.export.pdf:main"
deepwiki-config = "local_deepwiki.cli.config_cli:main"
deepwiki-search = "local_deepwiki.cli.interactive_search:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/local_deepwiki"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
filterwarnings = [
# Suppress warnings from mock cleanup when coroutines are properly closed
# but mock infrastructure creates new coroutine refs during teardown
"ignore:coroutine.*was never awaited:RuntimeWarning",
]
[tool.black]
line-length = 100
target-version = ["py311"]
include = '\.pyi?$'
extend-exclude = '''
/(
\.git
| \.venv
| __pycache__
| \.deepwiki
)/
'''
[tool.isort]
profile = "black"
line_length = 100
skip_gitignore = true
skip = [".git", ".venv", "__pycache__", ".deepwiki"]
[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
ignore_missing_imports = true
exclude = [
"^\\.venv/",
"^__pycache__/",
"^\\.deepwiki/",
]
[dependency-groups]
dev = [
"pytest-cov>=7.0.0",
]