repovet-cli 0.1.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.
- repovet_cli-0.1.0/LICENSE +21 -0
- repovet_cli-0.1.0/PKG-INFO +181 -0
- repovet_cli-0.1.0/README.md +152 -0
- repovet_cli-0.1.0/pyproject.toml +44 -0
- repovet_cli-0.1.0/setup.cfg +4 -0
- repovet_cli-0.1.0/src/repovet/__init__.py +3 -0
- repovet_cli-0.1.0/src/repovet/__main__.py +3 -0
- repovet_cli-0.1.0/src/repovet/checks.py +372 -0
- repovet_cli-0.1.0/src/repovet/cli.py +104 -0
- repovet_cli-0.1.0/src/repovet/github.py +159 -0
- repovet_cli-0.1.0/src/repovet/radar.py +139 -0
- repovet_cli-0.1.0/src/repovet/render.py +116 -0
- repovet_cli-0.1.0/src/repovet/vet.py +175 -0
- repovet_cli-0.1.0/src/repovet_cli.egg-info/PKG-INFO +181 -0
- repovet_cli-0.1.0/src/repovet_cli.egg-info/SOURCES.txt +17 -0
- repovet_cli-0.1.0/src/repovet_cli.egg-info/dependency_links.txt +1 -0
- repovet_cli-0.1.0/src/repovet_cli.egg-info/entry_points.txt +2 -0
- repovet_cli-0.1.0/src/repovet_cli.egg-info/top_level.txt +1 -0
- repovet_cli-0.1.0/tests/test_checks.py +227 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 repovet contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: repovet-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Vet a GitHub repo for fake stars, abandonment, risky install scripts and typosquatting. Radar for new repos in your stack.
|
|
5
|
+
Author: repovet contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/shivamkr06/repovet
|
|
8
|
+
Project-URL: Issues, https://github.com/shivamkr06/repovet/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/shivamkr06/repovet/blob/main/CHANGELOG.md
|
|
10
|
+
Keywords: github,fake-stars,supply-chain-security,typosquatting,repository-analysis,trust-score,dependency-vetting,trending-repositories,cli,developer-tools
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Security
|
|
23
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
24
|
+
Classifier: Topic :: Utilities
|
|
25
|
+
Requires-Python: >=3.9
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Dynamic: license-file
|
|
29
|
+
|
|
30
|
+
# repovet
|
|
31
|
+
|
|
32
|
+
**Check a GitHub repo for fake stars, abandonment, malware-style install scripts and typosquatting before you clone, install or depend on it. Also finds new repos that match your stack.**
|
|
33
|
+
|
|
34
|
+
[](https://github.com/shivamkr06/repovet/actions/workflows/ci.yml)
|
|
35
|
+
[](LICENSE)
|
|
36
|
+

|
|
37
|
+

|
|
38
|
+
|
|
39
|
+
Hundreds of new repos trend on GitHub every week. Some are great, some are abandoned, some
|
|
40
|
+
have bought their stars, and a few are malware with a nice README. `repovet` is a small
|
|
41
|
+
command-line **GitHub repository trust scorer** that tells you which is which in a few
|
|
42
|
+
seconds.
|
|
43
|
+
|
|
44
|
+
- **`repovet vet owner/repo`** gives a 0-100 trust score, a verdict, and the reasons.
|
|
45
|
+
- **`repovet radar`** lists recently created repos for the languages and topics your project uses.
|
|
46
|
+
- Pure Python standard library. No dependencies. Works on Windows, macOS and Linux.
|
|
47
|
+
- Output as text or `--json`. Exit code for CI gating with `--fail-under`.
|
|
48
|
+
|
|
49
|
+
## Quick start
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install repovet-cli
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The command is `repovet`. From source instead:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pip install git+https://github.com/shivamkr06/repovet.git
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
repovet vet psf/requests
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Without installing, from a clone:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
PYTHONPATH=src python -m repovet vet psf/requests
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Example
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
$ repovet vet psf/requests
|
|
75
|
+
|
|
76
|
+
psf/requests https://github.com/psf/requests
|
|
77
|
+
A simple, yet elegant, HTTP library.
|
|
78
|
+
|
|
79
|
+
LOOKS OK 100/100 [####################]
|
|
80
|
+
|
|
81
|
+
No red flags found.
|
|
82
|
+
|
|
83
|
+
Facts
|
|
84
|
+
stars / forks / watchers 55k / 11k / 1.3k
|
|
85
|
+
issues + PRs ever 7.6k
|
|
86
|
+
age / last push 5749d / 8d ago
|
|
87
|
+
license Apache-2.0
|
|
88
|
+
contributors 100+
|
|
89
|
+
top author nateprewitt (46% of recent commits)
|
|
90
|
+
latest release v2.34.2
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
A repo with problems looks like this:
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
CAUTION 78/100 [################----]
|
|
97
|
+
|
|
98
|
+
[MEDIUM] Stale
|
|
99
|
+
No push in 514 days.
|
|
100
|
+
[LOW ] Low fork-to-star ratio
|
|
101
|
+
9 forks vs 503 stars (1.8%). Real projects usually sit around 5-15%.
|
|
102
|
+
[LOW ] Single maintainer
|
|
103
|
+
m-ahmed-elbeskeri wrote 100% of the recent commits. If they leave, the project stops.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## What `vet` checks
|
|
107
|
+
|
|
108
|
+
| Area | Signals |
|
|
109
|
+
|---|---|
|
|
110
|
+
| **Fake stars** | fork-to-star and watcher-to-star ratios, stars with almost no issues or PRs, sudden star spikes, share of brand-new or empty stargazer accounts (needs a token) |
|
|
111
|
+
| **Maintenance** | archived or disabled, time since last push, commit count, project age |
|
|
112
|
+
| **People** | single-maintainer risk, owner account age and track record |
|
|
113
|
+
| **License** | missing, unrecognized, or restrictive (AGPL, SSPL, BUSL, non-commercial) |
|
|
114
|
+
| **Install risk** | `preinstall`/`postinstall` hooks, `setup.py` that runs commands, `curl \| sh`, encoded PowerShell, obfuscated `exec`, Discord/Telegram webhooks, hard-coded IPs, committed executables, password-protected archives mentioned in the README |
|
|
115
|
+
| **Identity** | same name as a bigger, older repo (typosquat or copy), forks, lookalike repos |
|
|
116
|
+
|
|
117
|
+
It also lists similar repos with the same topics so you can compare before choosing.
|
|
118
|
+
|
|
119
|
+
Scoring: start at 100, subtract 25 per high, 12 per medium, 5 per low finding. 80+ with no
|
|
120
|
+
high findings is `LOOKS OK`, 55+ is `CAUTION`, below that is `HIGH RISK`.
|
|
121
|
+
|
|
122
|
+
## Use it in CI
|
|
123
|
+
|
|
124
|
+
Block a risky dependency before it lands:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
repovet vet owner/repo --fail-under 60
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Exit code is `2` when the score is below the threshold, `1` on errors, `0` otherwise.
|
|
131
|
+
`--json` prints the full report for scripts.
|
|
132
|
+
|
|
133
|
+
## Radar: new repos for your stack
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
repovet radar
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Reads `package.json`, `requirements.txt`, `pyproject.toml`, `go.mod`, `Cargo.toml` and others
|
|
140
|
+
in the current folder, then lists recently created repos in those languages and topics.
|
|
141
|
+
Same-name clones are collapsed into one entry, and repos are ranked by stars per day with a
|
|
142
|
+
penalty for hollow-looking traction (many stars, almost no forks).
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
repovet radar --lang Rust --topic cli --days 30 --min-stars 200
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## GitHub token
|
|
149
|
+
|
|
150
|
+
Works without a token, but the anonymous API allows about 6 vets per hour and the
|
|
151
|
+
stargazer checks (fake accounts, star spikes) are skipped, because GitHub does not list
|
|
152
|
+
stargazers anonymously. To lift both limits, set `GITHUB_TOKEN` (or `GH_TOKEN`) to a token
|
|
153
|
+
with no scopes. Some tokens (seen on new GitHub accounts) get no stargazer data back from
|
|
154
|
+
GitHub; `repovet` then skips those two checks and says so in a note. If the `gh` CLI is installed and logged in, its token is used automatically.
|
|
155
|
+
|
|
156
|
+
Responses are cached for one hour in `~/.cache/repovet` (`--no-cache` to bypass,
|
|
157
|
+
`REPOVET_CACHE` to move it). The token is only ever sent to `api.github.com`.
|
|
158
|
+
|
|
159
|
+
## Limits
|
|
160
|
+
|
|
161
|
+
These are heuristics. A flag is a reason to look closer, not proof of fraud, and a clean
|
|
162
|
+
score is not a security audit. The install check reads a handful of entry-point files, not
|
|
163
|
+
the whole codebase. Popular, legitimate projects can trip individual checks (a fast viral
|
|
164
|
+
launch looks like a star spike). Treat the verdict as triage.
|
|
165
|
+
|
|
166
|
+
## Development
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
python -m unittest discover -s tests
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add a check. Report security issues as
|
|
173
|
+
described in [SECURITY.md](SECURITY.md). Changes are listed in [CHANGELOG.md](CHANGELOG.md).
|
|
174
|
+
|
|
175
|
+
## License
|
|
176
|
+
|
|
177
|
+
[MIT](LICENSE)
|
|
178
|
+
|
|
179
|
+
<sub>Keywords: github repository analyzer, fake github stars detector, repo trust score,
|
|
180
|
+
supply chain security, typosquatting detection, malicious repository checker, dependency
|
|
181
|
+
vetting, trending repositories, open source discovery.</sub>
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# repovet
|
|
2
|
+
|
|
3
|
+
**Check a GitHub repo for fake stars, abandonment, malware-style install scripts and typosquatting before you clone, install or depend on it. Also finds new repos that match your stack.**
|
|
4
|
+
|
|
5
|
+
[](https://github.com/shivamkr06/repovet/actions/workflows/ci.yml)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+

|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
Hundreds of new repos trend on GitHub every week. Some are great, some are abandoned, some
|
|
11
|
+
have bought their stars, and a few are malware with a nice README. `repovet` is a small
|
|
12
|
+
command-line **GitHub repository trust scorer** that tells you which is which in a few
|
|
13
|
+
seconds.
|
|
14
|
+
|
|
15
|
+
- **`repovet vet owner/repo`** gives a 0-100 trust score, a verdict, and the reasons.
|
|
16
|
+
- **`repovet radar`** lists recently created repos for the languages and topics your project uses.
|
|
17
|
+
- Pure Python standard library. No dependencies. Works on Windows, macOS and Linux.
|
|
18
|
+
- Output as text or `--json`. Exit code for CI gating with `--fail-under`.
|
|
19
|
+
|
|
20
|
+
## Quick start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install repovet-cli
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The command is `repovet`. From source instead:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install git+https://github.com/shivamkr06/repovet.git
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
repovet vet psf/requests
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Without installing, from a clone:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
PYTHONPATH=src python -m repovet vet psf/requests
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Example
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
$ repovet vet psf/requests
|
|
46
|
+
|
|
47
|
+
psf/requests https://github.com/psf/requests
|
|
48
|
+
A simple, yet elegant, HTTP library.
|
|
49
|
+
|
|
50
|
+
LOOKS OK 100/100 [####################]
|
|
51
|
+
|
|
52
|
+
No red flags found.
|
|
53
|
+
|
|
54
|
+
Facts
|
|
55
|
+
stars / forks / watchers 55k / 11k / 1.3k
|
|
56
|
+
issues + PRs ever 7.6k
|
|
57
|
+
age / last push 5749d / 8d ago
|
|
58
|
+
license Apache-2.0
|
|
59
|
+
contributors 100+
|
|
60
|
+
top author nateprewitt (46% of recent commits)
|
|
61
|
+
latest release v2.34.2
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
A repo with problems looks like this:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
CAUTION 78/100 [################----]
|
|
68
|
+
|
|
69
|
+
[MEDIUM] Stale
|
|
70
|
+
No push in 514 days.
|
|
71
|
+
[LOW ] Low fork-to-star ratio
|
|
72
|
+
9 forks vs 503 stars (1.8%). Real projects usually sit around 5-15%.
|
|
73
|
+
[LOW ] Single maintainer
|
|
74
|
+
m-ahmed-elbeskeri wrote 100% of the recent commits. If they leave, the project stops.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## What `vet` checks
|
|
78
|
+
|
|
79
|
+
| Area | Signals |
|
|
80
|
+
|---|---|
|
|
81
|
+
| **Fake stars** | fork-to-star and watcher-to-star ratios, stars with almost no issues or PRs, sudden star spikes, share of brand-new or empty stargazer accounts (needs a token) |
|
|
82
|
+
| **Maintenance** | archived or disabled, time since last push, commit count, project age |
|
|
83
|
+
| **People** | single-maintainer risk, owner account age and track record |
|
|
84
|
+
| **License** | missing, unrecognized, or restrictive (AGPL, SSPL, BUSL, non-commercial) |
|
|
85
|
+
| **Install risk** | `preinstall`/`postinstall` hooks, `setup.py` that runs commands, `curl \| sh`, encoded PowerShell, obfuscated `exec`, Discord/Telegram webhooks, hard-coded IPs, committed executables, password-protected archives mentioned in the README |
|
|
86
|
+
| **Identity** | same name as a bigger, older repo (typosquat or copy), forks, lookalike repos |
|
|
87
|
+
|
|
88
|
+
It also lists similar repos with the same topics so you can compare before choosing.
|
|
89
|
+
|
|
90
|
+
Scoring: start at 100, subtract 25 per high, 12 per medium, 5 per low finding. 80+ with no
|
|
91
|
+
high findings is `LOOKS OK`, 55+ is `CAUTION`, below that is `HIGH RISK`.
|
|
92
|
+
|
|
93
|
+
## Use it in CI
|
|
94
|
+
|
|
95
|
+
Block a risky dependency before it lands:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
repovet vet owner/repo --fail-under 60
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Exit code is `2` when the score is below the threshold, `1` on errors, `0` otherwise.
|
|
102
|
+
`--json` prints the full report for scripts.
|
|
103
|
+
|
|
104
|
+
## Radar: new repos for your stack
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
repovet radar
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Reads `package.json`, `requirements.txt`, `pyproject.toml`, `go.mod`, `Cargo.toml` and others
|
|
111
|
+
in the current folder, then lists recently created repos in those languages and topics.
|
|
112
|
+
Same-name clones are collapsed into one entry, and repos are ranked by stars per day with a
|
|
113
|
+
penalty for hollow-looking traction (many stars, almost no forks).
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
repovet radar --lang Rust --topic cli --days 30 --min-stars 200
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## GitHub token
|
|
120
|
+
|
|
121
|
+
Works without a token, but the anonymous API allows about 6 vets per hour and the
|
|
122
|
+
stargazer checks (fake accounts, star spikes) are skipped, because GitHub does not list
|
|
123
|
+
stargazers anonymously. To lift both limits, set `GITHUB_TOKEN` (or `GH_TOKEN`) to a token
|
|
124
|
+
with no scopes. Some tokens (seen on new GitHub accounts) get no stargazer data back from
|
|
125
|
+
GitHub; `repovet` then skips those two checks and says so in a note. If the `gh` CLI is installed and logged in, its token is used automatically.
|
|
126
|
+
|
|
127
|
+
Responses are cached for one hour in `~/.cache/repovet` (`--no-cache` to bypass,
|
|
128
|
+
`REPOVET_CACHE` to move it). The token is only ever sent to `api.github.com`.
|
|
129
|
+
|
|
130
|
+
## Limits
|
|
131
|
+
|
|
132
|
+
These are heuristics. A flag is a reason to look closer, not proof of fraud, and a clean
|
|
133
|
+
score is not a security audit. The install check reads a handful of entry-point files, not
|
|
134
|
+
the whole codebase. Popular, legitimate projects can trip individual checks (a fast viral
|
|
135
|
+
launch looks like a star spike). Treat the verdict as triage.
|
|
136
|
+
|
|
137
|
+
## Development
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
python -m unittest discover -s tests
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add a check. Report security issues as
|
|
144
|
+
described in [SECURITY.md](SECURITY.md). Changes are listed in [CHANGELOG.md](CHANGELOG.md).
|
|
145
|
+
|
|
146
|
+
## License
|
|
147
|
+
|
|
148
|
+
[MIT](LICENSE)
|
|
149
|
+
|
|
150
|
+
<sub>Keywords: github repository analyzer, fake github stars detector, repo trust score,
|
|
151
|
+
supply chain security, typosquatting detection, malicious repository checker, dependency
|
|
152
|
+
vetting, trending repositories, open source discovery.</sub>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "repovet-cli"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Vet a GitHub repo for fake stars, abandonment, risky install scripts and typosquatting. Radar for new repos in your stack."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.9"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [{ name = "repovet contributors" }]
|
|
13
|
+
keywords = [
|
|
14
|
+
"github", "fake-stars", "supply-chain-security", "typosquatting", "repository-analysis",
|
|
15
|
+
"trust-score", "dependency-vetting", "trending-repositories", "cli", "developer-tools",
|
|
16
|
+
]
|
|
17
|
+
classifiers = [
|
|
18
|
+
"Development Status :: 3 - Alpha",
|
|
19
|
+
"Environment :: Console",
|
|
20
|
+
"Intended Audience :: Developers",
|
|
21
|
+
"License :: OSI Approved :: MIT License",
|
|
22
|
+
"Operating System :: OS Independent",
|
|
23
|
+
"Programming Language :: Python :: 3",
|
|
24
|
+
"Programming Language :: Python :: 3.9",
|
|
25
|
+
"Programming Language :: Python :: 3.10",
|
|
26
|
+
"Programming Language :: Python :: 3.11",
|
|
27
|
+
"Programming Language :: Python :: 3.12",
|
|
28
|
+
"Programming Language :: Python :: 3.13",
|
|
29
|
+
"Topic :: Security",
|
|
30
|
+
"Topic :: Software Development :: Quality Assurance",
|
|
31
|
+
"Topic :: Utilities",
|
|
32
|
+
]
|
|
33
|
+
dependencies = []
|
|
34
|
+
|
|
35
|
+
[project.urls]
|
|
36
|
+
Homepage = "https://github.com/shivamkr06/repovet"
|
|
37
|
+
Issues = "https://github.com/shivamkr06/repovet/issues"
|
|
38
|
+
Changelog = "https://github.com/shivamkr06/repovet/blob/main/CHANGELOG.md"
|
|
39
|
+
|
|
40
|
+
[project.scripts]
|
|
41
|
+
repovet = "repovet.cli:main"
|
|
42
|
+
|
|
43
|
+
[tool.setuptools.packages.find]
|
|
44
|
+
where = ["src"]
|