structloglint 0.1.1__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: structloglint
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Classifier: Development Status :: 3 - Alpha
|
|
5
|
+
Classifier: Environment :: Console
|
|
6
|
+
Classifier: Intended Audience :: Developers
|
|
7
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Rust
|
|
10
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
11
|
+
Summary: A fast, opinionated linter for structlog log calls in Python. Written in Rust.
|
|
12
|
+
Keywords: structlog,linter,logging,rust
|
|
13
|
+
License-Expression: MIT
|
|
14
|
+
Requires-Python: >=3.8
|
|
15
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
16
|
+
Project-URL: Repository, https://github.com/maeldorne/structloglint
|
|
17
|
+
|
|
18
|
+
# structloglint
|
|
19
|
+
|
|
20
|
+
A fast, opinionated linter for [structlog](https://www.structlog.org/) log calls in Python. Written in Rust.
|
|
21
|
+
|
|
22
|
+
> **Status: Early development (v0.1.0)**
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
uv pip install structloglint
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### From source
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
uv venv
|
|
34
|
+
source .venv/bin/activate
|
|
35
|
+
uv pip install maturin
|
|
36
|
+
maturin develop --release
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
structloglint --path src/ --verbose
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
See [RULES.md](RULES.md) for the full list of rules (SL001--SL009) and planned configuration options.
|
|
46
|
+
|
|
47
|
+
## Roadmap (MoSCoW)
|
|
48
|
+
|
|
49
|
+
### Done
|
|
50
|
+
|
|
51
|
+
| Area | Detail |
|
|
52
|
+
|------|--------|
|
|
53
|
+
| Linting rules | SL001--SL009 fully implemented with unit tests |
|
|
54
|
+
| AST walker | Recursive Python AST traversal via `rustpython-parser` with parent context tracking (19 block types) |
|
|
55
|
+
| Logger detection | Naming-convention heuristic (matches `log`, `logger`, `LOG`, `*_logger`, etc.) |
|
|
56
|
+
| CLI | `--path`, `--verbose`, `--output-format full\|concise` via `clap` |
|
|
57
|
+
| Output | Colored diagnostics with source context, gutter markers, and underline spans |
|
|
58
|
+
| Fix data model | `Fix` struct exists, SL008 generates fix suggestions |
|
|
59
|
+
| Test data | Per-rule Python fixtures (`test_data/SL00x.py`) + comprehensive e-commerce example |
|
|
60
|
+
| Python packaging | maturin build so `uv pip install structloglint` works |
|
|
61
|
+
|
|
62
|
+
### Must Have
|
|
63
|
+
|
|
64
|
+
| Area | Detail | Status |
|
|
65
|
+
|------|--------|--------|
|
|
66
|
+
| `pyproject.toml` config | Parse `[tool.structloglint]` for include/exclude, case style, max length, per-rule severity | not started (values hardcoded) |
|
|
67
|
+
| `--fix` flag | Apply auto-fixes in-place (SL008 fix model already exists) | not started |
|
|
68
|
+
| CLI parity | `--file` single-file mode, `--event-case-style`, `--loop-log-level` flags | not started |
|
|
69
|
+
| Pre-commit hook | `.pre-commit-hooks.yaml` so repos can add the linter to `.pre-commit-config.yaml` | not started |
|
|
70
|
+
| CI/CD | GitHub Actions: lint, test, build on push/PR | not started |
|
|
71
|
+
| Release management | `release-please` for automated changelogs, version bumps, and GitHub releases | not started |
|
|
72
|
+
| Cross-platform builds | CI matrix for Linux, macOS, Windows (x86_64 + aarch64) | not started |
|
|
73
|
+
| Binary distribution | Publish wheels per platform to PyPI via maturin | not started |
|
|
74
|
+
| Exit codes | Non-zero exit on findings for CI gating | not started |
|
|
75
|
+
| Integration tests | End-to-end tests that invoke the binary against `test_data/` and assert output/exit code | not started |
|
|
76
|
+
| Inline suppression | `# noqa: SL001` style comments to suppress per-line | not started |
|
|
77
|
+
|
|
78
|
+
### Should Have
|
|
79
|
+
|
|
80
|
+
| Area | Detail | Status |
|
|
81
|
+
|------|--------|--------|
|
|
82
|
+
| CHANGELOG | Auto-generated via release-please | not started |
|
|
83
|
+
| SARIF / JSON output | Machine-readable output for CI integrations (GitHub code scanning, etc.) | not started |
|
|
84
|
+
| `--diff` mode | Show fixes as unified diffs without applying | not started |
|
|
85
|
+
| SL010 rule | Event string should use past tense | not started |
|
|
86
|
+
| Benchmarks | Performance regression tracking in CI | not started |
|
|
87
|
+
|
|
88
|
+
### Could Have
|
|
89
|
+
|
|
90
|
+
| Area | Detail |
|
|
91
|
+
|------|--------|
|
|
92
|
+
| GitHub Action | Marketplace action for direct use in workflows |
|
|
93
|
+
| Editor integration | VSCode extension / LSP server |
|
|
94
|
+
| Custom rule plugins | User-defined rules via config or scripting |
|
|
95
|
+
| Watch mode | Re-lint on file change |
|
|
96
|
+
|
|
97
|
+
### Won't Have (for now)
|
|
98
|
+
|
|
99
|
+
| Area | Reason |
|
|
100
|
+
|------|--------|
|
|
101
|
+
| Full type inference | Would require a Python type checker; naming heuristic is sufficient |
|
|
102
|
+
| Auto-fix for all rules | Some rules (SL005, SL007) require structural refactoring that can't be automated safely |
|
|
103
|
+
| flake8 plugin mode | Targeting standalone tool distribution like ruff instead |
|
|
104
|
+
|
|
105
|
+
## License
|
|
106
|
+
|
|
107
|
+
MIT
|
|
108
|
+
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
structloglint-0.1.1.data/scripts/structloglint.exe,sha256=fJO2CDq-Jbg0S-VvQRV5YYMquJr1PnHYXXcuxMdcrl8,4771840
|
|
2
|
+
structloglint-0.1.1.dist-info/METADATA,sha256=-7pRdjG-1jU2ZZjrrgtF0Pc7iNAgoLyI13q6MVQP3Dc,4381
|
|
3
|
+
structloglint-0.1.1.dist-info/WHEEL,sha256=2zDlIYIdD4m4N3p5DVEG3iJhGLdhsBQgdH-FqVkAur8,94
|
|
4
|
+
structloglint-0.1.1.dist-info/sboms/structloglint.cyclonedx.json,sha256=4AG7maaD2qKQwjGXl0OcLWr0huf5QDUzlljCtPM3YLg,91542
|
|
5
|
+
structloglint-0.1.1.dist-info/RECORD,,
|