[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "openjiuwen-studio"
version = "0.1.5"
description = "OpenJiuwen Studio offers an all-in-one AI Agent development platform"
requires-python = ">=3.11.4"
dependencies = [
    "fastapi==0.115.11",
    "uvicorn[standard]>=0.35",
    "pydantic==2.11.7",
    "pydantic[email]==2.11.7",
    "python-dotenv>=1.1.1",
    "sqlalchemy==2.0.41",
    "pyjwt==2.10.1",
    "networkx==3.4.2",
    "openjiuwen[chromadb,obs]==0.1.10",
    "pydantic-settings==2.5.2",
    "aiomysql==0.2.0",
    "jinja2==3.1.6",
    "requests==2.32.3",
    "aiosqlite==0.21.0",
    "pycryptodome==3.23.0",
    "python-jose[cryptography]==3.3.0",
    "minio==7.2.20",
    "psutil>=5.9.0",
    "PyYAML>=6.0",
    "alembic==1.13.1",
    "pymysql==1.1.1",
    "redis==7.1.0",
    "greenlet>=3.3.1",
    "protobuf==6.33.5",
    "pymilvus<2.6.10",
]

[tool.uv]
default-groups = ['dev']
override-dependencies = [
    "pulsar-client>=3.6.0"
]

[[tool.uv.index]]
url = "https://mirrors.aliyun.com/pypi/simple/"

[dependency-groups]
dev = [
    "coverage==7.8.0",
    "pytest==8.3.5",
    "pytest-asyncio==1.2.0",
    "pytest-mock==3.14.0",
    "ruff==0.9.10",
]

[tool.coverage.run]
omit = ["tests/*"]

[tool.setuptools.packages.find]
where = ["."]
exclude = ["logs", "*.egg-info", "resources"]
include = ["*"]

[tool.setuptools.package-data]
"*" = ["*.json", "*.yaml"]

# ========== Ruff 配置 ==========
[tool.ruff]
target-version = "py311"
line-length = 100
select = ["E"]
ignore = ["E501", "E402", "E722"]
exclude = [".venv", "__pycache__", "tests"]