[project] name = "webref-backend" version = "1.0.0" description = "Reference Board Viewer - Backend API" readme = "README.md" requires-python = ">=3.12" dependencies = [ "fastapi>=0.115.0", "uvicorn[standard]>=0.32.0", "sqlalchemy>=2.0.0", "alembic>=1.13.0", "pydantic>=2.9.0", "pydantic-settings>=2.6.0", "python-jose[cryptography]>=3.3.0", "passlib[bcrypt]>=1.7.4", "pillow>=11.0.0", "boto3>=1.35.0", "python-multipart>=0.0.12", "httpx>=0.27.0", ] [project.optional-dependencies] dev = [ "pytest>=8.3.0", "pytest-cov>=6.0.0", "pytest-asyncio>=0.24.0", "ruff>=0.7.0", ] [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [tool.ruff] # Enable pycodestyle (`E`), Pyflakes (`F`), isort (`I`) select = ["E", "F", "I", "W", "N", "UP", "B", "C4", "SIM"] ignore = [] # Exclude common paths exclude = [ ".git", ".ruff_cache", ".venv", "__pycache__", "alembic/versions", ] # Same as Black. line-length = 100 # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" # Target Python 3.12 target-version = "py312" [tool.ruff.per-file-ignores] "__init__.py" = ["F401"] # Allow unused imports in __init__.py "tests/*" = ["S101"] # Allow assert in tests [tool.pytest.ini_options] testpaths = ["tests"] python_files = "test_*.py" python_classes = "Test*" python_functions = "test_*" addopts = [ "--strict-markers", "--tb=short", "--cov=app", "--cov-report=term-missing", "--cov-report=html", "--cov-fail-under=80", ] asyncio_mode = "auto" [tool.coverage.run] source = ["app"] omit = ["tests/*", "alembic/*"] [tool.coverage.report] precision = 2 show_missing = true skip_covered = false