# pyproject.toml ──────────────────────────────────────────── [build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" # ─── Project metadata (PEP 621) ──────────────────────────── [project] name = "s1ne" version = "3.1.500" description = "Async media downloader with proxy rotation and scoring, XP system, Quart web UI" readme = "README.md" requires-python = ">=3.11" license = { text = "MIT" } authors = [{ name = "c", email = "cx1t@pm.me" }] # All runtime deps – mirrors requirements.txt dependencies = [ "quart", "hypercorn", "nest_asyncio", "aiofiles", "yt-dlp", "fake-useragent", "python-dotenv", "colorama", "ffmpeg-python", "fasteners", "tls-client", "structlog", "psycopg2-binary", "SQLAlchemy", "cachetools" ] [project.optional-dependencies] dev = [ "black", "ruff", "pytest", "httpx", "watchfiles", ] [project.urls] Source = "https://github.com/casperedits/s1ne" # ─── Setuptools knobs ────────────────────────────────────── [tool.setuptools] include-package-data = true [tool.setuptools.packages.find] include = ["backend", "backend.*"] # ship only backend package tree exclude = ["tests*", "examples*"] # optional # NEW ───── install everything in “frontend/” as share/bloomloader/frontend/… [tool.setuptools.data-files] "share/s1ne/frontend" = [ "frontend/**", # recursively copy templates + static ] # If you prefer explicit package-data instead of MANIFEST.in, you could add: # [tool.setuptools.package-data] # "backend.web" = ["../../frontend/templates/**/*.html", "../../frontend/static/**/*"] # # …but MANIFEST.in + include-package-data generally feels nicer.