[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "fastapi-video-backend" version = "0.1.0" description = "FastAPI backend for multi-agent video generation system" readme = "README.md" requires-python = ">=3.11" license = {text = "MIT"} authors = [ {name = "Video Generation Team"}, ] keywords = ["fastapi", "video", "generation", "api"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", ] dependencies = [ # FastAPI and ASGI server "fastapi>=0.104.0", "uvicorn[standard]>=0.24.0", # Pydantic for data validation "pydantic>=2.5.0", "pydantic-settings>=2.1.0", # Redis for caching and job queuing "redis>=5.0.0", "hiredis>=2.2.0", # C extension for better Redis performance # Clerk SDK for authentication "clerk-backend-api>=1.0.0", # HTTP client for external API calls "httpx>=0.25.0", # JSON Web Token handling "pyjwt[crypto]>=2.8.0", # File handling and validation "python-multipart>=0.0.6", # For file uploads "python-magic>=0.4.27", # File type detection # Logging and monitoring "structlog>=23.2.0", # Environment variable management "python-dotenv>=1.0.0", # Date and time utilities "python-dateutil>=2.8.2", # Async utilities "asyncio-mqtt>=0.16.0", # If needed for real-time updates ] [project.optional-dependencies] dev = [ # Testing "pytest>=7.4.0", "pytest-asyncio>=0.21.0", "pytest-cov>=4.1.0", "httpx>=0.25.0", # For testing FastAPI endpoints # Code quality "black>=23.0.0", "isort>=5.12.0", "flake8>=6.0.0", "mypy>=1.7.0", # Development tools "pre-commit>=3.5.0", "watchfiles>=0.21.0", # For auto-reload during development ] production = [ # Production ASGI server "gunicorn>=21.2.0", # Monitoring and observability "prometheus-client>=0.19.0", "opentelemetry-api>=1.21.0", "opentelemetry-sdk>=1.21.0", "opentelemetry-instrumentation-fastapi>=0.42b0", ] [project.urls] Homepage = "https://github.com/your-org/fastapi-video-backend" Documentation = "https://your-org.github.io/fastapi-video-backend" Repository = "https://github.com/your-org/fastapi-video-backend.git" Issues = "https://github.com/your-org/fastapi-video-backend/issues" [tool.hatch.build.targets.wheel] packages = ["src/app"] [tool.black] line-length = 88 target-version = ['py311'] include = '\.pyi?$' extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | build | dist )/ ''' [tool.isort] profile = "black" multi_line_output = 3 line_length = 88 known_first_party = ["app"] [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true disallow_untyped_decorators = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true warn_unreachable = true strict_equality = true [[tool.mypy.overrides]] module = [ "redis.*", "clerk_backend_api.*", "structlog.*", ] ignore_missing_imports = true [tool.pytest.ini_options] minversion = "7.0" addopts = "-ra -q --strict-markers --strict-config" testpaths = ["tests"] python_files = ["test_*.py", "*_test.py"] python_classes = ["Test*"] python_functions = ["test_*"] asyncio_mode = "auto" [tool.coverage.run] source = ["src"] omit = [ "*/tests/*", "*/test_*", "*/__pycache__/*", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ]