[project] name = "gapido-auth-service" version = "0.1.0" description = "Gapido backend code challenge: gRPC OTP auth service with MongoDB, Redis, RabbitMQ, and Kavenegar." requires-python = ">=3.12,<3.14" dependencies = [ "aio-pika==9.5.5", "fastapi==0.115.6", "grpcio==1.68.1", "grpcio-health-checking==1.68.1", "grpcio-reflection==1.68.1", "grpcio-tools==1.68.1", "httpx==0.28.1", "motor==3.6.0", "protobuf==5.29.2", "pydantic==2.10.4", "pydantic-settings==2.7.1", "pyjwt==2.10.1", "redis==5.2.1", "uvicorn==0.34.0", ] [project.optional-dependencies] dev = [ "mypy==1.14.1", "pytest==8.3.4", "pytest-asyncio==0.25.2", "ruff==0.9.1", ] [build-system] requires = ["setuptools>=75.0"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] where = ["src"] [tool.setuptools.package-data] gapido_demo = ["static/*"] [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" testpaths = ["tests"] pythonpath = ["src"] [tool.ruff] line-length = 100 target-version = "py312" exclude = ["src/gapido_auth/generated/*"] [tool.ruff.lint] select = ["E", "F", "I", "B", "UP", "ASYNC"] [tool.mypy] python_version = "3.12" strict = true packages = ["gapido_auth", "gapido_demo"] exclude = ["src/gapido_auth/generated"] [[tool.mypy.overrides]] module = ["gapido_auth.generated.*"] ignore_errors = true [[tool.mypy.overrides]] module = [ "grpc", "grpc.*", "grpc_tools", "grpc_tools.*", "grpc_health.*", "grpc_reflection.*", ] ignore_missing_imports = true