[project] name = "theHarvester" description = "theHarvester is a very simple, yet effective tool designed to be used in the early stages of a penetration test" readme = "README.md" authors = [ { name = "Christian Martorella", email = "cmartorella@edge-security.com" }, { name = "Jay Townsend", email = "jay@cybermon.uk" }, { name = "Matthew Brown", email = "36310667+NotoriousRebel@users.noreply.github.com" }, ] requires-python = ">=3.9" urls.Homepage = "https://github.com/laramies/theHarvester" classifiers = [ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Operating System :: OS Independent", ] dynamic = ["dependencies", "optional-dependencies", "version"] [project.scripts] theHarvester = "theHarvester.theHarvester:main" restfulHarvest = "theHarvester.restfulHarvest:main" [tool.setuptools.dynamic] version = { attr = "theHarvester.lib.version.VERSION" } dependencies = { file = "requirements/base.txt" } optional-dependencies.dev = { file = "requirements/dev.txt" } [tool.setuptools.packages.find] include = ["theHarvester*"] [tool.setuptools.package-data] "*" = ["*.txt", "*.yaml"] [tool.pytest.ini_options] minversion = "7.1.1" addopts = "--no-header --asyncio-mode=auto" testpaths = [ "tests", "tests/discovery/", ] [build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [tool.mypy] python_version = "3.11" warn_unused_configs = true ignore_missing_imports = true show_traceback = true show_error_codes = true namespace_packages = true [tool.ruff] # Exclude a variety of commonly ignored directories. exclude = [ "tests", ".eggs", ".git", ".git-rewrite", ".mypy_cache", ".pyenv", ".pytest_cache", ".pytype", ".ruff_cache", ".github", ".venv", ".vscode", ".idea", "__pypackages__", "build", "dist", "site-packages", "venv", ] line-length = 130 target-version = "py310" show-fixes = true [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "I", "UP", "TCH"] ignore = [] # Allow fix for all enabled rules (when `--fix`) is provided. fixable = ["ALL"] unfixable = [] # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.ruff.format] # Like Black, use double quotes for strings. quote-style = "single" indent-style = "space" # Like Black, respect magic trailing commas. skip-magic-trailing-comma = false # Like Black, automatically detect the appropriate line ending. line-ending = "auto"