-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
90 lines (79 loc) · 2.22 KB
/
pyproject.toml
File metadata and controls
90 lines (79 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
[project]
name = "pisces-scripts"
version = "1.0.0"
requires-python = ">=3.12"
dependencies = [
"requests>=2.31.0",
"python-dotenv>=1.2.2",
"pyyaml>=6.0.3",
"rich>=15.0.0",
"beautifulsoup4>=4.14.3",
"flask>=3.0",
"geoip2>=5.2.0",
"orjson>=3.11.8",
"plotext>=5.3.2",
"cryptography>=46.0.7",
"pygments>=2.20.0",
"pytest>=9.0.3",
"python-multipart>=0.0.26",
]
[project.optional-dependencies]
# AI assistant integration via MCP servers (Claude Code, Claude Desktop, kiro-cli)
mcp = ["mcp[cli]>=1.0.0"]
# NLP-enhanced ticket classification (spaCy dependency parsing, NER)
nlp = [
"spacy>=3.7",
]
# Offline ASN/BGP reputation lookup (requires a BGP dump at data/asn_table.dat)
# Download a dump via: python -m pyasn.scripts.pyasn_util_download
offline-enrichment = [
"pyasn>=1.6.2",
]
# Everything
all = [
"mcp[cli]>=1.0.0",
"spacy>=3.7",
"pyasn>=1.6.2",
]
[dependency-groups]
dev = [
"pyright>=1.1.408",
"pytest>=9.0.3",
"ruff>=0.15.11",
"bandit>=1.8.0",
"pip-audit>=2.10.0",
"pre-commit>=4.6.0",
"djlint>=1.36.4",
]
[tool.ruff]
target-version = "py312"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "W", "I"]
[tool.ruff.lint.per-file-ignores]
# E402: module-import-not-at-top — intentional in CLI scripts that use sys.path.insert() before imports
"src/mantis/mantis_index.py" = ["E402"]
"src/mantis/mantis_search.py" = ["E402"]
"src/mantis/mantis_threat_model.py" = ["E402"]
"src/querier/opensearch_querier.py" = ["E402"]
"src/enricher/threat_intel.py" = ["E402"]
"run_all.py" = ["E402"]
"*_web_run.py" = ["E402"]
"tests/*" = ["E402"]
"apps/*/run.py" = ["E402"]
"mcp/*/server.py" = ["E402", "I001"]
"src/utils/banner.py" = ["E501"]
[tool.bandit]
exclude_dirs = ["tests", "data"]
skips = ["B101"]
[tool.djlint]
profile = "jinja"
indent = 2
max_line_length = 100
ignore = "H021,H023,H030,H031,J018"
# H021: inline styles are intentional in dashboard/chart templates
# H023: HTML entity references (· etc.) are standard and intentional
# H030/H031: meta description/keywords are false positives on Jinja child templates
# J018: cross-app internal links cannot use url_for() in a multi-app Flask setup
[tool.pytest.ini_options]
testpaths = ["tests"]