1[build-system] 2requires = [ "setuptools>=62.0.0" ] 3build-backend = "setuptools.build_meta" 4 5[project] 6name = "scapy" 7dynamic = [ "version", "readme" ] 8authors = [ 9 { name="Philippe BIONDI" }, 10] 11maintainers = [ 12 { name="Pierre LALET" }, 13 { name="Gabriel POTTER" }, 14 { name="Guillaume VALADON" }, 15 { name="Nils WEISS" }, 16] 17license = { text="GPL-2.0-only" } 18requires-python = ">=3.7, <4" 19description = "Scapy: interactive packet manipulation tool" 20keywords = [ "network" ] 21classifiers = [ 22 "Development Status :: 5 - Production/Stable", 23 "Environment :: Console", 24 "Intended Audience :: Developers", 25 "Intended Audience :: Information Technology", 26 "Intended Audience :: Science/Research", 27 "Intended Audience :: System Administrators", 28 "Intended Audience :: Telecommunications Industry", 29 "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", 30 "Programming Language :: Python :: 3", 31 "Programming Language :: Python :: 3 :: Only", 32 "Programming Language :: Python :: 3.7", 33 "Programming Language :: Python :: 3.8", 34 "Programming Language :: Python :: 3.9", 35 "Programming Language :: Python :: 3.10", 36 "Programming Language :: Python :: 3.11", 37 "Programming Language :: Python :: 3.12", 38 "Programming Language :: Python :: 3.13", 39 "Topic :: Security", 40 "Topic :: System :: Networking", 41 "Topic :: System :: Networking :: Monitoring", 42] 43 44[project.urls] 45Homepage = "https://scapy.net" 46Download = "https://github.com/secdev/scapy/tarball/master" 47Documentation = "https://scapy.readthedocs.io" 48"Source Code" = "https://github.com/secdev/scapy" 49Changelog = "https://github.com/secdev/scapy/releases" 50 51[project.scripts] 52scapy = "scapy.main:interact" 53 54[project.optional-dependencies] 55cli = [ "ipython" ] 56all = [ 57 "ipython", 58 "pyx", 59 "cryptography>=2.0", 60 "matplotlib", 61] 62doc = [ 63 "sphinx>=7.0.0", 64 "sphinx_rtd_theme>=1.3.0", 65 "tox>=3.0.0", 66] 67 68# setuptools specific 69 70[tool.setuptools.package-data] 71"scapy" = ["py.typed"] 72 73[tool.setuptools.packages.find] 74include = [ 75 "scapy*", 76] 77exclude = [ 78 "test*", 79 "doc*", 80] 81 82[tool.setuptools.dynamic] 83version = { attr="scapy.VERSION" } 84 85# coverage 86 87[tool.coverage.run] 88concurrency = [ "thread", "multiprocessing" ] 89source = [ "scapy" ] 90omit = [ 91 # Scapy tools 92 "scapy/tools/", 93 # Scapy external modules 94 "scapy/libs/ethertypes.py", 95 "scapy/libs/manuf.py", 96 "scapy/libs/winpcapy.py", 97] 98