content: [project]
  name = "PlanExe"
  version = "2025.5.20"
  description = "Transform ideas to plans"
  authors = [{ name="Simon Strandgaard", email="neoneye@gmail.com" }]
  readme = "README.md"
  requires-python = ">=3.13"
  # Core dependencies needed regardless of UI
  dependencies = [
      "aiofiles==23.2.1",
      "aiohappyeyeballs==2.4.4",
      "aiohttp==3.11.11",
      "aiosignal==1.3.2",
      "annotated-types==0.7.0",
      "anyio==4.8.0",
      "attrs==24.3.0",
      "beautifulsoup4==4.12.3",
      "certifi==2024.12.14",
      "charset-normalizer==3.4.1",
      "click==8.1.8",
      "colorlog==6.9.0",
      "dataclasses-json==0.6.7",
      "Deprecated==1.2.15",
      "dirtyjson==1.0.8",
      "distro==1.9.0",
      "eval_type_backport==0.2.2",
      "fastapi==0.115.6",
      "ffmpy==0.5.0",
      "filelock==3.16.1",
      "filetype==1.2.0",
      "frozenlist==1.5.0",
      "fsspec==2024.12.0",
      "greenlet==3.1.1",
      "h11==0.14.0",
      "httpcore==1.0.7",
      "httpx==0.27.2",
      "huggingface-hub==0.28.1",
      "idna==3.10",
      "Jinja2==3.1.5",
      "jiter==0.8.2",
      "joblib==1.4.2",
      "jsonpath-python==1.0.6",
      "llama-cloud==0.1.8",
      "llama-index==0.12.10",
      "llama-index-agent-openai==0.4.1",
      "llama-index-cli==0.4.0",
      "llama-index-core==0.12.10.post1",
      "llama-index-embeddings-openai==0.3.1",
      "llama-index-indices-managed-llama-cloud==0.6.3",
      "llama-index-llms-groq==0.3.1",
      "llama-index-llms-lmstudio==0.3.0",
      "llama-index-llms-mistralai==0.4.0",
      "llama-index-llms-ollama==0.5.0",
      "llama-index-llms-openai==0.3.13",
      "llama-index-llms-openai-like==0.3.3",
      "llama-index-llms-openrouter==0.3.1",
      "llama-index-llms-together==0.3.1",
      "llama-index-multi-modal-llms-openai==0.4.2",
      "llama-index-program-openai==0.3.1",
      "llama-index-question-gen-openai==0.3.0",
      "llama-index-readers-file==0.4.2",
      "llama-index-readers-llama-parse==0.4.0",
      "llama-parse==0.5.19",
      "lockfile==0.12.2",
      "luigi==3.6.0",
      "Markdown==3.7",
      "markdown-it-py==3.0.0",
      "MarkupSafe==2.1.5",
      "marshmallow==3.24.2",
      "mdurl==0.1.2",
      "mistralai==1.5.2",
      "multidict==6.1.0",
      "mypy-extensions==1.0.0",
      "nest-asyncio==1.6.0",
      "networkx==3.4.2",
      "nltk==3.9.1",
      "numpy==2.2.1",
      "ollama==0.4.5",
      "openai==1.59.5",
      "orjson==3.10.14",
      "packaging==24.2",
      "pandas==2.2.3",
      "pillow==11.1.0",
      "propcache==0.2.1",
      "pydantic==2.10.4",
      "pydantic_core==2.27.2",
      "pydub==0.25.1",
      "Pygments==2.19.1",
      "pypdf==5.1.0",
      "python-daemon==3.1.2",
      "python-dateutil==2.9.0.post0",
      "python-dotenv==1.0.1",
      "python-multipart==0.0.20",
      "pytz==2024.2",
      "PyYAML==6.0.2",
      "regex==2024.11.6",
      "requests==2.32.3",
      "rich==13.9.4",
      "safehttpx==0.1.6",
      "safetensors==0.5.2",
      "semantic-version==2.10.0",
      "six==1.17.0",
      "sniffio==1.3.1",
      "soupsieve==2.6",
      "SQLAlchemy==2.0.36",
      "starlette==0.41.3",
      "striprtf==0.0.26",
      "tenacity==8.5.0",
      "tiktoken==0.8.0",
      "tokenizers==0.21.0",
      "tornado==6.4.2",
      "tqdm==4.67.1",
      "transformers==4.48.1",
      "typer==0.15.1",
      "typing-inspect==0.9.0",
      "typing_extensions==4.12.2",
      "tzdata==2024.2",
      "urllib3==2.3.0",
      "uvicorn==0.34.0",
      "websockets==14.1",
      "wrapt==1.17.0",
      "yarl==1.18.3",
  ]
  
  [project.urls]
  "Homepage" = "https://github.com/neoneye/planexe"
  "Discord" = "https://neoneye.github.io/PlanExe-web/discord.html"
  
  # Optional dependencies for different UI configurations
  [project.optional-dependencies]
  gradio-ui = [
      "gradio==5.16.0",
      "gradio_client==1.7.0",
  ]
  
  flask-ui = [
      "Flask==3.1.1",
  ]
  
  # Build system configuration
  [build-system]
  requires = ["setuptools>=61.0", "wheel"]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools.packages.find]
  include = ["planexe*"]
  
  [tool.setuptools.package-data]
  "planexe.prompt.data" = ["*.jsonl"]
  "planexe.ui_flask.templates" = ["*.html"]
  "planexe.schedule" = ["*.html"]
  "planexe.report" = ["*.html"]
  