content: [build-system]
  requires = ["hatchling", "hatch-vcs"]
  build-backend = "hatchling.build"
  
  [project]
  name = "schwifty"
  dynamic = ["version"]
  description = "IBAN parsing and validation"
  readme = "README.rst"
  license = "MIT"
  classifiers = [
    "Development Status :: 5 - Production/Stable",
    "License :: OSI Approved :: MIT License",
    "Intended Audience :: Developers",
    "Topic :: Office/Business :: Financial",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
  ]
  requires-python = ">=3.9"
  authors = [
      { name = "Martin Domke", email = "mail@martindomke.net" },
  ]
  dependencies = [
      "importlib_resources>=5.10; python_version <= '3.11'",
      "typing-extensions>=4.0.1; python_version <= '3.10'",
      "pycountry",
      "rstr",
  ]
  
  [project.optional-dependencies]
  pydantic = [
      "pydantic>=2.0"
  ]
  
  [project.urls]
  Changelog = "https://github.com/mdomke/schwifty/blob/main/CHANGELOG.rst"
  Documentation = "https://schwifty.readthedocs.io/en/latest/"
  Homepage = "http://github.com/mdomke/schwifty"
  
  [tool.hatch.version]
  source = "vcs"
  
  [tool.hatch.build.targets.wheel]
  packages = [
      "schwifty",
  ]
  
  [tool.pytest.pytest.ini_options]
  addopts = """
    --pyargs schwifty
    --doctest-modules
    --junit-xml test-results.xml
    --cov-report xml
    --cov-report term-missing
  """
  console_output_style = "progress"
  doctest_optionflags = "ALLOW_UNICODE IGNORE_EXCEPTION_DETAIL"
  
  [tool.ruff]
  target-version = "py39"
  line-length = 100
  
  [tool.ruff.lint]
  extend-select = ["A", "B", "C", "C4", "E", "F", "I", "N", "PT", "Q", "RUF", "S", "SIM", "T10", "UP", "W", "YTT"]
  extend-fixable = ["RUF100", "I001"]
  extend-ignore = [
      "S101",   # Allow usage of asserts
      "A001",   # Allow shadowing bultins 
      "A003",   # Allow shadowing bultins on classes
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "scripts/get_*_registry*.py" = [
      "S113",   # Allow requests call without timeout
  ]
  
  [tool.ruff.lint.mccabe]
  max-complexity = 15
  
  [tool.ruff.lint.isort]
  force-single-line = true
  lines-after-imports = 2
  order-by-type = false
  
  [tool.coverage.run]
  branch = true
  parallel = true
  source = ["schwifty"]
  omit = [
      "schwifty/checksum/netherlands.py"
  ]
  
  [tool.doc8]
  max-line-length = 100
  
  [tool.mypy]
  exclude = ["docs"]
  
  [dependency-groups]
  dev = [
      "pytest >=8.1.1,<9",
  ]
  