Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
laramies
GitHub Repository: laramies/theHarvester
Path: blob/master/pyproject.toml
606 views
1
[project]
2
name = "theHarvester"
3
description = "theHarvester is a very simple, yet effective tool designed to be used in the early stages of a penetration test"
4
readme = "README.md"
5
authors = [
6
{ name = "Christian Martorella", email = "[email protected]" },
7
{ name = "Jay Townsend", email = "[email protected]" },
8
{ name = "Matthew Brown", email = "[email protected]" },
9
]
10
requires-python = ">=3.12"
11
urls.Homepage = "https://github.com/laramies/theHarvester"
12
classifiers = [
13
"Programming Language :: Python :: 3",
14
"Programming Language :: Python :: 3.12",
15
"Programming Language :: Python :: 3.13",
16
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
17
"Operating System :: OS Independent",
18
]
19
dynamic = ["version"]
20
dependencies = [
21
"aiodns==3.5.0",
22
"aiofiles==24.1.0",
23
"aiohttp==3.12.15",
24
"aiomultiprocess==0.9.1",
25
"aiosqlite==0.21.0",
26
"beautifulsoup4==4.13.5",
27
"censys==2.2.18",
28
"certifi==2025.8.3",
29
"dnspython==2.7.0",
30
"fastapi==0.116.1",
31
"lxml==6.0.1",
32
"netaddr==1.3.0",
33
"playwright==1.55.0",
34
"PyYAML==6.0.2",
35
"python-dateutil==2.9.0.post0",
36
"httpx==0.28.1",
37
"retrying==1.4.2",
38
"shodan==1.31.0",
39
"slowapi==0.1.9",
40
"ujson==5.11.0",
41
"uvicorn==0.35.0",
42
"uvloop==0.21.0; platform_system != 'Windows'",
43
"winloop==0.2.2; platform_system == 'Windows'",
44
]
45
46
[project.optional-dependencies]
47
dev = [
48
"mypy==1.17.1",
49
"mypy-extensions==1.1.0",
50
"pytest==8.4.1",
51
"pytest-asyncio==1.1.0",
52
"types-certifi==2021.10.8.3",
53
"types-chardet==5.0.4.6",
54
"types-python-dateutil==2.9.0.20250822",
55
"types-PyYAML==6.0.12.20250822",
56
"ruff==0.12.11",
57
"types-ujson==5.10.0.20250822",
58
"wheel==0.45.1",
59
]
60
61
[project.scripts]
62
theHarvester = "theHarvester.theHarvester:main"
63
restfulHarvest = "theHarvester.restfulHarvest:main"
64
65
[tool.setuptools.dynamic]
66
version = { attr = "theHarvester.lib.version.VERSION" }
67
68
[tool.setuptools.packages.find]
69
include = ["theHarvester*"]
70
71
[tool.setuptools.package-data]
72
"*" = ["*.txt", "*.yaml"]
73
74
[tool.pytest.ini_options]
75
minversion = "8.3.3"
76
asyncio_mode = "auto"
77
asyncio_default_fixture_loop_scope = "function"
78
addopts = "--no-header"
79
testpaths = [
80
"tests",
81
"tests/discovery/",
82
]
83
84
[build-system]
85
requires = ["setuptools>=68"]
86
build-backend = "setuptools.build_meta"
87
88
[tool.mypy]
89
python_version = "3.12"
90
warn_unused_configs = true
91
ignore_missing_imports = true
92
show_traceback = true
93
show_error_codes = true
94
namespace_packages = true
95
check_untyped_defs = true
96
97
[tool.uv]
98
python-preference = "managed"
99
100
[tool.uv.pip]
101
python-version = "3.12"
102
103
[tool.ruff]
104
# Exclude a variety of commonly ignored directories.
105
exclude = [
106
"tests",
107
".eggs",
108
".git",
109
".git-rewrite",
110
".mypy_cache",
111
".pyenv",
112
".pytest_cache",
113
".pytype",
114
".ruff_cache",
115
".github",
116
".venv",
117
".vscode",
118
".idea",
119
"__pypackages__",
120
"build",
121
"dist",
122
"site-packages",
123
"venv",
124
]
125
126
line-length = 130
127
target-version = "py312"
128
show-fixes = true
129
130
[tool.ruff.lint]
131
select = ["E",
132
"F",
133
"N",
134
"I",
135
"UP",
136
"TCH",
137
"FA",
138
"RUF",
139
"PT",
140
"TC",
141
"ASYNC"
142
]
143
ignore = [
144
"E501",
145
"ASYNC230",
146
"N999",
147
"PLR0915"
148
]
149
150
# Allow fix for all enabled rules (when `--fix`) is provided.
151
fixable = ["ALL"]
152
unfixable = []
153
154
# Allow unused variables when underscore-prefixed.
155
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
156
157
[tool.ruff.format]
158
# Like Black, use double quotes for strings.
159
quote-style = "single"
160
indent-style = "space"
161
162
# Like Black, respect magic trailing commas.
163
skip-magic-trailing-comma = false
164
165
# Like Black, automatically detect the appropriate line ending.
166
line-ending = "auto"
167
168