content: [build-system]
  requires = ["hatchling>=1.22.2"]
  build-backend = "hatchling.build"
  
  [project]
  requires-python = ">=3.8"
  name = "mocket"
  description = "Socket Mock Framework - for all kinds of socket animals, web-clients included - with gevent/asyncio/SSL support"
  readme = "README.rst"
  license = { file = "LICENSE" }
  authors = [{ name = "Giorgio Salluzzo", email = "giorgio.salluzzo@gmail.com" }]
  classifiers = [
      "Development Status :: 6 - Mature",
      "Intended Audience :: Developers",
      "Operating System :: OS Independent",
      "Programming Language :: Python :: 3.8",
      "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",
      "Programming Language :: Python :: 3.14",
      "Programming Language :: Python :: Implementation :: CPython",
      "Programming Language :: Python :: Implementation :: PyPy",
      "Topic :: Software Development",
      "Topic :: Software Development :: Testing",
      "License :: OSI Approved :: BSD License",
  ]
  dependencies = [
      "puremagic",
      "decorator>=4.0.0",
      "urllib3>=1.25.3",
      "h11",
      "typing-extensions",
  ]
  dynamic = ["version"]
  
  [project.urls]
  Homepage = "https://pypi.org/project/mocket"
  Repository = "https://github.com/mindflayer/python-mocket"
  
  [project.optional-dependencies]
  test = [
      "pre-commit",
      "psutil",
      "pytest",
      "pytest-cov",
      "pytest-asyncio",
      "asgiref",
      "requests",
      "redis",
      "gevent",
      "sure",
      "flake8>5",
      "xxhash",
      "httpx",
      "pipfile",
      "build",
      "fastapi",
      "aiohttp",
      "wait-for-it",
      "mypy",
      "types-decorator",
      "types-requests",
      "trio",
  ]
  speedups = [
      "xxhash;platform_python_implementation=='CPython'",
      "xxhash-cffi;platform_python_implementation=='PyPy'",
  ]
  pook = [
      "pook>=0.2.1",
  ]
  
  [tool.hatch.version]
  path = "mocket/__init__.py"
  
  [tool.hatch.build]
  ignore-vcs = true
  
  [tool.hatch.build.targets.sdist]
  include = [
      "README.rst",
      "LICENSE",
      "pyproject.toml",
      "mocket/",
      "tests/",
  ]
  exclude = [
    ".*",
  ]
  
  [tool.pytest.ini_options]
  testpaths = [
      "tests", "mocket",
  ]
  addopts = "--doctest-modules --cov=mocket --cov-report=xml --cov-report=term-missing --cov-append -v -x"
  asyncio_default_fixture_loop_scope = "function"
  asyncio_mode = "auto"
  
  [tool.ruff]
  src = ["mocket", "tests"]
  
  [tool.ruff.lint]
  extend-ignore = ["E731", "E501"]
  select = [
      # pycodestyle
      "E",
      # Pyflakes
      "F",
      # pyupgrade
      "UP",
      # flake8-bugbear
      "B",
      # flake8-simplify
      "SIM",
      # isort
      "I",
  ]
  
  [tool.ruff.lint.mccabe]
  # Unlike Flake8, default to a complexity level of 10.
  # https://en.wikipedia.org/wiki/Cyclomatic_complexity#Limiting_complexity_during_development
  max-complexity = 8
  
  [tool.mypy]
  python_version = "3.8"
  files = [
      "mocket/exceptions.py",
      "mocket/compat.py",
      "mocket/utils.py",
      "mocket/plugins/httpretty/__init__.py",
      "tests/test_httpretty.py",
      "tests/test_utils.py",
      # "tests/"
      ]
  strict = true
  warn_unused_configs = true
  ignore_missing_imports = true
  warn_redundant_casts = true
  warn_unused_ignores = true
  show_error_codes = true
  implicit_reexport = true
  disallow_any_generics = false
  follow_imports = "silent"  # enable this once majority is typed
  enable_error_code = ['ignore-without-code']
  disable_error_code = ["no-untyped-def"] # enable this once full type-coverage is reached
  
  [[tool.mypy.overrides]]
  module = "tests.*"
  disable_error_code = ['type-arg', 'no-untyped-def']
  
  [[tool.mypy.overrides]]
  module = "mocket.plugins.*"
  disallow_subclassing_any = false  # mypy doesn't support dynamic imports
  
  [[tool.mypy.overrides]]
  module = "tests.test_httpretty"
  disallow_untyped_decorators = true
  