Index
axm_audit
axm-audit: Code auditing and quality rules for Python projects.
This package provides comprehensive project auditing capabilities including: - Structure validation (files, directories) - Quality checks (linting, type checking, complexity) - Security analysis (Bandit integration, secrets detection) - Dependency scanning (pip-audit, deptry) - Test coverage enforcement (pytest-cov) - Architecture analysis (circular imports, god classes, coupling) - Best practices enforcement (docstrings, security patterns)
Example
from axm_audit import audit_project from pathlib import Path
result = audit_project(Path(".")) print(f"Score: {result.quality_score}/100 — Grade {result.grade}") Score: 95.0/100 — Grade A
AuditResult
Bases: BaseModel
Aggregated result of a project audit.
Contains all individual check results and computed summary.
quality_score and grade may be passed explicitly (e.g. in
tests); otherwise they are computed from checks automatically.
Source code in packages/axm-audit/src/axm_audit/models/results.py
| Python | |
|---|---|
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 | |
crashed_rules
property
rule_ids whose check raised, in encounter order.
Crashed rules contribute score=0 to their scored category (they
are never silently dropped); this field makes a degraded audit
traceable rather than silent.
failed
property
Number of failed checks.
grade
property
Letter grade derived from quality_score.
A >= 90, B >= 80, C >= 70, D >= 60, F < 60. Returns None if quality_score is None.
quality_score
property
Weighted average across 9 code-quality categories.
Categories and weights
Linting (15%), Type Safety (15%), Complexity (15%), Testing (10%), Test Quality (10%), Security (10%), Dependencies (10%), Architecture (10%), Practices (5%).
Structure and tooling emit findings but are NOT scored (structure is handled by axm-init; tooling is informational). Returns None if no scored checks are present.
success
property
True if all checks passed.
total
property
Total number of checks.
CheckResult
Bases: BaseModel
Result of a single compliance check.
Designed for machine parsing by AI Agents.
Source code in packages/axm-audit/src/axm_audit/models/results.py
Severity
Bases: StrEnum
Severity level for check results.
Source code in packages/axm-audit/src/axm_audit/models/results.py
audit_project(project_path, category=None, quick=False)
Audit a project against Python 2026 standards.
Rules execute in parallel via ThreadPoolExecutor for speed.
Each rule is isolated — one failure does not prevent others.
An ASTCache is shared across rules to avoid redundant parsing.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
project_path
|
Path
|
Root directory of the project to audit. |
required |
category
|
str | None
|
Optional category filter. |
None
|
quick
|
bool
|
If True, run only lint + type checks. |
False
|
Returns:
| Type | Description |
|---|---|
AuditResult
|
AuditResult containing all check results. |
Raises:
| Type | Description |
|---|---|
FileNotFoundError
|
If project_path does not exist. |
Source code in packages/axm-audit/src/axm_audit/core/auditor.py
get_rules_for_category(category, quick=False)
Get rules for a specific category or all rules.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
category
|
str | None
|
Filter to specific category, or None for all. |
required |
quick
|
bool
|
If True, only lint + type checks. |
False
|
Returns:
| Type | Description |
|---|---|
list[ProjectRule]
|
List of rule instances to run. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If category is not valid. |