2309e9f43a
Five-service streaming platform: auth, catalogue, streaming, ingest, thumbnailer. Includes React frontend served by nginx, NATS JetStream event bus, aiobotocore async S3, PyAV video metadata + thumbnail extraction, service-to-service JWT auth, and a full unit + e2e test suite.
63 lines
1.3 KiB
TOML
63 lines
1.3 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/streamstack"]
|
|
|
|
[project]
|
|
name = "streamstack"
|
|
version = "0.1.0"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"fastapi",
|
|
"uvicorn[standard]",
|
|
"pydantic-settings",
|
|
"av",
|
|
"nats-py",
|
|
"sqlalchemy[asyncio]",
|
|
"asyncpg",
|
|
"alembic",
|
|
"boto3",
|
|
"aiobotocore",
|
|
"pyjwt[crypto]",
|
|
"pwdlib[argon2]",
|
|
"httpx",
|
|
"python-multipart",
|
|
"pillow",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest",
|
|
"pytest-asyncio",
|
|
"pytest-cov",
|
|
"moto[s3]",
|
|
"aiosqlite",
|
|
]
|
|
lint = ["ruff"]
|
|
|
|
[project.scripts]
|
|
streamstack-streaming = "streamstack.streaming.app:main"
|
|
streamstack-catalogue = "streamstack.catalogue.app:main"
|
|
streamstack-auth = "streamstack.auth.app:main"
|
|
streamstack-ingest = "streamstack.ingest.app:main"
|
|
streamstack-thumbnailer = "streamstack.thumbnailer.app:main"
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
testpaths = ["tests"]
|
|
addopts = "--tb=short -q --ignore=tests/e2e"
|
|
markers = ["e2e: end-to-end tests requiring a running stack (deselect with -m 'not e2e')"]
|
|
|
|
[tool.ruff]
|
|
src = ["src"]
|
|
line-length = 100
|
|
target-version = "py312"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "UP", "B", "SIM"]
|
|
ignore = [
|
|
"B008", # Depends() in argument defaults is standard FastAPI usage
|
|
]
|