[build-system]
requires = [
    "hatchling >= 1.10.0",
    "hatch-fancy-pypi-readme >= 22.5.0",
    "incremental >= 24.7.0",
]
build-backend = "hatchling.build"

[project]
name = "Twisted"
dynamic = [
    "version",
    "readme",
    # Remove this when the legacy optional dependency names are removed
    "optional-dependencies",
]
description = "An asynchronous networking framework written in Python"
license = { text = "MIT License" }
# When updating this value, make sure our CI matrix includes a matching minimum version.
requires-python = ">=3.9.12"
authors = [
    { name = "Twisted Matrix Community", email = "twisted@python.org" },
]
classifiers = [
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "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",
]
dependencies = [
    "zope.interface >= 5",
    "constantly >= 15.1",
    "incremental >= 24.7.0",
    "Automat >= 24.8.0",
    "hyperlink >= 17.1.1",
    "attrs >= 22.2.0",
    "typing_extensions >= 4.2.0",
]

# Switch to this when the legacy optional dependency names are removed
# [project.optional-dependencies]
[tool.hatch.metadata.hooks.custom.optional-dependencies]
# This is list of minimum dependencies required to run the tests.
# The plan is to remove the `test` extra requirement and skip tests that
# depend on them
# To prevent trunk failures we should pin all dev dependencies to minor
# versions.
# We trust semantic versioning and auto-upgrading to a bugfix release
# should be OK.
test = [
    "cython-test-exception-raiser >= 1.0.2, <2",
    "PyHamcrest >= 2",
    "hypothesis >= 6.56",
    "httpx[http2] >= 0.27",
]

# List of dependencies required to build the documentation and test the
# release scripts and process.
dev-release = [
    "towncrier ~= 23.6",
    "pydoctor ~= 25.4.0",
    "sphinx-rtd-theme ~= 1.3",
    "sphinx >= 6, <7",
]

# All the extra tools used to help with the development process.
dev = [
    "twisted[test]",
    "twisted[dev-release]",
    "pyflakes ~= 2.2",
    "python-subunit ~= 1.4",
    "twistedchecker ~= 0.7",
    "coverage ~= 7.5",
]

tls = [
    "pyopenssl >= 25.2.0",
    # service_identity 18.1.0 added support for validating IP addresses in
    # certificate subjectAltNames
    "service_identity >= 18.1.0",
    "idna >= 2.4",
]

conch = [
    "cryptography >= 38",
    "appdirs >= 1.4.0",
    "bcrypt >= 3.2.1",
]

serial = [
    "pyserial >= 3.0",
    "pywin32 != 226; platform_system == 'Windows'",
]

http2 = [
    "h2 >= 3.2, < 5.0",
    "priority >= 1.1.0, < 2.0",
]

websocket = [
    "wsproto",
]

all-non-platform = [
    "twisted[test,tls,conch,serial,http2,websocket]",
]

macos-platform = [
    "twisted[all-non-platform]",
    "pyobjc-core >= 12 ; python_version >= '3.10'",
    "pyobjc-framework-CFNetwork >= 12; python_version >= '3.10'",
    "pyobjc-framework-Cocoa >= 12; python_version >= '3.10'",
]

windows-platform = [
    "twisted[all-non-platform]",
    "pywin32 != 226",
    "twisted-iocpsupport >= 1.0.2",
]

osx-platform = [
    "twisted[macos-platform]",
]

gtk-platform = [
    "twisted[all-non-platform]",
    "pygobject; python_version >= '3.10'",
    "pygobject < 3.52.1; python_version < '3.10'",
]

mypy = [
    "twisted[dev,all-non-platform]",
    "mypy==1.19.1",
    "mypy-zope==1.0.14",
    "types-setuptools",
    "types-pyOpenSSL",
]

[project.scripts]
cftp = "twisted.conch.scripts.cftp:run"
ckeygen = "twisted.conch.scripts.ckeygen:run"
conch = "twisted.conch.scripts.conch:run"
mailmail = "twisted.mail.scripts.mailmail:run"
pyhtmlizer = "twisted.scripts.htmlizer:run"
tkconch = "twisted.conch.scripts.tkconch:run"
trial = "twisted.scripts.trial:run"
twist = "twisted.application.twist._twist:Twist.main"
twistd = "twisted.scripts.twistd:run"

[project.urls]
# For available URL types see
# https://docs.pypi.org/project_metadata/
Changelog = "https://github.com/twisted/twisted/blob/HEAD/NEWS.rst"
Documentation = "https://docs.twisted.org/"
Homepage = "https://twisted.org/"
Issues = "https://github.com/twisted/twisted/issues"
Source = "https://github.com/twisted/twisted"
Funding-PSF = "https://psfmember.org/civicrm/contribute/transact/?reset=1&id=44"
Funding-GitHub = "https://github.com/sponsors/twisted"

[tool.hatch.metadata]
# This is here to enable backward compatible extra dependencies
# that are defined using underscores.
allow-ambiguous-features = true
allow-direct-references = true


[tool.hatch.version]
source = "incremental"

[tool.hatch.metadata.hooks.fancy-pypi-readme]
content-type = "text/x-rst"
fragments = [
    { path = "README.rst" },
]

[[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
# Munge links of the form `NEWS <NEWS.rst>`_ to point at the appropriate
# location on GitHub so that they function when the long description is
# displayed on PyPI.
pattern = '`([^`]+)\s+<(?!https?://)([^>]+)>`_'
replacement = '`\1 <https://github.com/twisted/twisted/blob/trunk/\2>`_'
ignore-case = true

[tool.hatch.build.targets.wheel]
packages = [
    "src/twisted",
]
exclude = [
    "*.pxi",
    "*.pyx",
    "build.bat",
]

[tool.hatch.build.targets.sdist]
# This dictates what goes into a sdist tarball.
# As a release tarball, we want to include:
#  - All of the library code.
#  - All the useful documentation (but not the super historic stuff)
#  - All of the test files, so that the tests can be run on an installed copy.
# We do not want to include:
#  - Release management files (e.g. topfiles)
#  - Things only useful when running from a source checkout
include = [
    # Documentation
    "/docs",

    # Library code
    "/src",
    "/CONTRIBUTING.md",
    "/INSTALL.rst",
    "/NEWS.rst",
    "/README.rst",
    "/code_of_conduct.md",

    # Test-running utilities for downstream packagers
    "/.coveragerc",
    "/mypy.ini",
    "/tox.ini",
]

[tool.towncrier]
    package = "twisted"
    package_dir = "src"
    filename = "NEWS.rst"

    [[tool.towncrier.section]]
        path = ""

    [[tool.towncrier.section]]
        path = "conch"
        name = "Conch"

    [[tool.towncrier.section]]
        path = "web"
        name = "Web"

    [[tool.towncrier.section]]
        path = "mail"
        name = "Mail"

    [[tool.towncrier.section]]
        path = "words"
        name = "Words"

    [[tool.towncrier.section]]
        path = "names"
        name = "Names"

    [[tool.towncrier.section]]
        path = "trial"
        name = "Trial"

    [[tool.towncrier.type]]
        directory = "feature"
        name = "Features"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "bugfix"
        name = "Bugfixes"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "doc"
        name = "Improved Documentation"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "removal"
        name = "Deprecations and Removals"
        showcontent = true

    [[tool.towncrier.type]]
        directory = "misc"
        name = "Misc"
        showcontent = false

[tool.black]
target-version = ['py39', 'py310', 'py311', 'py312']

[tool.isort]
profile = "black"
sections = "FUTURE,STDLIB,ZOPE,OPENSSL,THIRDPARTY,FIRSTPARTY,LOCALFOLDER"
default_section = "THIRDPARTY"
no_lines_before = "LOCALFOLDER"
known_first_party = "twisted"
known_zope = "zope"
known_openssl = "OpenSSL"
combine_as_imports = true
skip = "src/twisted/logger/__init__.py,src/twisted/internet/reactor.py"

[tool.mypy]
namespace_packages = true
plugins = ["mypy_zope:plugin"]
# Increase our expectations
strict = true
check_untyped_defs = true
disallow_incomplete_defs = true
disallow_untyped_defs = true
no_implicit_optional = true
show_column_numbers = true
show_error_codes = true
strict_optional = true
warn_no_return = true
warn_redundant_casts = true
warn_return_any = true
warn_unreachable = true
warn_unused_ignores = true
disallow_untyped_decorators = true
disallow_any_generics = true
# These are too strict for us at the moment
disallow_any_decorated = false
disallow_any_explicit = false
disallow_any_expr = false
disallow_any_unimported = false
disallow_subclassing_any = false
disallow_untyped_calls = false
strict_equality = false
no_implicit_reexport = false
# Disable some checks until the effected modules fully adopt mypy

[[tool.mypy.overrides]]
ignore_missing_imports = true
follow_imports = "silent"
follow_imports_for_stubs = true
module = [

  # pyobjc is not installed on linux
  "CFNetwork",
  "CoreFoundation",

  # neither is pywin32
  "pywintypes",
  "win32api",
  "win32con",
  "win32com.*",
  "win32event",
  "win32file",
  "win32pipe",
  "win32process",
  "win32security",
  "win32console",

  # pyserial is very optional
  "serial",
  "serial.*",

  # GObject Introspection too
  "gi",
  "gi.repository.*",

  # we need to clean this up, because it's ancient and probably unsupported,
  # but as long as it's still imported, we don't want to type-check it
  "gobject",
  "pygtk",
  "gtk",

  # and wxPython
  "wxPython.wx",
  "wx",

  # constantly doesn't have type stubs yet
  "constantly",

  # h2 doesn't have types yet and is optional besides
  "h2.*",
  "hpack.*",
  "priority",

  # subunit is untyped
  "subunit",

  # oh this is fun, not even totally sure what library this is, since it's not
  # documented as an extra.
  "utmp",

  # I think only used by `twisted.web.script.ResourceTemplate`
  "quixote",

  "cython_test_exception_raiser",

  # various obscure database modules you shouldn't need installed in order to
  # type-check
  "pyPgSQL",
  "psycopg",
  "MySQLdb",
  "kinterbasdb",
]

[[tool.mypy.overrides]]
allow_untyped_defs = true
check_untyped_defs = false
module = [
    'twisted.application.app',
    'twisted.application.internet',
    'twisted.application.service',
    'twisted.application.test.test_internet',
    'twisted.conch.client.agent',
    'twisted.conch.client.default',
    'twisted.conch.client.direct',
    'twisted.conch.endpoints',
    'twisted.conch.insults.helper',
    'twisted.conch.insults.insults',
    'twisted.conch.insults.window',
    'twisted.conch.ls',
    'twisted.conch.manhole',
    'twisted.conch.manhole_tap',
    'twisted.conch.mixin',
    'twisted.conch.recvline',
    'twisted.conch.scripts.cftp',
    'twisted.conch.scripts.ckeygen',
    'twisted.conch.scripts.conch',
    'twisted.conch.scripts.tkconch',
    'twisted.conch.ssh.agent',
    'twisted.conch.ssh.channel',
    'twisted.conch.ssh.connection',
    'twisted.conch.ssh.factory',
    'twisted.conch.ssh.filetransfer',
    'twisted.conch.ssh.forwarding',
    'twisted.conch.ssh.keys',
    'twisted.conch.ssh.service',
    'twisted.conch.ssh.session',
    'twisted.conch.ssh.sexpy',
    'twisted.conch.ssh.transport',
    'twisted.conch.ssh.userauth',
    'twisted.conch.stdio',
    'twisted.conch.tap',
    'twisted.conch.telnet',
    'twisted.conch.test.loopback',
    'twisted.conch.test.test_agent',
    'twisted.conch.test.test_cftp',
    'twisted.conch.test.test_checkers',
    'twisted.conch.test.test_conch',
    'twisted.conch.test.test_connection',
    'twisted.conch.test.test_default',
    'twisted.conch.test.test_endpoints',
    'twisted.conch.test.test_filetransfer',
    'twisted.conch.test.test_insults',
    'twisted.conch.test.test_keys',
    'twisted.conch.test.test_knownhosts',
    'twisted.conch.test.test_manhole',
    'twisted.conch.test.test_recvline',
    'twisted.conch.test.test_session',
    'twisted.conch.test.test_ssh',
    'twisted.conch.test.test_telnet',
    'twisted.conch.test.test_transport',
    'twisted.conch.test.test_userauth',
    'twisted.conch.ui.tkvt100',
    'twisted.conch.unix',
    'twisted.cred.checkers',
    'twisted.cred.strcred',
    'twisted.cred.test.test_cred',
    'twisted.cred.test.test_digestauth',
    'twisted.cred.test.test_strcred',
    'twisted.enterprise.adbapi',
    'twisted.internet._baseprocess',
    'twisted.internet._dumbwin32proc',
    'twisted.internet._glibbase',
    'twisted.internet._newtls',
    'twisted.internet._signals',
    'twisted.internet._threadedselect',
    'twisted.internet._win32serialport',
    'twisted.internet._win32stdio',
    'twisted.internet.asyncioreactor',
    'twisted.internet.cfreactor',
    'twisted.internet.endpoints',
    'twisted.internet.error',
    'twisted.internet.fdesc',
    'twisted.internet.gtk2reactor',
    'twisted.internet.inotify',
    'twisted.internet.iocpreactor.abstract',
    'twisted.internet.iocpreactor.reactor',
    'twisted.internet.iocpreactor.udp',
    'twisted.internet.kqreactor',
    'twisted.internet.posixbase',
    'twisted.internet.process',
    'twisted.internet.protocol',
    'twisted.internet.serialport',
    'twisted.internet.test._posixifaces',
    'twisted.internet.test.connectionmixins',
    'twisted.internet.test.reactormixins',
    'twisted.internet.test.test_address',
    'twisted.internet.test.test_asyncioreactor',
    'twisted.internet.test.test_base',
    'twisted.internet.test.test_baseprocess',
    'twisted.internet.test.test_defer_yieldfrom',
    'twisted.internet.test.test_endpoints',
    'twisted.internet.test.test_epollreactor',
    'twisted.internet.test.test_fdset',
    'twisted.internet.test.test_filedescriptor',
    'twisted.internet.test.test_glibbase',
    'twisted.internet.test.test_inlinecb',
    'twisted.internet.test.test_inotify',
    'twisted.internet.test.test_iocp',
    'twisted.internet.test.test_newtls',
    'twisted.internet.test.test_posixbase',
    'twisted.internet.test.test_posixprocess',
    'twisted.internet.test.test_process',
    'twisted.internet.test.test_protocol',
    'twisted.internet.test.test_resolver',
    'twisted.internet.test.test_serialport',
    'twisted.internet.test.test_socket',
    'twisted.internet.test.test_stdio',
    'twisted.internet.test.test_tcp',
    'twisted.internet.test.test_threads',
    'twisted.internet.test.test_time',
    'twisted.internet.test.test_tls',
    'twisted.internet.test.test_udp',
    'twisted.internet.test.test_unix',
    'twisted.internet.test.test_win32events',
    'twisted.internet.testing',
    'twisted.internet.threads',
    'twisted.internet.tksupport',
    'twisted.internet.udp',
    'twisted.internet.unix',
    'twisted.internet.utils',
    'twisted.internet.win32eventreactor',
    'twisted.internet.wxreactor',
    'twisted.internet.wxsupport',
    'twisted.logger._json',
    'twisted.mail._cred',
    'twisted.mail._pop3client',
    'twisted.mail.alias',
    'twisted.mail.imap4',
    'twisted.mail.mail',
    'twisted.mail.maildir',
    'twisted.mail.pb',
    'twisted.mail.pop3',
    'twisted.mail.protocols',
    'twisted.mail.relay',
    'twisted.mail.relaymanager',
    'twisted.mail.scripts.mailmail',
    'twisted.mail.smtp',
    'twisted.mail.tap',
    'twisted.mail.test.pop3testserver',
    'twisted.mail.test.test_imap',
    'twisted.mail.test.test_mail',
    'twisted.mail.test.test_mailmail',
    'twisted.mail.test.test_options',
    'twisted.mail.test.test_pop3',
    'twisted.mail.test.test_pop3client',
    'twisted.mail.test.test_smtp',
    'twisted.names.authority',
    'twisted.names.cache',
    'twisted.names.client',
    'twisted.names.common',
    'twisted.names.dns',
    'twisted.names.hosts',
    'twisted.names.root',
    'twisted.names.secondary',
    'twisted.names.server',
    'twisted.names.srvconnect',
    'twisted.names.tap',
    'twisted.names.test.test_cache',
    'twisted.names.test.test_client',
    'twisted.names.test.test_common',
    'twisted.names.test.test_dns',
    'twisted.names.test.test_examples',
    'twisted.names.test.test_names',
    'twisted.names.test.test_rootresolve',
    'twisted.names.test.test_server',
    'twisted.names.test.test_srvconnect',
    'twisted.pair.test.test_tuntap',
    'twisted.pair.testing',
    'twisted.pair.tuntap',
    'twisted.persisted._tokenize',
    'twisted.persisted.aot',
    'twisted.persisted.sob',
    'twisted.persisted.styles',
    'twisted.plugin',
    'twisted.plugins.cred_unix',
    'twisted.positioning._sentence',
    'twisted.positioning.nmea',
    'twisted.positioning.test.test_sentence',
    'twisted.protocols.amp',
    'twisted.protocols.basic',
    'twisted.protocols.finger',
    'twisted.protocols.ftp',
    'twisted.protocols.htb',
    'twisted.protocols.ident',
    'twisted.protocols.loopback',
    'twisted.protocols.memcache',
    'twisted.protocols.pcp',
    'twisted.protocols.policies',
    'twisted.protocols.portforward',
    'twisted.protocols.postfix',
    'twisted.protocols.shoutcast',
    'twisted.protocols.sip',
    'twisted.protocols.socks',
    'twisted.protocols.stateful',
    'twisted.protocols.test.test_basic',
    'twisted.protocols.test.test_tls',
    'twisted.protocols.tls',
    'twisted.protocols.wire',
    'twisted.python.failure',
    'twisted.python.formmethod',
    'twisted.python.logfile',
    'twisted.python.modules',
    'twisted.python.rebuild',
    'twisted.python.reflect',
    'twisted.python.test.test_components',
    'twisted.python.test.test_constants',
    'twisted.python.test.test_deprecate',
    'twisted.python.test.test_fakepwd',
    'twisted.python.test.test_inotify',
    'twisted.python.test.test_release',
    'twisted.python.test.test_sendmsg',
    'twisted.python.test.test_shellcomp',
    'twisted.python.test.test_syslog',
    'twisted.python.test.test_urlpath',
    'twisted.python.test.test_util',
    'twisted.python.test.test_zipstream',
    'twisted.python.text',
    'twisted.python.threadable',
    'twisted.python.urlpath',
    'twisted.python.usage',
    'twisted.python.util',
    'twisted.python.win32',
    'twisted.python.zipstream',
    'twisted.runner.inetd',
    'twisted.runner.test.test_procmon',
    'twisted.scripts._twistd_unix',
    'twisted.scripts.test.test_scripts',
    'twisted.scripts.trial',
    'twisted.spread.banana',
    'twisted.spread.flavors',
    'twisted.spread.jelly',
    'twisted.spread.pb',
    'twisted.spread.publish',
    'twisted.spread.test.test_banana',
    'twisted.spread.test.test_jelly',
    'twisted.spread.test.test_pb',
    'twisted.spread.test.test_pbfailure',
    'twisted.spread.util',
    'twisted.tap.ftp',
    'twisted.test.iosim',
    'twisted.test.process_twisted',
    'twisted.test.stdio_test_consumer',
    'twisted.test.stdio_test_halfclose',
    'twisted.test.stdio_test_hostpeer',
    'twisted.test.stdio_test_lastwrite',
    'twisted.test.stdio_test_loseconn',
    'twisted.test.stdio_test_producer',
    'twisted.test.stdio_test_write',
    'twisted.test.stdio_test_writeseq',
    'twisted.test.test_adbapi',
    'twisted.test.test_amp',
    'twisted.test.test_application',
    'twisted.test.test_compat',
    'twisted.test.test_context',
    'twisted.test.test_cooperator',
    'twisted.test.test_defgen',
    'twisted.test.test_factories',
    'twisted.test.test_fdesc',
    'twisted.test.test_ftp',
    'twisted.test.test_ftp_options',
    'twisted.test.test_ident',
    'twisted.test.test_internet',
    'twisted.test.test_iutils',
    'twisted.test.test_loopback',
    'twisted.test.test_main',
    'twisted.test.test_memcache',
    'twisted.test.test_pcp',
    'twisted.test.test_policies',
    'twisted.test.test_postfix',
    'twisted.test.test_process',
    'twisted.test.test_protocols',
    'twisted.test.test_reflect',
    'twisted.test.test_sip',
    'twisted.test.test_sob',
    'twisted.test.test_socks',
    'twisted.test.test_ssl',
    'twisted.test.test_sslverify',
    'twisted.test.test_stateful',
    'twisted.test.test_stdio',
    'twisted.test.test_strerror',
    'twisted.test.test_strports',
    'twisted.test.test_task',
    'twisted.test.test_tcp',
    'twisted.test.test_tcp_internals',
    'twisted.test.test_threadable',
    'twisted.test.test_threadpool',
    'twisted.test.test_threads',
    'twisted.test.test_twistd',
    'twisted.test.test_twisted',
    'twisted.test.test_udp',
    'twisted.test.test_unix',
    'twisted.test.test_usage',
    'twisted.test.testutils',
    'twisted.trial._asynctest',
    'twisted.trial._dist.test.test_disttrial',
    'twisted.trial._dist.test.test_matchers',
    'twisted.trial._dist.test.test_stream',
    'twisted.trial._dist.test.test_worker',
    'twisted.trial._dist.test.test_workertrial',
    'twisted.trial._dist.workerreporter',
    'twisted.trial._synctest',
    'twisted.trial.reporter',
    'twisted.trial.runner',
    'twisted.trial.test.detests',
    'twisted.trial.test.erroneous',
    'twisted.trial.test.mockcustomsuite',
    'twisted.trial.test.mockcustomsuite2',
    'twisted.trial.test.mockcustomsuite3',
    'twisted.trial.test.skipping',
    'twisted.trial.test.suppression',
    'twisted.trial.test.test_assertions',
    'twisted.trial.test.test_asyncassertions',
    'twisted.trial.test.test_log',
    'twisted.trial.test.test_plugins',
    'twisted.trial.test.test_reporter',
    'twisted.trial.test.test_runner',
    'twisted.trial.test.test_suppression',
    'twisted.trial.test.test_testcase',
    'twisted.trial.test.test_tests',
    'twisted.trial.test.weird',
    'twisted.trial.util',
    'twisted.web._auth.basic',
    'twisted.web._auth.wrapper',
    'twisted.web._http2',
    'twisted.web._newclient',
    'twisted.web._template_util',
    'twisted.web.client',
    'twisted.web.distrib',
    'twisted.web.domhelpers',
    'twisted.web.error',
    'twisted.web.http',
    'twisted.web.http_headers',
    'twisted.web.microdom',
    'twisted.web.proxy',
    'twisted.web.resource',
    'twisted.web.server',
    'twisted.web.static',
    'twisted.web.sux',
    'twisted.web.tap',
    'twisted.web.test.injectionhelpers',
    'twisted.web.test.requesthelper',
    'twisted.web.test.test_agent',
    'twisted.web.test.test_cgi',
    'twisted.web.test.test_distrib',
    'twisted.web.test.test_domhelpers',
    'twisted.web.test.test_http',
    'twisted.web.test.test_http2',
    'twisted.web.test.test_httpauth',
    'twisted.web.test.test_newclient',
    'twisted.web.test.test_proxy',
    'twisted.web.test.test_static',
    'twisted.web.test.test_util',
    'twisted.web.test.test_vhost',
    'twisted.web.test.test_web',
    'twisted.web.test.test_webclient',
    'twisted.web.test.test_wsgi',
    'twisted.web.test.test_xmlrpc',
    'twisted.web.twcgi',
    'twisted.web.wsgi',
    'twisted.web.xmlrpc',
    'twisted.words.im.basesupport',
    'twisted.words.im.ircsupport',
    'twisted.words.im.pbsupport',
    'twisted.words.protocols.irc',
    'twisted.words.protocols.jabber.client',
    'twisted.words.protocols.jabber.component',
    'twisted.words.protocols.jabber.error',
    'twisted.words.protocols.jabber.jstrports',
    'twisted.words.protocols.jabber.sasl',
    'twisted.words.protocols.jabber.xmlstream',
    'twisted.words.service',
    'twisted.words.test.test_basesupport',
    'twisted.words.test.test_domish',
    'twisted.words.test.test_irc',
    'twisted.words.test.test_irc_service',
    'twisted.words.test.test_jabberclient',
    'twisted.words.test.test_jabbercomponent',
    'twisted.words.test.test_jabberjstrports',
    'twisted.words.test.test_jabbersasl',
    'twisted.words.test.test_jabberxmlstream',
    'twisted.words.test.test_service',
    'twisted.words.test.test_xishutil',
    'twisted.words.test.test_xmlstream',
    'twisted.words.xish.domish',
    'twisted.words.xish.utility',
    'twisted.words.xish.xmlstream',
    'twisted.words.xish.xpath',
]

[[tool.mypy.overrides]]
allow_untyped_defs = true
module = [
    'twisted.conch.avatar',
    'twisted.conch.checkers',
    'twisted.conch.client.connect',
    'twisted.conch.client.knownhosts',
    'twisted.conch.client.options',
    'twisted.conch.error',
    'twisted.conch.insults.text',
    'twisted.conch.interfaces',
    'twisted.conch.manhole_ssh',
    'twisted.conch.openssh_compat.factory',
    'twisted.conch.ssh._kex',
    'twisted.conch.ssh.address',
    'twisted.conch.ssh.common',
    'twisted.conch.test.test_unix',
    'twisted.conch.ui.ansi',
    'twisted.cred._digest',
    'twisted.cred.credentials',
    'twisted.internet._pollingfile',
    'twisted.internet._posixserialport',
    'twisted.internet._posixstdio',
    'twisted.internet._producer_helpers',
    'twisted.internet.address',
    'twisted.internet.default',
    'twisted.internet.epollreactor',
    'twisted.internet.gireactor',
    'twisted.internet.glib2reactor',
    'twisted.internet.iocpreactor.interfaces',
    'twisted.internet.main',
    'twisted.internet.pollreactor',
    'twisted.internet.pyuisupport',
    'twisted.internet.selectreactor',
    'twisted.internet.ssl',
    'twisted.internet.test._win32ifaces',
    'twisted.internet.test.fakeendpoint',
    'twisted.internet.test.modulehelpers',
    'twisted.internet.test.test_win32serialport',
    'twisted.mail._except',
    'twisted.mail.bounce',
    'twisted.mail.interfaces',
    'twisted.names._rfc1982',
    'twisted.names.error',
    'twisted.names.resolve',
    'twisted.names.test.test_rfc1982',
    'twisted.names.test.test_util',
    'twisted.pair.ethernet',
    'twisted.pair.ip',
    'twisted.pair.raw',
    'twisted.pair.rawudp',
    'twisted.pair.test.test_ethernet',
    'twisted.persisted._token',
    'twisted.persisted.crefutil',
    'twisted.persisted.dirdbm',
    'twisted.persisted.test.test_styles',
    'twisted.plugins.cred_anonymous',
    'twisted.plugins.cred_file',
    'twisted.plugins.cred_memory',
    'twisted.plugins.cred_sshkeys',
    'twisted.plugins.twisted_trial',
    'twisted.plugins.twisted_words',
    'twisted.positioning.base',
    'twisted.positioning.ipositioning',
    'twisted.positioning.test.receiver',
    'twisted.python._release',
    'twisted.python._shellcomp',
    'twisted.python._textattributes',
    'twisted.python.compat',
    'twisted.python.components',
    'twisted.python.context',
    'twisted.python.deprecate',
    'twisted.python.fakepwd',
    'twisted.python.htmlizer',
    'twisted.python.lockfile',
    'twisted.python.log',
    'twisted.python.monkey',
    'twisted.python.procutils',
    'twisted.python.release',
    'twisted.python.roots',
    'twisted.python.shortcut',
    'twisted.python.syslog',
    'twisted.runner.inetdconf',
    'twisted.runner.inetdtap',
    'twisted.scripts._twistw',
    'twisted.scripts.htmlizer',
    'twisted.scripts.twistd',
    'twisted.spread.interfaces',
    'twisted.tap.portforward',
    'twisted.tap.socks',
    'twisted.test.mock_win32process',
    'twisted.trial._asyncrunner',
    'twisted.trial._dist.distreporter',
    'twisted.trial._dist.disttrial',
    'twisted.trial._dist.functional',
    'twisted.trial._dist.options',
    'twisted.trial._dist.worker',
    'twisted.trial._dist.workertrial',
    'twisted.trial.itrial',
    'twisted.trial.test.mockdoctest',
    'twisted.trial.test.packages',
    'twisted.trial.test.pyunitcases',
    'twisted.trial.test.sample',
    'twisted.web._auth.digest',
    'twisted.web.demo',
    'twisted.web.html',
    'twisted.web.iweb',
    'twisted.web.rewrite',
    'twisted.web.script',
    'twisted.web.test._util',
    'twisted.web.vhost',
    'twisted.words.im.baseaccount',
    'twisted.words.im.basechat',
    'twisted.words.im.interfaces',
    'twisted.words.iwords',
    'twisted.words.protocols.jabber.ijabber',
    'twisted.words.protocols.jabber.jid',
    'twisted.words.protocols.jabber.sasl_mechanisms',
    'twisted.words.protocols.jabber.xmpp_stringprep',
    'twisted.words.tap',
    'twisted.words.test.test_ircsupport',
    'twisted.words.xmpproutertap',
]

[[tool.mypy.overrides]]
allow_untyped_defs = true
check_untyped_defs = false
module = [
    'twisted.internet._sslverify',
    'twisted.internet.abstract',
    'twisted.internet.iocpreactor.tcp',
    'twisted.internet.tcp',
]
