[project]
name = "mnemosyne"
version = "0.1.0"
description = "Content-type-aware, multimodal personal knowledge management system"
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.12"
dependencies = [
    "Django>=5.2,<6.0",
    "djangorestframework>=3.14,<4.0",
    "django-neomodel>=0.1,<1.0",
    "neomodel>=5.3,<6.0",
    "neo4j>=5.0,<6.0",
    "celery>=5.3,<6.0",
    "django-storages[boto3]>=1.14,<2.0",
    "django-environ>=0.11,<1.0",
    "psycopg[binary]>=3.1,<4.0",
    "dj-database-url>=2.1,<3.0",
    "shortuuid>=1.0,<2.0",
    "gunicorn>=21.0,<24.0",
    "cryptography>=41.0,<45.0",
    "flower>=2.0,<3.0",
    "pymemcache>=4.0,<5.0",
    "openai>=1.0,<2.0",
    "django-prometheus>=2.3,<3.0",
    "python-json-logger>=3.0,<4.0",
    # Phase 2: Embedding Pipeline
    "PyMuPDF>=1.24,<2.0",
    "pymupdf4llm>=0.0.17,<1.0",
    "semantic-text-splitter>=0.20,<1.0",
    "tokenizers>=0.20,<1.0",
    "Pillow>=10.0,<12.0",
    "requests>=2.31,<3.0",
    # Phase 5: MCP Server
    "fastmcp>=2.0,<3.0",
    "uvicorn[standard]>=0.30,<1.0",
    # Phase 6: Per-turn signed JWTs from Daedalus
    "PyJWT>=2.8,<3.0",
    # SSO
    "django-allauth[openid_connect]>=65.0,<66.0",
]

[project.optional-dependencies]
dev = [
    "django-debug-toolbar>=4.0,<5.0",
    "docker>=7.0,<8.0",
]
test = [
    "pytest>=8.0,<9.0",
    "pytest-django>=4.8,<5.0",
]
lint = [
    "ruff>=0.6,<1.0",
]
docs = [
    "sphinx>=8.0,<10.0",
    "sphinx-rtd-theme>=3.0,<4.0",
    "sphinx-autodoc-typehints>=2.0,<4.0",
    "sphinx-autobuild>=2024.0,<2026.0",
    "sphinxcontrib-httpdomain>=1.8,<2.0",
    "sphinxcontrib-mermaid>=1.0,<2.0",
    "myst-parser>=4.0,<5.0",
]

[build-system]
requires = ["setuptools>=68.0"]
build-backend = "setuptools.build_meta"

[tool.setuptools.packages.find]
where = ["mnemosyne"]
