Skip to main content

System-wide Python package discovery, validation, and allow-listing.

Project description

fetter

System-wide Python package discovery, validation, and allow-listing.

The fetter command-line tool scans and validates Python packages across virtual environments or entire systems, ensuring packages conform to specified requirements or lock files. It identifies unapproved or vulnerable packages, supports continuous integration through 'pre-commit', and offers excellent performance thanks to a multi-threaded Rust implementation.

  • 🔎 System Scanning: Finds Python packages across system environments.
  • ⚖️ Package Validation: Checks installed packages against requirements.txt, pyproject.toml, or lock files sourced locally, via URLs, or via git repositories.
  • 🛡️ Vulnerability Audit: Scans packages for security vulnerabilites in the Open Source Vulnerability database.
  • ⚙️ CI Integration: Validate and audit with pre-commit hooks.
  • 🚀 Fast: Multi-threaded Rust implementation.
  • 🪢 Bound Requirements: Derive lock-file-like bound requirements from observed system packages.
  • 🧹 Search and Purge: Find and remove packages across environments.
  • 🧩 Flexible Output: Display results in terminal or export to delimited files.

Installing fetter

While available as a pure Rust binary (crates), fetter is easily installed via a Python package (pypi):

$ pip install fetter
$ fetter --help

Alternatively, as fetter can operate on multiple virtual environments, installation via pipx might be desirable:

$ pipx install fetter
$ fetter --version

Using fetter from the command line

For complete command-line documentation, see CLI Documentation.

By default, fetter will search for all packages in site-packages directories discoverable from all Python executables found in the system or user virtual environments. Depending on your system, this command might take several seconds.

$ fetter scan

To limit scanning to site-packages directories associated with a specific Python executable, the --exe (or -e) argument can be supplied.

$ fetter -e python3 scan
Package                   Site
certifi-2024.8.30         ~/.env-wp/lib/python3.12/site-packages
charset_normalizer-3.4.0  ~/.env-wp/lib/python3.12/site-packages
idna-3.10                 ~/.env-wp/lib/python3.12/site-packages
jinja2-3.1.3              ~/.env-wp/lib/python3.12/site-packages
markupsafe-2.1.5          ~/.env-wp/lib/python3.12/site-packages
pip-21.1.1                ~/.env-wp/lib/python3.12/site-packages
requests-2.32.3           ~/.env-wp/lib/python3.12/site-packages
setuptools-56.0.0         ~/.env-wp/lib/python3.12/site-packages
urllib3-2.2.3             ~/.env-wp/lib/python3.12/site-packages
zipp-3.18.1               ~/.env-wp/lib/python3.12/site-packages

This evnironment was built from this "requirements.txt":

jinja2==3.1.3
zipp==3.18.1
requests==2.32.3

To validate that the installed packages match the packages specified in "requirements.txt", we can use the fetter validate command, again targeting our active Python with -e python3, and providing "requirements.txt" to the --bound argument.

$ fetter -e python3 validate --bound requirements.txt
Package                   Dependency  Explain     Sites
certifi-2024.8.30                     Unrequired  ~/.env-wp/lib/python3.12/site-packages
charset_normalizer-3.4.0              Unrequired  ~/.env-wp/lib/python3.12/site-packages
idna-3.10                             Unrequired  ~/.env-wp/lib/python3.12/site-packages
markupsafe-2.1.5                      Unrequired  ~/.env-wp/lib/python3.12/site-packages
pip-21.1.1                            Unrequired  ~/.env-wp/lib/python3.12/site-packages
setuptools-56.0.0                     Unrequired  ~/.env-wp/lib/python3.12/site-packages
urllib3-2.2.3                         Unrequired  ~/.env-wp/lib/python3.12/site-packages

The --superset command can be provided to accept packages that are not defined in the bound requirements.

$ fetter -e python3 validate --bound requirements.txt --superset

If we update zipp to version 3.20.2 and re-run validation, fetter will report these as "Misdefined" records

$ fetter -e python3 validate --bound requirements.txt --superset
Package      Dependency    Explain     Sites
zipp-3.20.2  zipp==3.18.1  Misdefined  ~/.env-wp/lib/python3.12/site-packages

If we remove the zipp package entirely, fetter identifies this as a "Missing" record:

$ fetter -e python3 validate --bound requirements.txt --superset
Package  Dependency    Explain  Sites
         zipp==3.18.1  Missing

If we want to permit the absence of specified packages, the --subset flag can be used:

$ fetter -e python3 validate --bound requirements.txt --superset --subset

Using the fetter audit command, details are provided for every vulnerability associated with installed packages.

$ fetter -e python3 audit
Package            Vulnerabilities      Attribute  Value
jinja2-3.1.3       GHSA-h75v-3vvj-5mfj  URL        https://osv.dev/vulnerability/GHSA-h75v-3vvj-5mfj
                                        Summary    Jinja vulnerable to HTML attribute injection when passing ...
                                        Reference  https://nvd.nist.gov/vuln/detail/CVE-2024-34064
                                        Severity   CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N
pip-21.1.1         GHSA-mq26-g339-26xf  URL        https://osv.dev/vulnerability/GHSA-mq26-g339-26xf
                                        Summary    Command Injection in pip when used with Mercurial
                                        Reference  https://nvd.nist.gov/vuln/detail/CVE-2023-5752
                                        Severity   CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA
                   PYSEC-2023-228       URL        https://osv.dev/vulnerability/PYSEC-2023-228
                                        Reference  https://mail.python.org/archives/list/security-announce@py...
                                        Severity   CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
setuptools-56.0.0  GHSA-cx63-2mw6-8hw5  URL        https://osv.dev/vulnerability/GHSA-cx63-2mw6-8hw5
                                        Summary    setuptools vulnerable to Command Injection via package URL
                                        Reference  https://nvd.nist.gov/vuln/detail/CVE-2024-6345
                                        Severity   CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA
                   GHSA-r9hx-vwmv-q579  URL        https://osv.dev/vulnerability/GHSA-r9hx-vwmv-q579
                                        Summary    pypa/setuptools vulnerable to Regular Expression Denial of...
                                        Reference  https://nvd.nist.gov/vuln/detail/CVE-2022-40897
                                        Severity   CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
                   PYSEC-2022-43012     URL        https://osv.dev/vulnerability/PYSEC-2022-43012
                                        Reference  https://github.com/pypa/setuptools/blob/fe8a98e696241487ba...
zipp-3.18.1        GHSA-jfmj-5v4g-7637  URL        https://osv.dev/vulnerability/GHSA-jfmj-5v4g-7637
                                        Summary    zipp Denial of Service vulnerability
                                        Reference  https://nvd.nist.gov/vuln/detail/CVE-2024-5569
                                        Severity   CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA

For additional discussion and examples of fetter commands and functionality, see System-Wide Python Package Control.

Using fetter with pre-commit

Two fetter commands can be run via pre-commit hooks for continuous integration of Python package controls.

Running fetter validate with pre-commit.

The fetter validate command permits validating that the actually installed Python packages in the current environment are what are defined to be installed, as specified by a requirements.txt file, a pyproject.toml file, or a lock file such as one produced by uv.

The fetter validate command takes a required argument, --bound, to specify that path or URL to the file to be used to define the bound requirements. The optional --superset argument permits packages not defined in the bound requirements to be present. The optional --subset argument permits not all packages in the bound requirements to be present.

To run fetter validate with pre-commit, add the following to your .pre-commit-config.yaml.

repos:
- repo: https://github.com/fetter-io/fetter-rs
  rev: v1.1.0
  hooks:
    - id: fetter-validate
      args: [--bound, {FILE}, --superset, --subset]

Running fetter audit with pre-commit.

The fetter audit command will check for cybersecurity vulnerabilities issued for all installed Python packages in the current environment. Vulnerabilities are searched for in the Open Source Vulnerability (OSV) database.

To run fetter audit with pre-commit, add the following to your .pre-commit-config.yaml. Note that, as searching vulnerabilities can take time, this hook is likely better deployed as a pre-push rather than a pre-commit hook.

repos:
- repo: https://github.com/fetter-io/fetter-rs
  rev: v1.1.0
  hooks:
    - id: fetter-audit

Command-Line-Interface Documentation

Global Options

  • --exe, -e <FILES>: Provide zero or more executable paths to derive site package locations. If omitted, all discoverable executables will be used.
  • --quiet, -q: Disable logging and terminal animation.
  • --user_site: Force inclusion of the user site-packages, even if it is not activated. Defaults to only including if the interpreter is configured to use it.

Command: fetter scan

  • Description: Scan the environment to report on installed packages.
  • Subcommands
    • display: Show scan results in the terminal.
    • write: Save scan results to a file.
      • --output, -o <FILE>: Specify the output file.
      • --delimiter, -d <char>: Set the delimiter for the file (default: ,).

Command: fetter search

  • Description: Search the environment to report on installed packages based on a pattern.
  • Options
    • --pattern, -p <STRING>: Specify a glob-like pattern to match packages.
    • --case: Enable case-sensitive pattern matching.
  • Subcommands
    • display: Show search results in the terminal.
    • write: Save search results to a file.
      • --output, -o <FILE>: Specify the output file.
      • --delimiter, -d <char>: Set the delimiter for the file (default: ,).

Command: fetter count

  • Description: Count discovered executables, sites, and packages.
  • Subcommands
    • display: Show count results in the terminal.
    • write: Save count results to a file.
      • --output, -o <FILE>: Specify the output file.
      • --delimiter, -d <char>: Set the delimiter for the file (default: ,).

Command: fetter derive

  • Description: Derive new requirements from discovered packages.
  • Options
    • --anchor, -a <BOUND>: Set the nature of the bound in the derived requirements. (Use a value from CliAnchor)
  • Subcommands
    • display: Show derived requirements in the terminal.
    • write: Save derived requirements to a file.
      • --output, -o <FILE>: Specify the output file.

Command: fetter validate

  • Description: Validate if packages conform to a specified validation target.
  • Options
    • --bound, -b <FILE>: Path or URL to the file containing bound requirements.
    • --bound-options <OPTIONS>: Names of additional optional dependency groups.
    • --subset: Allow the observed packages to be a subset of the bound requirements.
    • --superset: Allow the observed packages to be a superset of the bound requirements.
  • Subcommands
    • display: Show validation results in the terminal.
    • json: Print validation results in JSON format.
    • write: Save validation results to a file.
      • --output, -o <FILE>: Specify the output file.
      • --delimiter, -d <char>: Set the delimiter for the file (default: ,).
    • exit: Return an exit code (0 for success, customizable for errors).
      • --code, -c <INT>: Specify the error code (default: 3).

Command: fetter audit

  • Description: Search for security vulnerabilities in packages via the OSV DB.
  • Options
    • --pattern, -p <STRING>: Specify a glob-like pattern to select packages (default: *).
    • --case: Enable case-sensitive pattern matching.
  • Subcommands
    • display: Show audit results in the terminal.
    • write: Save audit results to a file.
      • --output, -o <FILE>: Specify the output file.
      • --delimiter, -d <char>: Set the delimiter for the file (default: ,).

Command: fetter unpack-count

  • Description: Count all installed package artifacts.

  • Options

    • --pattern, -p <STRING>: Specify a glob-like pattern to select packages (default: *).
    • --case: Enable case-sensitive pattern matching.
  • Subcommands

    • display: Show artifact counts in the terminal.
    • write: Save artifact counts to a file.
      • --output, -o <FILE>: Specify the output file.
      • --delimiter, -d <char>: Set the delimiter for the file (default: ,).

Command: fetter unpack-files

  • Description: List the file names of all installed package artifacts.
  • Options
    • --pattern, -p <STRING>: Specify a glob-like pattern to select packages (default: *).
    • --case: Enable case-sensitive pattern matching.
  • Subcommands
    • display: Show artifact file names in the terminal.
    • write: Save artifact file names to a file.
      • --output, -o <FILE>: Specify the output file.
      • --delimiter, -d <char>: Set the delimiter for the file (default: ,).

Command: fetter purge-pattern

  • Description: Purge packages that match a specific pattern.
  • Options
    • --pattern, -p <STRING>: Specify a glob-like pattern to select packages (default: *).
    • --case: Enable case-sensitive pattern matching.

Command: fetter purge-invalid

  • Description: Purge packages that are invalid based on dependency specification.
  • Options
    • --bound, -b <FILE>: Path or URL to the file containing bound requirements.
    • --bound-options <OPTIONS>: Names of additional optional dependency groups.
    • --subset: Allow the observed packages to be a subset of the bound requirements.
    • --superset: Allow the observed packages to be a superset of the bound requirements.

What is New in Fetter

1.1.0

Implemented bound-options to permit selecting optional dependencies in pyproject.toml files.

1.0.0

Implemented home-path display abbreviation with ~.

Handle combining multiple DepSpec in producing DepManifest.

Added --pattern and --case options to audit.

Added support for creating DepManifest from pyproject.toml.

Permit DepManifest to be retrieved from a URL.

0.13.0

All subcommands now have their output sub-subcommands set to display by default.

The validate and audit subcommands now return a non-zero exit code when items are found.

The CLI now exits for unsupported platforms.

0.12.0

Extended validate and audit commands to return a non-zero error code if display prints records.

0.11.0

Implemented variable-width and colored terminal displays.

Implemented terminal spinner for long-running commands.

Added purge-invalid and purge-pattern commands.

Split unpack command into unpack-count and unpack-files.

Added support to specify --bound with a git repository.

0.10.0

Added --user-site flag to force inclusion of user site packages; otherwise, user site packages are only included if ENABLE_USER_SITE is set.

Reimplemented display and delimited table outputs to use a generic trait implementation.

0.9.0

Support --requirement in requirements files.

0.8.0

Package and DepSpec comparisons now remove user.

Package and DepSpec comparisons now accept matching either on requested_revision or commit_id.

URLs are now shown in DepSpec displays.

Delimited file output no longer pads spaces.

0.7.0

Validate display now shows paths properly.

Updated validate json output to terminate line and flush buffer.

0.6.0

Package and dependency keys are case insensitive.

Improved URL validation between dependency and package by removing user components.

Improved validation JSON output to provided labelled objects.

Improved valiation output to show sorted missing packages.

Renamed validation explain values.

Implemented support for nested requirements.txt.

0.5.0

Implemented search command with basic wildcard matching.

Implemented Arc-wrapped PathBuf for sharable site paths.

Added explanation column to validation results.

Added support for both --subset and --superset validations.

Implemented ValidationDigest for simplified JSON serialization.

Added JSON CLI output option for validation results.

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

fetter-1.1.0.tar.gz (34.8 kB view details)

Uploaded Source

Built Distributions

fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

fetter-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fetter-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

fetter-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

fetter-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (2.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

fetter-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.1 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

fetter-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

fetter-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

fetter-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fetter-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

fetter-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

fetter-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (2.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

fetter-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.1 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

fetter-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

fetter-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

fetter-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fetter-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

fetter-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

fetter-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (2.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

fetter-1.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

fetter-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

fetter-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

fetter-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fetter-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

fetter-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

fetter-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (2.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

fetter-1.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

fetter-1.1.0-cp39-cp39-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

fetter-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

File details

Details for the file fetter-1.1.0.tar.gz.

File metadata

  • Download URL: fetter-1.1.0.tar.gz
  • Upload date:
  • Size: 34.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for fetter-1.1.0.tar.gz
Algorithm Hash digest
SHA256 5f4f153508e9a6e49d78f3df33f06f2276c8fc764d6074ea2eecc33d7ceb6a2e
MD5 dbea14cd80fd8ec08900b49729cb07ff
BLAKE2b-256 df28e719b7b976e7c8200f5f433ce83e61776c2ca492928ea701e778430dbe22

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e798cbb645dd6b098b4b1d963e631907d06f351000dab17a7ff1ddb9041cb49
MD5 652c367657d571103402e59bcb400211
BLAKE2b-256 a20608711f008ab516fc8a7d3c8757dbbeaf26470e221a39e991b63374ec16f4

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 e212ce4749655878c40c7435dc47beb6453dc9ebb6b439f999e1f330d80e86fe
MD5 fe2e157e87acded0f60d52cbf70fd081
BLAKE2b-256 6eb1a6e85cd72d5dc64d557b95826aa74c9d5aa9ab1f7a2b73e564c24244ca82

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 17010c24fac3dcd9984506cefd744f998bb51a1658ee47f8ec7f542dd501a0b0
MD5 ccef3e4292c45a7146a6db2e8e04adce
BLAKE2b-256 c7784d472d850ae509bf42f9fb79907b3c71b7f3f2bee9d45405675542883f39

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 79c9c9bd0fcaa21372c3bafacad448a5eb00d2e1744942ff87222e43cd0a0814
MD5 496182358dc0c9804986ecc1b7fa1185
BLAKE2b-256 97d536e72f6bcd0462849c908e0deb398a4547325c2a3cadc475205ef0d956ff

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3ae6f0cde47c89717a702201e571940185d3b563ad7774a1b619ebe57a0f55e5
MD5 ba5f20ac166c97fbc47e7adbe5300235
BLAKE2b-256 e81e05ce86122a27726cd137787f119d3f7aa483407f74117bdc23dbdb77be16

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 be90540edb417d0b8219a1b09c81432a7947b66ca4bd078d4e6c26f92d5e0728
MD5 a9804a6750be55581cc8da6b07ca2c76
BLAKE2b-256 ef542c1918324f8a27958d34293e15dbd89b52bc4ede0c4a3373cdacbac5d7d2

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 3e965c59e67b2343de792bc6e2383670ca259be04888e7d7996f2b2c92a80a2f
MD5 5f201bda7675aa34d3a07cc2ebff9314
BLAKE2b-256 6968ead659a27c935bcfe281584cc994bc6b7f47f27affa78cd869844fd0e084

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c4989d7be0a21e4477cb192bf5eec2e054f450cdf3e4964f96dd823c50f1af75
MD5 abe578a12b0e562411d04f7cdb33d36a
BLAKE2b-256 d1c4b2a674c511aca9856e579187e203de39f4bf4802d92fcbd319a3e09efc3e

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56b7e811b6828ce9f0e6e225654101862458e55d0b732d1d80242b11aeb31f36
MD5 3d07281f231159c893cf7174c1925cfe
BLAKE2b-256 4b1e95c76608c46df93007b1ba1554624f114f2fb3231fb0140ef9f7a931784f

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f1f1b05abf948bb7e652d61b7d2a317d71c325c0a3f5164146eeec2b0f6fb823
MD5 2e9f86a161e8c66d8336a29d99960180
BLAKE2b-256 c61ef0e539233d959ca36d94f862393d98137bfac4b296c6ce8cdc66834c59a3

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6043bc61573999020ccdd78c49254ce1b02208cd8fe4fc723f8115297c2cb09e
MD5 fb3d4622bb731ace6a6fc799da9fe94b
BLAKE2b-256 65f52b9cfb0e8e4dd729a1c7f31caee7be7aa5aeaa39cf1216d1d9b0bc187561

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8da1ff92889350af96b5322e73bbf4a21cb5da46a5aea85ec1329fa1089c0440
MD5 25a492e8417be44425a4520ba9368eb2
BLAKE2b-256 c3ce438fe8a1e2fb08d226c4ff144ba5efd63885fc420c989f38fd79761d2d99

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b4caf73d2f8772092dc65a2186f94b58d2b79079c53e680d11e317d843c2ba57
MD5 795956621b2f53e8c0cd7ad028eb16d5
BLAKE2b-256 ebc33c81dfafd2ff4daa8ae86ea50a4cc3fc1f50220e0fdd4898e6d5b791bbec

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b09aa61daa4265f60416db9afae9796003d494dda76482655efd7cdbc95588ee
MD5 1538c4f769ee582517e1e3ffccc829e8
BLAKE2b-256 e3fd247d36525b02d2cfac73b2abbc1c7c7e25e2cffeebc8aed24fe5c2beda75

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 30d00e40fbaa71d4aa3883cc466b748ee98306552892ec69f0ac7191206f7175
MD5 b910c87ef6bf978d1deefdc2d0b16d4b
BLAKE2b-256 3627a4797c83ea5aeaf14e3067b89ac7835958ef3e22b518180c3b33d1fea8d8

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c2b1d77250514396a9acea95aab806687fb98abd7ee289c2274bdd609d86eb21
MD5 a11603077f20b343f7ffb18ac766f3cc
BLAKE2b-256 05407fbf3cfcb64f9a8932dd9707f8a0ab8500bdf343715d56e77d3c4eca65c6

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 2b219aad9a7282a00ddeab0f2817a72b620ba785111a1b2d2d3f2154d8682cbf
MD5 61f89a6387d38be2f73ab4925d1c021f
BLAKE2b-256 c38f38f844fe76307e952b8e93d07f66e1a877d5dbcdc13b9085c7c7907e8e8a

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d1f2b72b0bbfe2d800428ba02d7dd87fc76cc3d4e387c2d6779367b56b0bb7f9
MD5 1c909bdd048dcfe75e65f623c7850e88
BLAKE2b-256 fa5b8d839240d848380e7e0d28d5283c24cb8255408f9b25ed361128917b155e

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 aba433a5461842f8d017df513f5a3f10f389ca6525d90edefe54e516ce691e48
MD5 50491181689a99b649acbc597cc03988
BLAKE2b-256 9b3dccd16818170e35462201cbca33d8f10678850235849519f9d6a9f07c4b9d

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 211faf558b5abdec48f153014db5a73dae8209f5df3fc87ad3f0e6c794f2664c
MD5 163eec521e8c358bd59767f8023cc87c
BLAKE2b-256 484a179875ce91c849d9b4a75eca9595e8c55df6392d751d254f752d77f336e6

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 421f57aea4c4b55eedb0ac699ebd57f6276464f69dc8298760cd5ff19f2994da
MD5 d36eaa1f4db675520652e1f71c4a6164
BLAKE2b-256 ac1dd0f4dd430be580065a5f3bdc57425c2175bc4cd0e5bad77e06b599254704

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 da0f9be56c9625603e12aef7cf851911951281687edd9b176f26fca6a201e416
MD5 d878725d8e0c3313a3cb1f8680fc889b
BLAKE2b-256 fe9400278c88d0b986f859defe0f04bd8ec7913ebd83d2c4c921a4a26653ccdc

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 442db273b54ae4761aff151e3fdce08778a874320834bdf02e1acdac9728539b
MD5 f438069ec842e4ec9933288e0cd4205f
BLAKE2b-256 0659218b3c57f4823a8bdad7320c31eb1dab823bf0cf5e343f06a439154a1e05

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 2395e87b77289be6a0f9d0aeea83645ab197aa2bc75f2fb9f9a876b2be97b2ad
MD5 1d1482ce31dca1d2e9a103933aa6ffc9
BLAKE2b-256 b2ed94038e1a1988f887c73090dba13d192ca0841c8a8d4f121fbb8c5f59fdad

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c8a96a6050417747a44c79509af20403a1fc3ed189d8cbafdb863c6107093e1f
MD5 ce0eb596b0e0baea84ec1fd41808173e
BLAKE2b-256 5c0cbf4493f20f07af5e7ccb634cb7e079a48b4b08c8f70e39d5b818ddfd3fed

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 73113d5ec02f0f06a283e1d0e33b55375b23822fda7e7288298d2502b64c5dcc
MD5 f1523a1a5740a87fb8634415d8197719
BLAKE2b-256 caa6c8f13e59f1855a232f7fbd50dc17017f0e890b52ca394fb039e176a6ef5f

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 297181a35502fff989137a3b9e0ddc217d4c6a088e1b190b3d01548bf1b336cf
MD5 460127b9d0e708a4fcaaf3ac5f89360f
BLAKE2b-256 f4874f7be67e0a9bd4d0df673b87818290fbe40f1c844c8caf97de6912a90936

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 669e46fc63a474c95bcecab6e24066c3d3ef461a5790deb7e261d3413f55733f
MD5 87a4df63354701536b9931bd4ced2fea
BLAKE2b-256 8b57f6b76a6fa4515a320d906258cdfe6025506adf1ebc54cac4daa1e2401974

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0893180a82b7c22094d9ce572a364c7fa9e5348792bf9bf1ff11a927e14faf06
MD5 151e27060fc2b5cd6ae2acb071381d23
BLAKE2b-256 30db2342faf836b4a6f89a203333126e2148aca786485f12760cb923a916e631

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e9a7382db5ec5e2336367a07f0a7494b297866fe482360814cb53cb7e16f3791
MD5 57c345ec591aae434098a386bb18897c
BLAKE2b-256 7b27f21eddf36779ab2a4a2209bba29a9a2bbbdf81b0a13e823ba0c3030c6be2

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 0b490483704e02b9541dd215cc661abc2dda36ffa3c44488cac3d5f21be12f4b
MD5 cb30a80141edf4bd21d30933f3bd993f
BLAKE2b-256 72a84886e0cffe9770a37d375174184eca173683c28b73c73da9b1039534ef54

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 3f8ec9a4b6db692fae329cfc29c8d50559f73ad04eb0bc1698dd53990fa515db
MD5 dbe089d735a8692577adee55b63d26e6
BLAKE2b-256 19113f1e25623557a0964dfb02a49014d63e615354e372e0de41ddc994ab544b

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f9449d95b1dbab4409073a5fb2fb27639de9ff08004e7efaaf38ee6929f86726
MD5 47ae10d5220f87ce7503a9514ac7f464
BLAKE2b-256 43b5c4e3b3c5fb7b8e82c0ed610cda5798ea7ff3a5dd61a012893eebb9a7a030

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0fd57f135ff9c8d0aaef44132f0dba0b0d70bcecbdd97b5133f000006459fc6b
MD5 90d89b876dcdb90b0f801ead55cb919a
BLAKE2b-256 c1dfc32ecd8414ff92f804352808d797de6d2f2b4063849d9ab3b7427878024c

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8cdb0a7b97d02069c95a16697bbf58ee0aa0a9f322c8a566910357a6e09ccc04
MD5 eb3011a761582c251f859be4a373cb5e
BLAKE2b-256 007097d738c4ee0a1a5f7b6e573fc9ca60645191a1cea1772e77468ad22595dd

See more details on using hashes here.

File details

Details for the file fetter-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fetter-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dfbd683accdcea82936e213c0a6fca3aad6597bb2b4af7a6cc69142a1857dab6
MD5 0dfb80e076296ac47f279af53af855fe
BLAKE2b-256 5b552cb8a5c13c6e93105c798e7d38da1ed6d7a6935d25c99664734a717cf890

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