Fast image sanitization for multimodal LLMs
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pixmask-0.1.0.tar.gz.
File metadata
- Download URL: pixmask-0.1.0.tar.gz
- Upload date:
- Size: 433.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14c9bf9409254df5b9ce7fe7a5b72ef6aabd6f39ddaad12a4c7f8b22e5dd0f00
|
|
| MD5 |
df5ad7f6fd6aa0aee430e4c0d4214689
|
|
| BLAKE2b-256 |
16623fa1167cb504246e211928ac2dc0567217d22655d31c9473dc08bd8d7d4d
|
File details
Details for the file pixmask-0.1.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 93.0 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0cbae6cf06bbb375a796e7d0fac23ebcc31cdc2d251776fc2eab6830ac164d7
|
|
| MD5 |
c5dc745589d80ef33fd9a1f7d8fac01e
|
|
| BLAKE2b-256 |
0078e6bb0a01b0643b3e1e393a50420ad311a22c92398b8a6bdb10095a77b39a
|
File details
Details for the file pixmask-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 285.0 kB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6591fea9916852a92889420cb4456a092fdf6b3185ea40a74fbcc710a1494a18
|
|
| MD5 |
8a04eb542636c7f82deaf367601a8795
|
|
| BLAKE2b-256 |
490258f066dd3e57e493c0177cd84f77f89ce9c12a6e715a112ab63b11cd98b9
|
File details
Details for the file pixmask-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 178.6 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b84a44cf278f5ee1974694658390e19e00586bf7bbbc77954d9a0b405185188e
|
|
| MD5 |
9f6d8202c0b97b0ff36f1911d805991a
|
|
| BLAKE2b-256 |
500f6bb3700c0ec68d409ba8e4a0482c5c84979916393757a0d9eefb7e20a93e
|
File details
Details for the file pixmask-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 118.5 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c347f2a1667f6e397cdbc49217ee9856387c826b3737cc5e216311bb9b23d478
|
|
| MD5 |
ae709c17475872b3ba69eef61049aed7
|
|
| BLAKE2b-256 |
f487dce6fe415e3aa60fbbf4f5378b4d303592fed6fd7c015b5fc60baa3d8b83
|
File details
Details for the file pixmask-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl
- Upload date:
- Size: 137.0 kB
- Tags: CPython 3.13, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3aae83c781cfe2662c0eeb3fe6eb823e761ff0c010ded2a4bb95b0682571216
|
|
| MD5 |
686e15ece373a444e492a9b61618786c
|
|
| BLAKE2b-256 |
a488507fe291a9154a8778fc67e2c3526eb1ee7f8049df171ed79a48a260b0e3
|
File details
Details for the file pixmask-0.1.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 93.1 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93a0c4067bbb1974ec11ff4205e82d173d73aa7dfbd16629f1e5fa64b3279621
|
|
| MD5 |
de9a0496282ac2a5c549aa1eef4553eb
|
|
| BLAKE2b-256 |
76812a3d8e30d3d9a67eb32f8c83d508d86a8d2416e582c7d4b961f3c4d9fb38
|
File details
Details for the file pixmask-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 285.0 kB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eae37bb5ef5976b6427dbd6ebe1dc915c3ef1acef72a2feffca5a859ccc8c132
|
|
| MD5 |
a06f8a7439dd103d1b5f4b7b48a7036c
|
|
| BLAKE2b-256 |
4b549ddef32960c3323582eed8851bc82335a7d50219ee18ad21eb5f20d8c75b
|
File details
Details for the file pixmask-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 178.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de17d80a55dc67fe2c74d3db95c6471ddb32192e43060dd4088becbdc07e4548
|
|
| MD5 |
1007e8b0294c929140e2131ad3e58441
|
|
| BLAKE2b-256 |
89c39750322fa015dd1088173e44dce16808c5be4dc68e3f8a339337295541ce
|
File details
Details for the file pixmask-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 118.5 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
065f732438bc23d241bf5b060eae1699e59ad30f35e0ff12f4d3787c31184a20
|
|
| MD5 |
83ae6c422d094d36640d18b1dd0244f4
|
|
| BLAKE2b-256 |
9c1fc5bf1b9f23064dafac2fe14ef370303648219a71d6df82366b93e8860dd1
|
File details
Details for the file pixmask-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl
- Upload date:
- Size: 137.0 kB
- Tags: CPython 3.12, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6bb2129999a26c0a0b12062f9317d51436155d5ef102c9b3b15715a4f517e63
|
|
| MD5 |
08a5c9cbb95d00b26c4e6c4981a18d28
|
|
| BLAKE2b-256 |
d7f4a25f6dd48faa6b4ce645ad292bf8bebff7e0745b581807416886dda4e1c6
|
File details
Details for the file pixmask-0.1.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 94.8 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
184e6c194765e5c86ea082abdc4e2aa71f179746c28733ddf0f98dfd7395bd87
|
|
| MD5 |
ba7769ca231790d63ad17f7fbe60015c
|
|
| BLAKE2b-256 |
fea961cf4eafb4d29c2575ae766bc9c0d4819febfc3a1424371cb7b38e3781b6
|
File details
Details for the file pixmask-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 288.6 kB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d96c0c1bc699b14f93f5feaedee473eb0c5ff7193e09ef08d501fc602d70230
|
|
| MD5 |
da36ea5f479915137324a249676d7a23
|
|
| BLAKE2b-256 |
a495167c0a006d87d1afbff68a8cde02c79f223ab612f0349ec51856d6adb379
|
File details
Details for the file pixmask-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 182.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87b296f2ce9a4e29fe168b548c41782a37f35e25bea1c890531b16e282e93a9a
|
|
| MD5 |
597eb82f4176c051c070ce4b2649c8da
|
|
| BLAKE2b-256 |
5a43e384423a54d23c0e57c2dd81220a463e7b021a84c27b9b7337e024e60a2a
|
File details
Details for the file pixmask-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 120.2 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79f765e8dfd41d5dca9f0c84cba17c0733123d67f7a9c059eac0b0d6bedc70a1
|
|
| MD5 |
a686d48d86b3b011e470e95599f26cae
|
|
| BLAKE2b-256 |
0ba8230bbb206b4ba7f4ac7ab25c97967edef0159927504adf995ab8d2e089e4
|
File details
Details for the file pixmask-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl
- Upload date:
- Size: 138.6 kB
- Tags: CPython 3.11, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a632b90a623f33e1b9d0cf87c0ac9f05bcf9eccc7244ce2857136cb034a8261
|
|
| MD5 |
332de07dd51e9a3202e39f75179bdd2c
|
|
| BLAKE2b-256 |
eeac2592ff50aee01ce669f6f8a1edb505d17a8f2a1839601075b7bfb40e6cc1
|
File details
Details for the file pixmask-0.1.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 95.0 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d94ae3f449f930bcfb008e895672dff5a5b186dc6d8d95cb9a24f61bd9601b27
|
|
| MD5 |
fba729e06b6ef4fcf6ef532e92150298
|
|
| BLAKE2b-256 |
4072f0d2a7d9876064e1ae6ee38dc4da3b04e0d563dda762c06876c0d098e662
|
File details
Details for the file pixmask-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 288.7 kB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e355c0b90da459d90d14e8c029861c56aabc853913b567c91481a5ebb0ba7bcf
|
|
| MD5 |
a0f012c34f69fc13c771d05240971d60
|
|
| BLAKE2b-256 |
47e9ef531c9a121de86b360d5fb3c754f2ad2f95765d41922f2801b50bb7c96b
|
File details
Details for the file pixmask-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 182.2 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e0453c7a2359f349e518a1c8f1d47c6559fcecefd10d9b983be3bc95482bdbf
|
|
| MD5 |
1d96fd7a33d24866b488a2e560a5a9a6
|
|
| BLAKE2b-256 |
ace9c0294402348a8a977404b2a92e9a2dd2947bd5b009d5de47ef3607fe37e5
|
File details
Details for the file pixmask-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 120.4 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5528f3b8fd1cfc782e2d39c0dbad61bfc8cb720ad9e04b064404ca6ed4fccc8
|
|
| MD5 |
b36718fb418a6d8459c84306671a6f2b
|
|
| BLAKE2b-256 |
b26dac060a3b77fbe71e90a05c45aa27f491c5a045f838aa18614261a5f96b5e
|
File details
Details for the file pixmask-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl
- Upload date:
- Size: 138.7 kB
- Tags: CPython 3.10, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47095168b0a8c072f7b32d6dd553e63cb495905e405d541ae62891f475d791b8
|
|
| MD5 |
d37547d69c08d161eef2dd87bf17bd7b
|
|
| BLAKE2b-256 |
abea9165f36813af2381e37927de294e49faf2fc8eb1af26f502a58eecf1a2f9
|
File details
Details for the file pixmask-0.1.0-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 95.3 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e046e4714f39fdb00f754f3a9a6d9d569bf07c80549529953bc68d1691fc602
|
|
| MD5 |
3bc553affc935095d24403ff7c6e5481
|
|
| BLAKE2b-256 |
ce07d57b20000cf8b2b97fcca6a2b08298a965539ec00e895a7a3a574e750f62
|
File details
Details for the file pixmask-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 288.8 kB
- Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cf88d074ca11055f711f1fa139213b40841b5e470ba5f4b807b2305a7141226
|
|
| MD5 |
a560ff688d9b6ce836b42295eab4e7a1
|
|
| BLAKE2b-256 |
c2fc9192123f486d9c12d95ed3beda6dd10ebe9929afe793c8aa6889aa4bc920
|
File details
Details for the file pixmask-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 182.3 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78e60b9f6e8e44677ad8d2a7ff64a3d5af1be79c6c8bc22d82fbf95bea04873d
|
|
| MD5 |
f195cb10fac30771a4f0539558f43404
|
|
| BLAKE2b-256 |
b495805528e42962fe134fcb7f37a2d36005885d6457a276fc2bac29393ddaf9
|
File details
Details for the file pixmask-0.1.0-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 120.4 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1efbf4d9ee4a72ccd79c8adaeafd0856a14f76aa58bf6a4cc298d100458aac56
|
|
| MD5 |
6668af755552cb9eae6a2215ab846865
|
|
| BLAKE2b-256 |
58138599957460469c3f25c8af83d208dcfab05e472fc5a52774b9fa4e49a882
|
File details
Details for the file pixmask-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl.
File metadata
- Download URL: pixmask-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl
- Upload date:
- Size: 138.8 kB
- Tags: CPython 3.9, macOS 10.14+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
302cbbdaf6708fdaddaaaee54691fc1e2910124ffbba37d6e36725816270fc59
|
|
| MD5 |
21ba00cfa250e1e45cdf8e9e393e4efc
|
|
| BLAKE2b-256 |
4e2c9d8512a31a03661e7cd322c886d0fbc0f91ef80618190cfa05ffa0c8a246
|