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 | |
|---|---|
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 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 | |
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. |