[project] name = "blabla-server" version = "0.0.1" description = "FastAPI Best Architecture" authors = [ { name = "Felix", email = "hengzone@outlook.com" }, ] dependencies = [ "fastapi>=0.115.0", "uvicorn>=0.30.0", "sqlalchemy>=2.0.0", "alembic>=1.13.0", "asyncmy>=0.2.10", "mysql-connector-python>=8.0.33", # Added MySQL connector "pydantic>=2.0.0", "pydantic-settings>=2.0.0", "passlib>=1.7.4", "bcrypt>=4.0.0", "python-jose>=3.3.0", "python-multipart>=0.0.9", "redis>=5.0.0", "fastapi-limiter>=0.1.5", "fastapi-pagination>=0.12.0", "celery>=5.3.0", "flower>=2.0.0", "loguru>=0.7.0", "apscheduler>=3.10.0", "typer>=0.9.0", "rich>=13.0.0", "httpx>=0.25.0", "jinja2>=3.1.0", "python-dotenv>=1.0.0", "cryptography>=41.0.0", "python-socketio>=5.8.0", "asgi-correlation-id>=4.2.0", "fastapi-utilities>=0.3.0", "sqlalchemy-crud-plus>=1.0.0", "path>=16.7.0", "fast-captcha>=0.3.0", "user-agents>=2.2.0", "ip2loc>=1.0.0", "dashscope>=1.14.0", "dulwich>=0.27.0", "msgspec>=0.18.0", "rtoml>=0.11.0", "psutil>=5.9.0", "pwdlib>=0.2.0", "itsdangerous>=2.1.0", "aiofiles>=23.0.0", "asgiref>=3.7.0", ] requires-python = ">=3.10" readme = "README.md" server = [ "aio-pika>=9.5.7", "wait-for-it>=2.3.0", ] [build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] include = ["backend*"] [tool.setuptools.package-data] "*" = ["*.md", "*.yaml", "*.yml"] [tool.uv] python-downloads = "manual" default-groups = ["dev", "lint"] dev-dependencies = [ "pytest>=7.4.0", "pytest-sugar>=0.9.7", "pre-commit>=3.4.0", "ruff>=0.1.0", ] [[tool.uv.index]] name = "aliyun" url = "https://mirrors.aliyun.com/pypi/simple" [tool.hatch.build.targets.wheel] packages = ["backend"] [tool.hatch.version] path = "backend/__init__.py" [project.scripts] myapp = "backend.cli:main" [tool.ruff] line-length = 120 indent-width = 4 target-version = "py310" [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "C", # flake8-comprehensions "B", # flake8-bugbear "Q", # flake8-quotes "SIM", # flake8-simplify "TID", # flake8-tidy-imports "RUF", # Ruff-specific rules ]