Skip to main content

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 install just 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pixmask-0.1.0.tar.gz (433.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pixmask-0.1.0-cp313-cp313-win_amd64.whl (93.0 kB view details)

Uploaded CPython 3.13Windows x86-64

pixmask-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (285.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pixmask-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (178.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pixmask-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (118.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pixmask-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl (137.0 kB view details)

Uploaded CPython 3.13macOS 10.14+ x86-64

pixmask-0.1.0-cp312-cp312-win_amd64.whl (93.1 kB view details)

Uploaded CPython 3.12Windows x86-64

pixmask-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (285.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pixmask-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (178.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pixmask-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (118.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pixmask-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl (137.0 kB view details)

Uploaded CPython 3.12macOS 10.14+ x86-64

pixmask-0.1.0-cp311-cp311-win_amd64.whl (94.8 kB view details)

Uploaded CPython 3.11Windows x86-64

pixmask-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (288.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pixmask-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pixmask-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (120.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pixmask-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl (138.6 kB view details)

Uploaded CPython 3.11macOS 10.14+ x86-64

pixmask-0.1.0-cp310-cp310-win_amd64.whl (95.0 kB view details)

Uploaded CPython 3.10Windows x86-64

pixmask-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (288.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pixmask-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pixmask-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (120.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pixmask-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl (138.7 kB view details)

Uploaded CPython 3.10macOS 10.14+ x86-64

pixmask-0.1.0-cp39-cp39-win_amd64.whl (95.3 kB view details)

Uploaded CPython 3.9Windows x86-64

pixmask-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl (288.8 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pixmask-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pixmask-0.1.0-cp39-cp39-macosx_11_0_arm64.whl (120.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pixmask-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl (138.8 kB view details)

Uploaded CPython 3.9macOS 10.14+ x86-64

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

Hashes for pixmask-0.1.0.tar.gz
Algorithm Hash digest
SHA256 14c9bf9409254df5b9ce7fe7a5b72ef6aabd6f39ddaad12a4c7f8b22e5dd0f00
MD5 df5ad7f6fd6aa0aee430e4c0d4214689
BLAKE2b-256 16623fa1167cb504246e211928ac2dc0567217d22655d31c9473dc08bd8d7d4d

See more details on using hashes here.

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

Hashes for pixmask-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e0cbae6cf06bbb375a796e7d0fac23ebcc31cdc2d251776fc2eab6830ac164d7
MD5 c5dc745589d80ef33fd9a1f7d8fac01e
BLAKE2b-256 0078e6bb0a01b0643b3e1e393a50420ad311a22c92398b8a6bdb10095a77b39a

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6591fea9916852a92889420cb4456a092fdf6b3185ea40a74fbcc710a1494a18
MD5 8a04eb542636c7f82deaf367601a8795
BLAKE2b-256 490258f066dd3e57e493c0177cd84f77f89ce9c12a6e715a112ab63b11cd98b9

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b84a44cf278f5ee1974694658390e19e00586bf7bbbc77954d9a0b405185188e
MD5 9f6d8202c0b97b0ff36f1911d805991a
BLAKE2b-256 500f6bb3700c0ec68d409ba8e4a0482c5c84979916393757a0d9eefb7e20a93e

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c347f2a1667f6e397cdbc49217ee9856387c826b3737cc5e216311bb9b23d478
MD5 ae709c17475872b3ba69eef61049aed7
BLAKE2b-256 f487dce6fe415e3aa60fbbf4f5378b4d303592fed6fd7c015b5fc60baa3d8b83

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 a3aae83c781cfe2662c0eeb3fe6eb823e761ff0c010ded2a4bb95b0682571216
MD5 686e15ece373a444e492a9b61618786c
BLAKE2b-256 a488507fe291a9154a8778fc67e2c3526eb1ee7f8049df171ed79a48a260b0e3

See more details on using hashes here.

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

Hashes for pixmask-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 93a0c4067bbb1974ec11ff4205e82d173d73aa7dfbd16629f1e5fa64b3279621
MD5 de9a0496282ac2a5c549aa1eef4553eb
BLAKE2b-256 76812a3d8e30d3d9a67eb32f8c83d508d86a8d2416e582c7d4b961f3c4d9fb38

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eae37bb5ef5976b6427dbd6ebe1dc915c3ef1acef72a2feffca5a859ccc8c132
MD5 a06f8a7439dd103d1b5f4b7b48a7036c
BLAKE2b-256 4b549ddef32960c3323582eed8851bc82335a7d50219ee18ad21eb5f20d8c75b

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de17d80a55dc67fe2c74d3db95c6471ddb32192e43060dd4088becbdc07e4548
MD5 1007e8b0294c929140e2131ad3e58441
BLAKE2b-256 89c39750322fa015dd1088173e44dce16808c5be4dc68e3f8a339337295541ce

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 065f732438bc23d241bf5b060eae1699e59ad30f35e0ff12f4d3787c31184a20
MD5 83ae6c422d094d36640d18b1dd0244f4
BLAKE2b-256 9c1fc5bf1b9f23064dafac2fe14ef370303648219a71d6df82366b93e8860dd1

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 d6bb2129999a26c0a0b12062f9317d51436155d5ef102c9b3b15715a4f517e63
MD5 08a5c9cbb95d00b26c4e6c4981a18d28
BLAKE2b-256 d7f4a25f6dd48faa6b4ce645ad292bf8bebff7e0745b581807416886dda4e1c6

See more details on using hashes here.

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

Hashes for pixmask-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 184e6c194765e5c86ea082abdc4e2aa71f179746c28733ddf0f98dfd7395bd87
MD5 ba7769ca231790d63ad17f7fbe60015c
BLAKE2b-256 fea961cf4eafb4d29c2575ae766bc9c0d4819febfc3a1424371cb7b38e3781b6

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3d96c0c1bc699b14f93f5feaedee473eb0c5ff7193e09ef08d501fc602d70230
MD5 da36ea5f479915137324a249676d7a23
BLAKE2b-256 a495167c0a006d87d1afbff68a8cde02c79f223ab612f0349ec51856d6adb379

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87b296f2ce9a4e29fe168b548c41782a37f35e25bea1c890531b16e282e93a9a
MD5 597eb82f4176c051c070ce4b2649c8da
BLAKE2b-256 5a43e384423a54d23c0e57c2dd81220a463e7b021a84c27b9b7337e024e60a2a

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79f765e8dfd41d5dca9f0c84cba17c0733123d67f7a9c059eac0b0d6bedc70a1
MD5 a686d48d86b3b011e470e95599f26cae
BLAKE2b-256 0ba8230bbb206b4ba7f4ac7ab25c97967edef0159927504adf995ab8d2e089e4

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 6a632b90a623f33e1b9d0cf87c0ac9f05bcf9eccc7244ce2857136cb034a8261
MD5 332de07dd51e9a3202e39f75179bdd2c
BLAKE2b-256 eeac2592ff50aee01ce669f6f8a1edb505d17a8f2a1839601075b7bfb40e6cc1

See more details on using hashes here.

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

Hashes for pixmask-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d94ae3f449f930bcfb008e895672dff5a5b186dc6d8d95cb9a24f61bd9601b27
MD5 fba729e06b6ef4fcf6ef532e92150298
BLAKE2b-256 4072f0d2a7d9876064e1ae6ee38dc4da3b04e0d563dda762c06876c0d098e662

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e355c0b90da459d90d14e8c029861c56aabc853913b567c91481a5ebb0ba7bcf
MD5 a0f012c34f69fc13c771d05240971d60
BLAKE2b-256 47e9ef531c9a121de86b360d5fb3c754f2ad2f95765d41922f2801b50bb7c96b

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e0453c7a2359f349e518a1c8f1d47c6559fcecefd10d9b983be3bc95482bdbf
MD5 1d96fd7a33d24866b488a2e560a5a9a6
BLAKE2b-256 ace9c0294402348a8a977404b2a92e9a2dd2947bd5b009d5de47ef3607fe37e5

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a5528f3b8fd1cfc782e2d39c0dbad61bfc8cb720ad9e04b064404ca6ed4fccc8
MD5 b36718fb418a6d8459c84306671a6f2b
BLAKE2b-256 b26dac060a3b77fbe71e90a05c45aa27f491c5a045f838aa18614261a5f96b5e

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 47095168b0a8c072f7b32d6dd553e63cb495905e405d541ae62891f475d791b8
MD5 d37547d69c08d161eef2dd87bf17bd7b
BLAKE2b-256 abea9165f36813af2381e37927de294e49faf2fc8eb1af26f502a58eecf1a2f9

See more details on using hashes here.

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

Hashes for pixmask-0.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1e046e4714f39fdb00f754f3a9a6d9d569bf07c80549529953bc68d1691fc602
MD5 3bc553affc935095d24403ff7c6e5481
BLAKE2b-256 ce07d57b20000cf8b2b97fcca6a2b08298a965539ec00e895a7a3a574e750f62

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0cf88d074ca11055f711f1fa139213b40841b5e470ba5f4b807b2305a7141226
MD5 a560ff688d9b6ce836b42295eab4e7a1
BLAKE2b-256 c2fc9192123f486d9c12d95ed3beda6dd10ebe9929afe793c8aa6889aa4bc920

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78e60b9f6e8e44677ad8d2a7ff64a3d5af1be79c6c8bc22d82fbf95bea04873d
MD5 f195cb10fac30771a4f0539558f43404
BLAKE2b-256 b495805528e42962fe134fcb7f37a2d36005885d6457a276fc2bac29393ddaf9

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1efbf4d9ee4a72ccd79c8adaeafd0856a14f76aa58bf6a4cc298d100458aac56
MD5 6668af755552cb9eae6a2215ab846865
BLAKE2b-256 58138599957460469c3f25c8af83d208dcfab05e472fc5a52774b9fa4e49a882

See more details on using hashes here.

File details

Details for the file pixmask-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for pixmask-0.1.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 302cbbdaf6708fdaddaaaee54691fc1e2910124ffbba37d6e36725816270fc59
MD5 21ba00cfa250e1e45cdf8e9e393e4efc
BLAKE2b-256 4e2c9d8512a31a03661e7cd322c886d0fbc0f91ef80618190cfa05ffa0c8a246

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page