content: [build-system]
  build-backend = "hatchling.build"
  requires = [
      "hatchling>=1.27.0",
      "cffi",
      "scikit-build-core>=0.9.0",
      "pkgconf; sys_platform == 'win32'",
  ]
  
  [project]
  name = "coincurve"
  authors = [
      { name = "Ofek Lev", email = "oss@ofek.dev" },
  ]
  description = "Safest and fastest Python library for secp256k1 elliptic curve operations"
  keywords = [
      "bitcoin",
      "crypto",
      "cryptocurrency",
      "ecdh",
      "ecdsa",
      "elliptic curves",
      "ethereum",
      "libsecp256k1",
      "secp256k1",
      "schnorr",
  ]
  readme = "README.md"
  license = "MIT OR Apache-2.0"
  license-files = [
      "LICENSE-APACHE",
      "LICENSE-MIT",
      "NOTICE",
  ]
  requires-python = ">=3.9"
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Intended Audience :: Developers",
      "Natural Language :: English",
      "Operating System :: OS Independent",
      "Programming Language :: Python :: Implementation :: CPython",
      "Programming Language :: Python :: Implementation :: PyPy",
      "Topic :: Software Development :: Libraries",
      "Topic :: Security :: Cryptography",
  ]
  dynamic = ["version"]
  
  [project.urls]
  Homepage = "https://ofek.dev/coincurve/"
  Sponsor = "https://github.com/sponsors/ofek"
  History = "https://ofek.dev/coincurve/history/"
  Tracker = "https://github.com/ofek/coincurve/issues"
  Source = "https://github.com/ofek/coincurve"
  
  # --- hatch ---
  [tool.hatch.version]
  path = "src/coincurve/__init__.py"
  
  [tool.hatch.build.targets.wheel.hooks.custom]
  
  [tool.hatch.build.targets.wheel.hooks.scikit-build]
  experimental = true
  build.verbose = true
  cmake.build-type = "Release"
  cmake.source-dir = "."
  wheel.py-api = ""
  wheel.packages = []
  
  # --- scikit-build-core ---
  [tool.scikit-build.cmake.define]
  CMAKE_BUILD_TYPE = "Release"
  # Coincurve build options - This may be better extracted from the ENV by the CMake directly?
  PROJECT_IGNORE_SYSTEM_LIB = { env = "COINCURVE_IGNORE_SYSTEM_LIB", default = "ON" }
  PROJECT_CROSS_COMPILE_TARGET = { env = "COINCURVE_CROSS_HOST", default = "" }
  # Vendored library: SECP256K1
  VENDORED_LIBRARY_CMAKE_TARGET = "secp256k1"
  VENDORED_LIBRARY_PKG_CONFIG = "libsecp256k1"
  VENDORED_LIBRARY_PKG_CONFIG_VERSION = "0.6.0"
  VENDORED_UPSTREAM_URL = "https://github.com/bitcoin-core/secp256k1/archive/"
  VENDORED_UPSTREAM_REF = { env = "COINCURVE_UPSTREAM_REF", default = "0cdc758a56360bf58a851fe91085a327ec97685a" }
  VENDORED_UPSTREAM_SHA = { env = "COINCURVE_UPSTREAM_SHA", default = "385c115a21ee1ff31d0b0320acc2b278c92f7bde971f510566ad481a38835be0" }
  # SECP256K1 library specific build options
  # `VENDORED_OPTION` is reserved prefix for vendored library build options
  VENDORED_LIBRARY_OPTION_PREFIX = "SECP256K1"
  VENDORED_OPTION_DISABLE_SHARED = { env = "COINCURVE_SECP256K1_STATIC", default = "ON" }
  VENDORED_OPTION_BUILD_BENCHMARK = "OFF"
  VENDORED_OPTION_BUILD_TESTS = "OFF"
  VENDORED_OPTION_BUILD_CTIME_TESTS = "OFF"
  VENDORED_OPTION_BUILD_EXHAUSTIVE_TESTS = "OFF"
  VENDORED_OPTION_BUILD_EXAMPLES = "OFF"
  VENDORED_OPTION_ENABLE_MODULE_ECDH = "ON"
  VENDORED_OPTION_ENABLE_MODULE_RECOVERY = "ON"
  VENDORED_OPTION_ENABLE_MODULE_SCHNORRSIG = "ON"
  VENDORED_OPTION_ENABLE_MODULE_EXTRAKEYS = "ON"
  VENDORED_OPTION_EXPERIMENTAL = "ON"
  # Vendored library build options (cmake, compiler, linker, etc.)
  # VENDORED_CMAKE is reserved prefix for vendored library cmake options
  # VENDORED_CMAKE_<STATIC|SHARED>_<CMAKE_OPTION> = <VALUE>
  VENDORED_LIBRARY_STATIC_BUILD = { env = "COINCURVE_SECP256K1_STATIC", default = "ON" }
  
  # --- Coverage ---
  [tool.coverage.run]
  source_pkgs = ["coincurve", "tests"]
  branch = true
  parallel = true
  omit = [
      "src/coincurve/__init__.py",
      "tests/test_bench.py",
  ]
  
  [tool.coverage.report]
  exclude_lines =[
      "no cov",
  
      # Ignore missing debug-only code
      "def __repr__",
      "if self\\.debug",
  
      # Ignore non-runnable code
      "if __name__ == .__main__.:",
  ]
  
  [tool.coverage.paths]
  coincurve = ["src/coincurve", "*/coincurve/src/coincurve"]
  tests = ["tests", "*/coincurve/tests"]
  
  # --- Pytest ---
  [tool.pytest.ini_options]
  addopts = [
      "--import-mode=importlib",
  ]
  
  # --- Mypy ---
  [tool.mypy]
  disallow_untyped_defs = false
  follow_imports = "normal"
  ignore_missing_imports = true
  pretty = true
  show_column_numbers = true
  warn_no_return = false
  warn_unused_ignores = true
  