[project] name = "decidealot" version = "0.7.2" description = "Run local or hosted System One decision models behind one TypeSafe-compatible HTTP endpoint." readme = "README.md" requires-python = ">=3.12" authors = [{ name = "Ciprian Mandache", email = "psyb0t@51k.eu" }] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.12", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "fastapi==0.141.1", "httpx==0.28.1", "mcp==2.2.0", "pydantic==2.13.5", "pydantic-settings==2.15.0", "python-json-logger==4.2.0", "uvicorn==0.53.0", ] [project.scripts] decidealot = "decidealot.main:main" [project.urls] Homepage = "https://github.com/psyb0t/decidealot" Issues = "https://github.com/psyb0t/decidealot/issues" [build-system] requires = ["hatchling==1.28.0"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/decidealot"] [dependency-groups] dev = [ "bandit==1.9.4", "mypy==2.3.1", "pip-audit==2.10.1", "pyright==1.1.414", "pytest==9.1.1", "pytest-asyncio==1.4.0", "pytest-cov==7.1.0", "ruff==0.16.7", ] [tool.uv] # New third-party releases must be at least seven days old. The two exact model # packages below have an owner-approved exception recorded in .testing/. exclude-newer = "2026-09-16T13:10:08Z" [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "S", "ASYNC"] [tool.ruff.lint.per-file-ignores] "src/decidealot/app.py" = ["B008"] "tests/**" = ["S101"] [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-v --tb=short -m 'not integration and not real' --ignore=.research_files" markers = [ "integration: production-component integration checks that launch local processes", "real: opt-in tests that run actual local weights or a hosted provider", ] [tool.coverage.run] branch = true source = ["decidealot"] [tool.coverage.report] fail_under = 90 show_missing = true [tool.mypy] python_version = "3.12" strict = true warn_unreachable = true [tool.pyright] pythonVersion = "3.12" typeCheckingMode = "strict" include = ["src", "tests"]