repoglance 0.3.0__tar.gz → 0.4.0__tar.gz
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.
- repoglance-0.4.0/.repoglance-badge.json +1 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/CHANGELOG.md +21 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/PKG-INFO +14 -4
- {repoglance-0.3.0 → repoglance-0.4.0}/README.md +13 -3
- repoglance-0.4.0/assets/demo.svg +391 -0
- repoglance-0.4.0/assets/showcase/flask.svg +312 -0
- repoglance-0.4.0/assets/showcase/httpie.svg +351 -0
- repoglance-0.4.0/assets/showcase/requests.svg +326 -0
- repoglance-0.4.0/editors/vscode/README.md +19 -0
- repoglance-0.4.0/editors/vscode/extension.js +63 -0
- repoglance-0.4.0/editors/vscode/package.json +26 -0
- repoglance-0.4.0/packaging/homebrew/repoglance.rb +34 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/pyproject.toml +1 -1
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/__init__.py +1 -1
- repoglance-0.4.0/src/repoglance/cache.py +59 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/cli.py +122 -53
- repoglance-0.4.0/src/repoglance/dedup.py +70 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/gitinfo.py +20 -0
- repoglance-0.4.0/src/repoglance/plugins.py +43 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/report.py +42 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/scanner.py +79 -26
- repoglance-0.4.0/src/repoglance/vendored.py +57 -0
- repoglance-0.4.0/tests/test_v040.py +70 -0
- repoglance-0.3.0/.repoglance-badge.json +0 -1
- repoglance-0.3.0/assets/demo.svg +0 -329
- repoglance-0.3.0/assets/showcase/flask.svg +0 -308
- repoglance-0.3.0/assets/showcase/httpie.svg +0 -347
- repoglance-0.3.0/assets/showcase/requests.svg +0 -322
- {repoglance-0.3.0 → repoglance-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/.github/workflows/ci.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/.github/workflows/release.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/.github/workflows/repoglance.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/.gitignore +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/.pre-commit-hooks.yaml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/CODE_OF_CONDUCT.md +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/CONTRIBUTING.md +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/Dockerfile +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/LICENSE +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/RELEASING.md +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/SECURITY.md +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/action.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/assets/badge.svg +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/assets/demo.tape +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/docs/index.md +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/integrations/gitlab-ci.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/mkdocs.yml +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/__main__.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/badge.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/complexity.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/config.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/languages.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/src/repoglance/metrics.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/tests/test_cli.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/tests/test_complexity.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/tests/test_features.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/tests/test_scanner.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/tests/test_scanner_extra.py +0 -0
- {repoglance-0.3.0 → repoglance-0.4.0}/tests/test_v030.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schemaVersion": 1, "label": "repoglance", "message": "2.7k loc \u2022 Python", "color": "blue"}
|
|
@@ -4,6 +4,27 @@ All notable changes to this project are documented here. The format is based on
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
|
|
5
5
|
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.4.0] - 2026-08-01
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **Duplicate-code detection** (`--duplicates`): sliding line-window hashing
|
|
11
|
+
surfaces copy-paste blocks and a duplication percentage.
|
|
12
|
+
- **Vendored/generated detection**: minified bundles, `_pb2.py`, lock files,
|
|
13
|
+
`node_modules`, and files marked `@generated` are excluded by default;
|
|
14
|
+
`--include-vendored` keeps them.
|
|
15
|
+
- **Ownership** (`--owners`): attributes the top complexity hotspots to authors
|
|
16
|
+
via `git blame`.
|
|
17
|
+
- **Incremental cache** (`--cache <file>`): unchanged files are reused across
|
|
18
|
+
runs by mtime + size, speeding up repeated scans.
|
|
19
|
+
- **Plugin API**: third-party packages can register metrics under the
|
|
20
|
+
`repoglance.metrics` entry-point group; results appear under `plugins`.
|
|
21
|
+
- **Watch mode** (`--watch`): re-render the report whenever files change.
|
|
22
|
+
- Homebrew formula template and a minimal VS Code extension (Problems panel).
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Git subprocesses now decode as UTF-8, fixing crashes on non-Latin-1 blame
|
|
26
|
+
output on Windows.
|
|
27
|
+
|
|
7
28
|
## [0.3.0] - 2026-08-01
|
|
8
29
|
|
|
9
30
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: repoglance
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Instant, gorgeous insight into any code repository — languages, complexity hotspots, TODOs and git activity in one terminal command.
|
|
5
5
|
Project-URL: Homepage, https://github.com/SRJ-ai/repoglance
|
|
6
6
|
Project-URL: Repository, https://github.com/SRJ-ai/repoglance
|
|
@@ -72,9 +72,9 @@ repoglance run against well-known projects (click to view the full report):
|
|
|
72
72
|
|
|
73
73
|
| Project | Files | Lines of code | Health |
|
|
74
74
|
|---|--:|--:|:--:|
|
|
75
|
-
| [flask](assets/showcase/flask.svg) |
|
|
76
|
-
| [httpie](assets/showcase/httpie.svg) |
|
|
77
|
-
| [requests](assets/showcase/requests.svg) |
|
|
75
|
+
| [flask](assets/showcase/flask.svg) | 207 | 25,266 | D (67) |
|
|
76
|
+
| [httpie](assets/showcase/httpie.svg) | 234 | 20,023 | D (66) |
|
|
77
|
+
| [requests](assets/showcase/requests.svg) | 88 | 13,709 | C (70) |
|
|
78
78
|
|
|
79
79
|
<div align="center">
|
|
80
80
|
|
|
@@ -110,6 +110,10 @@ repoglance --baseline base.json # snapshot now
|
|
|
110
110
|
repoglance --compare base.json --fail-on-regression # fail on new complexity
|
|
111
111
|
repoglance --ci --fail-under 70 --max-complexity 25 # gate a build
|
|
112
112
|
repoglance --include "src/**" --exclude "**/*_pb2.py" # glob filters
|
|
113
|
+
repoglance --duplicates # detect copy-paste blocks
|
|
114
|
+
repoglance --owners # attribute hotspots to authors (git blame)
|
|
115
|
+
repoglance --cache .rg.cache # incremental cache for fast repeat runs
|
|
116
|
+
repoglance --watch # live re-render on file changes
|
|
113
117
|
repoglance --no-git --jobs 8
|
|
114
118
|
```
|
|
115
119
|
|
|
@@ -128,10 +132,16 @@ repoglance --json | jq '.languages.Python.code'
|
|
|
128
132
|
| **Languages** | Lines of code per language, ranked, with % bars |
|
|
129
133
|
| **Complexity hotspots** | Real per-function cyclomatic complexity across 15+ languages (C/C++, Java, C#, JS, TS, Go, Rust, Ruby, PHP, Swift, Kotlin, Python…) via [lizard](https://github.com/terryyin/lizard) |
|
|
130
134
|
| **Maintainability index** | Approximate MI (0–100) from complexity, size and token counts |
|
|
135
|
+
| **Duplicate code** | Copy-paste blocks across files, with a duplication % |
|
|
131
136
|
| **TODO tracker** | Every `TODO` / `FIXME` / `HACK` / `XXX` / `BUG` with file:line |
|
|
132
137
|
| **Biggest files & directories** | Where the mass and the worst complexity live |
|
|
138
|
+
| **Ownership** | Which author owns each hotspot (`--owners`, git blame) |
|
|
133
139
|
| **Git activity** | Top authors, most-churned files, active days, project lifespan |
|
|
134
140
|
|
|
141
|
+
Vendored and generated files (minified bundles, `_pb2.py`, `node_modules`, files
|
|
142
|
+
marked `@generated`) are detected and excluded by default — pass
|
|
143
|
+
`--include-vendored` to keep them.
|
|
144
|
+
|
|
135
145
|
Binary files, `node_modules`, `.venv`, build dirs and friends are skipped
|
|
136
146
|
automatically.
|
|
137
147
|
|
|
@@ -41,9 +41,9 @@ repoglance run against well-known projects (click to view the full report):
|
|
|
41
41
|
|
|
42
42
|
| Project | Files | Lines of code | Health |
|
|
43
43
|
|---|--:|--:|:--:|
|
|
44
|
-
| [flask](assets/showcase/flask.svg) |
|
|
45
|
-
| [httpie](assets/showcase/httpie.svg) |
|
|
46
|
-
| [requests](assets/showcase/requests.svg) |
|
|
44
|
+
| [flask](assets/showcase/flask.svg) | 207 | 25,266 | D (67) |
|
|
45
|
+
| [httpie](assets/showcase/httpie.svg) | 234 | 20,023 | D (66) |
|
|
46
|
+
| [requests](assets/showcase/requests.svg) | 88 | 13,709 | C (70) |
|
|
47
47
|
|
|
48
48
|
<div align="center">
|
|
49
49
|
|
|
@@ -79,6 +79,10 @@ repoglance --baseline base.json # snapshot now
|
|
|
79
79
|
repoglance --compare base.json --fail-on-regression # fail on new complexity
|
|
80
80
|
repoglance --ci --fail-under 70 --max-complexity 25 # gate a build
|
|
81
81
|
repoglance --include "src/**" --exclude "**/*_pb2.py" # glob filters
|
|
82
|
+
repoglance --duplicates # detect copy-paste blocks
|
|
83
|
+
repoglance --owners # attribute hotspots to authors (git blame)
|
|
84
|
+
repoglance --cache .rg.cache # incremental cache for fast repeat runs
|
|
85
|
+
repoglance --watch # live re-render on file changes
|
|
82
86
|
repoglance --no-git --jobs 8
|
|
83
87
|
```
|
|
84
88
|
|
|
@@ -97,10 +101,16 @@ repoglance --json | jq '.languages.Python.code'
|
|
|
97
101
|
| **Languages** | Lines of code per language, ranked, with % bars |
|
|
98
102
|
| **Complexity hotspots** | Real per-function cyclomatic complexity across 15+ languages (C/C++, Java, C#, JS, TS, Go, Rust, Ruby, PHP, Swift, Kotlin, Python…) via [lizard](https://github.com/terryyin/lizard) |
|
|
99
103
|
| **Maintainability index** | Approximate MI (0–100) from complexity, size and token counts |
|
|
104
|
+
| **Duplicate code** | Copy-paste blocks across files, with a duplication % |
|
|
100
105
|
| **TODO tracker** | Every `TODO` / `FIXME` / `HACK` / `XXX` / `BUG` with file:line |
|
|
101
106
|
| **Biggest files & directories** | Where the mass and the worst complexity live |
|
|
107
|
+
| **Ownership** | Which author owns each hotspot (`--owners`, git blame) |
|
|
102
108
|
| **Git activity** | Top authors, most-churned files, active days, project lifespan |
|
|
103
109
|
|
|
110
|
+
Vendored and generated files (minified bundles, `_pb2.py`, `node_modules`, files
|
|
111
|
+
marked `@generated`) are detected and excluded by default — pass
|
|
112
|
+
`--include-vendored` to keep them.
|
|
113
|
+
|
|
104
114
|
Binary files, `node_modules`, `.venv`, build dirs and friends are skipped
|
|
105
115
|
automatically.
|
|
106
116
|
|