1+ [build-system ]
2+ requires = [" setuptools" , " wheel" ]
3+ build-backend = " setuptools.build_meta"
4+
5+ [project .urls ]
6+ Homepage = " https://filigran.io/"
7+ Repository = " https://github.com/OpenAEV-Platform/injectors/tree/main/shodan"
8+ Documentation = " https://github.com/OpenAEV-Platform/injectors/tree/main/shodan/README.md"
9+ Issues = " https://github.com/OpenAEV-Platform/injectors/issues"
10+
11+ [project ]
12+ name = " openaev-shodan-injector"
13+ version = " 2.0.14"
14+ description = " An injector for running with Shodan"
15+ readme = " README.md"
16+ authors = [{ name = " Filigran" , email = " contact@filigran.io" }]
17+ license = " Apache-2.0"
18+ requires-python = " >=3.11, <3.14"
19+ classifiers = [
20+ " Development Status :: 5 - Production/Stable" ,
21+ " Programming Language :: Python :: 3" ,
22+ " Programming Language :: Python :: 3.11" ,
23+ " Programming Language :: Python :: 3.12" ,
24+ " Programming Language :: Python :: 3.13" ,
25+ ]
26+ dependencies = [
27+ " pydantic~=2.11.7" ,
28+ " pydantic-settings~=2.11.0" ,
29+ " requests~=2.32.5" ,
30+ " limiter==0.5.0" ,
31+ " tenacity~=9.1.2" ,
32+ " rich~=14.2.0" ,
33+ ]
34+
35+ [project .optional-dependencies ]
36+ prod = [
37+ " pyoaev ~=2.0.14"
38+ ]
39+ current = [
40+ " pyoaev @ git+https://github.com/OpenAEV-Platform/client-python.git@release/current"
41+ ]
42+ dev = [
43+ " black~=25.1" , # Code formatter
44+ " isort~=7.0.0" , # Import sorter
45+ " ruff~=0.14.2" , # linter
46+ " mypy~=1.18.2" , # Type validator
47+ " pip_audit~=2.9.0" , # Security checker
48+ " pre-commit~=4.3.0" , # Git hooks
49+ " types-PyYAML~=6.0.12" , # stubs for untyped module
50+ ]
51+ test = [
52+ " pytest~=8.4.1" ,
53+ " polyfactory~=2.22.2" ,
54+ ]
55+
56+ [tool .poetry ]
57+ packages = [{ include = " shodan" }]
58+
59+ [project .scripts ]
60+ ShodanInjector = " shodan.__main__:main"
61+
62+ [tool .setuptools .packages .find ]
63+ where = [" ." ]
64+
65+ [tool .isort ]
66+ profile = " black"
67+ src_paths = [" shodan" ]
68+
69+ [tool .pytest .ini_options ]
70+ testpaths = [" ./tests" ]
71+
72+ [tool .ruff ]
73+ exclude = [
74+ " .bzr" ,
75+ " .direnv" ,
76+ " .eggs" ,
77+ " .git" ,
78+ " .git-rewrite" ,
79+ " .hg" ,
80+ " .ipynb_checkpoints" ,
81+ " .mypy_cache" ,
82+ " .nox" ,
83+ " .pants.d" ,
84+ " .pyenv" ,
85+ " .pytest_cache" ,
86+ " .pytype" ,
87+ " .ruff_cache" ,
88+ " .tox" ,
89+ " .venv" ,
90+ " .vscode" ,
91+ " __pypackages__" ,
92+ " _build" ,
93+ " buck-out" ,
94+ " build" ,
95+ " dist" ,
96+ " node_modules" ,
97+ " site-packages" ,
98+ " venv" ,
99+ ]
100+
101+ target-version = " py312"
102+
103+ [tool .ruff .lint ]
104+ # Never enforce `I001` (unsorted import). Already handle with isort
105+ # Never enforce `E501` (line length violations). Already handle with black
106+ # Never enforce `F821` (Undefined name `null`). incorrect issue with notebook
107+ # Never enforce `D213` (Multi-line docstring summary should start at the second line) conflict with our docstring convention
108+ # Never enforce `D211` (NoBlankLinesBeforeClass)`
109+ # Never enforce `G004` (logging-f-string) Logging statement uses f-string
110+ # Never enforce `TRY003`() Avoid specifying long messages outside the exception class not useful
111+ # Never enforce `D104` (Missing docstring in public package)
112+ # Never enforce `D407` (Missing dashed underline after section)
113+ # Never enforce `D408` (Section underline should be in the line following the section’s name)
114+ # Never enforce `D409` (Section underline should match the length of its name)
115+ ignore = [
116+ " I001" ,
117+ " D203" ,
118+ " E501" ,
119+ " F821" ,
120+ " D205" ,
121+ " D213" ,
122+ " D211" ,
123+ " G004" ,
124+ " TRY003" ,
125+ " D104" ,
126+ " D407" ,
127+ " D408" ,
128+ " D409" ,
129+ ]
130+ select = [" E" , " F" , " W" , " D" , " G" , " T" , " B" , " C" , " N" , " I" , " S" ]
131+
132+ [tool .mypy ]
133+ strict = true
134+ exclude = [
135+ ' ^tests' ,
136+ ' ^docs' ,
137+ ' ^build' ,
138+ ' ^dist' ,
139+ ' ^venv' ,
140+ ' ^site-packages' ,
141+ ' ^__pypackages__' ,
142+ ' ^.venv' ,
143+ ]
144+ plugins = [" pydantic.mypy" ]
0 commit comments