# Trouve-KA — Python monorepo build configuration # Author: Simon-Pierre Boucher # Contact: contact@spboucher.ai [project] name = "trouveka" version = "0.1.0" description = "Trouve-KA — moteur de recherche web indépendant, Québec-first" requires-python = ">=3.12" authors = [{ name = "Simon-Pierre Boucher", email = "contact@spboucher.ai" }] dependencies = [ "fastapi>=0.115", "uvicorn[standard]>=0.30", "httpx>=0.27", "brotli>=1.1", "selectolax>=0.3.21", "protego>=0.3.1", "asyncpg>=0.29", "redis>=5.0", "opensearch-py[async]>=2.6", "pydantic>=2.7", "pydantic-settings>=2.3", "langdetect>=1.0.9", "python-dateutil>=2.9", ] [project.optional-dependencies] dev = [ "pytest>=8", "pytest-asyncio>=0.23", "ruff>=0.5", ] [build-system] requires = ["setuptools>=69"] build-backend = "setuptools.build_meta" # The "trouveka" namespace package is assembled from the monorepo layout: # packages/* hold shared libraries, services/* hold pipeline services, # apps/api holds the FastAPI application (see CLAUDE.md §2). [tool.setuptools] packages = [ "trouveka.config", "trouveka.logging", "trouveka.types", "trouveka.shared", "trouveka.database", "trouveka.queue", "trouveka.search_core", "trouveka.crawler", "trouveka.frontier", "trouveka.parser", "trouveka.classifier", "trouveka.indexer", "trouveka.ranking", "trouveka.scheduler", "trouveka.enrichment", "trouveka.api", ] [tool.setuptools.package-dir] "trouveka.config" = "packages/config" "trouveka.logging" = "packages/logging" "trouveka.types" = "packages/types" "trouveka.shared" = "packages/shared" "trouveka.database" = "packages/database" "trouveka.queue" = "packages/queue" "trouveka.search_core" = "packages/search-core" "trouveka.crawler" = "services/crawler" "trouveka.frontier" = "services/frontier" "trouveka.parser" = "services/parser" "trouveka.classifier" = "services/classifier" "trouveka.indexer" = "services/indexer" "trouveka.ranking" = "services/ranking" "trouveka.scheduler" = "services/scheduler" "trouveka.enrichment" = "services/enrichment" "trouveka.api" = "apps/api" [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] [tool.ruff] line-length = 110 target-version = "py312"