content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [project]
  name = "dymos"
  dynamic = ["version"]
  description = "Open-Source Optimization of Dynamic Multidisciplinary Systems"
  readme = "readme.md"
  license = "Apache-2.0"
  requires-python = ">=3.9"
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Intended Audience :: Science/Research",
      "License :: OSI Approved :: Apache Software License",
      "Natural Language :: English",
      "Operating System :: MacOS :: MacOS X",
      "Operating System :: Microsoft :: Windows",
      "Operating System :: POSIX :: Linux",
      "Programming Language :: Python",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: Implementation :: CPython",
      "Topic :: Scientific/Engineering",
  ]
  dependencies = [
      "numpy",
      "openmdao>=3.36.0",
      "scipy>=1.11",
  ]
  
  [project.optional-dependencies]
  all = [
      "dymos[docs]",
      "dymos[notebooks]",
      "dymos[test]",
      "dymos[numba]",
  ]
  docs = [
      "bokeh",
      "ipython",
      "jax",
      "jaxlib",
      "jupyter",
      "jupyter-book",
      "matplotlib",
      "nbconvert",
      "notebook",
      "numpydoc>=1.1",
      "redbaron",
      "tabulate",
  ]
  notebooks = [
      "ipython",
      "notebook",
      "tabulate",
  ]
  test = [
      "pre-commit",
      "aiounittest",
      "matplotlib",
      "numpydoc>=1.1",
      "packaging",
      "playwright>=1.20",
      "pycodestyle",
      "testflo>=1.3.6",
  ]
  numba = [
      "numba",
  ]
  
  [project.entry-points.openmdao_report]
  "dymos.linkage" = "dymos.visualization.linkage.report:_linkage_report_register"
  
  [project.urls]
  Homepage = "https://github.com/OpenMDAO/dymos"
  
  [tool.hatch.version]
  path = "dymos/__init__.py"
  
  [tool.hatch.build.targets.sdist]
  include = [
      "/dymos",
  ]
  
  [tool.ruff]
  line-length = 100
  indent-width = 4
  
  [tool.ruff.format]
  indent-style = "space"
  line-ending = "lf"
  
  [tool.ruff.lint]
  select = ["E", "F"]
  ignore = ["E226", "E241"]
  preview = true
  
  [tool.ruff.lint.pycodestyle]
  max-line-length = 130
  
  [tool.ruff.lint.pydocstyle]
  convention = "numpy"
  
  [tool.ruff.lint.per-file-ignores]
  # Ignore `F401` (unused import) in api files.
  "__init__.py" = ["F401"]
  # Ignore import related conventions in docs
  "**/dymos_book/**" = ["E402", "E501"]
  # Ignore Test classifiers
  "test_*.py" = ["D", "E", "F"]
  