Skip to main content

Blanket

Image processing in Python. Pixel work in Rust.

CI Python 3.12+ License: MIT

Blanket is a Rust-backed image library with a familiar, Pillow-shaped Python API. Open, transform, and save images using native pixel kernels, with no Pillow or other Python packages required at runtime.

from blanket import Image, ImageOps

with Image.open("photo.jpg") as image:
    upright = ImageOps.exif_transpose(image)
    thumbnail = ImageOps.fit(upright, (256, 256), method=Image.Resampling.LANCZOS)
    thumbnail.save("thumbnail.webp", quality=85)

Installation · Examples · Formats · API notes · Contributing

Why Blanket?

  • Familiar image APIs. Work with Image, ImageOps, ImageChops, ImageColor, ImageDraw, ImageEnhance, ImageFilter, ImageFont, ImageMath, ImagePalette, ImagePath, and ImageStat.
  • Native processing. Rust kernels use SIMD and parallel execution for supported operations, with small-image fast paths.
  • Modern formats. Read and write JPEG XL, WebP, AVIF, and HEIC/HEIF alongside PNG, JPEG, TIFF, BMP, GIF, and ICO. Export single-page PDFs.
  • Explicit precision. Keep 10-, 12-, and 16-bit samples in supported workflows, and choose when to convert to 8 bits.
  • Python interoperability. Import array data, work with binary streams, and convert explicitly to Pillow when you need it.

Blanket is currently alpha software. It implements a focused subset of Pillow's API, centered on images in the 1, L, LA, RGB, RGBA, HSV, CMYK, YCbCr, and LAB modes. It also supports integer I and I;16 modes, floating-point F, and indexed P and PA images to a limited extent. It is not yet a drop-in replacement for PIL.

See ImageChops for arithmetic and blend modes, and ImageStat for per-band statistics.

Installation

Blanket requires Python 3.12+. Install it with pip:

pip install pyblanket

See the development notes for information on building from source.

Examples

Convert between formats

from blanket import Image

with Image.open("input.png") as image:
    image.convert("RGB").save("output.jpg", quality=85)
    image.save("output.jxl", lossless=True)

File extensions select the output format. For binary streams, pass it explicitly:

from io import BytesIO
from blanket import Image

with Image.open("input.png") as image:
    buffer = BytesIO()
    image.save(buffer, format="PNG")
    png_bytes = buffer.getvalue()

Optimize a save without additional loss

from blanket import Image
from blanket.Compressor import LosslessImageCompressor

compressor = LosslessImageCompressor(effort=7)
with Image.open("input.png") as image:
    image.save("optimized.png", compressor=compressor)
    image.convert("RGB").save("optimized.jpg", quality=90, compressor=compressor)
    image.save("optimized.jxl", lossless=True, compressor=compressor)
    image.save("optimized.heic", lossless=True, compressor=compressor)

The compressor keeps the smallest encoding that preserves the normal save's decoded pixels. It supports PNG, JPEG, JPEG XL, and HEIF/HEIC; higher effort tries more settings and takes longer. JPEG optimization preserves DCT coefficients. This optimizes the requested save, not the original source file: lossy save settings still introduce their normal loss. See the Compressor module for the API, format-specific behavior, and compression benchmarks.

For smaller output with bounded additional pixel error, pass LossyImageCompressor(max_rmse=2.0, effort=7) from blanket.Compressor. It searches PNG color precision or lower JPEG, WebP, JPEG XL, AVIF, and HEIF/HEIC quality settings, preserving alpha and checking decoded RGB error against the normal save. The result never exceeds the normal save's size.

Resize, enhance, and filter

from blanket import Image, ImageEnhance, ImageFilter, ImageOps

with Image.open("photo.jpg") as image:
    resized = ImageOps.contain(image, (1200, 800))
    enhanced = ImageEnhance.Contrast(resized).enhance(1.2)
    sharpened = enhanced.filter(ImageFilter.UnsharpMask(radius=2, percent=150))
    sharpened.save("edited.png")

resize() supports all six Image.Resampling filters. ImageOps includes cropping, padding, flips, color adjustments, and EXIF orientation correction. ImageFilter provides blur, convolution, and rank filters, as well as 3D color LUTs.

Build an image with transparency

from blanket import Image

background = Image.new("RGBA", (640, 480), "white")
overlay = Image.new("RGBA", (160, 160), (30, 100, 220, 128))
background.alpha_composite(overlay, dest=(40, 40))
background.save("composite.png")

Use paste() for masked placement, putalpha() to set transparency, and split() / Image.merge() to work with individual channels.

Work with NumPy and high-bit-depth images

NumPy is optional. fromarray() accepts array-interface objects, including strided arrays:

import numpy as np
from blanket import Image

samples = np.full((64, 64, 3), 713, dtype=np.uint16)
image = Image.fromarray(samples, bit_depth=10)
image.save("exact.png")
image.convert("RGB", bit_depth=8).save("preview.jpg")

image.bit_depth reports sample precision. Copying, conversion, pixel access, splitting, cropping, transposition, and resizing preserve high-bit-depth samples. Other processing operations require conversion to 8 bits. See high-bit-depth images for storage and format-specific behavior.

Supported formats

Use from blanket import features to inspect the installed build: features.check("heif_decoder") reports runtime codec availability, features.version("jxl") reports its backend version, and features.blanketinfo() prints backend and format diagnostics. See the features module for feature names.

Format Read Write Notes
PNG Yes Yes Lossless; high-bit-depth and indexed output
JPEG Yes Yes 8-bit output; convert RGBA to RGB before saving
JPEG XL Yes Yes Lossy or lossless; high-bit-depth support
TIFF Yes Yes First image only; raw, LZW, Deflate, or JPEG compression
WebP Yes Yes Lossy or lossless; first frame only
AVIF Yes Yes Primary image only; 8-bit, lossy output
HEIC / HEIF Yes Yes HEVC; retains 8-, 10-, or 12-bit source depth
PDF — Yes Single page; lossless 8-bit output with transparency
BMP Yes Yes 8-bit output; uncompressed
GIF Yes Yes First frame only; single-frame output with 256 colors and binary transparency
ICO Yes Yes Largest icon on read; one PNG icon on write, 1–256 pixels per dimension
Netpbm Yes Yes PBM/PGM/PPM/PAM; bilevel, grayscale, RGB, and PAM alpha; 16-bit support
TGA Yes Yes Indexed/RLE input; uncompressed grayscale, RGB, and alpha output
DDS Yes No DXT1/DXT3/DXT5; first surface only
EPS Yes No Requires Ghostscript (gs); RGB rasterization at 72 DPI
QOI Yes Yes Lossless 8-bit RGB/RGBA
JPEG 2000 Yes Yes Grayscale/RGB with optional alpha; JP2/J2K input; lossless JP2 output
PCX Yes Yes Bilevel, indexed, grayscale, and RGB; RLE output
SGI Yes Yes Raw/RLE 8/16-bit input; uncompressed 8-bit output
XBM / XPM Yes Yes Bilevel XBM; RGB/RGBA XPM with binary transparency
FITS Yes No Primary image, first plane; integer/float samples
SPIDER Yes No 2D float images and first image of a stack
Pixar Yes No Uncompressed RGB raster
MSP Yes Yes Bilevel; raw/RLE input, uncompressed output
PALM No Yes Bilevel or 8-bit indexed output
Sun raster Yes No Raw/RLE, packed grayscale, indexed, and RGB input

Netpbm opens with image.format == "PPM", including PAM. Saving selects PBM, PGM, or PPM from modes 1, L, or RGB; use format="PAM" or .pam for alpha. Netpbm writes high-bit-depth samples as normalized 16-bit values. JPEG 2000 accepts unsigned, equally sampled grayscale/RGB components up to 16 bits, with optional alpha; signed samples, subsampling, and other color spaces are unsupported. All JPEG 2000 save extensions write JP2 containers. Larger JPEG 2000 jobs use up to eight codec workers; OPJ_NUM_THREADS overrides automatic worker selection. EPS requires Ghostscript (gs) on PATH and a numeric DSC BoundingBox; it rasterizes to RGB at 72 DPI with a 30-second timeout.

Encoder settings and their defaults are listed in the format guide. HEIF lossless compression can still change RGB values during RGB/YUV conversion.

Compatibility and scope

  • Image modes: 8-bit processing supports 1, L, LA, RGB, RGBA, HSV, CMYK, YCbCr, and LAB. Integer I, I;16, I;16L, and I;16B and floating-point F support pixel access, conversion, copying, cropping, transposition, and resizing. F also supports transforms and TIFF interchange. Indexed P and PA images have a smaller supported operation set.
  • Print and luma/chroma modes: CMYK uses raw channels without ICC transforms; JPEG and 8-bit TIFF retain CMYK on read, and JPEG, TIFF, and PDF support CMYK output. CMYK save-time compression optimization is unsupported. YCbCr saves to JPEG through RGB and opens back as RGB. Convert either mode to RGB for other output formats or direct quantization.
  • LAB: 8-bit CIE Lab* supports pixel operations and TIFF interchange. Native, statically linked LittleCMS converts between sRGB and D50 LAB; other conversions pass through RGB. LAB save-time compression optimization is unsupported.
  • Metadata: PNG, JPEG, and uncompressed JPEG XL metadata boxes supply EXIF/XMP for orientation handling. Saving writes pixels only; metadata is not preserved.
  • Multiple frames: animation and multipage editing are not supported.
  • High bit depth: sample retention is supported for selected operations and formats; HDR tone mapping and HEIF HDR/ICC metadata retention are not.
  • Pillow interop: image.to_pillow() creates a Pillow image when Pillow is installed. High-bit-depth images must first be converted to 8 bits.

See the usage and API notes for operation-specific restrictions, palette support, and interoperability examples.

Performance

The benchmark suite compares Blanket and Pillow using equal in-memory inputs and eager decoding. After completing the development setup below, run it with a release build:

maturin develop -r --extras test --uv
uv run --no-sync scripts/benchmark.py --sizes web

Use --all for the full suite or --sections Resize ImageOps to select operations. Use --sections "Codec I/O" --formats PNG JPEG TIFF to benchmark selected image formats. Format names are case-insensitive; the filter only affects Codec I/O. Results depend on image size, operation, codec settings, and hardware. The benchmark guide explains baseline comparisons and reproducible runs.

Contributing

Source builds require the Rust nightly pinned in rust-toolchain.toml for portable SIMD.

With the build prerequisites installed, set up a development environment and run the checks:

uv sync --no-install-project --extra test
uv tool install maturin
maturin develop --extras test --uv
cargo fmt --check
cargo clippy -- -D warnings
cargo test
uv run --no-sync pytest -q
uv run --no-sync scripts/verify_behavior.py

The native core lives in crates/, the Python API in python/blanket/, and compatibility tests in tests/. Include a focused regression test when fixing a bug or adding a feature. To report a problem, open an issue.

License

Blanket is licensed under the MIT License. See third-party licenses for native dependency notices.

Metadata

Release files for pyblanket 0.0.5

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

Source distribution (sdist)

Source distribution for pyblanket 0.0.5
File Size Uploaded Provenance
pyblanket-0.0.5.tar.gz 262.5 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for pyblanket 0.0.5
File
pyblanket-0.0.5-cp315-cp315-manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ x86-64 Details
pyblanket-0.0.5-cp315-cp315-manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ ARM64 Details
pyblanket-0.0.5-cp315-cp315-macosx_26_0_arm64.whl CPython 3.15 CPython 3.15 macOS 26.0+ ARM64 Details
pyblanket-0.0.5-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
pyblanket-0.0.5-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
pyblanket-0.0.5-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details
pyblanket-0.0.5-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
pyblanket-0.0.5-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
pyblanket-0.0.5-cp313-cp313-macosx_26_0_arm64.whl CPython 3.13 CPython 3.13 macOS 26.0+ ARM64 Details
pyblanket-0.0.5-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
pyblanket-0.0.5-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
pyblanket-0.0.5-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details

Total release size: 183.7 MB

Release files / pyblanket-0.0.5.tar.gz

Download URL pyblanket-0.0.5.tar.gz
Size 262.5 kB
Tags Source
SHA-256 checksum
How to use checksums
608b7eb6b71f32ee3875059ed14bf8d921a69c8b6fcaa1da90d83d902d468bdd
BLAKE2b-256 checksum
How to use checksums
4b58924a63331040a6e6b350ee50e11d05df458df8f9683bb164db0972764fe6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp315-cp315-manylinux_2_28_x86_64.whl

Download URL pyblanket-0.0.5-cp315-cp315-manylinux_2_28_x86_64.whl
Size 15.9 MB
Tags CPython 3.15 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5674a24dd2dbec12d138e6c69a3771a1c81b4fff187dff0b3600cbb8dc8c11d4
BLAKE2b-256 checksum
How to use checksums
f915419a54adf2688ed102dbdaf9281ebc05fad021a74576126f5307cf17d4c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp315-cp315-manylinux_2_28_aarch64.whl

Download URL pyblanket-0.0.5-cp315-cp315-manylinux_2_28_aarch64.whl
Size 16.4 MB
Tags CPython 3.15 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
ea8d5d5772bae153cf6b731be11b23469d90a3a6dfb616810c8731f38faa7f82
BLAKE2b-256 checksum
How to use checksums
fe44e8db2750c662799e31b23810b7f1c01603228044377e26eef458d03f6d01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp315-cp315-macosx_26_0_arm64.whl

Download URL pyblanket-0.0.5-cp315-cp315-macosx_26_0_arm64.whl
Size 13.5 MB
Tags CPython 3.15 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
1503d0fb3e673d5a1c9788970d871aea23be08751d9627b0ca8dc024e7631c34
BLAKE2b-256 checksum
How to use checksums
337e4e4e675a9c86dbea9b98d9c8b39a8489dd3b1204b5e6c2e49ab27c4d19a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL pyblanket-0.0.5-cp314-cp314-manylinux_2_28_x86_64.whl
Size 15.9 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2e35472d55b1958c55366a3b1513f22d049489d490b3c9a75839ba62c397da4b
BLAKE2b-256 checksum
How to use checksums
4193a3ea56ee79cb4a5c5e2f933539e16b3fb2cedaa3a9245123109fbfd06e82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL pyblanket-0.0.5-cp314-cp314-manylinux_2_28_aarch64.whl
Size 16.4 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
522539da40e9a3fb5d401eb55ce11022b3c2c2a6a90f0ea8329546f148bc603f
BLAKE2b-256 checksum
How to use checksums
19c60e2fd05cb10257c1dd79bca9dcf4b344323175e76f3b25e59bfba2c3ac07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp314-cp314-macosx_26_0_arm64.whl

Download URL pyblanket-0.0.5-cp314-cp314-macosx_26_0_arm64.whl
Size 13.5 MB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
cf10ca29a042cbe4f02e7276b8696bdcc0da495ff4616f8c01369a7e8fd4ab83
BLAKE2b-256 checksum
How to use checksums
08df7220bb9124daca2c5850c560fdef305828e7f2fba8bcf34f38b32368bf23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pyblanket-0.0.5-cp313-cp313-manylinux_2_28_x86_64.whl
Size 15.9 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
afcffee14d92917422bfd01e9db23735dc284fba18f8ce2d04f554c725b74f63
BLAKE2b-256 checksum
How to use checksums
b65715d54cf3f0f860158e700009c787445d602afc17d9f16835e9dfb2477527
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL pyblanket-0.0.5-cp313-cp313-manylinux_2_28_aarch64.whl
Size 16.4 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
65382fd4696bd47d0cb9563f63b596b4e38f9ad1c412a43e16d1fd9eff94d577
BLAKE2b-256 checksum
How to use checksums
adb362b21e6f05e5d5a3992534bf73b416def1adbf50c091ff01ede609731581
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp313-cp313-macosx_26_0_arm64.whl

Download URL pyblanket-0.0.5-cp313-cp313-macosx_26_0_arm64.whl
Size 13.5 MB
Tags CPython 3.13 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
4ba79678fddd380a83c36db89588d43c33f41bcc9b5b85958b818c9337288e9b
BLAKE2b-256 checksum
How to use checksums
f7644f5e45109903b4aec39f439d2533a4cd34fa50f25f94deddf6907096410a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pyblanket-0.0.5-cp312-cp312-manylinux_2_28_x86_64.whl
Size 15.9 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4ca11bbb6d931ee1f913823de9ecce7b20618545af2ea0cd47e1f8dc1dce84d6
BLAKE2b-256 checksum
How to use checksums
6b86cde4a423e2eca6cefca363ac3810cabfbecced35a1d30179227a0c814cd3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL pyblanket-0.0.5-cp312-cp312-manylinux_2_28_aarch64.whl
Size 16.4 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2796848cbcb81432bfecb15c65af524d02fe4cad53a12f5c746bea7fde6c4c00
BLAKE2b-256 checksum
How to use checksums
74b23463aa8f41a6cbbd7fe5c9147ecc5ac3ed56561fcab3b6adfcee38ee6bfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / pyblanket-0.0.5-cp312-cp312-macosx_26_0_arm64.whl

Download URL pyblanket-0.0.5-cp312-cp312-macosx_26_0_arm64.whl
Size 13.5 MB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
fc8211917f0e9d90b100d99614068b13814237db3a5c5bfed71183a357ffc0ea
BLAKE2b-256 checksum
How to use checksums
b43407375d9dfb99af33206cf801f5ac424e5b3b54b9c514e32f363a1047aa66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for pyblanket 0.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 13 files in this release have been uploaded with provenance metadata.

Select from 13 files

Attestation for pyblanket-0.0.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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