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 is for storing Pydantic models that contain a mixture of ordinary JSON values and Python-specific values. Ordinary values remain JSON, so the file structure can be inspected and diffed. Values that JSON cannot represent, such as NumPy arrays, tensors, and other Python objects, are stored as base64-encoded pickle payloads.

The save() and load() methods support convient file-based workflows. save() serialises the model to a JSON file, while load() reconstructs the model from one. Use to_json_dict() and from_json_dict(...) when the serialized representation belongs inside another structure or is handled by another storage layer.

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")

pretty_json is a string-returning formatter for standalone dictionaries and lists. It fills the same role as json.dumps, with compact nested containers and wrapped primitive lists; write the returned string to a file when needed. The module also includes JSONL read/write helpers (jsonl_dump, jsonl_load, ...) for newline-delimited records.

This format is intended for trusted configuration objects, application state, experiment results, etc., not as a language-neutral interchange format. Pickle payloads are Python-specific and loading them can execute arbitrary code. Do not load files from untrusted sources.

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 expon
from pelutils.stats import z_score

# 95 % confidence interval half-width for a standard normal
half_width = z_score()  # standard deviation is 1

# Upper 1 % critical value for an Exponential(lambda=2)
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

Metadata

Release files for pelutils 4.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pelutils 4.4.0
File Size Uploaded
pelutils-4.4.0.tar.gz 73.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pelutils 4.4.0
File
pelutils-4.4.0-cp315-cp315t-win_arm64.whl CPython 3.15 CPython 3.15 free-threading Windows ARM64 Details
pelutils-4.4.0-cp315-cp315t-win_amd64.whl CPython 3.15 CPython 3.15 free-threading Windows x86-64 Details
pelutils-4.4.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pelutils-4.4.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
pelutils-4.4.0-cp315-cp315t-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64 Details
pelutils-4.4.0-cp315-cp315-win_arm64.whl CPython 3.15 CPython 3.15 Windows ARM64 Details
pelutils-4.4.0-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
pelutils-4.4.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pelutils-4.4.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
pelutils-4.4.0-cp315-cp315-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 macOS 11.0+ ARM64 Details
pelutils-4.4.0-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details
pelutils-4.4.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
pelutils-4.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pelutils-4.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
pelutils-4.4.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
pelutils-4.4.0-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
pelutils-4.4.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pelutils-4.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pelutils-4.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
pelutils-4.4.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
pelutils-4.4.0-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
pelutils-4.4.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pelutils-4.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pelutils-4.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
pelutils-4.4.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pelutils-4.4.0-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
pelutils-4.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pelutils-4.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pelutils-4.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
pelutils-4.4.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pelutils-4.4.0-cp311-cp311-win_arm64.whl CPython 3.11 CPython 3.11 Windows ARM64 Details
pelutils-4.4.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pelutils-4.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pelutils-4.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
pelutils-4.4.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 3.3 MB

Release files / pelutils-4.4.0.tar.gz

Download URL pelutils-4.4.0.tar.gz
Size 73.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d2917b09495438ff05ed8692f802efda028bcd06e3a0c79f11f2529215414beb
BLAKE2b-256 checksum
How to use checksums
d97cbd7a3cd828f177788d1830bd0d4e29a92cc244a7741e07b45bd50368acd0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315t-win_arm64.whl

Download URL pelutils-4.4.0-cp315-cp315t-win_arm64.whl
Size 78.9 kB
Tags CPython 3.15 CPython 3.15 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
09fe20756f7784bbbe72b078a037999a648f84bed245d7f32744c6e676251f89
BLAKE2b-256 checksum
How to use checksums
5d367fbac77f0ae9cee3c6d23747043f309d418ef33a1f746744cb6dff2bf244
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315t-win_amd64.whl

Download URL pelutils-4.4.0-cp315-cp315t-win_amd64.whl
Size 79.8 kB
Tags CPython 3.15 CPython 3.15 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
48d74594c9ceb1d8b2b2484007eb7cb8fea20e502887537a351e303e8dbf03a2
BLAKE2b-256 checksum
How to use checksums
aae0ebb42fe5951f7bee7f68e2f4027fddfde26dc2079764f63110c735d0b5c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.4.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 113.4 kB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f4ee62104aa4871d7762e5c81f85954f6fb2de67650e8006a5fed615332f345f
BLAKE2b-256 checksum
How to use checksums
bedc1e80ff92381a6da24b8dd29c2bbd50fa60d65ff46ca386e70e6c5bd81314
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.4.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 114.7 kB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
977ed8e46b59511f4ff77f07f6193def65e3dec3d0dab931049d1e4818029388
BLAKE2b-256 checksum
How to use checksums
0f18f86f45b7d720152bc6b5709cd0a0b399e96a3ee54f22bb595973a582d88f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315t-macosx_11_0_arm64.whl

Download URL pelutils-4.4.0-cp315-cp315t-macosx_11_0_arm64.whl
Size 82.0 kB
Tags CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f084b922065fbc6179a99beabe3d073fdff0beb4117e487855aa899045f1c516
BLAKE2b-256 checksum
How to use checksums
08940adc25bbe8ae8b2bcae7ef42e3eda168cc086230e68571d948132e7f22e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315-win_arm64.whl

Download URL pelutils-4.4.0-cp315-cp315-win_arm64.whl
Size 78.8 kB
Tags CPython 3.15 Windows ARM64
SHA-256 checksum
How to use checksums
6bb1e77f2f0b01e29f5211c97e70e6f28263ebbfd1469b52d307c97a7fa6f9fd
BLAKE2b-256 checksum
How to use checksums
08a0de6f68f2cf1f67d9ec7efa8324c0e70db9c3fba41ef40221c3d836785793
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315-win_amd64.whl

Download URL pelutils-4.4.0-cp315-cp315-win_amd64.whl
Size 79.7 kB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
0de38b53fbca832ed9b528b25e0f60988716b8ad9cf382bb759ecf998b3e242a
BLAKE2b-256 checksum
How to use checksums
433c972f1ace55a903a7caebcca84924b400761e6aa8efd77d20c31e2922c8ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.4.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 112.7 kB
Tags CPython 3.15 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a4d05a393f945efac721423af4a97cc3e7d6ec3ef4bddbcb2b4b8238db5eef20
BLAKE2b-256 checksum
How to use checksums
9aa75dcfa1ce88e06d66aadac0b6d058af5011c55a76a7ca90bf5944a129409d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.4.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 113.9 kB
Tags CPython 3.15 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
14eadf5c10ed08b80d9ae28cf2935ca6e9826e3ec3705e02e7b2436fe6ddcf57
BLAKE2b-256 checksum
How to use checksums
1431573415cf945482b7e523368a5fd1b5c89c417bc6fc15aeddde8662cad426
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp315-cp315-macosx_11_0_arm64.whl

Download URL pelutils-4.4.0-cp315-cp315-macosx_11_0_arm64.whl
Size 81.9 kB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c5840d6d4e7dd90f4b54215feeb910bbecf85657f297e2332d1e2358d486ec6e
BLAKE2b-256 checksum
How to use checksums
6e12d060e0a52bf79e62cbcbdb6772f35f2fee678bf2bfe54df7a0129b689faa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314t-win_arm64.whl

Download URL pelutils-4.4.0-cp314-cp314t-win_arm64.whl
Size 78.9 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
dac32b32e23b7f452e8fb121e2ac547a655f9c313f2c11947ebe223edf386934
BLAKE2b-256 checksum
How to use checksums
9319c86d9ddf160e794680b1accedc15e6254c07e66c7ffad768f0141ca4cfda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314t-win_amd64.whl

Download URL pelutils-4.4.0-cp314-cp314t-win_amd64.whl
Size 79.9 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
c03ec9c83a8454a1de1de14836b29258cb492e6c68df915c1bb2f33b3b2021aa
BLAKE2b-256 checksum
How to use checksums
6da09cba402690a5ccbd195b7eb19b67fb35cbdbb0e46d1dd8a3186b31ff50b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 113.0 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
602719a4d59788c199ee1039097bc7488e7ed5d764a84924fb91af7cfd6790e3
BLAKE2b-256 checksum
How to use checksums
d157726eba6f958e7183bd7f005c4379e3d70f1080a5cb2b8b07ecba0611a9ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 114.2 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
46cef291e20f5c00d81287ac4118f90330c4354fb2ea862beb39ba623b00854e
BLAKE2b-256 checksum
How to use checksums
4a25b62f3f83fb1a151ed887d517b88c7aed88b737eddf68d4cafcae255d5ee3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL pelutils-4.4.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 82.0 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2c766c4425bc8d20ee60d150cbd0e75fc0211da869fe828f8ba7b9f8a4ecfbea
BLAKE2b-256 checksum
How to use checksums
6f8a10223c46d2b47235a0364c3ea55256ad31e0f2124187a870f3dce03c68f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314-win_arm64.whl

Download URL pelutils-4.4.0-cp314-cp314-win_arm64.whl
Size 78.8 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
52d47aaa2c954b57a6bf870691457c3741b5a524ab74034cfd169acbf91b5ca9
BLAKE2b-256 checksum
How to use checksums
934335c75771abeca11bc7006c8a95e77a3806b7f35db4ed982baff98151f02b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314-win_amd64.whl

Download URL pelutils-4.4.0-cp314-cp314-win_amd64.whl
Size 79.8 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
566b952c788b2fe78a81e271c7acf9259904545af02a83f9c0021587e94bf62f
BLAKE2b-256 checksum
How to use checksums
da5c8c2a8b781eb1568d4f869fcd28e0a0453de50555ecfe44385e9dfd6e832b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 112.2 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fe191df47a8b4dcc0358f9e9d62ce2a72e15547302c74fb2fac40739c104fa4b
BLAKE2b-256 checksum
How to use checksums
8adf38f440d940d5f3ed485dd810659f537871bc2b18fc0de517bc78afe08b18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 113.5 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
cff9ec99e9181f5a1e7f6274ce82321b140a3936bcdf12370f466966089a1d3b
BLAKE2b-256 checksum
How to use checksums
ed78edb6eefc06989ecf608f47db178eda02e34acb84097f440d753b5bbbdf0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL pelutils-4.4.0-cp314-cp314-macosx_11_0_arm64.whl
Size 81.8 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8fadf227911e236e1f19426c243356e0fe95e3b606a0f0f5af8e6e3644becf24
BLAKE2b-256 checksum
How to use checksums
c7f53cdea8441a731e64535ae63bdb52a3d104a49fae3e6f646dab01fd43ba2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp313-cp313-win_arm64.whl

Download URL pelutils-4.4.0-cp313-cp313-win_arm64.whl
Size 78.6 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
6665884f65cd25ba420c35289053b4154355a2b8fd31fbf3f26f484a2a493f4f
BLAKE2b-256 checksum
How to use checksums
dacfe8963ac8803e46a9caa8a7bad4a70293016df2394fb637b39a2cebd8bdd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp313-cp313-win_amd64.whl

Download URL pelutils-4.4.0-cp313-cp313-win_amd64.whl
Size 79.6 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
789de80dfd6cb8c16a2041724a94c4298a4c5e3dc115ac777ce641ad3fd9f979
BLAKE2b-256 checksum
How to use checksums
eb454b706726abda79c2ded7139e0af8c7a31ccbbe793f30fdfda73edbde4e7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 111.8 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
28945d2628056d338ededcfaf2b4a6fd76cd4d9faf2fcad96551d8a1120a3394
BLAKE2b-256 checksum
How to use checksums
0a1845550e0afdd70efbd334343af695428fdbbf34fdd69ada2ba62be7066177
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 113.1 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6d01746c6b64470db0c8b05a9d23c60759b5a22026a400ce3ae4626686171e71
BLAKE2b-256 checksum
How to use checksums
37e0b8e55b28624b694a412281c5b815831e0453ae3f36be31a01e49f7f78338
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL pelutils-4.4.0-cp313-cp313-macosx_11_0_arm64.whl
Size 81.8 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b4f2d32a2d0ce2fc2dc673b590d49cde4c248e64d9bb1c7b93aebd48a84b66e4
BLAKE2b-256 checksum
How to use checksums
7932cba5eda146ac7e952f8d20299e2d392b6996356e2e2d06740c041a7ae435
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp312-cp312-win_arm64.whl

Download URL pelutils-4.4.0-cp312-cp312-win_arm64.whl
Size 78.6 kB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
27aa9f14925f6171aaf7da269a574126b760f6666a7733eb491c5f055396714c
BLAKE2b-256 checksum
How to use checksums
9bbef2487330d5a04a3ab174bc2d9a4762824558f0923b4385e95d04b6db2b3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp312-cp312-win_amd64.whl

Download URL pelutils-4.4.0-cp312-cp312-win_amd64.whl
Size 79.6 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
1f541660deb273a63fcd990d88fe12a8d9f23791f1199780ffb2bf6a614bcec8
BLAKE2b-256 checksum
How to use checksums
832976f150e8f0337288da669479a197b5cb369f3e754cd321321a1eb5c0317d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 111.8 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7af9f0bf7bd6923e9832dc3b345989da1270c8e79d5fa5beb3a16c710162cd6e
BLAKE2b-256 checksum
How to use checksums
3ac95888ae589de65b470aadc6b5cf2a5324bc186f181c27ab977e1c3b13bc17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 113.0 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a687cab0aac8a9c95204037875a4dbde7247d935edb9c947f2bffe9ae4070588
BLAKE2b-256 checksum
How to use checksums
80dfa02cc8a6b6b8f3effac471f6f60d36124f530c6e33587598c3003844b81f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL pelutils-4.4.0-cp312-cp312-macosx_11_0_arm64.whl
Size 81.8 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
08f5105000b2e6fa7b5613d3e654d1dbff9ec0da4589feef890ff51f7f06b931
BLAKE2b-256 checksum
How to use checksums
ea19340820bdc774f7bb1af4dc37fd755ab6adecf482c5c07de27ab494e2a3a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp311-cp311-win_arm64.whl

Download URL pelutils-4.4.0-cp311-cp311-win_arm64.whl
Size 78.7 kB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
88d83af25083dd8b7259bcc1ab3e2a797f0a0fa414402db4be6e620370e0423a
BLAKE2b-256 checksum
How to use checksums
8c72ecd1a3a8a8b33a86095d63965f47220ac288eadfd7c0b4ce69341d5d3c59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp311-cp311-win_amd64.whl

Download URL pelutils-4.4.0-cp311-cp311-win_amd64.whl
Size 79.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
3dabf4433bb659d825549643a1d772efb6ee0ce0b570368d4bb3c824e199d1be
BLAKE2b-256 checksum
How to use checksums
9feacadf3421b133c1327d5cdc3f1607b1eca5fcc269e73c127cd51582d2f1fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 111.3 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cfac94ad938430dc5d2b633c405a2c55453c708016091bba1e0c71c7eaa21386
BLAKE2b-256 checksum
How to use checksums
28a1753e4386ddfc7ccdbe39e116831e5810b412dbbc1d7cecfb779f7e454635
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 112.6 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
5f84c38fcc6abc0734768a8d3a90190b763edd70817c9053da670fbf7c6683f7
BLAKE2b-256 checksum
How to use checksums
b3ca1d816fca402cfdca17fa0922094907a8f29a5bb058a81e830990839c2e4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pelutils-4.4.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL pelutils-4.4.0-cp311-cp311-macosx_11_0_arm64.whl
Size 81.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
256b7f6af6042bd302568ae4cc73001929b75e3cc05adf38f4a45ac35abec7d1
BLAKE2b-256 checksum
How to use checksums
205935047db1c184df4ada233d27126a3be287183693b1a6dbbd6d3b8af6c068
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

4.4.0 This release

36 release files

4.3.1

36 release files

4.3.0

36 release files

4.2.1

36 release files

4.2.0

17 release files

4.0.0

17 release files

3.8.4

25 release files

3.8.3

25 release files

3.8.2

25 release files

3.6.2

25 release files

3.6.1

25 release files

3.6.0

25 release files

3.5.0

1 release file

3.4.1

1 release file

3.3.0

1 release file

3.1.0

17 release files

3.0.0

17 release files

2.0.0

17 release files

1.1.0

17 release files

1.0.0

13 release files

0.6.9

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.9

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.5

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

1 release file

0.1.1

2 release files

0.1.0

2 release files

0.0.1

2 release 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