Skip to main content

A lightweight CLI tool to check whether a package name is taken on PyPI and TestPyPI.

Project description



A fast, metadata-rich PyPI name inspector

PyPI Version Python Versions License

nscout checks PyPI and TestPyPI availability, extracts rich metadata, formats results into clean readable tables, and integrates perfectly into CI environments via JSON output. Blazing-fast in-memory caching keeps repeated lookups instant.


nscout is designed to be:

  • quick to use
  • informative out of the box
  • script-friendly
  • safe for automation (JSON mode, quiet mode)
  • ideal for package authors checking names before publishing

Why nscout?

Choosing a package name sounds simple — until PyPI tells you it isn’t.
With more than half a million packages published, many good names are taken,
and simply knowing “yes/no” isn’t enough anymore.

nscout gives you the story behind the name, not just the answer:

  • If a name is available → you're ready to publish.
  • If it’s taken → you instantly see who owns it, how active it is,
    what it does, and whether it’s safe to choose something similar.
  • If PyPI is having trouble → you get structured error information,
    not cryptic failures.

It’s fast, scriptable, CI-friendly, and ideal for anyone publishing Python packages.

Features

  • Check whether a package name is taken or not taken
  • Automatic metadata fetch from PyPI:
    • latest version
    • summary/description
    • author + author email
    • license
    • homepage & project URLs
    • Python requirement
    • release count
    • latest release timestamp
  • Clean pretty layout for single package checks
  • Compact table layout for multiple packages
  • File mode (-r file.txt) for batch operations
  • JSON mode for scripts & CI tools
  • Quiet mode for log-friendly output
  • In-memory caching for ultra-fast repeated lookups
  • Works with both PyPI and TestPyPI

📦 Installation

pip install nscout

Or install locally during development:

pip install -e .

🚀 Usage

Check a single package

nscout requests

Example output:

requests — taken
Version:        2.32.5
Summary:        Python HTTP for Humans.
Author:         Kenneth Reitz
Author Email:   me@kennethreitz.org
License:        Apache-2.0
Homepage:       https://requests.readthedocs.io
Project URL:    https://pypi.org/project/requests/
Python Req:     >=3.9
Release Count:  157
Latest Release: 2.32.5 (2025-08-18T20:46:00.542304Z)

Check multiple packages

nscout requests flyn numpy

Output:

Name                 Status       Version      Summary
---------------------------------------------------------------------------
requests             taken        2.32.5       Python HTTP for Humans.
flyn                 taken        0.1.8        Natural-language to shell command conver
numpy                taken        2.3.5        Fundamental package for array computing

File mode

Create a file:

requests
numpy
mynewpkg

Run:

nscout -r names.txt

JSON output (for CI / scripts)

nscout --json requests

Example:

[
  {
    "name": "requests",
    "status": "taken",
    "source": {
      "pypi": { "taken": true },
      "testpypi": { "taken": true }
    },
    "metadata": {
      "version": "2.32.5",
      "summary": "Python HTTP for Humans.",
      "author": "Kenneth Reitz",
      "author_email": "me@kennethreitz.org",
      "license": "Apache-2.0",
      "homepage": "https://requests.readthedocs.io",
      "project_url": "https://pypi.org/project/requests/",
      "project_urls": {
        "Documentation": "https://requests.readthedocs.io",
        "Homepage": "https://requests.readthedocs.io",
        "Source": "https://github.com/psf/requests"
      },
      "requires_python": ">=3.9",
      "requires_dist": [
        "charset_normalizer<4,>=2",
        "idna<4,>=2.5",
        "urllib3<3,>=1.21.1",
        "certifi>=2017.4.17"
      ],
      "release_count": 157,
      "latest_release": {
        "version": "2.32.5",
        "timestamp": "2025-08-18T20:46:00.542304Z"
      },
      "all_versions": [...]
    },
    "error": null
  }
]

Quiet mode

Disable colors and decoration:

nscout --quiet requests flyn numpy

Version

nscout --version

🧠 Exit Codes

Code Meaning
0 All names available
1 At least one name is taken
4 Network error / PyPI failure

These are safe for CI pipelines.


🏗 Project Structure

nscout/
  checker.py    → availability & metadata logic
  cli.py        → command-line interface
  format.py     → pretty output & table layouts
  cache.py      → in-memory caching

🛠 Development

Install in editable mode:

pip install -e .

Run the CLI:

python -m nscout.cli package_name

📤 Publishing

python -m build
twine upload dist/*

⚖️ License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nscout-0.2.0.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nscout-0.2.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file nscout-0.2.0.tar.gz.

File metadata

  • Download URL: nscout-0.2.0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for nscout-0.2.0.tar.gz
Algorithm Hash digest
SHA256 971d0ea32b241daaaa78269647c0e6385ea6d8fc9d5683fd72f9caa7481fb90b
MD5 bf89de0c720a641f031055749b8edc51
BLAKE2b-256 5aff18102c9312090d7d9373dee32ce5534e446ba505632d09dec1ce46c99b69

See more details on using hashes here.

File details

Details for the file nscout-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: nscout-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for nscout-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 42c999d5a8c5172caebb466ac1372f573fa7b6d338eff67a104d6271a58df163
MD5 a9e1a1edd0e1be5275854cac5259c690
BLAKE2b-256 89c81b3c95791c4a62d0c6637b5e9cb7c67dade917965793af984c7058209d68

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page