-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
105 lines (94 loc) · 2.95 KB
/
pyproject.toml
File metadata and controls
105 lines (94 loc) · 2.95 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "atomadic-forge"
version = "0.87.0"
description = "Atomadic Forge ? absorb, enforce, emerge. Polyglot (Python ? JavaScript/TypeScript ? Rust ? Go ? Swift ? Kotlin) architecture guardian for AI-generated code."
readme = "README.md"
requires-python = ">=3.10"
license = "BUSL-1.1"
authors = [{ name = "Atomadic" }]
keywords = ["atomadic", "ass-ade", "monadic", "architecture", "forge",
"code-quality", "ai", "agents", "javascript", "typescript",
"polyglot"]
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Operating System :: OS Independent",
"Topic :: Software Development :: Quality Assurance",
]
dependencies = [
"click>=8.1,<9",
"typer>=0.15,<1",
"rich>=14,<16",
# Lane D W8 ? .forge sidecar parser (a1.sidecar_parser) and the
# GitHub Action validator test surface both depend on PyYAML.
"pyyaml>=6,<7",
]
[project.optional-dependencies]
dev = [
"pytest>=7",
"import-linter>=2.0,<3",
"ruff>=0.4",
"build>=1,<2",
"twine>=5,<7",
"tomli>=2; python_version<'3.11'",
"cryptography>=42,<48",
]
signing = [
"cryptography>=42,<48",
]
[project.scripts]
forge = "atomadic_forge.a4_sy_orchestration.cli:main"
atomadic-forge = "atomadic_forge.a4_sy_orchestration.cli:main"
[tool.setuptools.packages.find]
where = ["src"]
include = ["atomadic_forge*"]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-q"
[tool.importlinter]
root_package = "atomadic_forge"
[[tool.importlinter.contracts]]
name = "Atomadic Forge ? Monadic tiers"
type = "layers"
layers = [
"atomadic_forge.a4_sy_orchestration",
"atomadic_forge.commands",
"atomadic_forge.a3_og_features",
"atomadic_forge.a2_mo_composites",
"atomadic_forge.a1_at_functions",
"atomadic_forge.a0_qk_constants",
]
[tool.ruff]
target-version = "py310"
line-length = 100
exclude = [
".pytest_tmp*",
".tmp_cli_ux",
".atomadic-forge",
"build",
"dist",
]
[tool.ruff.lint]
select = ["E", "F", "I", "B", "UP"]
ignore = ["E501"]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["E702", "E741"]
[tool.forge.wire]
# Dynamic imports that are intentionally safe and should not surface as
# new warnings on every wire scan. These are the a3 bootstrap patterns
# used by _bootstrap_a3_handlers() in mcp_protocol.py ? they are dynamic
# by design (a1 cannot statically import a3 without a tier violation).
allowed_dynamic_imports = [
# _bootstrap_a3_handlers() ? a1 cannot statically import a3
"atomadic_forge.a3_og_features.mcp_server",
# commandsmith_feature ? runtime plugin discovery
"commandsmith_feature",
# _tool_doctor uses importlib.import_module(dep) to probe optional deps
# at call time; shows as module='<dynamic>' in mcp_protocol.py
"mcp_protocol",
]