content: [project]
  name = "thor"
  dynamic = ["version"]
  authors = [
      {name="Mark Nottingham", email="mnot@mnot.net"}
  ]
  description = "Simple Event-Driven IO for Python"
  readme = "README.md"
  requires-python = ">=3.9"
  license = {file = "LICENSE.md"}
  classifiers = [
      "Intended Audience :: Developers",
      "License :: OSI Approved :: MIT License",
      "Programming Language :: Python",
      "Operating System :: POSIX",
      "Topic :: Internet :: WWW/HTTP",
      "Topic :: Internet :: Proxy Servers",
      "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
      "Topic :: Software Development :: Libraries :: Python Modules"
  ]
  
  dependencies = [
      "certifi",
      "dnspython"
  ]
  
  [project.optional-dependencies]
  dev = ["mypy", "black", "pylint", "pytest", "pytest-parallel",
      "py", "pytest-md", "validate-pyproject", "build"]
  # See https://github.com/kevlened/pytest-parallel/issues/118
  
  [project.urls]
  homepage = "https://github.com/mnot/thor/"
  
  [build-system]
  requires = [
      "setuptools>=42",
      "wheel"
  ]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools.dynamic]
  version = {attr = "thor.__version__"}
  
  [tool.setuptools.packages.find]
  where = ["."]
  
  [tool.setuptools]
  include-package-data = true
  
  [tool.setuptools.package-data]
  SHORTNAME = ["py.typed"]
  
  [tool.mypy]
  follow_imports = "normal"
  incremental = true
  disallow_untyped_defs = true
  disallow_untyped_calls = true
  disallow_incomplete_defs = true
  warn_redundant_casts = true
  warn_unused_ignores = true
  warn_return_any = true
  warn_unreachable = true
  strict_optional = true
  show_error_codes = true
  
  [[tool.mypy.overrides]]
  module = "thor.loop"
  warn_unused_ignores = false
  
  
  [tool.pylint.basic]
  function-rgx = "[a-z_][a-z0-9_]{1,30}$"
  variable-rgx = "[a-z_][a-z0-9_]{1,30}$"
  attr-rgx = "[a-z_][a-z0-9_]{1,30}$"
  argument-rgx = "[a-z_][a-z0-9_]{1,30}$"
  class-attribute-rgx = "([A-Za-z_][A-Za-z0-9_]{1,30}|(__.*__))$"
  method-rgx = "[a-z_][a-z0-9_]{1,30}$"
  
  [tool.pylint.messages_control]
  disable = "C0114,C0115,C0116,W0613,W0707"
  
  [tool.pylint.reports]
  reports = false
  
  [tool.pylint.variables]
  dummy-variables-rgx = "response_start|response_body|response_done|error|formatter_done|check_done|_"
  
  [tool.pylint.design]
  max-args=10
  max-positional-arguments=8
  max-locals=35
  max-branches=25
  max-statements=100
  max-attributes=30
  min-public-methods=1
  
  [tool.pylint.similarities]
  min-similarity-lines = 10
  