Skip to main content

pelutils

Ruff basedpyright checks Coverage Status PyPi Python versions image readthedocs

The Swiss army knife of Python projects

Every project, experiment, or one-off script inevitably ends up reinventing much of the same plumbing: some way to time a loop, saving and loading data to and from disk in a convenient and human-readable manner, a decent logger, parsing a config file, a readable table. pelutils bundles the good versions of these so you can get straight to the actual work. It has no required dependencies beyond the scientific-Python staples, ships type hints (including py.typed), and is easy to start using.

📖 Full documentation: pelutils.readthedocs.io

Highlights

  • Logger — easy-to-use, colourful console output, log files with rotation, automatic stacktrace capture, and safe logging from multiple processes.
  • Timer & profiler — a Matlab-style tick/tock timer and a near-zero-overhead profiler that prints a readable breakdown of where your time goes.
  • UniversalJsonModel — a pydantic.BaseModel that can save any attribute to a human-readable JSON file (numpy arrays, tensors, and other unserialisable types are pickled transparently) and load it straight back.
  • JobParser — one parser that unifies command-line arguments and config files, with support for running many jobs from a single config and auto-documenting them.
  • unique — a linear-time drop-in for numpy.unique, dramatically faster on large arrays (backed by a small C extension).
  • Data-science helpers — a matplotlib Figure context manager with improved default settings over matplotlib, histogram binning, reparametrised scipy distributions, z_score, LaTeX-ready tables, and numpy type aliases.

Installation

pip install pelutils

pelutils supports Python 3.11+. A small subset of functionality can additionally make use of PyTorch, which must be installed separately.

Importing: every feature lives in its own submodule and must be imported from there — e.g. from pelutils.logging import log. Only __version__ is exported at the top level. See the docs for the full API.

Logging

Python's built-in logging is powerful but fiddly to set up, and a bare print gives you no importance levels, no timestamps, and nothing on disk to look at afterwards. This logger hits the sweet spot: one configure call and you get colour-coded, timestamped output to both the console and a log file, with severity levels, log rotation, one-line exception logging, and multiprocessing-safe collection.

from pelutils.logging import log, LogLevels

# Set up the logger by giving it the file to write to
# Omit the path to only print, never write a file
log.configure("train.log")

# If an exeption occurs anywhere in the code inside `log.log_errors`, it is logged with its full, chained stacktrace, then re-raised
with log.log_errors:
    log.section("Training run")  # Highlighted section header
    log(f"Loaded {len(dataset):,} samples")  # Logs at INFO level
    for epoch in range(epochs):
        loss = train_one_epoch()
        log.debug(f"Epoch {epoch}: loss {loss:.4f}")  # Logs at DEBUG level - by default, only saved to the log file, but not printed to the console
        if loss > 1e3:
            log.warning("Loss is diverging")  # Logs at WARNING level
    log.debug("Final weights", model.state_dict().keys())

    save_checkpoint(model)

# Temporarily change or silence the log level
with log.level(LogLevels.ERROR):
    log.warning("Suppressed")

# Rotate the log file by time or size
log.configure("train.log", rotation="day")    # or "1 GB", "hour", ...

When using multiprocessing, wrap a worker in with log.collect(): so its lines are written together instead of interleaving with other processes. See the logging docs for input helpers, multiple loggers, and more.

Timing and profiling

When you want to know where a script spends its time, cProfile gives you a wall of function-level numbers, and manual time.perf_counter() calls quickly turn into bookkeeping. TickTock sits in between: wrap the sections you care about in named, nestable context managers and print a readable table of totals, hit counts, averages, and each section's share of its parent's time. The per-profile overhead is tiny, so it happily lives inside hot loops and long-running jobs.

from pelutils.ticktock import TT

# Time a single block, Matlab style
TT.tick()
model = train_model(data)
print(f"Training took {TT.tock():.1f} s")

# Profile named sections across a loop, nesting them however you like
for image in images:
    with TT.profile("Process image"):
        with TT.profile("Load"):
            img = load(image)
        with TT.profile("Resize"):
            img = resize(img, (224, 224))
        with TT.profile("Inference"):
            predict(model, img)

# Profile loop-body work element by element without manual context managers
for image in TT.profile_loop("Process image", images):
    process(image)

# Or profile the time spent fetching elements from a lazy iterator
for batch in TT.profile_next("Load batch", iter(dataloader)):
    train_on(batch)

# Print a table of hits, total time, and average time for each section
print(TT)

with TT.profile("name", hits=n): records n hits at once, which is handy for very tight loops or for a block that processes n items in parallel. TT.do_at_interval(...) turns the same instance into a throttle for periodic tasks. The default TT is a shared instance; construct your own with TickTock() when you need isolation — most importantly one per thread, as profiling is not thread-safe.

Serialisation

UniversalJsonModel extends pydantic.BaseModel with save/load methods and can serialise attributes that pydantic cannot — numpy arrays, tensors, and arbitrary objects are base64-pickled inline, everything else stays plain, human-readable JSON. Long lists are wrapped to the line-length limit instead of one element per line.

import numpy as np
from pydantic import BaseModel
from pelutils.serialization import UniversalJsonModel
from pelutils.types import FloatArray

class Nested(BaseModel):
    label: str

class Result(UniversalJsonModel):
    accuracy: float
    predictions: FloatArray   # numpy arrays are handled automatically
    meta: Nested

result = Result(
    accuracy=0.97,
    predictions=np.arange(5, dtype=np.float16),
    meta=Nested(label="run-1"),
)

result.save("results/run-1.json")
result = Result.load("results/run-1.json")

Use to_json_dict() / from_json_dict(...) to convert to and from a plain dict without touching the filesystem — useful for nesting inside other structures. The pretty_json helper function is also available on its own. The serialization module also includes JSONL read/write helpers (jsonl_dump, jsonl_load, ...) with largely the same interface as is provided by the built-in json module.

Config and command-line argument parsing

JobParser combines typed command-line options with INI config files. CLI values override config values, which override defaults. Declare RequiredArg for values every job must provide, OptionalArg for values with defaults, and Flag for booleans. Names are --kebab-case on the command line and snake_case attributes on the resulting job.

from pathlib import Path
from pelutils.job_parser import Flag, JobParser, OptionalArg, RequiredArg

parser = JobParser(
    RequiredArg("data-path", help="Training data directory"),
    OptionalArg("learning-rate", default=1e-4, type=float, help="Optimizer learning rate"),
    Flag("fp16", help="Use mixed precision"),
    multiple_jobs=True,
)

for job in parser.parse_jobs():
    print(job.name, job.data_path, job.learning_rate, job.fp16)
    job.write_documentation(Path("runs") / job.name / "arguments.ini")
    # ... run your application with the resolved job values

A single config file can define several named jobs (with a shared [DEFAULT] section), and one CLI override applies to all of them:

python main.py --config-file config.ini --learning-rate 5e-5

For a single job, drop multiple_jobs=True and call parse_job() instead. A config path can target one section directly, e.g. --config-file config.ini:low-lr. See the job parser docs for auto-documentation details.

Fast unique

A linear-time alternative to numpy.unique, significantly faster on large arrays. Unlike with np.unique, the returned elements are unsorted.

import numpy as np
from pelutils.array import unique

x = np.random.randint(0, 100, size=10_000_000)
values = unique(x)
values, index, inverse, counts = unique(
    x, return_index=True, return_inverse=True, return_counts=True,
)

Data science

Statistics

Common statistical helpers, plus wrappers around scipy distributions reparametrised as in Jim Pitman's Probability (rather than scipy's loc/scale, which are unintuitive for many distributions).

from pelutils.stats import z_score
from pelutils.stats import expon

# 95 % confidence interval half-width for a standard normal (defaults give ~1.96)
half_width = std * z_score()

# One-sided z value for an Exponential(λ=2) at the 1 % significance level
zval = z_score(alpha=0.01, two_sided=False, distribution=expon(lambda_=2))

Plotting

The Figure context manager fixes common matplotlib annoyances — sensible default figure and font sizes, easy styling — and saves and closes the figure for you while restoring rcParams afterwards.

import matplotlib.pyplot as plt
from pelutils.plots import Figure, histogram, normal_binning

with Figure("plot.png", figsize=(20, 10), fontsize=20):
    plt.scatter(x, y, label="Data")
    plt.grid()
    plt.title("Very nice plot")
# Saved to plot.png and closed here

# histogram returns x and y coordinates ready for unpacking
plt.plot(*histogram(data, binning_fn=normal_binning))

Three binning functions are provided — linear_binning, log_binning, and normal_binning (more resolution near the centre of roughly-normal data) — and custom binning functions are supported. See the plotting docs.

Numpy type aliases

Type aliases so you (and your type checker) do not have to track array dtypes by hand.

from pelutils.types import FloatArray, IntArray, BoolArray

def process(features: FloatArray, labels: IntArray, mask: BoolArray): ...

Also included

  • pelutils.misc.Table — build aligned text tables which can also be easily export to LaTeX with Table.to_latex().
  • pelutils.misc.hardware_info / OS — describe the machine the code runs on.
  • pelutils.misc.git_repo_info — the repo and commit the code is executing in.
  • Assorted file and dict helpers (reverse_line_iterator, except_keys, ...).
  • pelutils.tests — pytest helpers: a UnitTestCollection base class with a managed temp directory, and a restore_argv decorator.

Supported platforms

Precompiled wheels are provided for most common platforms. If no wheel matches, pip builds from source which requires <Python.h> — install it with sudo apt install python3-dev (Ubuntu) or sudo dnf install python3-devel (Fedora).

32-bit systems are not fully supported. Most of the library is Python-only and should work but using any C-dependent code (namely unique and SparseGridBlobDetection) is likely to end in a segfault.

Updating and releasing

pelutils uses the master branch as a stable development branch. The release branch contains the latest version on PyPI. New features should be made in feature branches from master that can be merged into master once ready. When a new release is ready, update pelutils/__version__.py and rebase master onto release. Then push a new tag from release named vX.Y.Z.

When new code is merged into master, a number of checks are run. These can be tested locally with the following commands.

# Linting and formatting
ruff format pelutils tests
ruff check pelutils tests
# Type checking
basedpyright pelutils
# Unit tests
python -m pytest tests --cov pelutils
# Build docs
# Once build, open docs/build/html/index.html in your browser to see them
make -C docs html

Download files

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

Source Distribution

pelutils-4.3.0.tar.gz (72.3 kB view details)

Uploaded Source

Built Distributions

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

pelutils-4.3.0-cp315-cp315t-win_arm64.whl (77.8 kB view details)

Uploaded CPython 3.15tWindows ARM64

pelutils-4.3.0-cp315-cp315t-win_amd64.whl (78.8 kB view details)

Uploaded CPython 3.15tWindows x86-64

pelutils-4.3.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (112.3 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pelutils-4.3.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (113.6 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pelutils-4.3.0-cp315-cp315t-macosx_11_0_arm64.whl (80.9 kB view details)

Uploaded CPython 3.15tmacOS 11.0+ ARM64

pelutils-4.3.0-cp315-cp315-win_arm64.whl (77.7 kB view details)

Uploaded CPython 3.15Windows ARM64

pelutils-4.3.0-cp315-cp315-win_amd64.whl (78.7 kB view details)

Uploaded CPython 3.15Windows x86-64

pelutils-4.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (111.6 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pelutils-4.3.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (112.9 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pelutils-4.3.0-cp315-cp315-macosx_11_0_arm64.whl (80.8 kB view details)

Uploaded CPython 3.15macOS 11.0+ ARM64

pelutils-4.3.0-cp314-cp314t-win_arm64.whl (77.9 kB view details)

Uploaded CPython 3.14tWindows ARM64

pelutils-4.3.0-cp314-cp314t-win_amd64.whl (78.8 kB view details)

Uploaded CPython 3.14tWindows x86-64

pelutils-4.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (112.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pelutils-4.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (113.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pelutils-4.3.0-cp314-cp314t-macosx_11_0_arm64.whl (80.9 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pelutils-4.3.0-cp314-cp314-win_arm64.whl (77.7 kB view details)

Uploaded CPython 3.14Windows ARM64

pelutils-4.3.0-cp314-cp314-win_amd64.whl (78.7 kB view details)

Uploaded CPython 3.14Windows x86-64

pelutils-4.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (111.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pelutils-4.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (112.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pelutils-4.3.0-cp314-cp314-macosx_11_0_arm64.whl (80.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pelutils-4.3.0-cp313-cp313-win_arm64.whl (77.6 kB view details)

Uploaded CPython 3.13Windows ARM64

pelutils-4.3.0-cp313-cp313-win_amd64.whl (78.5 kB view details)

Uploaded CPython 3.13Windows x86-64

pelutils-4.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (110.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pelutils-4.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (112.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pelutils-4.3.0-cp313-cp313-macosx_11_0_arm64.whl (80.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pelutils-4.3.0-cp312-cp312-win_arm64.whl (77.6 kB view details)

Uploaded CPython 3.12Windows ARM64

pelutils-4.3.0-cp312-cp312-win_amd64.whl (78.5 kB view details)

Uploaded CPython 3.12Windows x86-64

pelutils-4.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (110.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pelutils-4.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (112.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pelutils-4.3.0-cp312-cp312-macosx_11_0_arm64.whl (80.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pelutils-4.3.0-cp311-cp311-win_arm64.whl (77.6 kB view details)

Uploaded CPython 3.11Windows ARM64

pelutils-4.3.0-cp311-cp311-win_amd64.whl (78.5 kB view details)

Uploaded CPython 3.11Windows x86-64

pelutils-4.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (110.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pelutils-4.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (111.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pelutils-4.3.0-cp311-cp311-macosx_11_0_arm64.whl (80.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file pelutils-4.3.0.tar.gz.

File metadata

  • Download URL: pelutils-4.3.0.tar.gz
  • Upload date:
  • Size: 72.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0.tar.gz
Algorithm Hash digest
SHA256 7582dfeb5c9b97bea36f6c8640736859c6a3db7328c59add77cecf9789ce0d27
MD5 88d2ea57eba3398a85f665bc22c96136
BLAKE2b-256 da07128e6b058827bc7ae5988cb17a2247d8242c21503813036c90affd896f22

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315t-win_arm64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp315-cp315t-win_arm64.whl
  • Upload date:
  • Size: 77.8 kB
  • Tags: CPython 3.15t, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp315-cp315t-win_arm64.whl
Algorithm Hash digest
SHA256 c1cfe334d749e8584f974ca89695be04c2ef4bd8f2de178961bcfe5d0bc34092
MD5 32ef49bb86578f9d1ea996107325c373
BLAKE2b-256 0a9731bd06dbf405b7bb41071d0a07efc56b7f46f99a3a77ddb16023aecb1a26

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315t-win_amd64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp315-cp315t-win_amd64.whl
  • Upload date:
  • Size: 78.8 kB
  • Tags: CPython 3.15t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp315-cp315t-win_amd64.whl
Algorithm Hash digest
SHA256 628aa1de661ea8b779f3e9d29d06abd5ad4b40b30357f7a9e5a8bb323caa6c83
MD5 7977973a953ed69541f418878d62551f
BLAKE2b-256 5dad8ff0fdc0c53801c535402595436ea803047a968afad4c1cf0abf995c0b8a

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 30046e4b883933ae765f8d4422e535472af24f93ba3460ae073e4444e84bdd57
MD5 cbde06bb7782ef6f058b424366082fd2
BLAKE2b-256 c85decd98460ca24511b27d08a1ab4451cd1faf4838a59a07ef2aea50e78a3f7

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e633a07f41a0b5c0f07c61801d66ec3c8e855bfb1105099b61529f52a6891612
MD5 041f901ec75b064cc2c0e337b0bceb7d
BLAKE2b-256 8c035ae4626608c69759bbdf42f895860decbdb0116d2c74594508f828f0bbe3

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp315-cp315t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 929df85b28edde476d9ba911025ab90c9735c2cdc692d2283140bd972aadcb6f
MD5 3ea81c9c5f684f2f6637f88e6412e198
BLAKE2b-256 370dd04f384d242f52e9b523e4b647b29c9f16c8afa5b75eb6d8cd2c2a8051c2

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315-win_arm64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp315-cp315-win_arm64.whl
  • Upload date:
  • Size: 77.7 kB
  • Tags: CPython 3.15, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp315-cp315-win_arm64.whl
Algorithm Hash digest
SHA256 5601f2f7570040e0db1c160a792e5027e7e73edca2bbafce666086929152706c
MD5 ecb6e2b8aea67734bb925d3126abc53b
BLAKE2b-256 5e8ff58da175bb934cdb6a269e3fae56a4496718f7a7c4c0f3836adf7c5aa064

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315-win_amd64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp315-cp315-win_amd64.whl
  • Upload date:
  • Size: 78.7 kB
  • Tags: CPython 3.15, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp315-cp315-win_amd64.whl
Algorithm Hash digest
SHA256 87c810138121264cc15a0e371aad0aec29286076a04974b7663f1c879eedf557
MD5 31670ba6447562c584059bc3cf66c4c1
BLAKE2b-256 1237b03afdf66e8ebe845c4257fd84507b76b7eadcf7e14df392428d906ba77b

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf557ab9a56d0055d1faf6d136dbd47baa141169d81766ace27c09bfadd02917
MD5 ae19eb5f758fe66052710c9ec49bceda
BLAKE2b-256 fef302250e5e38c7cc685ecae6fc9c61e9919092ae40dc94ca390fbb32511076

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1beba448534a8c71f37c015b16b7fcf699513fdda2f3e99fbfeca99856e09abf
MD5 6edb1eb8671f3e966d85e1ee884a17c9
BLAKE2b-256 12e31d0c8c6547c2ff86eabd41f74b26b3445f3d8557531aa3a2054aec198966

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp315-cp315-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp315-cp315-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 afbc02d0fbd28b8d346478d723e2ace95782e2ce8be6e914c1df183f5556aac2
MD5 a2e70f9747f9438e9c8955561db2ded1
BLAKE2b-256 0e564e3985bf8b7da46d48d7165b0a4946e3a3674b78baeab1b77f29178c24de

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 77.9 kB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 374a505b16b12e0e7758f45813c9314083a5721d537700da0d8007a0d666adc6
MD5 68cf49f546bc79f91c44d94310ef17b6
BLAKE2b-256 cb15a253c163ad174b1e4ef63e2b9bbac8a91fb195220cc7968145f4fd3a3283

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 78.8 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 ed339f2c2d8b8eb48dacdcdddee764a8658beae5c044c38d996ae6ec3636123d
MD5 303ca395b42fa70411e23dda7550b4a6
BLAKE2b-256 20ad57db6a647eed3774c0c4f6a75be419e04cf6927831e7deeace45003453d6

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7790bf66f4a6e7e132d838afcd4f929096652dd53a2ab9d710a2f59fa33a99ff
MD5 15880b60cbd0e6875ad76d70bae79f5f
BLAKE2b-256 13ceebe08e906cb832a6ee2c737974050321b5deadc7a6051f9c0ae9e178391c

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c19059d85f0dd84dcec12a7cb2fbfc67bb2eadca2278283576963a03eb52a82b
MD5 6e48c2cf21f6a965d20f76dafb8e824a
BLAKE2b-256 213d9bcddf07dc105c0079ad9e01eb36b1538e5db61e91f881428ba1a59ff410

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c445e5771eb173ff97bb29ffb55714c76c00bbef7e566b351a0972fdffc6dead
MD5 b4700db654f35aec0638e3f8baa571a8
BLAKE2b-256 d37b4d69b05e12c2dd96ac47f0868d110626bd6ca725c1693e11dd28733972a7

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 77.7 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 cc25c8830054b86e090de564844d5e03b1d1dce321d71a30221720728680c316
MD5 1c20940eba3a14e2007686f2bea75a87
BLAKE2b-256 3a6eb00f2786ae0329f5e1ded6ec58ec1d8eb61880e9fb16c9582ec7a0567ba6

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 78.7 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0ad1bb6057731dcf77f9eff3a3985b0f9c3d58eb9da38465e570cc4c9191e0f6
MD5 2ba1b6e9029a4e2d968a34471060c047
BLAKE2b-256 3164d34b61b6d7201acf947971b2d4c47953c589681ec371bfcc26205b5e8f11

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c26b8954306e84765b8474cdd903993e23a1ee094b5ddc4bca1f6da6e3dafd90
MD5 27fe12012eecb876f98b2156fecf5262
BLAKE2b-256 f79b2ccb75919a297e0109827a2e056c574d445b444573a63645dd152fc2ba06

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8f7ac77ea15fda2c439c3fe27a8d8e7856276f5b2d0b0c81e6d074cc315dde34
MD5 03c5898798764cd75925eb11e7d1f3cc
BLAKE2b-256 dfd36f1587aa03f6b039bd8bdfda182ed1bb261e29597e39e8385ff59c49f933

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e92ea8bb108abddbd5a10f296122c59d864e6b1f321afd3100c493dd3eb52534
MD5 0908e626793d7168e4ce0aee5f9edef0
BLAKE2b-256 3ef650feb9dc0fd72e7c753fc7aa06a058376064ba36186cc87215f9b242c725

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 77.6 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 e6f39fdb99217db4df01c029018e0e14eb5ddc2c69e30bc2bb36edabd7b95806
MD5 394feaabc21be7dd8758d8c7fb5d8d4c
BLAKE2b-256 842646906cb06a46afb8e49ba203f9b9d36f0225b782df25be7c6b7bdb8e3124

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 78.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9d9d64b43441a1e2c294ae778ec916f1bf7d6776a7b8adac69d2b44d0e79d588
MD5 92f9fb9dcb84ae381ea343c1f5db9c15
BLAKE2b-256 d98503f26979a4438d551ff9a1ca0dad8d00f9a362559610c0ae829a5aef227c

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 342b356d1194ca9b72772d06feca217e72bec9b99df9ccfc4989e52bb777fb6a
MD5 26e50dc1b2ac38605008253089f8615d
BLAKE2b-256 8cfdcef5ba0a03b1398a7562c1e0e69a0fb465880df52ef6538624723bd542f0

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 954f7b2a38d07a8c8b7870448b185e34129be05b7b207051c1368fbac4645606
MD5 13fbe749c9e51b8e7c58e778aa3051d0
BLAKE2b-256 b7069f51c92344ba170ecee3b746e60029cdd8f8a3f0a340324247ec2de84d6e

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 449d3b84c407219f44911020560d91c7c2ef62f8c0239c10a82a27431b8bf38b
MD5 9f666e5c5277a39984935ea0f42a1818
BLAKE2b-256 05e55ac7e93efb8e6379d6b2433640527ea2103d1e7c6fa6ae074464c571da35

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 77.6 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 7d8911d6fcdc1c1101d0f1c5f6f22c4e141269d6220b7a08c89db8e4698018b6
MD5 b96fb3061632fa6c238edcfb82715cbd
BLAKE2b-256 ac97638f0f921797f520b0ad5fe9810a72362e0dfbc17e76493f871c9d83462a

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 78.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9e1bb66b0a0d6e7f469045aba1495f491df0c49ee51223dfe4af4b331d196f6b
MD5 df328a7c27c99f80c90b43224b60ccb7
BLAKE2b-256 54dde399a26e38587d1a84f27bf0df6cebffa3c92acf3013582dadabd3930fff

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b3e58d4fcdb68f271a6f6cf762deaf190ad03217b0f6184c622dbca7f363f4d
MD5 956df5fa3c6791d7403732e038c08625
BLAKE2b-256 1720c0b84f4adeec7c2505971cafde344d641c9f5b5ac3c9b2d5616efecdbf92

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 34f91f9bc9b8f9bcdedb422b373cf95ca6215085331fb4dcd8290c1356e4a60f
MD5 e3959b33442b61dffbf437d77260ed27
BLAKE2b-256 71afdbd60b4692d4cc7c674361a872d6297dd8e98cf35021e73627ba9cffe687

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 876be81ef225921a0743bcd85608936ddf5d787310c85b9d601ed9fcd71bd103
MD5 5b0d22f58d3e130539a0a9e8dbef37c1
BLAKE2b-256 8a2509409b6a2d344e5c2283ded4b67d817f390e1a03742b01a78a2ca6eed25a

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 77.6 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 99b22e1afc24f0436d0971b72007efd9b72b1eab5339095fc41b64ea7128a577
MD5 75845710ffeb56ffb727ff9fd56cd1eb
BLAKE2b-256 c122fbe79db16a7fafcbe982d92c6310a6e52e169f29b1e7d69e1713ccb7ce1f

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pelutils-4.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 78.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pelutils-4.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 264ee04f9169521bf305a036debbca05abe98acd32f780f08a5f600d6a3101ff
MD5 a054bc28f9184dbc0faade923b84cd7d
BLAKE2b-256 8946b81c1dfccf201320e2221f58e4ad70e24fb5fb2006b6534e23d19dfb6bba

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b26440e1c053257ca8b67223fb0f58d40e6051943f3dd92977690c3c410103f2
MD5 8a04f8bdbd48493cd8070f534e9b9e82
BLAKE2b-256 8c2fcae39f025dd150d625af7fdb748ba49595e8cbbef2927158a8f846f49c25

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7a284f9d4da71024a181410c29530d7020c757f4de30885af1d66515e6b2f970
MD5 0d1aeca965377e5634c73e257d75e0d6
BLAKE2b-256 3b738d03bd0238d17eb252c728f4552da49ebb8faa0473d546af9e9d924ac105

See more details on using hashes here.

File details

Details for the file pelutils-4.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pelutils-4.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4726817e474cc8b4fa13835bc3eff083f27499ff93bdf143c03fadeae0fa1514
MD5 be5dd1e569d222cdf9ce93482cc3cda6
BLAKE2b-256 e97036a80de541483a0a9d106ed385cf0947e505c7581aeb852ed198483ac507

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

4.3.0 This release

36 files

4.2.1

36 files

4.2.0

17 files

4.1.0

17 files

4.0.0

17 files

3.9.0

25 files

3.8.5

25 files

3.8.4

25 files

3.8.3

25 files

3.8.2

25 files

3.8.1

25 files

3.8.0

25 files

3.7.0

25 files

3.6.2

25 files

3.6.1

25 files

3.6.0

25 files

3.5.0

1 file

3.4.1

1 file

3.3.0

1 file

3.2.0

17 files

3.1.0

17 files

3.0.1

17 files

3.0.0

17 files

2.0.0

17 files

1.1.0

17 files

1.0.0

13 files

0.99.0

13 files

0.6.9

2 files

0.6.7

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.9

2 files

0.5.7

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.5

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.13

2 files

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.2

1 file

0.1.1

2 files

0.1.0

2 files

0.0.1.post1

2 files

0.0.1

2 files

Supported by

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