requests>=2.32.4
pycryptodome
scapy
dnslib>=0.9.24
cryptography>=41.0
setuptools
qrcode[pil]

[:python_version >= "3.13"]
telnetlib3

[all]
scapy>=2.5.0
dnslib>=0.9.24
cryptography>=42.0
netaddr>=0.10.0
bleak>=0.21.0
pyscard>=2.0.0
pytlv>=0.5
pyserial>=3.5
pyusb>=1.2.1
numpy>=1.26
pymavlink>=2.4.41
gpsd-py3>=0.3.0
gpxpy>=1.6.0

[all-modules]
pyserial
pyscard>=2.0.0
pysim>=1.0
cryptography>=41.0
pyrtlsdr>=0.3.0
pyopencl
numpy>=1.24
scikit-learn>=1.3
joblib

[all:sys_platform != "win32"]
pyrtlsdr>=0.3.0

[all:sys_platform == "linux"]
pybluez>=0.23
dbus-python>=1.3.2

[bt]
bleak>=0.21.0

[bt:sys_platform == "linux"]
pybluez>=0.23
dbus-python>=1.3.2

[cellular]
pyscard>=2.0.0
pytlv>=0.5
pyserial>=3.5

[cellular-full]
pyrtlsdr>=0.3.0
pysim>=1.0

[dev]
pytest>=8.0
pytest-cov>=5.0
black>=24.0
ruff>=0.4
mypy>=1.10
pytest-forked
pytest-xdist
pip-audit
bandit
build
twine

[drone]
pymavlink>=2.4.41
dronekit>=2.9.2

[gps]
gpsd-py3>=0.3.0
gpxpy>=1.6.0

[gpu]

[gpu-opencl]
pyopencl
numpy>=1.24

[gpu:sys_platform == "linux"]
hashcat-ctypes>=0.1

[iot]
pyserial>=3.5
pyusb>=1.2.1

[ir]
pyserial>=3.5
pyusb>=1.2.1

[ml-gpu]
torch>=2.0.0
numpy>=1.24
scikit-learn>=1.3
joblib

[ml-lite]
numpy>=1.24
scikit-learn>=1.3
joblib

[rf]
pyserial>=3.5
pyusb>=1.2.1
numpy>=1.26

[rf:sys_platform != "win32"]
pyrtlsdr>=0.3.0

[serial]
pyserial

[sim]
pyscard>=2.0.0

[sim-full]
pyscard>=2.0.0
pysim>=1.0
cryptography>=41.0

[wifi]
scapy>=2.5.0
dnslib>=0.9.24
cryptography>=42.0
netaddr>=0.10.0
