content: [project]
  {%- if cookiecutter.variant != "None (Skip)" %}
  name = "{{cookiecutter.variant}}-{{cookiecutter.mapper_id}}"
  {%- else %}
  name = "{{cookiecutter.mapper_id}}"
  {%- endif %}
  version = "0.0.1"
  description = "Singer mapper {{cookiecutter.name}}, built with the Meltano Singer SDK."
  readme = "README.md"
  authors = [{ name = "{{ cookiecutter.admin_name }}", email = "{{ cookiecutter.admin_email }}" }]
  keywords = [
      "ELT",
      "Mapper",
      "{{cookiecutter.name}}",
  ]
  classifiers = [
      "Intended Audience :: Developers",
  {%- if cookiecutter.license == "Apache-2.0" %}
      "License :: OSI Approved :: Apache Software License",
  {%- endif %}
      "Operating System :: OS Independent",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Programming Language :: Python :: 3.14",
  ]
  {%- if cookiecutter.license != "None" %}
  license = "{{cookiecutter.license}}"
  {%- endif %}
  license-files = [ "LICENSE" ]
  requires-python = ">=3.10"
  dependencies = [
      {%- if cookiecutter.faker_extra %}
      "singer-sdk[faker]~=0.50.2",
      {%- else %}
      "singer-sdk~=0.50.2",
      {%- endif %}
      "typing-extensions>=4.5.0; python_version < '3.13'",
  ]
  
  [project.optional-dependencies]
  s3 = [
      "s3fs~=2025.7.0",
  ]
  
  [project.scripts]
  # CLI declaration
  {{cookiecutter.mapper_id}} = '{{cookiecutter.library_name}}.mapper:{{cookiecutter.name}}Mapper.cli'
  
  [dependency-groups]
  dev = [
      { include-group = "test" },
  ]
  test = [
      "pytest>=8",
      {%- if cookiecutter.include_ci_files == "GitHub" %}
      "pytest-github-actions-annotate-failures>=0.3",
      {%- endif %}
      "singer-sdk[testing]",
  ]
  typing = [
      "mypy>=1.16.0",
      "ty>=0.0.1-alpha.16",
  ]
  
  {%- if cookiecutter.variant != "None (Skip)" %}
  [tool.hatch.build.targets.wheel]
  packages = [
      "{{cookiecutter.library_name}}",
  ]
  {%- endif %}
  
  [tool.pytest.ini_options]
  addopts = [
      "--durations=10",
  ]
  
  [tool.mypy]
  warn_unused_configs = true
  
  [tool.ruff]
  line-length = 100
  required-version = ">=0.13"
  
  [tool.ruff.lint]
  future-annotations = true
  ignore = [
      "COM812",  # missing-trailing-comma
  ]
  select = ["ALL"]
  
  [tool.ruff.lint.flake8-annotations]
  allow-star-arg-any = true
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  
  [build-system]
  requires = [
      "hatchling>=1,<2",
  ]
  build-backend = "hatchling.build"
  
  # This configuration can be used to customize tox tests as well as other test frameworks like flake8 and mypy
  [tool.tox]
  min_version = "4.22"
  requires = [
      "tox>=4.22",
      "tox-uv",
  ]
  env_list = [
      "typing",
      "py314",
      "py313",
      "py312",
      "py311",
      "py310",
  ]
  
  [tool.tox.env_run_base]
  runner = "uv-venv-lock-runner"
  pass_env = [
      {%- if cookiecutter.include_ci_files == "GitHub" %}
      "GITHUB_*",
      {%- endif %}
      "{{cookiecutter.mapper_id.replace('-', '_').upper()}}_*",
  ]
  dependency_groups = [ "test" ]
  commands = [ [ "pytest", { replace = "posargs", default = [ "tests" ], extend = true } ] ]
  
  [tool.tox.env.typing]
  dependency_groups = [ "test", "typing" ]
  commands = [
      [ "mypy", { replace = "posargs", default = [ "{{cookiecutter.library_name}}", "tests" ], extend = true } ],
      [ "ty", "check", { replace = "posargs", default = [ "{{cookiecutter.library_name}}", "tests" ], extend = true } ],
  ]
  