-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
111 lines (102 loc) · 4.09 KB
/
Copy pathpyproject.toml
File metadata and controls
111 lines (102 loc) · 4.09 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
106
107
108
109
110
111
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "brasscoders"
version = "2.0.9"
description = "BrassCoders — catches what AI assistants structurally miss"
readme = "README.md"
requires-python = ">=3.10"
license = { text = "Apache-2.0" }
authors = [
{ name = "Copper Sun Brass Team", email = "info@coppersun.dev" },
]
keywords = ["claude-code", "ai-coding", "code-review", "ai-code-review", "noise-filter", "static-analysis", "sast", "security", "linter", "performance", "ci"]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Topic :: Security",
"Topic :: Software Development :: Quality Assurance",
"Topic :: Software Development :: Code Generators",
"Topic :: Software Development :: Testing",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
# Runtime deps the scanners need at import-or-startup time. Pinned with conservative
# floors plus an upper bound to avoid silent breakage from a SemVer-major release of
# any of them. Bump these intentionally with a release.
dependencies = [
"PyYAML>=6.0,<7",
"requests>=2.32,<3",
"bandit>=1.8,<2",
"pylint>=3.3,<4",
"radon>=6.0,<7",
"vulture>=2.0,<3",
"detect-secrets>=1.5,<2",
# Pyre/Pysa is the headline taint scanner. Pin tight: the .pysa
# model file format has been unstable across minor releases (Pyre
# 0.9.25 rejects 8 model lines that earlier versions accepted), so
# we pin a narrow version window that matches the bundled models'
# syntax. Bump intentionally alongside model-syntax review.
"pyre-check>=0.9.25,<0.10",
# BrassPerformanceScanner uses py-spy for sampling-profiler hot-path
# detection. Optional at runtime (scanner falls back to radon-only
# static complexity), but the runtime overlay is part of the
# advertised feature set and we ship as one product (no tiers), so
# py-spy is a base dependency rather than an opt-in extra.
"py-spy>=0.3,<1",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0,<9",
"pytest-cov>=4.0,<7",
"pytest-timeout>=2.0,<3",
"pytest-xdist>=3.0,<4",
]
performance = [
# pyperf stays opt-in: only the benchmarking workflow uses it.
"pyperf>=2.0,<3",
]
[project.scripts]
brasscoders = "brass.cli.brass_cli:main"
[project.urls]
# Public OSS mirror of cli/ lives at github.com/CopperSunDev/brasscoders.
# That repo is a subtree push from this monorepo's cli/ directory; the
# monorepo itself stays private because it also contains the closed-source
# gateway. See scripts/sync-oss-mirror.sh for the sync mechanism.
Homepage = "https://coppersun.dev/"
Repository = "https://github.com/CopperSunDev/brasscoders"
Issues = "https://github.com/CopperSunDev/brasscoders/issues"
Documentation = "https://coppersun.dev/install/"
[tool.setuptools]
include-package-data = true
zip-safe = false
[tool.setuptools.packages.find]
where = ["src"]
# Explicit ship-list for non-Python files. include-package-data=true relies on
# MANIFEST.in or sdist behavior; this block makes the data files load reliably
# under both wheel and sdist installs (including pip install -e .). Adds the
# framework registry, ast-grep rule packs, Joern queries, the Babel parser
# bootstrap, and the existing content-moderation patterns YAML.
[tool.setuptools.package-data]
brass = [
"data/**/*.yaml",
"data/**/*.yml",
"data/**/*.sc",
"data/pysa_models/*",
"data/pysa_stubs/**/*.pyi",
"config/*.yaml",
"js_analysis/babel_parser.js",
"js_analysis/package.json",
"js_analysis/package-lock.json",
"js_analysis/node_modules/**/*",
]
# pytest config lives in pytest.ini at the repo root; pytest gives the .ini file
# precedence over pyproject.toml, and we keep it in one place to avoid drift.