content: [project]
  name = "{{cookiecutter.project_name}}"
  version = "0.1.0"
  description = "Add your description here"
  readme = "README.md"
  requires-python = ">=3.12"
  dependencies = [
      "fastapi>=0.115.8",
      "uvicorn>=0.34.0",
      "pydantic-settings>=2.7.1",
      "pydantic>=2.10.6",
      "email-validator>=2.2.0",
      "loguru>=0.7.3",
      "yarl>=1.18.3",
      "ruff>=0.9.4",
      "mypy>=1.15.0",
      {%- if cookiecutter.use_postgres -%}
      "sqlalchemy[asyncio]>=2.0.37",
      "asyncpg>=0.30.0",
      {% endif %}
      {%- if cookiecutter.use_builtin_auth -%}
      "pyjwt>=2.10.1",
      "passlib>=1.7.4",
      {% endif %}
      {%- if cookiecutter.use_alembic -%}
      "alembic>=1.14.1",
      {%- endif %}
      "pytest>=8.3.4",
      "pytest-env>=1.1.5",
      "pytest-cov>=6.1.1",
      "httpx==0.28.1",
      "factory-boy>=3.3.3",
      {%- if cookiecutter.use_redis -%}
      "redis>=5.2.1",
      "fakeredis>=2.28.1",
      {% endif %}
      {%- if cookiecutter.use_rabbitmq -%}
      "aio-pika>=9.5.5",
      {%- endif %}
      {%- if cookiecutter.use_taskiq -%}
      "taskiq>=0.11.16",
      "taskiq-aio-pika>=0.4.1",
      "taskiq-redis>=1.0.4",
      "taskiq-fastapi>=0.3.4",
      "orjson>=3.10.16",
      {%- endif %}
      {%- if cookiecutter.use_prometheus -%}
      "prometheus-fastapi-instrumentator>=7.1.0",
      {%- endif %}
      {%- if cookiecutter.use_logfire -%}
      "logfire[aio-pika,asyncpg,fastapi,httpx,sqlalchemy,system-metrics]>=3.16.0",
      {%- endif %}
  ]
  
  [tool.pytest.ini_options]
  env = [
      "{{ cookiecutter.project_name|upper|replace('-', '_') }}_PG_DATABASE=test",
      "{{ cookiecutter.project_name|upper|replace('-', '_') }}_ENV=test",
  ]
  
  [tool.ruff]
  exclude = ["migrations",".venv/", "Lib"]
  target-version = "py312"
  line-length = 88
  indent-width = 4
  
  [tool.ruff.lint]
  select = ["ALL"]
  ignore = [
      #### modules
      "ANN", #
      "COM", #
      "C90", #
      "DJ",  #
      "EXE", #
      "T10", #
      "TID", #
  
      #### specific rules
      "A001",
      "A002",
      "ARG002",
      "ARG001",
      "B008",
      "B904",
      "BLE001",
      "D100",
      "D101",
      "D102",
      "D103",
      "D104",
      "D105",
      "D106",
      "D107",
      "D200",
      "D203",
      "D205",
      "D212",
      "D400",
      "D401",
      "D404",
      "D415",
      "E402",
      "E501",
      "EM102",
      "FBT001",
      "FBT002",
      "FBT003",
      "N805",
      "T201",
      "TRY003",
      "TRY201",
      "TRY203",
      "TRY300",
      "TD002",
      "TD003",
      "FIX002",
      "PLR0913",
      "PLR2004",
      "PGH003",
      "RUF012",
      "S701",
  ]
  
  [tool.ruff.format]
  quote-style = "double"
  indent-style = "space"
  skip-magic-trailing-comma = false
  line-ending = "auto"
  
  [tool.ruff.lint.per-file-ignores]
  "tests/*" = ["S101", "PT006"]
  "__init__.py" = ["F401"]
  
  [tool.mypy]
  warn_return_any = false
  namespace_packages = true
  strict = true
  ignore_missing_imports = true
  pretty = true
  show_error_codes = true
  implicit_reexport = true
  disable_error_code = ["prop-decorator", "override", "import-untyped"]
  plugins = ["pydantic.mypy", {% if cookiecutter.use_postgres -%}"sqlalchemy.ext.mypy.plugin"{% endif %}]
  exclude = ["migrations"]
  