Check repo name availability across package registries
Project description
Repo Name Checker
Check the availability of a repo name against the major package registries (NPM, PyPI, crates.io).
Usage
uvx repo-name-checker foobarbaz
Produces a table:
| Repository | Available | Collisions |
|---|---|---|
| npm | ❌ | dark-factory |
| pypi | ✅ | |
| crates | ✅ |
Pass a list of registries to narrow the check:
uvx repo-name-checker foobarbaz --registry npm --registry pypi
Publish-time collision detection (npm)
npm rejects publishes whose normalized form (lowercased, with -/_/.
removed) matches an existing package. The Collisions column lists
existing names that would block your publish — for example darkfactory
collides with dark-factory. The check is best-effort: npm's exact
internal algorithm is private, so a passing check is necessary but not
sufficient.
Output format
Use --format to choose the output. table is the default; json emits a
machine-readable list:
$ uvx repo-name-checker foobarbaz --format json
[
{"registry": "npm", "name": "foobarbaz", "available": false, "collisions": ["foo-bar-baz"]},
{"registry": "pypi", "name": "foobarbaz", "available": true, "collisions": []},
{"registry": "crates", "name": "foobarbaz", "available": true, "collisions": []}
]
The CLI exits 0 if at least one registry has the name available, otherwise
1.
SDK
The CLI is a thin wrapper over a Python SDK with 1:1 parity:
import asyncio
from repo_name_checker import check, check_sync
# Async
results = asyncio.run(check("foobarbaz", registries=["npm", "pypi"]))
# Sync
results = check_sync("foobarbaz")
for r in results:
print(r.registry, r.available)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file repo_name_checker-0.1.0.tar.gz.
File metadata
- Download URL: repo_name_checker-0.1.0.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f4a0f6d446cbc7c259aa68a10751e61412f447861e7503fc16cba238eeb200d
|
|
| MD5 |
ba9c1e2bef757e30a632d7130cca6e00
|
|
| BLAKE2b-256 |
c9bff9e3eb9dc496dc6fd3f73e506e0a8a1152481a55506af74b9cddaed5bddc
|
Provenance
The following attestation bundles were made for repo_name_checker-0.1.0.tar.gz:
Publisher:
release.yml on thekevinscott/repo-name-checker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_name_checker-0.1.0.tar.gz -
Subject digest:
5f4a0f6d446cbc7c259aa68a10751e61412f447861e7503fc16cba238eeb200d - Sigstore transparency entry: 1523677722
- Sigstore integration time:
-
Permalink:
thekevinscott/repo-name-checker@f9fbc50c78b39c73e089f63761b2a67fa9c0068c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/thekevinscott
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f9fbc50c78b39c73e089f63761b2a67fa9c0068c -
Trigger Event:
workflow_dispatch
-
Statement type: