# chardet is a dependency of requests. It is optional under
# Python 3 but is used if present. Starting with requests v2.26.0,
# requests depends on charset_normalizer that emits a warning in
# our tests:
# ```
# UserWarning: Trying to detect encoding from a tiny portion
# of (12) byte(s).
# ```
# Ref: https://github.com/psf/requests/commit/2ed84f5
# To avoid the warning, we declare a direct dependency on chardet
# here so that it's use is adjusted across Python 2 and Python 3:
requests[use_chardet_on_py3]

# measure test coverage
coverage >= 6.2
jaraco.context

jaraco.text>=3.1

portend

# cryptography >= 3.4 started using Rust but it's unstable w/ old PyPy
# and pyopenssl == 22 started requiring cryptography 35+
# which is why we need these restrictions for the dependency resolution
# to succeed.
pyopenssl; implementation_name != "pypy"
pyopenssl >= 22.0.0; implementation_name == "pypy" and python_version >= "3.8"
pyopenssl < 22.0.0; implementation_name == "pypy" and python_version < "3.8"

# The pypytools library provides a cross-implementation context
# manager for disabling garbage collection in specific blocks
# of the control flow:
pypytools

pytest-clarity
pytest-cov==2.12.0
pytest-forked>=1.2.0; sys_platform != "win32"
pytest-mock>=1.11.0
pytest-rerunfailures
pytest-sugar>=0.9.3
pytest-watch==4.2.0
pytest-xdist>=1.28.0

# pytest-forked is currently incompatible with pytest 7
# Refs:
# * https://github.com/cherrypy/cheroot/issues/511
# * https://github.com/pytest-dev/pytest-forked/issues/67
pytest >= 4.6.6, < 7

# HTTP over UNIX socket
requests-unixsocket
requests_toolbelt

# TLS
trustme>=0.4.0

# cryptography >= 3.4 started using Rust but it's unstable w/ old PyPy
cryptography < 3.4; implementation_name == "pypy" and python_version < "3.8"

# requests-unixsocket is currently incompatible with urllib3 v2
# Refs:
# * https://github.com/msabramo/requests-unixsocket/issues/70
# * https://github.com/msabramo/requests-unixsocket/pull/69
urllib3 < 2
