content: [build-system]
      requires = [
          "setuptools>=45",
          "wheel"
      ]
      build-backend = "setuptools.build_meta"
  
  [project]
      name = "testplan"
      dynamic = ["version"]
      description = "Testplan testing framework"
      readme = "README.rst"
      license = {file="LICENSE.md"}
      authors = [
          { name = "Morgan Stanley", email = "eti-testplan@morganstanley.com" }
      ]
      keywords = ["testplan", "test", "unittest", "integrationtest", ]
      classifiers = [
          "Development Status :: 5 - Production/Stable",
          "Intended Audience :: Developers",
          "License :: OSI Approved :: Apache Software License",
          "Programming Language :: Python :: 3",
          "Programming Language :: Python :: 3.9",
          "Programming Language :: Python :: 3.10",
          "Programming Language :: Python :: 3.11",
          "Programming Language :: Python :: 3.12",
          "Topic :: Software Development :: Testing",
          "Topic :: Software Development :: Testing :: Unit"
          ]
      dependencies = [
          "setuptools",
          "pytest",
          "psutil",
          "schema",
          "tzlocal",
          "lxml",
          "reportlab",
          "marshmallow<4.0.0",
          "termcolor",
          "colorama",
          "pyzmq",
          "terminaltables",
          "requests>=2.31.0",
          "boltons",
          "validators<=0.20.0",
          "Pillow",
          "rpyc",
          "matplotlib",
          "coverage",
          "typing_extensions",
          "dill",
          "parse",
          "paramiko[all]",
          "orjson",
          "exceptiongroup>=1.2.2 ; python_full_version < '3.11'",
          "jinja2>=3.1.6",
          "click>=8.1.8",
          "gherkin-official>=32.1.2",
  ]
      requires-python = ">=3.9"
  
  [project.urls]
      homepage = "https://github.com/morganstanley/testplan"
      documentation = "https://testplan.readthedocs.io"
  
  [project.scripts]
      tpsreport = "testplan.cli.tpsreport:cli"
  
  [project.optional-dependencies]
  interactive = [
      "flask>=2.2.5",
      "werkzeug>=2.2.3",
      "flask-restx>=1.1.0",
      "cheroot>=10.0.1",
      "flask-orjson>=2.0.0",
  ]
  plotly = [
      "pandas>=2.2.3",
      "plotly>=6.1.0",
  ]
  all = ["testplan[interactive,plotly]"]
  
  [tool.setuptools.dynamic]
      version = {attr = "testplan.version.__build_version__"}
  
  [tool.setuptools.packages.find]
      include = ["testplan", "testplan.*"]
      namespaces = false
  
  [tool.setuptools.package-data]
      "testplan.web_ui" = ["testing/build/**/*"]
  [tool.setuptools.exclude-package-data]
      "testplan.web_ui" = ["testing/build/**/*.map"]
  
  [tool.bumpver]
      current_version = "25.8.0"
      version_pattern = "YY.MM.INC0"
      commit_message = "bump version {old_version} -> {new_version}"
      commit = true
      tag = true
      push = false
  
  [tool.bumpver.file_patterns]
      "pyproject.toml" = [
          'current_version = "{version}"',
      ]
      "testplan/version.py" = [
          '__version__ = "{version}"',
      ]
  
  [tool.releaseherald]
      news_fragments_directory = 'doc/newsfragments'
      unreleased = true
      news_file = 'doc/news_template.rst'
      template = 'doc/news_version_template.rst'
      latest = false
      update = true
  
  [tool.releaseherald.filename_metadata_extractor]
      type="re"
      pattern='''^(((?P<id>\d+)_?)?((?P<type>changed|new|deprecated|removed))?\.)?.*$'''
  
  [tool.pytest.ini_options]
      filterwarnings = [
          "ignore::pytest.PytestWarning",
          "ignore:.*flask_restx.*:DeprecationWarning",
          # jsonschema warning from flask_restx
          "ignore:.*jsonschema.*:DeprecationWarning",
          "ignore:.*load_module.*:DeprecationWarning",
          "ignore:.*LogMatcher.*:UserWarning",
          # under most cases, included files are not hit
          "ignore:No data was collected:coverage.exceptions.CoverageWarning",
      ]
      norecursedirs = "tests/helpers"
  
  [tool.uv.sources]
  releaseherald = { git = "https://github.com/morganstanley/releaseherald.git", rev = "main" }
  
  [dependency-groups]
  dev = [
      "doit>=0.34.2",
      "pre-commit>=2.21.0",
      "pylint>=2.13.9",
      "pytest-dotenv>=0.5.2",
      "pytest-mock>=3.11.1",
      "ruff>=0.11.13",
  ]
  docs = [
      "releaseherald",
      "sphinx>=5.3.0",
      "sphinx-click>=4.4.0",
      "sphinx-rtd-theme>=2.0.0",
  ]
  test = [
      { include-group = "dev" },
      "confluent-kafka>=2.10.0",
      "kazoo>=2.10.0",
      "numpy>=1.21.6",
  ]
  
  [tool.ruff]
  line-length = 79
  exclude = ["testplan/vendor", "releaseherald"]
  
  [tool.ruff.lint]
  select = [ 
      "A", # flake8-builtins
      # "I", # isort
      # "UP", # pyupgrade
  ]
  ignore = [ 
      "A001",
      "A002",
      "A004",
  ]
  