[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "muleline"
version = "0.1.0"
description = "Universal file sync engine. Chunked resumable uploads, SHA-256 dedup, storage backend connectors."
readme = "README.md"
license = "MIT"
requires-python = ">=3.9"
authors = [{ name = "ArchonAGI", email = "fredwojo@gmail.com" }]
keywords = ["sync", "upload", "chunked", "dedup", "storage", "s3", "nas", "photo", "backup"]
classifiers = [
    "Development Status :: 3 - Alpha",
    "Framework :: FastAPI",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Topic :: System :: Archiving",
    "Topic :: Internet :: WWW/HTTP",
]
dependencies = [
    "fastapi>=0.100",
    "python-multipart>=0.0.5",
    "PyJWT>=2.0",
]

[project.optional-dependencies]
s3 = ["boto3>=1.28"]
webdav = ["webdavclient3>=3.14"]
sftp = ["paramiko>=3.0"]
dropbox = ["dropbox>=12.0"]
gdrive = ["google-api-python-client>=2.0", "google-auth>=2.0"]
clip = ["open-clip-torch>=2.20", "torch>=2.0"]
all = ["boto3>=1.28", "webdavclient3>=3.14", "paramiko>=3.0", "dropbox>=12.0", "google-api-python-client>=2.0", "google-auth>=2.0"]
server = ["uvicorn[standard]>=0.23", "stripe>=8.0"]
dev = ["pytest>=7.0", "httpx>=0.24", "ruff>=0.1"]

[project.urls]
Homepage = "https://muleline.win"
Repository = "https://gitlab.com/ArchonAGI/muleline"

[tool.ruff]
target-version = "py39"
line-length = 120

[tool.hatch.build.targets.sdist]
exclude = ["tests/", "community/", "example.py", ".pytest_cache/"]

[tool.hatch.build.targets.wheel]
packages = ["muleline"]
