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.2.1.tar.gz (70.1 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.2.1-cp315-cp315t-win_arm64.whl (75.0 kB view details)

Uploaded CPython 3.15tWindows ARM64

pelutils-4.2.1-cp315-cp315t-win_amd64.whl (76.0 kB view details)

Uploaded CPython 3.15tWindows x86-64

pelutils-4.2.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (109.3 kB view details)

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

pelutils-4.2.1-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (110.6 kB view details)

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

pelutils-4.2.1-cp315-cp315t-macosx_11_0_arm64.whl (77.9 kB view details)

Uploaded CPython 3.15tmacOS 11.0+ ARM64

pelutils-4.2.1-cp315-cp315-win_arm64.whl (74.9 kB view details)

Uploaded CPython 3.15Windows ARM64

pelutils-4.2.1-cp315-cp315-win_amd64.whl (75.9 kB view details)

Uploaded CPython 3.15Windows x86-64

pelutils-4.2.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (108.6 kB view details)

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

pelutils-4.2.1-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (109.9 kB view details)

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

pelutils-4.2.1-cp315-cp315-macosx_11_0_arm64.whl (77.8 kB view details)

Uploaded CPython 3.15macOS 11.0+ ARM64

pelutils-4.2.1-cp314-cp314t-win_arm64.whl (75.1 kB view details)

Uploaded CPython 3.14tWindows ARM64

pelutils-4.2.1-cp314-cp314t-win_amd64.whl (76.0 kB view details)

Uploaded CPython 3.14tWindows x86-64

pelutils-4.2.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (109.0 kB view details)

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

pelutils-4.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (110.2 kB view details)

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

pelutils-4.2.1-cp314-cp314t-macosx_11_0_arm64.whl (77.9 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pelutils-4.2.1-cp314-cp314-win_arm64.whl (74.9 kB view details)

Uploaded CPython 3.14Windows ARM64

pelutils-4.2.1-cp314-cp314-win_amd64.whl (75.9 kB view details)

Uploaded CPython 3.14Windows x86-64

pelutils-4.2.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (108.2 kB view details)

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

pelutils-4.2.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (109.4 kB view details)

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

pelutils-4.2.1-cp314-cp314-macosx_11_0_arm64.whl (77.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pelutils-4.2.1-cp313-cp313-win_arm64.whl (74.8 kB view details)

Uploaded CPython 3.13Windows ARM64

pelutils-4.2.1-cp313-cp313-win_amd64.whl (75.7 kB view details)

Uploaded CPython 3.13Windows x86-64

pelutils-4.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (107.7 kB view details)

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

pelutils-4.2.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (109.0 kB view details)

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

pelutils-4.2.1-cp313-cp313-macosx_11_0_arm64.whl (77.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pelutils-4.2.1-cp312-cp312-win_arm64.whl (74.8 kB view details)

Uploaded CPython 3.12Windows ARM64

pelutils-4.2.1-cp312-cp312-win_amd64.whl (75.7 kB view details)

Uploaded CPython 3.12Windows x86-64

pelutils-4.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (107.7 kB view details)

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

pelutils-4.2.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (108.9 kB view details)

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

pelutils-4.2.1-cp312-cp312-macosx_11_0_arm64.whl (77.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pelutils-4.2.1-cp311-cp311-win_arm64.whl (74.8 kB view details)

Uploaded CPython 3.11Windows ARM64

pelutils-4.2.1-cp311-cp311-win_amd64.whl (75.7 kB view details)

Uploaded CPython 3.11Windows x86-64

pelutils-4.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (107.2 kB view details)

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

pelutils-4.2.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (108.5 kB view details)

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

pelutils-4.2.1-cp311-cp311-macosx_11_0_arm64.whl (77.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pelutils-4.2.1.tar.gz
Algorithm Hash digest
SHA256 8038cd8e8b8786eaeed3c157cf81f3923aa78a82fd2eb200c99514d9cc6028f5
MD5 40f3de01b88917b692d76941b2280506
BLAKE2b-256 6f6edf2689042cb9cdf22d8f7cc7b1b22df8e24a6588724f62312664e48bc9e7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp315-cp315t-win_arm64.whl
  • Upload date:
  • Size: 75.0 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.2.1-cp315-cp315t-win_arm64.whl
Algorithm Hash digest
SHA256 c05f7fca1c02a679af507b0d5973d03db1ba8a9f5ca959452f9df10782a42b45
MD5 9f3fe3121ce4ef20a6033a406f769a53
BLAKE2b-256 08890b1cd3149699cc546fb7f983de9cfa28b51b9568dd1e33f079a5408cc4d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp315-cp315t-win_amd64.whl
  • Upload date:
  • Size: 76.0 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.2.1-cp315-cp315t-win_amd64.whl
Algorithm Hash digest
SHA256 9125760c32f72b7d622793f9e2fa358a6aa5670d51e44a331c0ae40e6a3be331
MD5 88efed80b8dd31975e122f449f62a557
BLAKE2b-256 7c0552e07dee70212f1db63c7fefbe5ea2b4a9658dbb25ffc059d35b4dd4b86b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 092a8976a6a4c812f17e4374d54a6e7fb988e985dc9477416049316d8a03acf6
MD5 ab6743925ee6bb96020e199d842e2284
BLAKE2b-256 2c0bdaa1cefca3d9859cb9a6d63ff4d3f622949f6eb164b7823d8d5bc8145220

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c4e79832ab98ccff44ee6cb72c912f39c8c151e878e08b37aaba70b1f06faea3
MD5 fc6b29a6eb0b71e23309e15362514515
BLAKE2b-256 18c0cb084ae171a6b67238977f39dbd6d5b40f33482f5e74694c40ba95cb276a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp315-cp315t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 44f3dad5441e2e900df8942bea1ee775b7e7e77ba5f870476cd675909cba6ab2
MD5 fb5eb26445a6e714ca95ed685ef2978e
BLAKE2b-256 a7784c4323e04c80fad096378a2cb7e1633839ec9646f1d84352c541b6dea353

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp315-cp315-win_arm64.whl
  • Upload date:
  • Size: 74.9 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.2.1-cp315-cp315-win_arm64.whl
Algorithm Hash digest
SHA256 0e09087754a69a9f99c596b967777dc59eb354cf1964f7771ffa44c43f44c40c
MD5 175eefcf95cf8f25c2a721222077c559
BLAKE2b-256 658c34f7be2b602a57c06af601d8f1ff96a451e7d3e9e23e5d3fce9183503e36

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp315-cp315-win_amd64.whl
  • Upload date:
  • Size: 75.9 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.2.1-cp315-cp315-win_amd64.whl
Algorithm Hash digest
SHA256 59e18e178bea0bbf0aab229152f092b1139b6ec02b4383a7ade20f100e64b679
MD5 29a520c4bc3df6d39af1f4f25c85e6d3
BLAKE2b-256 b66dce35c0d84c4cad3dec4f59d14ea20f8ea31659ad9b51017000c0be3c6f9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7776701fcf22c52bfc5748e7595e1fe168306f3744af403827eb63d9c71d068c
MD5 0756d099c2ed9d5aa12f1f6cb63e67e2
BLAKE2b-256 6149e49809b14ba4a8a33d5bde44540a69d517ae0ef4b9641788e37b49f125fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1d407a987ae8c9c11e1801a609f27af119b0205fc47fc00ef370e5917a962f23
MD5 c64abbad28dfc9ddbdc6e6630417370d
BLAKE2b-256 8d8162944966171299c5456ff2a88445e2110f2be68b839e931ff9edcde2badb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp315-cp315-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d687f9c607aa898fd522a563b08718c9bdc3308f5863acb13dc2e014af91e471
MD5 282897cb21b069d49a81fc0d8d5af5d5
BLAKE2b-256 e0a4f235dc05cd4f1527f4e151fbd410af3e8b443a81ec1ce3fdafaf92d88555

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 75.1 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.2.1-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 3bfeabb3c5c70e6095251f91ce1bc17143189250701c52eb796c88fda51c80d8
MD5 63f68f38ea697fc24f8f4df1aba7161a
BLAKE2b-256 c6db8f8fad940d32e760c8c190987cc0549524065c37ece1315c5393b9862f38

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 76.0 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.2.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 7573306eb8cdabdc88ef37ae3d3273c4c9f7dd45852ed31302668aeeb7faac1f
MD5 b6171f5f099bbf0b25ee22024c50168e
BLAKE2b-256 057f39b3ed90c8a0328516414dcbb45ceb2cfbf04ea2d183b3b3ac0d79dad1ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e6fea0a204f323ef0f0f838b3cf011af5cab2824d7023a4e3e9f8a8af16ab844
MD5 fae9879ef33df90eb0b809c2cbdd217b
BLAKE2b-256 cab92df458a948ff3e79057a37a3e8e740fb08e3245fedff0bbf8d16be6cb97d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 210e43d3c6665e191f34a563143b3b05af7b3fffddeada77009fe527e4d57b40
MD5 84d82666f3134e5bbc72afeb449abec1
BLAKE2b-256 09cbb26d5b51718d86e8e7837ab72d58fe65fe54075203179ba7d61522fe06a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 38edfa172c945b39baf093069fdb0bf3ba49d2434210fa357034607d3129f5e2
MD5 4b68dc47484397a229297314f0c101b8
BLAKE2b-256 15df7706276ba716396ba4c287bfd5e5c18a84e9ae3a5279a7717b71934df5d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 74.9 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.2.1-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 de08e9016636d53b10ce1c8ffd222df9916be2a7cd5102564126b1d53ade1aa5
MD5 609999311dc77236af9aeca180d31743
BLAKE2b-256 882afad093de00ee770a6fe5cfd8bd4af95f8a7531c33598944bea969338e6e4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 75.9 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.2.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5a341f93a77bcdcd704b70c023531b4fddfadb30376e6801dd95c99c96c5f1d2
MD5 96f49099a576520c6e48d36807f30fe6
BLAKE2b-256 7157fa8473b23c2c0960c4ca0a982493654bdd92b7da38a5973814e0f32f307f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7d18651f76295ecd9b0767779989d31d9f7b0df573b902566afe85bff845330f
MD5 d86a0158952d1aeff526c8438308aacb
BLAKE2b-256 455bd9430fcb396722b50ee0bd664233b8d80e9a58be724bc1268899fb9250a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1d01d1d5c5f9d6168fdcfca0e71bee1fa3e253a46cf022f523c9a6f1115ea547
MD5 d4ee2df61bdcc7090defd3aef38afe6b
BLAKE2b-256 ddf68f97b5d5b6940cc154d867d44b35752c3c4252ecc5efb53d52b2b8e662c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff4bca85a666306a390e38bbd395deb87b24c8740c69c86800e9884cfd722227
MD5 295fdfe8250833a29f69b2af315bad42
BLAKE2b-256 5a3731a9c672728f30dc30e791e1ebecab86a6894e9dee9b307be13944fce05c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 74.8 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.2.1-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 88b485b8a676e9a9c8c4aecf9b900a8b3f4249aa5a0a2de2b2422adcfe8f34b7
MD5 ee74fc2f00cb1016de15684e34e5c866
BLAKE2b-256 a65fc569194a46db1a04d52ce137bc548c703390e39a52a1496ecf6501d7caa0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 75.7 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.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 412b2b3cf18c93bf647b0a6859e654e6f4e60a067d4a8493737b268342dbfc49
MD5 2e743091ca6be4e55a0b2ad3d442ce07
BLAKE2b-256 7a383ce8ffbcbef4107f99929bc1bcc3d15cf81b2ca44b3d9f3210869d527bc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ef4db7cc15c9db73f7d68e291b772f8f42de761459a2967c4a19b849cfeec94
MD5 28a936c4e25df5f3ada3a36ebca08d3e
BLAKE2b-256 955b32d610c9712c8a1f3ea51e6543909a558bc8c76640ccf376ff2752bc74a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5dcf0e77ad4bf9d260b7275b6393c51f0ea94ecfd1d3f4927fc7c30f02093375
MD5 a1f88e4ca50656e3215e282bb27e14c0
BLAKE2b-256 2f0298f1fa46134e5ba349c853e294639301d1aeaf7d62e301dc1bc2414b5f90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 416c5aeceb2d708be196aa8bff3aeb974ae2843817fb5c38c759862fda55ed32
MD5 04fb8172f3fcf47c0ab731d4a2163c61
BLAKE2b-256 5f2513b1debbfae85173a94ab7dbfc6c1d8bdd660450327cae6ea1d2633204b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 74.8 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.2.1-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 673d076f539c738ec71733f9de8a4716d9f5ac6d977ba4259f1320d9fdc13714
MD5 e5cef0fe83a91c99a171fc3a6bd0f99c
BLAKE2b-256 3d8101a1fe5df3c0b9f4baf4229a53169b595df32b6c9eff7b6342a452fc6737

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 75.7 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.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b5c1e45f3ed91c143ebc8f0609884bd4a55f72d72d705f81e93e38f06eb5243a
MD5 3df9273f869b701e26bacbb0eed2e125
BLAKE2b-256 9e5df02580e26066f359027db8156ae4ee12b1f15b324327dcf5c46ff2e791e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bb42401e8ec013346ac48dea593ff6b5f0cfbb1d99e8271c43ec3529fc58dec8
MD5 d672661daaf5749e560757defb329e5c
BLAKE2b-256 1dacc48287c9acf8cccde3e8f3b24bd567409cd54dff05da2070e04fbef33593

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cd7436c79245f1383b446396e0ae342d68507d9a688792b05f7a93f2624eb800
MD5 71877a59378811be19eb2d3d2b078579
BLAKE2b-256 cf4174ac88409c9bab8525bc10053ed6ac0fd700b1df97ebe5c07e6a553dad4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d55851d071441764b2e676a5947dd6ac1fcecba911c741aa8988fdb3a79dceb4
MD5 202c60d3faec7479dcc7e63509e6f143
BLAKE2b-256 6f06cceeb9cd555f4d5956136e2514e02342c589a3b454f42e8d18d55d8c1eda

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 74.8 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.2.1-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 f43236ee31c2c7d13e68a37aa20268d657cebd4ae090c2b8d516f7854ac02ee7
MD5 c060444fc4d50f8ebd4f2da205e27cc2
BLAKE2b-256 d0a5ee573b7c0ef1d20e3b05142d9f4f7506d88d6c2c9e415247c5a36e42c997

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pelutils-4.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 75.7 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.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9bd124596cc3ab96dd72d07896dbc729eb5aec380b223cb37fd9b8fddeda72f5
MD5 f6afca3ff688c134fd8547511c94e820
BLAKE2b-256 c59d66f344b861a481b7a46885926d512123a2fbe96fcb6bbfa4e2b24c282500

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1e8e0f9a0fb5e5e501cba9462430d4e98e8a55e21c73760bac5ab209f7aa1338
MD5 0c418243b6dca0cbaef26431382a4b82
BLAKE2b-256 bf4e2640f07f3c4b12310cabda2597145dd3bd485522ba72cac265ea50dbcd84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e73e4ead07ceeaaa227a5396ba7fa7735bf5039f6bcf83696261bb6cec6b48e2
MD5 49cd882fe84ca5050b683a8b472ffa63
BLAKE2b-256 7e77939919de6721f6272d558f07e9128e3d79402afe2bb3ac837ba1b3e79981

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pelutils-4.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7613602f0e93ebd9c989d39a30d34bc40e09063ba0db75531b1609dfb2f8659c
MD5 c925803596d3a05b5e643bd33da79848
BLAKE2b-256 0a82aecc43021319524390ecd30bede61ca00c72e88f977a24150c458cd2f07a

See more details on using hashes here.

Release history Release notifications | RSS feed

4.3.0

36 files

This release

4.2.1 This release

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