content: [build-system]
  requires = ["setuptools >= 62", "wheel", "setuptools_scm[toml] >= 6.2"]
  
  [project]
  name = "galois"
  authors = [{ name = "Matt Hostetter", email = "matthostetter@gmail.com" }]
  description = "A performant NumPy extension for Galois fields and their applications"
  readme = "README.md"
  license = { text = "MIT" }
  keywords = [
      "aes",
      "bch",
      "cryptography",
      "ecc",
      "elliptic curve cryptography",
      "elliptic curves",
      "encryption",
      "error correction",
      "fec",
      "finite field",
      "galois field",
      "golay",
      "hamming",
      "numpy",
      "reed solomon",
      "rsa",
  ]
  classifiers = [
      "Development Status :: 4 - Beta",
      "Intended Audience :: Developers",
      "Intended Audience :: Education",
      "Intended Audience :: Science/Research",
      "Intended Audience :: Telecommunications Industry",
      "License :: OSI Approved :: MIT License",
      "Operating System :: MacOS :: MacOS X",
      "Operating System :: Microsoft :: Windows",
      "Operating System :: POSIX :: Linux",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3 :: Only",
      "Programming Language :: Python :: 3.7",
      "Programming Language :: Python :: 3.8",
      "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",
      "Topic :: Scientific/Engineering :: Mathematics",
      "Topic :: Security :: Cryptography",
      "Topic :: Software Development :: Libraries :: Python Modules",
      "Typing :: Typed",
  ]
  requires-python = ">=3.7"
  dependencies = [
      "numpy >= 1.21.0",            # v1.21.0 is needed for dtype support of ufuncs, see https://numpy.org/devdocs/release/1.21.0-notes.html#ufunc-signature-and-dtype-generalization-and-casting
      "numba >= 0.55, < 0.62",      # v0.55 is needed for support of NumPy 1.21
      "typing_extensions >= 4.0.0", # v4.0.0 is needed for use of Self (Python 3.11+) and Literal (Python 3.8+)
  ]
  dynamic = ["version"]
  
  # [project.optional-dependencies]
  
  [project.urls]
  Homepage = "https://github.com/mhostetter/galois"
  Source = "https://github.com/mhostetter/galois"
  Issues = "https://github.com/mhostetter/galois/issues"
  Documentation = "https://mhostetter.github.io/galois/latest/"
  Discuss = "https://github.com/mhostetter/galois/discussions"
  Changelog = "https://mhostetter.github.io/galois/latest/release-notes/versioning/"
  Twitter = "https://twitter.com/galois_py"
  
  [tool.setuptools_scm]
  write_to = "src/galois/_version.py"
  
  [tool.setuptools.packages.find]
  where = ["src"]
  
  [tool.setuptools.package-data]
  "galois" = ["py.typed"]
  "galois._databases" = ["*.db"]
  
  [tool.distutils.bdist_wheel]
  universal = false
  
  [tool.ruff]
  src = ["src"]
  extend-include = ["*.ipynb"]
  extend-exclude = ["build", "dist", "docs", "src/galois/_version.py"]
  line-length = 120
  
  [tool.ruff.lint]
  select = [
      "E",  # pycodestyle errors
      "W",  # pycodestyle warnings
      "E",  # pycodestyle
      "F",  # Pyflakes
      "UP", # pyupgrade
      "B",  # flake8-bugbear
      # "SIM",# flake8-simplify
      "DTZ", # flake8-datetimez
      "I",   # isort
      "PL",  # pylint
  ]
  ignore = [
      "E501",    # line-too-long
      "E713",    # not-in-test
      "E714",    # not-is-test
      "E741",    # ambiguous-variable-name
      "PLR0911", # too-many-return-statements
      "PLR0912", # too-many-branches
      "PLR0913", # too-many-arguments
      "PLR0915", # too-many-statements
      "PLR2004", # magic-value-comparison
      "PLR5501", # collapsible-else-if
      "PLW0603", # global-statement
      "PLW2901", # redefined-loop-name
      "UP006",   # non-pep585-annotation, type[FieldArray] renders wrong in docs
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "__init__.py" = ["F401", "F403"]
  
  [tool.pytest.ini_options]
  minversion = "6.2"
  addopts = "-s --showlocals"
  testpaths = ["tests"]
  
  [tool.coverage.report]
  exclude_lines = [
      "@overload",
      "if TYPE_CHECKING:",
      "pragma: no cover",
      "raise AssertionError",
      "raise NotImplementedError",
      "raise RuntimeError",
  ]
  