content: [build-system]
  build-backend = "setuptools.build_meta"
  requires = [ "setuptools>=77.0.3", "versioningit" ]
  
  [project]
  name = "openff-toolkit"
  description = "openff-toolkit"
  readme = "README.md"
  keywords = [ "force field", "molecular mechanics", "parameterization" ]
  license = "MIT"
  license-files = [ "LICENSE" ]
  authors = [ { name = "Open Force Field Consortium", email = "info@openforcefield.org" } ]
  requires-python = ">=3.11"
  classifiers = [
    "Development Status :: 3 - Alpha",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Topic :: Utilities",
  ]
  
  dynamic = [ "version" ]
  urls = { Homepage = "https://github.com/openforcefield/openff-toolkit" }
  
  [tool.setuptools.packages]
  find = {}
  
  [tool.ruff]
  line-length = 119
  exclude = [ "examples/deprecated/", "utilities/deprecated" ]
  
  lint.select = [ "E", "F", "I", "NPY", "RUF", "UP", "W" ]
  lint.ignore = [ "D105", "D107", "D200", "D203", "D212", "E721", "RUF012" ]
  lint.per-file-ignores."docs/users/molecule_cookbook.ipynb" = [ "E402", "F821" ]
  lint.per-file-ignores."examples/visualization/visualization.ipynb" = [ "F821" ]
  lint.per-file-ignores."openff/toolkit/**/__init__.py" = [ "F401" ]
  lint.per-file-ignores."openff/toolkit/_tests/**/*.py" = [ "E501" ]
  lint.per-file-ignores."openff/toolkit/_tests/_stale_tests.py" = [ "F821" ]
  lint.per-file-ignores."openff/toolkit/typing/engines/smirnoff.parameters.py" = [ "RUF012" ]
  lint.isort.known-first-party = [ "openff.toolkit" ]
  # can't find a clean way to get Rust's globset to handle this via regex ...
  # https://docs.astral.sh/ruff/settings/#lint_isort_known-third-party
  lint.isort.known-third-party = [ "openff.interchange", "openff.utilities", "openff.units" ]
  
  [tool.coverage.run]
  omit = [
    "*/*/_tests/*",
  ]
  
  [tool.coverage.report]
  exclude_lines = [
    "pragma: no cover",
    "if TYPE_CHECKING:",
    "raise NotImplementedError",
    "@overload",
  ]
  
  [tool.mypy]
  python_version = 3.12
  plugins = "numpy.typing.mypy_plugin"
  warn_unused_configs = true
  # would be nice to flip back to true
  warn_unused_ignores = false
  warn_incomplete_stub = true
  show_error_codes = true
  exclude = "openff/toolkit/_tests/|openff/toolkit/data/"
  
  [[tool.mypy.overrides]]
  module = [
    "openff.units",
    "openff.units.*",
    "openff.nagl.*",
    "openff.nagl_models.*",
    "mdtraj",
    "openmm",
    "openmm.app",
    "openmm.unit",
    "rdkit",
    "rdkit.Chem",
    "rdkit.Chem.Draw",
    "rdkit.DataStructs.cDataStructs",
    "openeye",
    "openeye.oechem",
    "parmed",
    "msgpack",
    "qcelemental",
    "nglview",
    "nglview.base_adaptor",
    "constraint",
  ]
  ignore_missing_imports = true
  
  [tool.versioningit]
  