pixmask
Blazing-fast image sanitization for multimodal LLM security. Pure C++ core with SIMD acceleration, Python bindings via nanobind. Zero runtime dependencies.
pip install pixmask
flowchart LR
subgraph Input
A[Untrusted\nImage]
end
subgraph pixmask ["pixmask Pipeline"]
B[Validate &\nDecode]
C[Bit-Depth\nReduction]
D[Median\nFilter]
E[JPEG\nRoundtrip]
B --> C --> D --> E
end
subgraph Output
F[Sanitized\nImage]
end
A --> B
E --> F
F --> G[Any VLM:\nGPT-4V / Gemini /\nLLaVA / etc.]
Why pixmask?
Every image sent to a multimodal LLM is an attack surface. Adversarial perturbations, steganographic payloads, prompt injection via pixel manipulation, malformed files exploiting parser bugs -- pixmask neutralizes these threats in <15ms with a single function call.
| Threat | How pixmask stops it |
|---|---|
| Gradient perturbations (PGD, C&W) | Bit-depth reduction collapses adversarial increments |
| LSB steganography | Bit-depth crush overwrites hidden payload bits |
| DCT-domain steganography | JPEG roundtrip re-quantizes all DCT coefficients |
| Malformed/corrupt images | Strict validation gate before any decode |
| Scaling attacks | Safe resize with area interpolation (v0.2) |
| Neural steganography | Layered pipeline destroys embedded patterns |
Compared to alternatives
| Library | Language | Latency (1080p) | Install size | VLM-focused? |
|---|---|---|---|---|
| pixmask | C++ / SIMD | <15ms | <5MB | Yes |
| ART (IBM) | Python | 50-500ms | ~200MB | No |
| OpenCV preprocessing | C++ | ~10ms | ~50MB + libGL | No |
| DiffPure | Python + GPU | 500-5000ms | ~2GB | No |
Quick Start
import pixmask
import numpy as np
# One-liner: sanitize any image
safe_image = pixmask.sanitize(image_array)
# From raw bytes (e.g., API upload)
safe_image = pixmask.sanitize(raw_bytes)
# From file path
safe_image = pixmask.sanitize("uploaded_photo.jpg")
# Presets
safe_image = pixmask.sanitize(image, preset="fast") # ~3ms, bit-depth + JPEG only
safe_image = pixmask.sanitize(image, preset="balanced") # ~15ms, full pipeline (default)
safe_image = pixmask.sanitize(image, preset="paranoid") # ~25ms, maximum defense
# Custom parameters
safe_image = pixmask.sanitize(image, bit_depth=4, jpeg_quality=(60, 80))
# Get bytes for API calls
safe_bytes = pixmask.sanitize(raw_bytes, output_format="jpeg")
Integration with VLM APIs
import pixmask
# Sanitize before sending to any VLM
with open("user_upload.jpg", "rb") as f:
raw = f.read()
safe = pixmask.sanitize(raw, output_format="jpeg")
# Now pass `safe` to your VLM API of choice
How It Works
pixmask applies a multi-stage defense pipeline:
Stage 0: Input Validation
- Magic byte verification (PNG, JPEG, WebP only -- GIF/TIFF/SVG rejected)
- Dimension limits (max 8192x8192)
- File size limits (max 50MB)
- Decompression ratio check (prevents zip/PNG bombs)
Stage 1: Safe Decode
- stb_image with compile-time format restriction (JPEG + PNG only)
- GIF, BMP, TGA, PSD, HDR, PIC, PNM all disabled at build time
- Pixels copied to SIMD-aligned buffer immediately, parser memory freed
Stage 2: Bit-Depth Reduction
- Reduces 8-bit channels to 5-bit (configurable 1-8)
- Implemented with Google Highway SIMD (SSE2/AVX2/NEON)
- Collapses adversarial perturbations that hide in low-order bits
- Destroys LSB steganography as a side effect
Stage 3: Median Filter (3x3)
- 19-step Bose-Nelson sorting network
- SIMD-accelerated via Google Highway
- Removes impulse noise and isolated adversarial pixels
- Edge-preserving for natural image content
Stage 4: JPEG Roundtrip
- Encode to JPEG with randomized quality factor (70-85)
- Decode back to pixel buffer
- Quality randomized per-image using OS entropy (
getrandom/getentropy) - Destroys DCT-domain steganography and high-frequency perturbations
- Randomization prevents adaptive attacks that train through a fixed QF
Architecture
pixmask/
src/cpp/
include/pixmask/ # Public C++ headers
types.h # ImageView, SanitizeOptions, SanitizeResult
arena.h # Zero-allocation bump-pointer allocator
validate.h # Stage 0: input validation
decode.h # Stage 1: stb_image wrapper
bitdepth.h # Stage 2: SIMD bit-depth reduction
median.h # Stage 3: SIMD median filter
jpeg_roundtrip.h # Stage 4: randomized JPEG roundtrip
pipeline.h # Pipeline orchestrator
src/ # Implementations + Highway SIMD dispatch
bindings/module.cpp # nanobind Python bindings
third_party/ # Vendored: stb_image, stb_image_write, doctest
python/pixmask/ # Python package
src/tests/ # C++ (doctest) + Python (pytest) tests
Design Principles
- Zero runtime dependencies -- numpy is the only optional peer dep
- Pure C++17 core -- no OpenCV, no scipy, no Pillow required
- SIMD everywhere -- Google Highway for portable SSE2/AVX2/NEON
- Arena allocator -- zero heap allocations in the hot path
- Pre-built wheels --
pip installjust works, no compiler needed
Building from Source
# Development build
pip install nanobind scikit-build-core[pyproject]
pip install --no-build-isolation -ve .
# C++ only (no Python)
cmake -S . -B build -DBUILD_TESTING=ON
cmake --build build -j$(nproc)
ctest --test-dir build
Testing
# C++ tests
cmake --build build -j$(nproc)
ctest --test-dir build --output-on-failure
# Python tests (after pip install)
pytest src/tests/python/ -v
Roadmap
v0.2
- Bilateral filter (edge-preserving, Pareto-superior to median)
- Gaussian blur (3-pass box blur approximation)
- Haar wavelet denoising (strongest standalone defense)
- Pixel deflection (stochastic, non-differentiable)
- Safe resize with INTER_AREA + random jitter
- Upgrade decoders: libspng + libjpeg-turbo (replacing stb)
- Steganography detection signal (chi-square test)
v0.3+
- OCR-based typographic attack detection
- Total variation denoising (Chambolle-Pock)
- Content-aware adaptive sanitization
- BPDA/EOT adaptive attack evaluation suite
Limitations
pixmask is a preprocessing defense layer, not a complete security solution:
- Typographic attacks (FigStep) embed readable text in images. Pixel-level preprocessing cannot stop this -- OCR-based detection is needed (planned for v0.3).
- Semantic content attacks where the image itself is harmful content require content moderation, not sanitization.
- Fully adaptive white-box adversaries who know the exact pipeline can theoretically bypass any preprocessing defense (Athalye et al., ICML 2018). pixmask is effective against the realistic non-adaptive threat model.
References
- Xu, Evans, Qi -- "Feature Squeezing: Detecting Adversarial Examples", NDSS 2018
- Guo et al. -- "Countering Adversarial Images via Input Transformations", ICLR 2018
- Das et al. -- "SHIELD: Fast, Practical Defense and Vaccination", KDD 2018
- Prakash et al. -- "Deflecting Adversarial Attacks with Pixel Deflection", CVPR 2018
- Qi et al. -- "Visual Adversarial Examples Jailbreak Aligned LLMs", AAAI 2024
- Gong et al. -- "FigStep: Jailbreaking VLMs via Typographic Prompts", AAAI 2025
- Athalye, Carlini, Wagner -- "Obfuscated Gradients Give a False Sense of Security", ICML 2018
- Quiring et al. -- "Adversarial Preprocessing: Image-Scaling Attacks", USENIX Security 2020
License
MIT
Metadata
Release files for pixmask 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pixmask-0.1.0.tar.gz | 433.3 kB | Without provenance | Details for pixmask-0.1.0.tar.gz |
Built distributions (wheels)
Total release size: 4.5 MB
Release files / pixmask-0.1.0.tar.gz
| Download URL | pixmask-0.1.0.tar.gz |
|---|---|
| Size | 433.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
14c9bf9409254df5b9ce7fe7a5b72ef6aabd6f39ddaad12a4c7f8b22e5dd0f00
|
|
BLAKE2b-256 checksum How to use checksums |
16623fa1167cb504246e211928ac2dc0567217d22655d31c9473dc08bd8d7d4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp313-cp313-win_amd64.whl
| Download URL | pixmask-0.1.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 93.0 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e0cbae6cf06bbb375a796e7d0fac23ebcc31cdc2d251776fc2eab6830ac164d7
|
|
BLAKE2b-256 checksum How to use checksums |
0078e6bb0a01b0643b3e1e393a50420ad311a22c92398b8a6bdb10095a77b39a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | pixmask-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 285.0 kB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
6591fea9916852a92889420cb4456a092fdf6b3185ea40a74fbcc710a1494a18
|
|
BLAKE2b-256 checksum How to use checksums |
490258f066dd3e57e493c0177cd84f77f89ce9c12a6e715a112ab63b11cd98b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pixmask-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 178.6 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
b84a44cf278f5ee1974694658390e19e00586bf7bbbc77954d9a0b405185188e
|
|
BLAKE2b-256 checksum How to use checksums |
500f6bb3700c0ec68d409ba8e4a0482c5c84979916393757a0d9eefb7e20a93e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | pixmask-0.1.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 118.5 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c347f2a1667f6e397cdbc49217ee9856387c826b3737cc5e216311bb9b23d478
|
|
BLAKE2b-256 checksum How to use checksums |
f487dce6fe415e3aa60fbbf4f5378b4d303592fed6fd7c015b5fc60baa3d8b83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl
| Download URL | pixmask-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl |
|---|---|
| Size | 137.0 kB |
| Tags | CPython 3.13 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
a3aae83c781cfe2662c0eeb3fe6eb823e761ff0c010ded2a4bb95b0682571216
|
|
BLAKE2b-256 checksum How to use checksums |
a488507fe291a9154a8778fc67e2c3526eb1ee7f8049df171ed79a48a260b0e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp312-cp312-win_amd64.whl
| Download URL | pixmask-0.1.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 93.1 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
93a0c4067bbb1974ec11ff4205e82d173d73aa7dfbd16629f1e5fa64b3279621
|
|
BLAKE2b-256 checksum How to use checksums |
76812a3d8e30d3d9a67eb32f8c83d508d86a8d2416e582c7d4b961f3c4d9fb38
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | pixmask-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 285.0 kB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
eae37bb5ef5976b6427dbd6ebe1dc915c3ef1acef72a2feffca5a859ccc8c132
|
|
BLAKE2b-256 checksum How to use checksums |
4b549ddef32960c3323582eed8851bc82335a7d50219ee18ad21eb5f20d8c75b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pixmask-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 178.6 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
de17d80a55dc67fe2c74d3db95c6471ddb32192e43060dd4088becbdc07e4548
|
|
BLAKE2b-256 checksum How to use checksums |
89c39750322fa015dd1088173e44dce16808c5be4dc68e3f8a339337295541ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pixmask-0.1.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 118.5 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
065f732438bc23d241bf5b060eae1699e59ad30f35e0ff12f4d3787c31184a20
|
|
BLAKE2b-256 checksum How to use checksums |
9c1fc5bf1b9f23064dafac2fe14ef370303648219a71d6df82366b93e8860dd1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl
| Download URL | pixmask-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl |
|---|---|
| Size | 137.0 kB |
| Tags | CPython 3.12 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
d6bb2129999a26c0a0b12062f9317d51436155d5ef102c9b3b15715a4f517e63
|
|
BLAKE2b-256 checksum How to use checksums |
d7f4a25f6dd48faa6b4ce645ad292bf8bebff7e0745b581807416886dda4e1c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp311-cp311-win_amd64.whl
| Download URL | pixmask-0.1.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 94.8 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
184e6c194765e5c86ea082abdc4e2aa71f179746c28733ddf0f98dfd7395bd87
|
|
BLAKE2b-256 checksum How to use checksums |
fea961cf4eafb4d29c2575ae766bc9c0d4819febfc3a1424371cb7b38e3781b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | pixmask-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 288.6 kB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
3d96c0c1bc699b14f93f5feaedee473eb0c5ff7193e09ef08d501fc602d70230
|
|
BLAKE2b-256 checksum How to use checksums |
a495167c0a006d87d1afbff68a8cde02c79f223ab612f0349ec51856d6adb379
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pixmask-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 182.1 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
87b296f2ce9a4e29fe168b548c41782a37f35e25bea1c890531b16e282e93a9a
|
|
BLAKE2b-256 checksum How to use checksums |
5a43e384423a54d23c0e57c2dd81220a463e7b021a84c27b9b7337e024e60a2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pixmask-0.1.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 120.2 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
79f765e8dfd41d5dca9f0c84cba17c0733123d67f7a9c059eac0b0d6bedc70a1
|
|
BLAKE2b-256 checksum How to use checksums |
0ba8230bbb206b4ba7f4ac7ab25c97967edef0159927504adf995ab8d2e089e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl
| Download URL | pixmask-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl |
|---|---|
| Size | 138.6 kB |
| Tags | CPython 3.11 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
6a632b90a623f33e1b9d0cf87c0ac9f05bcf9eccc7244ce2857136cb034a8261
|
|
BLAKE2b-256 checksum How to use checksums |
eeac2592ff50aee01ce669f6f8a1edb505d17a8f2a1839601075b7bfb40e6cc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp310-cp310-win_amd64.whl
| Download URL | pixmask-0.1.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 95.0 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d94ae3f449f930bcfb008e895672dff5a5b186dc6d8d95cb9a24f61bd9601b27
|
|
BLAKE2b-256 checksum How to use checksums |
4072f0d2a7d9876064e1ae6ee38dc4da3b04e0d563dda762c06876c0d098e662
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | pixmask-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 288.7 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
e355c0b90da459d90d14e8c029861c56aabc853913b567c91481a5ebb0ba7bcf
|
|
BLAKE2b-256 checksum How to use checksums |
47e9ef531c9a121de86b360d5fb3c754f2ad2f95765d41922f2801b50bb7c96b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pixmask-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 182.2 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
0e0453c7a2359f349e518a1c8f1d47c6559fcecefd10d9b983be3bc95482bdbf
|
|
BLAKE2b-256 checksum How to use checksums |
ace9c0294402348a8a977404b2a92e9a2dd2947bd5b009d5de47ef3607fe37e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | pixmask-0.1.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 120.4 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a5528f3b8fd1cfc782e2d39c0dbad61bfc8cb720ad9e04b064404ca6ed4fccc8
|
|
BLAKE2b-256 checksum How to use checksums |
b26dac060a3b77fbe71e90a05c45aa27f491c5a045f838aa18614261a5f96b5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl
| Download URL | pixmask-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl |
|---|---|
| Size | 138.7 kB |
| Tags | CPython 3.10 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
47095168b0a8c072f7b32d6dd553e63cb495905e405d541ae62891f475d791b8
|
|
BLAKE2b-256 checksum How to use checksums |
abea9165f36813af2381e37927de294e49faf2fc8eb1af26f502a58eecf1a2f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp39-cp39-win_amd64.whl
| Download URL | pixmask-0.1.0-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 95.3 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1e046e4714f39fdb00f754f3a9a6d9d569bf07c80549529953bc68d1691fc602
|
|
BLAKE2b-256 checksum How to use checksums |
ce07d57b20000cf8b2b97fcca6a2b08298a965539ec00e895a7a3a574e750f62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
| Download URL | pixmask-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 288.8 kB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
0cf88d074ca11055f711f1fa139213b40841b5e470ba5f4b807b2305a7141226
|
|
BLAKE2b-256 checksum How to use checksums |
c2fc9192123f486d9c12d95ed3beda6dd10ebe9929afe793c8aa6889aa4bc920
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pixmask-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 182.3 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
78e60b9f6e8e44677ad8d2a7ff64a3d5af1be79c6c8bc22d82fbf95bea04873d
|
|
BLAKE2b-256 checksum How to use checksums |
b495805528e42962fe134fcb7f37a2d36005885d6457a276fc2bac29393ddaf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | pixmask-0.1.0-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 120.4 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1efbf4d9ee4a72ccd79c8adaeafd0856a14f76aa58bf6a4cc298d100458aac56
|
|
BLAKE2b-256 checksum How to use checksums |
58138599957460469c3f25c8af83d208dcfab05e472fc5a52774b9fa4e49a882
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pixmask-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl
| Download URL | pixmask-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl |
|---|---|
| Size | 138.8 kB |
| Tags | CPython 3.9 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
302cbbdaf6708fdaddaaaee54691fc1e2910124ffbba37d6e36725816270fc59
|
|
BLAKE2b-256 checksum How to use checksums |
4e2c9d8512a31a03661e7cd322c886d0fbc0f91ef80618190cfa05ffa0c8a246
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for pixmask 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.