Skip to main content

Double check sdist/bdist on pypi

Project description

Honesty

There's a long tail of people doing interesting/sketchy things to packages on pypi. Most aren't malicious, but this project gives you an easy way to check for some of the obvious ways that packages might be tampered with.

Usage

honesty list <package name>
honesty check <package name>[==version|==*] [--verbose]
honesty download <package name>[==version|==*] [--dest=some-path/]
honesty extract <package name>[==version|==*] [--dest=some-path/]
honesty license <package name>[==version|==*]

(provisional)
honesty ispep517 <package name>[==version|==*]
honesty native <package name>[==version|==*]
honesty age <package name>[==version|==*]
honesty deps [--flat|--pick] <package name>[==version|==*]

It will store a package cache, using the normal appdirs package to pick a location (on Linux, this defaults to ~/.cache/honesty/pypi but, you can override with XDG_CACHE_HOME or HONESTY_CACHE environment variables).

If you have a local bandersnatch, specify HONESTY_INDEX_URL to your /simple/ url. It also must support /pypi/<package>/json or pass --nouse-json to the commands that support it.

Exit Status of 'check'

These are bit flags to make sense when there are multiple problems. If you pass * for version, they are or'd together.

0   if only sdist or everything matches
1   if only bdist
2   (reserved for future "extraction error")
4   some .py from bdist not in sdist
8   some .py files present with same name but different hash in sdist (common
    when using versioneer or 2to3)

API

The user-facing API is intended to be used to analyze metadata and download sdists. It is somewhat provisional, in that the exceptions raised are not well-defined.

from honesty.cache import Cache
from honesty.releases import async_parse_index
from honesty.api import async_download_one
async def foo(pkgname, pkgversion):
  with Cache() as c:
      pkg = await async_parse_index(pkgname, c, use_json=True)
      path = async_download_one(pkg, pkgversion, cache=c)

License

Honesty is copyright Tim Hatch, and licensed under the MIT license. I am providing code in this repository to you under an open source license. This is my personal repository; the license you receive to my code is from me and not from my employer. See the LICENSE file for details.

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

honesty-0.3.0a3.tar.gz (34.1 kB view details)

Uploaded Source

Built Distribution

honesty-0.3.0a3-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file honesty-0.3.0a3.tar.gz.

File metadata

  • Download URL: honesty-0.3.0a3.tar.gz
  • Upload date:
  • Size: 34.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/7.0.0 pkginfo/1.9.6 requests/2.31.0 requests-toolbelt/1.0.0 tqdm/4.66.1 CPython/3.11.3

File hashes

Hashes for honesty-0.3.0a3.tar.gz
Algorithm Hash digest
SHA256 1605092803abf483d6ce24b2c81252dc748d054aa3235b1c298d007acb5822e7
MD5 ca4d6e20a1e2bec313840430e6749c4a
BLAKE2b-256 2abdf5601bacfa8762ac8f3b50cb11759510db36d7db8ab679610de66a1fc5a3

See more details on using hashes here.

File details

Details for the file honesty-0.3.0a3-py3-none-any.whl.

File metadata

  • Download URL: honesty-0.3.0a3-py3-none-any.whl
  • Upload date:
  • Size: 35.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/7.0.0 pkginfo/1.9.6 requests/2.31.0 requests-toolbelt/1.0.0 tqdm/4.66.1 CPython/3.11.3

File hashes

Hashes for honesty-0.3.0a3-py3-none-any.whl
Algorithm Hash digest
SHA256 df0e57080675954e3c7ce35e1eb6ad4d3cb2abacf9dea0e18d81e1ac723c9458
MD5 b5781ece46d4a93100ab6b56216f4ec6
BLAKE2b-256 04e0d04088600b664046637c1c2072c8c8bc2b4b16309a25fbf94817b3fb9573

See more details on using hashes here.

Supported by

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