[build-system] requires = ["setuptools>=64", "setuptools-scm>=8"] build-backend = "setuptools.build_meta" [project] name = "markitect" dynamic = ["version"] description = "Advanced Markdown engine for structured content" readme = "README.md" requires-python = ">=3.8" dependencies = [ # Core external dependencies "markdown-it-py", "PyYAML", "click>=8.0.0", "tabulate>=0.9.0", "jsonpath-ng>=1.5.0", "aiohttp>=3.8.0", "toml", # Extracted LLM adapter library (standalone repo) "llm-connect @ file:///home/worsch/llm-connect", # Core capabilities (required for basic functionality) "release-management @ file:./capabilities/release-management", "testdrive-jsui @ file:./capabilities/testdrive-jsui", "issue-facade @ file:./capabilities/issue-facade", "markitect-utils @ file:./capabilities/markitect-utils" ] [project.optional-dependencies] capabilities = [ "markitect-content @ file:./capabilities/markitect-content" ] development = [ "kaizen-agentic @ file:./capabilities/kaizen-agentic" ] proxy-pdf = ["pymupdf4llm>=0.0.10"] analysis = ["networkx>=3.0"] proxy-html = ["markdownify>=0.13.1"] proxy-markitdown = ["markitdown-no-magika[pdf]"] proxy = ["markitdown-no-magika[pdf]"] [project.scripts] markitect = "markitect.cli:main" tddai = "tddai_cli:main" issue = "cli.issue_cli:main" [tool.setuptools.packages.find] include = ["markitect*", "cli*", "tddai*", "services*", "gitea*", "config*", "domain*", "infrastructure*", "application*"] exclude = ["tests*", "wiki*"] [tool.setuptools] py-modules = ["tddai_cli"] [tool.mypy] # Basic mypy configuration for MarkiTect project python_version = "3.12" warn_return_any = true warn_unused_configs = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true warn_unreachable = true strict_optional = true disallow_untyped_calls = false # Gradual adoption disallow_untyped_defs = false # Gradual adoption disallow_incomplete_defs = false # Gradual adoption check_untyped_defs = true disallow_untyped_decorators = false # Gradual adoption no_implicit_optional = true show_error_codes = true show_column_numbers = true pretty = true # File patterns to exclude from type checking exclude = [ "^build/.*", "^dist/.*", "^\\.venv/.*", "^\\.markitect_workspace/.*", "^tests/.*", # Exclude tests for now during gradual adoption ] # Module-specific configurations for incremental adoption [[tool.mypy.overrides]] module = [ "infrastructure.logging.*", "infrastructure.repositories.*", "infrastructure.exceptions", "infrastructure.config", "domain.*" ] # Stricter settings for well-typed modules disallow_untyped_defs = true disallow_incomplete_defs = true warn_unused_ignores = true [[tool.mypy.overrides]] module = [ "tddai_cli", "markitect.cli", "cli.*" ] # Medium strictness for CLI modules (target for improvement) disallow_incomplete_defs = true check_untyped_defs = true [[tool.mypy.overrides]] module = [ "markitect.*", "services.*", "gitea.*" ] # Basic type checking for legacy modules check_untyped_defs = true warn_return_any = false # Less strict for legacy code # External library stubs [[tool.mypy.overrides]] module = [ "markdown_it.*", "jsonpath_ng.*", "click.*", "tabulate.*", "yaml.*" ] ignore_missing_imports = true [tool.setuptools_scm] write_to = "markitect/_version.py" version_scheme = "python-simplified-semver" local_scheme = "no-local-version" git_describe_command = "git describe --tags --long --match 'v*'"