Skip to main content

yp

A mapping view to pypi projects

To install: pip install yp

See also: pipoke, for more pypi interaction tools.

Example Usage

Get a mapping of all of pypi projects.

>>> from yp import Pypi
>>> p = Pypi()

The keys of this mapping are the project names. There are lots!

>>> len(p)  # doctest: +SKIP
405120
>>> 'numpy' in p and 'dol' in p
True
>>> 'no_way_this_is_a_package' in p
False

The values of the mapping are the corresponding project's info, which is a nested dict of good stuff.

>>> info = p['numpy']
>>> list(info)
['info', 'last_serial', 'releases', 'urls', 'vulnerabilities']

Tip: To only get the info you want, you'll

The project info is obtained, live, making requests to the https://pypi.python.org/pypi/{pkg_name}/json API, but the list of all project names is actually taken from a local file. You should update that file regularly (but not TOO regularly!) to be in sync with pypi.org. To do so, do this:

>>> Pypi.refresh_cached_package_names()  # doctest: +SKIP

If, on the other hand, you don't want all projects of Pypi to be the collection you're working with, you can specify what user they should belong to:

>>> p = Pypi(user='thorwhalen1')
>>> len(p)  # doctest: +SKIP
131

You can also explicitly give Pypi a collection of projects you want to work with:

>>> p = Pypi(proj_names={'numpy', 'pandas', 'dol'})
>>> len(p)
3

You can do a lot more by simply using the tools of dol to change the mapping you want to work with in all kinds of ways!

Extras

yp ships a cached list of every PyPI project name (yp/data/pkg_list.tsv.gz), so name lookups are instant and offline. The cache is loaded lazily -- the first lookup pays for it, import yp does not.

yp.refresh_saved_pkg_name_stub() fetches the current list and saves it to your app folder, which then takes precedence over the copy shipped with the package. (It writes there rather than into the installed package, which is read-only in many installs.) Pass save_to= to write elsewhere.

I also refresh the shipped copy from time to time and push the results. You can find the list (as a text file with one name per line) here: https://raw.githubusercontent.com/thorwhalen/yp/refs/heads/master/yp/data/pkg_list.txt

Skills

yp ships AI agent skills (SKILL.md files) that teach an agent how to drive its tools. They live in yp/data/skills/ (so they install with the package) and are mirrored into .claude/skills/ for Claude Code.

Skill What it helps you do
yp-name-availability Find an available PyPI name for a new package: brainstorm → fast cached pre-filter → authoritative live check → present the free options.
yp-name-cache Operate the cached PyPI name index: refresh it, check names fast/offline, understand freshness & normalization caveats.
yp-package-info Fetch live PyPI info: full project JSON, a tidy digest, latest version(s), last-upload time, a user's projects, bulk download.
yp-dependencies Inspect an installed package's dependency tree (direct/transitive, required vs installed, version conflicts).

Install one into an agent host with gh skill:

gh skill install thorwhalen/yp yp-name-availability

Download files

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

Source Distribution

yp-0.0.12.tar.gz (4.0 MB view details)

Uploaded Source

Built Distribution

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

yp-0.0.12-py3-none-any.whl (4.0 MB view details)

Uploaded Python 3

File details

Details for the file yp-0.0.12.tar.gz.

File metadata

  • Download URL: yp-0.0.12.tar.gz
  • Upload date:
  • Size: 4.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.21

File hashes

Hashes for yp-0.0.12.tar.gz
Algorithm Hash digest
SHA256 1c5ff472bbccc7058a7319063df4a18776a3b0787ec1685bf316bd72798f90fd
MD5 83b221db149c6e30d113f2fe160c072c
BLAKE2b-256 0e2da58c48b5cb560e319c722436a375db67e8d96508361f849142ca1ab46a28

See more details on using hashes here.

File details

Details for the file yp-0.0.12-py3-none-any.whl.

File metadata

  • Download URL: yp-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 4.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.21

File hashes

Hashes for yp-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 299e5cee511bfc80d0a8a39caf295ee2b9dfd4699b0744bb6dd5033f2f15d57b
MD5 787277e28d095714cc062e18b1972a7a
BLAKE2b-256 ba8835eb5fe44560cc4dd2317058055d52af2be1155c73614adb7b55793607e3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.12 This release

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.3

2 files

0.0.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page