content: [build-system]
  requires = [
         "setuptools >= 35.0.2",
         "wheel >= 0.29.0",
         "setuptools_scm[toml]==7.0.5",
  ]
  build-backend = "setuptools.build_meta"
  
  
  [project]
  name = "hydra_zen"
  dynamic = ["version"]
  description = "Configurable, reproducible, and scalable workflows in Python, via Hydra"
  readme = "README.md"
  requires-python = ">=3.9"
  dependencies = ["hydra-core >= 1.2.0", 
         "omegaconf >= 2.2.3", 
         "typing-extensions >= 4.1.0, !=4.6.0",
         ]
  license = { text = "MIT" }
  keywords = [
         "machine learning",
         "research",
         "configuration",
         "scalable",
         "reproducible",
         "yaml",
         "Hydra",
         "dataclass",
  ]
  
  authors = [
         { name = "Ryan Soklaski", email = "rsoklaski@gmail.com" },
         { name = "Justin Goodwin", email = "jgoodwin@ll.mit.edu" },
  ]
  maintainers = [{ name = "Justin Goodwin", email = "jgoodwin@ll.mit.edu" }]
  
  classifiers = [
         "Development Status :: 4 - Beta",
         "License :: OSI Approved :: MIT License",
         "Operating System :: OS Independent",
         "Intended Audience :: Science/Research",
         "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",
         "Programming Language :: Python :: 3 :: Only",
  ]
  
  [project.optional-dependencies]
  test = ["pytest >= 3.9", "hypothesis >= 6.28.0", "pytest-trio >= 0.8.0"]
  pydantic = ["pydantic>=1.10.14,<2.0.0"]
  beartype = ["beartype>=0.8.0"]
  
  [project.urls]
  "Homepage" = "https://mit-ll-responsible-ai.github.io/hydra-zen/"
  "Bug Reports" = "https://github.com/mit-ll-responsible-ai/hydra-zen/issues"
  "Source" = "https://github.com/mit-ll-responsible-ai/hydra-zen"
  
  
  [tool.setuptools_scm]
  write_to = "src/hydra_zen/_version.py"
  version_scheme = "no-guess-dev"
  
  
  [tool.setuptools]
  package-dir = { "" = "src" }
  
  [tool.setuptools.packages.find]
  where = ["src"]
  exclude = ["tests*", "tests.*"]
  
  [tool.setuptools.package-data]
  hydra_zen = ["py.typed"]
  
  
  [tool.isort]
  known_first_party = ["hydra_zen", "tests"]
  profile = "black"
  combine_as_imports = true
  
  
  [tool.coverage.run]
  branch = true
  omit = ["tests/test_docs_typecheck.py"]
  
  [tool.coverage.report]
  omit = ["src/hydra_zen/_version.py"]
  exclude_lines = [
         'pragma: no cover',
         'def __repr__',
         'raise NotImplementedError',
         'class .*\bProtocol(\[.+\])?\):',
         '@(abc\.)?abstractmethod',
         '@(typing\.)?overload',
         'except ImportError:',
         'except ModuleNotFoundError:',
         'if (typing\.)?TYPE_CHECKING:',
         'if sys\.version_info',
  ]
  
  [tool.pytest.ini_options]
  xfail_strict = true
  trio_mode = true
  
  
  [tool.pyright]
  include = ["src"]
  exclude = [
         "**/node_modules",
         "**/__pycache__",
         "src/hydra_zen/_version.py",
         "**/third_party",
         "**/.hypothesis",
         "**/docs",
         "**/.tox",
  ]
  reportUnnecessaryTypeIgnoreComment = true
  reportUnnecessaryIsInstance = false
  
  
  [tool.codespell]
  skip = 'docs/build/*'
  
  [tool.tox]
  legacy_tox_ini = """
  [tox]
  isolated_build = True
  envlist = py39, py310, py311, py312, py313
  
  [gh-actions]
  python =
    3.9: py39
    3.10: py310
    3.11: py311
    3.12: py312
    3.13: py313
  
  
  [testenv]
  description = Runs test suite parallelized in the specified python enviornment and 
                against number of available processes (up to 4). 
                Run `tox -e py39 -- -n 0` to run tests in a python 3.9 with 
                parallelization disabled.
  passenv = *
  deps = setuptools
         pytest
         hypothesis>=6.115.5
         pytest-xdist
         pytest-trio
         tzdata
  commands = pytest tests/ {posargs: -n auto --maxprocesses=4}
  
  
  
  [testenv:min-deps]
  description = Runs test suite against minimum supported versions of dependencies.
  deps = hydra-core==1.2.0
         omegaconf==2.2.3
         typing-extensions==4.1.0
         {[testenv]deps}
         importlib-resources<6.2.0
  basepython = python3.9
  
  
  [testenv:pre-release]
  description = Runs test suite against pre-release versions of dependencies.
  pip_pre = true
  deps = {[testenv]deps}
         pydantic<2.0.0
         beartype
         cloudpickle
  basepython = python3.10
  
  [testenv:coverage]
  description = Runs test suite and measures test-coverage. Fails if coverage is 
                below 100 prcnt. Run `tox -e coverage -- -n 0` to disable parallelization.
  setenv = NUMBA_DISABLE_JIT=1
  usedevelop = true
  basepython = python3.10
  deps = {[testenv]deps}
         coverage[toml]
         pytest-cov
         numpy
         pydantic<2.0.0
         beartype
         cloudpickle
  commands = pytest --cov-report term-missing --cov-config=pyproject.toml --cov-fail-under=100 --cov=hydra_zen tests {posargs: -n auto --maxprocesses=4}
  
  
  [testenv:pyright-scan-docs]
  description = Installs pyright and scans hydra-zen docs & docstrings. Note that this can 
                be slow. Runs in parallel by default. Run 
                `tox -e pyright-scan-docs -- -n 0` to disable parallelization.
  usedevelop = true
  basepython = python3.10
  deps = {[testenv]deps}
         torch
         pytorch-lightning
         numpy
         jaxlib
         jax
         pydantic
         beartype
         scikit-learn
         matplotlib
         --requirement deps/requirements-pyright.txt
  commands = pytest tests/test_docs_typecheck.py
  
  
  [testenv:third-party]
  description = Runs test suite against optional 3rd party packages that hydra-zen 
                provides specialized support for.
  install_command = pip install --upgrade --upgrade-strategy eager {opts} {packages}
  basepython = python3.10
  deps = {[testenv]deps}
         torch
         pytorch-lightning
         numpy
         jaxlib
         jax
         pydantic<2.0.0
         beartype
  
  [testenv:pydantic-v2p0-smoketest]
  description = Ensures that importing pydantic 2.0 doesn't break things
  install_command = pip install --upgrade --upgrade-strategy eager {opts} {packages}
  basepython = python3.10
  deps = {[testenv]deps}
         pydantic>=2.0.0
  
  
  [testenv:pyright]
  description = Ensure that hydra-zen's source code and test suite scan clean
                under pyright, and that hydra-zen's public API has a 100 prcnt
                type-completeness score.
  usedevelop = true
  basepython = python3.10
  deps = 
         --requirement deps/requirements-pyright.txt
  
  commands = pyright tests/annotations/ src/ --level=error
             pyright --ignoreexternal --verifytypes hydra_zen
  
  [testenv:format]
  description = Applies auto-flake (e.g. remove unsused imports), black, and isort 
                in-place on source files and test suite. Running this can help fix a 
                failing `enforce-format` run.
  skip_install=true
  deps =
      autoflake
      black==24.1.0
      isort==5.13.2
  commands =
      autoflake --recursive --in-place --remove-duplicate-keys --remove-unused-variables src/ tests/
      isort src/ tests/
      black src/ tests/
  
  [testenv:enforce-format]
  description = Ensures that source materials code and docs and test suite adhere to 
                formatting and code-quality standards.
  skip_install=true
  basepython=python3.10
  deps=black==24.1.0
       isort==5.13.2
       flake8==7.0.0
       pytest
       codespell
  commands=
      black src/ tests/ --diff --check
      isort src/ tests/ --diff --check
      flake8 src/ tests/
      codespell src/ docs/
      pytest project_tooling/test_headers.py 
  
  [testenv:docs]
  description = Uses Sphinx to generate html for the jatic-toolbox's docs. Stores the
                results in `.tox/docs/build/html/`.
  basepython=python3.10
  changedir=docs
  deps=-r{toxinidir}/docs/requirements.txt
  commands=
      sphinx-build -b html -d {envtmpdir}/doctrees ./source  {envdir}/build/html
  """
  