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.3.1

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.3.1
File Size Uploaded
pelutils-4.3.1.tar.gz 73.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pelutils 4.3.1
File
pelutils-4.3.1-cp315-cp315t-win_arm64.whl CPython 3.15 CPython 3.15 free-threading Windows ARM64 Details
pelutils-4.3.1-cp315-cp315t-win_amd64.whl CPython 3.15 CPython 3.15 free-threading Windows x86-64 Details
pelutils-4.3.1-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.3.1-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.3.1-cp315-cp315t-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64 Details
pelutils-4.3.1-cp315-cp315-win_arm64.whl CPython 3.15 CPython 3.15 Windows ARM64 Details
pelutils-4.3.1-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
pelutils-4.3.1-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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
pelutils-4.3.1-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
pelutils-4.3.1-cp315-cp315-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 macOS 11.0+ ARM64 Details
pelutils-4.3.1-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details
pelutils-4.3.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
pelutils-4.3.1-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.3.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
pelutils-4.3.1-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
pelutils-4.3.1-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
pelutils-4.3.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pelutils-4.3.1-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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
pelutils-4.3.1-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.3.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
pelutils-4.3.1-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
pelutils-4.3.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pelutils-4.3.1-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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
pelutils-4.3.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
pelutils-4.3.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pelutils-4.3.1-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
pelutils-4.3.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pelutils-4.3.1-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.3.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
pelutils-4.3.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pelutils-4.3.1-cp311-cp311-win_arm64.whl CPython 3.11 CPython 3.11 Windows ARM64 Details
pelutils-4.3.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pelutils-4.3.1-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.28+ x86-64, Linux glibc 2.17+ x86-64 Details
pelutils-4.3.1-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.3.1-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.3.1.tar.gz

Download URL pelutils-4.3.1.tar.gz
Size 73.2 kB
Tags Source
SHA-256 checksum
How to use checksums
aa6f9c9b7a442fa6572a6ee437a45f2dab4a250cbd5fbcf64012704a6a611365
BLAKE2b-256 checksum
How to use checksums
ac939783e496d0cd751b4d1b8b57384113daf9958ca86d0585f88d9d04545492
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.3.1-cp315-cp315t-win_arm64.whl

Download URL pelutils-4.3.1-cp315-cp315t-win_arm64.whl
Size 78.4 kB
Tags CPython 3.15 CPython 3.15 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
b92a7dc2f920debf2e322176f331408d2125c9cc3a3b172acb95c7ff73e2b938
BLAKE2b-256 checksum
How to use checksums
c7132f5b94f2a5540a3f8676def594c6514bc0ccb446bcd96872e6d63f55a026
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.3.1-cp315-cp315t-win_amd64.whl

Download URL pelutils-4.3.1-cp315-cp315t-win_amd64.whl
Size 79.3 kB
Tags CPython 3.15 CPython 3.15 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
fa5a12a748c6e45dcd0d0993590f5cb28a6995bf15317dc79a547819b18577ce
BLAKE2b-256 checksum
How to use checksums
73e75be8b87d54663cce52fe099bff4f5a3889bda1e0ed21f698a797b4a0d204
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.3.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.3.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 112.9 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
9b14df5272d0de0b690b60d9a1ff2799897b024a155c2d6ae83a7ef5252e7e99
BLAKE2b-256 checksum
How to use checksums
9e4f3f2d2b96ebe9f4b83e89c145c03d09f6969a85f6ef952a79f77b7fefa5c9
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.3.1-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.3.1-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 114.2 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
b8392ff738a4575700a5a660d8e3515ca305c807edb4a9686a3b2888e955dcee
BLAKE2b-256 checksum
How to use checksums
6d656c77674528de4f4a86838646b90e079906b82336957c64721662a72eef9d
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.3.1-cp315-cp315t-macosx_11_0_arm64.whl

Download URL pelutils-4.3.1-cp315-cp315t-macosx_11_0_arm64.whl
Size 81.5 kB
Tags CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
462f599814a78fb94bdceb1db03f64da98ec1f0dcc1e10074eaddaba8b652275
BLAKE2b-256 checksum
How to use checksums
351abb63de153ab6fc2a56830c2267cd3ce1ff368b464926300d95003035baf5
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.3.1-cp315-cp315-win_arm64.whl

Download URL pelutils-4.3.1-cp315-cp315-win_arm64.whl
Size 78.3 kB
Tags CPython 3.15 Windows ARM64
SHA-256 checksum
How to use checksums
7634e83c9be43e314f3edec408b3f6e5188815b656d29752ae0cdffb5d7fc95d
BLAKE2b-256 checksum
How to use checksums
53067f0d0ccf8beb37922a8ab71240489132b1e38f29a77dc55b5db55b7e64d0
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.3.1-cp315-cp315-win_amd64.whl

Download URL pelutils-4.3.1-cp315-cp315-win_amd64.whl
Size 79.2 kB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
3fd05ec07bb504f02d79add03280120db20840af3ecb5605a110f1239b7f1031
BLAKE2b-256 checksum
How to use checksums
191d598eced87f77b05d18665634189004209978a565957d6af8bf206ace4974
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.3.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.3.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 112.2 kB
Tags CPython 3.15 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
870a32a8d5535df8a2098ea817d841bf209a5cefd7e80c7754869099188d352c
BLAKE2b-256 checksum
How to use checksums
d77dcc748d9fd0dd67b573a60c0871398f53ae33574cd87ac6d5128e66ac65f4
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.3.1-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.3.1-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 113.5 kB
Tags CPython 3.15 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
08952377287cd19e4f4072d11e559f39a5e49f31755a258cc7963eab7ee6b6bd
BLAKE2b-256 checksum
How to use checksums
587856dc255876a6d81c3c2c07c62a628b71f13e507c332b842ebe7238abb9ee
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.3.1-cp315-cp315-macosx_11_0_arm64.whl

Download URL pelutils-4.3.1-cp315-cp315-macosx_11_0_arm64.whl
Size 81.4 kB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
35c95275f0f0425ba0f0a44d95fcc194bcf15539bd49f33c5b74f4a4309e555e
BLAKE2b-256 checksum
How to use checksums
91d191966206d8672c0407a870e6ed70b9588422f82b3ff67fdf18a7aa6fdbec
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.3.1-cp314-cp314t-win_arm64.whl

Download URL pelutils-4.3.1-cp314-cp314t-win_arm64.whl
Size 78.4 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
caade6c01f2f36836bf12bbaa5e3ba6e5ae951f0d8771893ec8ba0590030e0d3
BLAKE2b-256 checksum
How to use checksums
078cf997bef9ebcba363c53c28d47947e6ea2934a76a7c69ccc0d68909d779f4
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.3.1-cp314-cp314t-win_amd64.whl

Download URL pelutils-4.3.1-cp314-cp314t-win_amd64.whl
Size 79.4 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
783e514da259c4d2a9e059c15effafd6dd2b3d4d3e3a57fb978168ef29653a78
BLAKE2b-256 checksum
How to use checksums
9c8b7ec1d18fb5103136f2251f53093646f9367fa0c920ac2879a2fc1a2b93c4
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.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 112.6 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
06ab40f328ba6e5a4e63c115a267e58cacc38402b4c959e4af8f49b99158b17e
BLAKE2b-256 checksum
How to use checksums
83d595bd907d5a19051a353b3c1916c9752389ddc10e605ed9b23c7e783b69ec
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.3.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.3.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 113.8 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
63be5de0cf843a12b41bf669217d21d6cba84ea2400d28bf91bf5e0c22167338
BLAKE2b-256 checksum
How to use checksums
86e2e2c4b0fabc7efadc8340423143412c1724fbf2a6d34a33cff74305b562be
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.3.1-cp314-cp314t-macosx_11_0_arm64.whl

Download URL pelutils-4.3.1-cp314-cp314t-macosx_11_0_arm64.whl
Size 81.5 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
eeac72d289631c62e62e6f431477394951bc9f3d495addd663f00ce241ab369e
BLAKE2b-256 checksum
How to use checksums
bdde434c1af7edd68445eb2d0eb8b76e36b9fd578a651f368b474808a4441941
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.3.1-cp314-cp314-win_arm64.whl

Download URL pelutils-4.3.1-cp314-cp314-win_arm64.whl
Size 78.3 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
6b7dad87826cfa3bb7e6bbd302e6f7c3877d5db7797821c285d59fec94785e8b
BLAKE2b-256 checksum
How to use checksums
a17bedc1f8dfabdf6bf20194ba764d3eea95d1df1720a13ec49faf05088c5fb0
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.3.1-cp314-cp314-win_amd64.whl

Download URL pelutils-4.3.1-cp314-cp314-win_amd64.whl
Size 79.2 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
539b3de87787a0573d2c91cc31381f15163ca873b65d6a36e83a8cd9328a47a4
BLAKE2b-256 checksum
How to use checksums
758e3eb1d32704e8d18294fe7a4f1fa1082e16d716cc154ef524157939b94b1f
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.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 111.8 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cd8aa3bf6d5f22db946e8d73e0b69ed6fd56279f7409da5b3848bc6143dc9cbe
BLAKE2b-256 checksum
How to use checksums
2d178d4538620765d5bd915ea98b3a7dafbdc66ae969802324c70386a2c7b929
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.3.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.3.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 113.0 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
62597633230e992022cffc81e9fa1540503eed26d3d723d36adfd6df35af2b12
BLAKE2b-256 checksum
How to use checksums
d187d154a45eb85d7b209e34db9cdf94bd9299cb7d94163ec1f0d34acc96b6c1
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.3.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL pelutils-4.3.1-cp314-cp314-macosx_11_0_arm64.whl
Size 81.4 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fd4357869783658032628b8fb14f529d5e0062c33fde3814cba288f05bb8c330
BLAKE2b-256 checksum
How to use checksums
240601fa92fd76b324ffcb18c2a50971122dba746d40c3e9c0744cf3f589c509
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.3.1-cp313-cp313-win_arm64.whl

Download URL pelutils-4.3.1-cp313-cp313-win_arm64.whl
Size 78.2 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
8d251afb0b1882b945ba05222ab410533153cdb72adc0ebc70202e05372f1d09
BLAKE2b-256 checksum
How to use checksums
f3f8c65006faa975d2e7d98f28c928fcaeda0df2dc07ee91f89d2ba12ff5e6a3
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.3.1-cp313-cp313-win_amd64.whl

Download URL pelutils-4.3.1-cp313-cp313-win_amd64.whl
Size 79.1 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6a0029c7138db91baa2b9adae5ee96afed06e0bd2763bd49931b8dadc0a9d09c
BLAKE2b-256 checksum
How to use checksums
8a754c46440e064dd6b447b1afffd72b2379b73d1e537de5acf4a96b828f3f1a
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.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 111.3 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
35ef10e962ad8d087bcbef40ca58d3bfd8a8343c33ae52806b91ced87a76fb1e
BLAKE2b-256 checksum
How to use checksums
9eb2dc5cb30c581cf5f77671e324e0dffbfece585b7d804c051385f407969ec7
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.3.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.3.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 112.6 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8af0241539394b3487ce65e971b05a85865cfb00db595907e01c26245808ba74
BLAKE2b-256 checksum
How to use checksums
0688f45ef6b5bdeca3dc91bdae34a71c6bc82607c6595c826ec505792b5d540f
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.3.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL pelutils-4.3.1-cp313-cp313-macosx_11_0_arm64.whl
Size 81.3 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3f86cc2e4b0fb421776fd66cc54c98eb45958f691f9e5c9d2a6feefb4b5d8187
BLAKE2b-256 checksum
How to use checksums
25cb9209eac684d2ba773d72fabea40bd044ab7b2dbcef7e912ab8a8ddaaa3a0
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.3.1-cp312-cp312-win_arm64.whl

Download URL pelutils-4.3.1-cp312-cp312-win_arm64.whl
Size 78.2 kB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
4f2bef2a9ffa03b678452bffb31e502ab3d68406ddcada10b76844376ea6118d
BLAKE2b-256 checksum
How to use checksums
73480c521f66947a9cab6db343d9cc081fd5d8e27605139691c2e4ee63892b56
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.3.1-cp312-cp312-win_amd64.whl

Download URL pelutils-4.3.1-cp312-cp312-win_amd64.whl
Size 79.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
0466977d500ec3937cdbb3f898e49f7aae002a46e0d8a0a4caad600e3e29d55e
BLAKE2b-256 checksum
How to use checksums
8138231132fda989c00dd68f629cc49035e88c1f83b5e8ed2b1ff462f3283ae0
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.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 111.3 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a1efeb8fa052ac5c73f38ebc414c9a132fcc80b46ee5eb1818568290a8a1fb20
BLAKE2b-256 checksum
How to use checksums
ed93db36036f2879fd9efc1bd346c9ad1b6f0c505cfa5caeafd88d8381060a92
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.3.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.3.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 112.5 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b5535ed51880604226b5f33f803afb6d70f1f67de534c0cf88a579247b09fc73
BLAKE2b-256 checksum
How to use checksums
3e43d1503b60a9880535cfb58386beeb1ec2e60c6fde9726be8683d855f34d07
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.3.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL pelutils-4.3.1-cp312-cp312-macosx_11_0_arm64.whl
Size 81.3 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ee357cbfa875fc1007ffbe79fc806956b0ef2be1d58cd1b1473a6f5cd25bd50d
BLAKE2b-256 checksum
How to use checksums
a951706bb3dca96684322e2ccfd4a3e5890fce5c233a84547b58dfdfbdf6abb0
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.3.1-cp311-cp311-win_arm64.whl

Download URL pelutils-4.3.1-cp311-cp311-win_arm64.whl
Size 78.2 kB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
7a168697b0d5d46235f7cbd50c2f1d760f3dcbf8f6b9c7539dc8a97f6db3c934
BLAKE2b-256 checksum
How to use checksums
2728ae2413e50787d280c55ce203511ab56a706ec280cc164afc7c47e609c743
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.3.1-cp311-cp311-win_amd64.whl

Download URL pelutils-4.3.1-cp311-cp311-win_amd64.whl
Size 79.1 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5d8e9c3fc45ac153a5a2c6c8bc206f76b8a4b05ace1a5621cf532e1c3ec47be5
BLAKE2b-256 checksum
How to use checksums
6df2021c377065e9acae7206a174ef0d721dbdca5e2c9ca40697342cfe2e9bde
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.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pelutils-4.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 110.8 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6a246d0420c590c12af63810387218c05d1bc6ef32a258ae9d838a2cadfe551f
BLAKE2b-256 checksum
How to use checksums
1d83bcc02704f981af67e1aedc27a0cdab728d7e867c3488eb3c67023c4ebc02
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.3.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL pelutils-4.3.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 112.1 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
35fcbaa81b327ac41e74721f8dbde41cc8e70bc838d1741352e7ec2664cbd97d
BLAKE2b-256 checksum
How to use checksums
f1842ef68dc91420b1de0cd8363ebe88db88d7fb0309859ca0b24f1dd022da39
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.3.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL pelutils-4.3.1-cp311-cp311-macosx_11_0_arm64.whl
Size 81.3 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bc47082a0f730962ab7dc79e026aae0917b7f18908b3476e010825f9bcb503c8
BLAKE2b-256 checksum
How to use checksums
e1762ea6d2b9ad415fe455f7dee024955338e06a52afa36d0a896377a4a46092
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

4.4.0

36 release files

This release

4.3.1 This release

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