content: # -----------------------------------------------------------------------------
  # Copyright 2015-2025 by PyCLibrary Authors, see AUTHORS for more details.
  #
  # Distributed under the terms of the MIT/X11 license.
  #
  # The full license is in the file LICENCE, distributed with this software.
  # -----------------------------------------------------------------------------
  
  [project]
    name = "pyclibrary"
    description = "C binding automation"
    readme = "README.rst"
    requires-python = ">=3.10"
    license = { file = "LICENSE" }
    authors = [{ name = "Matthieu C. Dartiailh", email = "m.dartiailh@gmail.com" }]
    classifiers = [
      "License :: OSI Approved :: MIT License",
      "Operating System :: OS Independent",
      "Topic :: Software Development :: Libraries :: Python Modules",
      "Programming Language :: Python",
      "Programming Language :: Python :: 3",
      "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",
      "Programming Language :: Python :: Implementation :: CPython",
    ]
    dependencies = ["pyparsing>=2.3.1,<4"]
    dynamic = ["version"]
  
    [project.urls]
      homepage      = "https://github.com/MatthieuDartiailh/pyclibrary"
      documentation = "https://pyclibrary.readthedocs.io/en/latest/"
      repository    = "https://github.com/MatthieuDartiailh/pyclibrary"
      changelog     = "https://github.com/MatthieuDartiailh/pyclibrary/blob/main/CHANGES"
  
  
  [dependency-groups]
    test = [
      "pytest",
      "pytest-cov",
    ]
    docs = ["sphinx>=4", "sphinx-rtd-theme", "pyparsing"]
    lint = ["ruff", "mypy"]
    dev = [
      { include-group = "test" },
      { include-group = "docs" },
      { include-group = "lint" },
    ]
  
  [build-system]
    requires      = ["setuptools>=61.2", "wheel", "setuptools_scm[toml]>=3.4.3"]
    build-backend = "setuptools.build_meta"
  
  [tool.setuptools_scm]
    write_to = "pyclibrary/version.py"
    write_to_template = """
  # -----------------------------------------------------------------------------
  # Copyright 2015-2025 by PyCLibrary Authors, see AUTHORS for more details.
  #
  # Distributed under the terms of the MIT/X11 license.
  #
  # The full license is in the file LICENCE, distributed with this software.
  # -----------------------------------------------------------------------------
  # This file is auto-generated by setuptools-scm do NOT edit it.
  
  from collections import namedtuple
  
  #: A namedtuple of the version info for the current release.
  _version_info = namedtuple("_version_info", "major minor micro status")
  
  parts = "{version}".split(".", 3)
  version_info = _version_info(
      int(parts[0]),
      int(parts[1]),
      int(parts[2]),
      parts[3] if len(parts) == 4 else "",
  )
  
  # Remove everything but the 'version_info' from this module.
  del namedtuple, _version_info, parts
  
  __version__ = "{version}"
  """
  
  [tool.ruff]
    src         = ["src"]
    line-length = 88
  
    [tool.ruff.lint]
      select        = ["C", "E", "F", "W", "I", "C90", "RUF"]
      extend-ignore = ["E501", "RUF012"]
  
      [tool.ruff.lint.isort]
        combine-as-imports = true
  
      [tool.ruff.lint.mccabe]
        max-complexity = 20
  
  [tool.mypy]
    follow_imports  = "normal"
    strict_optional = true
  
  [tool.pytest.ini_options]
    minversion = "6.0"
  
  [tool.coverage]
    [tool.coverage.run]
      branch = true
      source = ["pyclibrary"]
  
    [tool.coverage.report]
      # Regexes for lines to exclude from consideration
      exclude_lines = [
        # Have to re-enable the standard pragma
        "pragma: no cover",
  
        # Don't complain if tests don't hit defensive assertion code:
        "raise NotImplementedError",
        "pass",
  
        # Don't complain about abstract methods, they aren't run:
        "@(abc\\.)?abstractmethod",
  
        # Don't complain about type checking
        "if TYPE_CHECKING:",
  
        # Don't complain about ellipsis in overload
        "\\.\\.\\.",
      ]
  