Skip to main content

A performant web native pixel delivery pipeline for diverse sources, blending VNC-inspired parallel processing of pixel buffers with flexible modern encoding formats.

Project description

pixelflux

PyPI version License: MPL 2.0

A performant web native pixel delivery pipeline for diverse sources, blending VNC-inspired parallel processing of pixel buffers with flexible modern encoding formats.

This module provides a Python interface to a high-performance C++ capture library. It captures pixel data from a source (currently X11 screen regions), detects changes, and encodes modified stripes into JPEG or H.264. It supports CPU-based encoding (libx264, libjpeg-turbo) as well as hardware-accelerated H.264 encoding via NVIDIA's NVENC and VA-API for Intel/AMD GPUs. The resulting data is delivered efficiently to your Python application via a callback mechanism.

Installation

This module relies on a native C++ extension that is compiled during installation.

  1. Prerequisites (for Debian/Ubuntu): Ensure you have a C++ compiler (g++) and development files for Python, X11, Xfixes, XShm, libjpeg-turbo, and libx264. These are required for the base software encoding functionality.

    sudo apt-get update && \
    sudo apt-get install -y \
      g++ \
      libdrm-dev \
      libjpeg-turbo8-dev \
      libva-dev \
      libx11-dev \
      libx264-dev \
      libxext-dev \
      libxfixes-dev \
      libyuv-dev \
      python3-dev
    
  2. Hardware Acceleration (Optional but Recommended):

    • NVIDIA (NVENC): No extra packages are needed at compile time. If you have the NVIDIA driver installed, the library will be detected and used automatically at runtime.
    • Intel/AMD (VA-API): The libva-dev and libdrm-dev packages listed above are sufficient for compilation. Ensure you have the correct VA-API drivers for your hardware installed (e.g., intel-media-va-driver-non-free for Intel, mesa-va-drivers for AMD).
  3. Install the Package: You can install directly from PyPI or from a local source clone.

    Option A: Install from PyPI

    pip install pixelflux
    

    Option B: Install from a local source directory

    # From the root of the project repository
    pip install .
    

    Note: The current backend is designed and tested for Linux/X11 environments.

Usage

Capture Settings

The CaptureSettings class allows for detailed configuration of the capture process.

# All attributes of the CaptureSettings object are standard ctypes properties.
settings = CaptureSettings()

# --- Core Capture ---
settings.capture_width = 1920
settings.capture_height = 1080
settings.capture_x = 0
settings.capture_y = 0
settings.target_fps = 60.0
settings.capture_cursor = True

# --- Encoding Mode ---
# 0 for JPEG, 1 for H.264
settings.output_mode = 1

# --- JPEG Settings ---
settings.jpeg_quality = 75              # Quality for changed stripes (0-100)
settings.paint_over_jpeg_quality = 90   # Quality for static "paint-over" stripes (0-100)

# --- H.264 Settings ---
settings.h264_crf = 23                  # CRF value (0-51, lower is better quality/higher bitrate)
settings.h264_fullcolor = False         # Use I444 (full color) instead of I420 for software encoding
settings.h264_fullframe = True          # Encode full frames (required for HW accel) instead of just changed stripes

# --- Hardware Acceleration ---
# Set to >= 0 to enable VA-API on a specific /dev/dri/renderD* node.
# Set to -1 to disable VA-API and let the system try NVENC if available.
settings.vaapi_render_node_index = -1

# --- Change Detection & Optimization ---
settings.use_paint_over_quality = True  # Enable paint-over/IDR requests for static regions
settings.paint_over_trigger_frames = 15 # Frames of no motion to trigger paint-over
settings.damage_block_threshold = 10    # Consecutive changes to trigger "damaged" state
settings.damage_block_duration = 30     # Frames a stripe stays "damaged"

# --- Watermarking ---
# Must be a bytes object. The path to your PNG image.
settings.watermark_path = b"/path/to/your/watermark.png" 
# 0:None, 1:TopLeft, 2:TopRight, 3:BottomLeft, 4:BottomRight, 5:Middle, 6:Animated
settings.watermark_location_enum = 4 

Stripe Callback and Data Structure

Your callback function receives a ctypes.POINTER(StripeEncodeResult). You must access its fields via the .contents attribute.

The StripeEncodeResult struct has the following fields:

# This is an illustrative Python representation of the C++ struct.
class StripeEncodeResult(ctypes.Structure):
    _fields_ = [
        ("type", ctypes.c_int),             # 1 for JPEG, 2 for H.264
        ("stripe_y_start", ctypes.c_int),
        ("stripe_height", ctypes.c_int),
        ("size", ctypes.c_int),             # The size of the data in bytes
        ("data", ctypes.POINTER(ctypes.c_ubyte)), # Pointer to the encoded data
        ("frame_id", ctypes.c_int),         # Frame counter for this stripe
    ]

Memory Management: The data pointed to by result.contents.data is valid only within the scope of your callback function. The C++ library automatically frees this memory after your callback returns. To use the data, you must copy it, for example by using ctypes.string_at(result.contents.data, result.contents.size).

Features

  • Efficient Pixel Capture: Leverages a native C++ module using XShm for optimized X11 screen capture performance.
  • Flexible Encoding Backends:
    • Software: libx264 (H.264) and libjpeg-turbo (JPEG).
    • Hardware: NVIDIA NVENC and VA-API (Intel, AMD).
  • Stripe-Based Processing: For software encoding, can divide the screen into horizontal stripes and process them in parallel across CPU cores.
  • Change Detection: Encodes only stripes that have changed (based on an XXH3 hash comparison) since the last frame, significantly reducing processing load and bandwidth for software encoding modes.
  • Dynamic Watermarking: Overlay a PNG image on the captured video. The watermark can be pinned to a corner, centered, or animated to bounce around the screen.
  • Dynamic Quality Optimizations:
    • Paint-Over for Static Regions: After a region remains static for paint_over_trigger_frames, it is resent at high quality (JPEG) or as a new IDR frame (H.264) to correct any compression artifacts.
    • Damage Throttling: For highly active regions, the system can temporarily reduce the frequency of change detection to save CPU cycles.
  • Direct Callback Mechanism: Provides encoded stripe data directly to your Python code for real-time processing or streaming.

Example: Real-time H.264 Streaming with WebSockets

A comprehensive example, screen_to_browser.py, is located in the example directory of this repository. This script demonstrates robust, real-time screen capture, H.264 encoding, and streaming via WebSockets. It sets up:

  • An asyncio-based WebSocket server to stream encoded H.264 frames.
  • An HTTP server to serve a client-side HTML page for viewing the stream.
  • The pixelflux module to perform the screen capture and encoding.

To run this example:

Note: This example assumes you are on a Linux host with a running X11 session.

  1. First, ensure you have the websockets library installed:

    pip install websockets
    
  2. Navigate to the example directory within the repository:

    cd example
    
  3. Execute the Python script:

    python3 screen_to_browser.py
    
  4. Open your web browser and go to the URL indicated by the script's output (usually http://localhost:9001) to view the live stream.

License

This project is licensed under the Mozilla Public License Version 2.0. A copy of the MPL 2.0 can be found at https://mozilla.org/MPL/2.0/.

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

pixelflux-1.2.7.tar.gz (200.9 kB view details)

Uploaded Source

Built Distributions

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

pixelflux-1.2.7-cp313-cp313-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pixelflux-1.2.7-cp313-cp313-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.2.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

pixelflux-1.2.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

pixelflux-1.2.7-cp312-cp312-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pixelflux-1.2.7-cp312-cp312-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.2.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

pixelflux-1.2.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

pixelflux-1.2.7-cp311-cp311-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pixelflux-1.2.7-cp311-cp311-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.2.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

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

pixelflux-1.2.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

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

pixelflux-1.2.7-cp310-cp310-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pixelflux-1.2.7-cp310-cp310-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.2.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.2.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pixelflux-1.2.7-cp39-cp39-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pixelflux-1.2.7-cp39-cp39-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.2.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.2.7-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pixelflux-1.2.7-cp38-cp38-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pixelflux-1.2.7-cp38-cp38-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.2.7-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pixelflux-1.2.7-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file pixelflux-1.2.7.tar.gz.

File metadata

  • Download URL: pixelflux-1.2.7.tar.gz
  • Upload date:
  • Size: 200.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for pixelflux-1.2.7.tar.gz
Algorithm Hash digest
SHA256 b228de84228feb6759633485c1680c9b4dc2dae97d4275944b18bf38ca0e2ccb
MD5 0b3d06e49a827530a1c2f7b1ac52fafd
BLAKE2b-256 570bbb78177a44e74c50476891cf3858af6f1ce4622bf3a492b1d9693db9415c

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 279d2dcdc2c212b0a9e1c335b98fce242f5dc621728c2a8ffc45f3ed922da77d
MD5 b69362e4ab6220a85db2e70f9ef4a9d3
BLAKE2b-256 ae022ee3184f203f627bec43279277d4193c367d8329518769cf359e39f3b97a

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5a7cc98aa95bfe02a08bdbc4e10a14e1973e3b82132deef4c970e82652d62b9b
MD5 18ba51cf478e3f187e6e7f541ca05222
BLAKE2b-256 bed91ab63f7aae6599eac609da26e297f4051075aed44e2a7d898d6ddf930376

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8e1eee571997adb87df77763fa97fa36f64165819204d4fa7b20f80b12527d7e
MD5 fa6efd65cbce212f074c126f4718e532
BLAKE2b-256 47064ffb42944d292cfc87beabc8e9cdf57f6ebe3d2063ad7373f4c479cced44

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 11c82ba414be77410559edd0c0cbe9b9b75245dc06e5fca0cf6346abd2367a8d
MD5 66b5a31501783175f9b16873b672fd72
BLAKE2b-256 5d567f3ad6158caecb19aa72a0ff28ba03036470f1bd50e3eca9ec8b34162f80

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 01598cdc1758f5aa782b2153a84ca0abca81af7b7d2bd09c2640c08a3594ce49
MD5 af442a7df4f991d838e300f408b947d8
BLAKE2b-256 18d29429125d27febb0a16c01221d254989c4aa43b46e5ac1d20ac2d35eb5fad

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 83e9c3039967d631a4c838e6abc8ead3eb26506a3bf89be252a42dd020a539d3
MD5 5be9ecd389ac55c7dc5fcb7049833552
BLAKE2b-256 ac71637bbc81868d915f8cf7d4b42ce291cba5edcb17e3b223cede3ed18d128c

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 facd915fa4738e59d6a656ad8ce6f8388a7536731d2a5a604f31b7772d8db787
MD5 bcf70469d3b14746cdada05c75545d8d
BLAKE2b-256 4be6d7e75bcc24af55ddcc53f79d687a2bdda2d4663514e455bb0c74f7be7675

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 da1f71c78209834d8fb92fe496972532a0eb3d4668ede6679023892fdfdf6b5c
MD5 2157a2683c05d49a3a435ec652332935
BLAKE2b-256 1bd6a230def3aa14e6f0aafab3401af7f5ce08e29d60d03ee4c92541e54fe130

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 21a75e5ca727bc7fa6bcaa6737ca97fde0feaf76f3c45edc11a7e485aa4f3406
MD5 04e9cc8f90a78407d1ceba48aead646e
BLAKE2b-256 f3cb1c7dc145e5ec8dbae193700d10d67237a8701bf54fbd15852ee5b899d320

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4fd048195ec3f617ed54eb5e73bbc180952a9a24c79f179ac1add76fdb4c204e
MD5 b5873bbf4965a5b4ed0db05f3c54e182
BLAKE2b-256 0a030d15d2f86c53e051ecc2296002b9ecdec02b001f28b803e40590e5238fc7

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 183784f8f0484e8d802d286e1cc6901219dda22d1c8b2a1417630d50a5ec2568
MD5 9102ddad1a30ecbb882e7c797bfec8b9
BLAKE2b-256 0f0bfd20c3772884d97618045d3a3031fe65f4b948af02ec4dc1399eb77a95eb

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bea029a33c74870e219a5f427fef4366033024e66f9a8b43e8386bec64950b2e
MD5 23d456c734d1eafde389f01f334b81cd
BLAKE2b-256 c1143b4e9061494b4ae28c52751941db2267a45fa057f2a4a73e1b177b3048c1

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2ab3956f2ed60cd30a7eea348ec86fe1f4b98be133e68bd232e7996b56493140
MD5 d00faa48f2612b767a12a09c47a32b9e
BLAKE2b-256 39f9bb0193ef54d52f26f0c10fe61980365a59f880379f4413051bc992c0edbd

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0d5ee57408f70a646a0acc781a9f276ad59511f088107eaf5f90a12910db9a46
MD5 0a804d8abe65acd7434908a497ba4f90
BLAKE2b-256 829bb4c0cd3ddcb9d3fed9f9b294e32d367d0b22ad230f91af1d8d331396270c

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09202bbb80eb34c305ceaafe01d596b3ef22c641fdc5b00a8fb182f193cb2d84
MD5 29abe0acb80c3911cc554e62379f90b0
BLAKE2b-256 078d2eca4755906e1f158de984d50f64adef2388d45b13e8897e6445dacb4b9d

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f8a47edccc2148f4dd4fc69b53d2607fafa35c32ef3dd31472f8dfe73ceca867
MD5 22d69e3e04bdbae3d81825072dd0476d
BLAKE2b-256 0faa987dc5e0af65a5aeefec34f538b7765bf14f49da749f0ffbbe74d705c11a

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 65be19950c240f0c6f96e00081aa049de26b0932fd3f2df231d3e1011af64b20
MD5 93f59364e28d31c5cbbf866d6a952b6e
BLAKE2b-256 76f0d66edac693dcbfac2e24e7b5306c8d2d0e7563af97d8ae0947b1516337b9

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 497d580ea3b57cb89abaeb32617458780ee23d16cce8b0eb129a5c0608da47b9
MD5 41e59a928837cb569cc74cae8c90fe37
BLAKE2b-256 281bc01482d17f15bf14105fe9c51d73ba8f57d37b9320d76da2ee8b9787e7e9

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d3dab4c33091e525140ab853ccc78dcbd2d90be27b8214b6104bfe745b49eee9
MD5 1815a826c5814233d667b70b904590c5
BLAKE2b-256 0d652ee83932c029ae2c556eb2cd51e5061d6e30a756e2a0d1a8d5b09b57a805

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 67d13c88019073b8402fe557d0b4d45ab351aee1eec281556cc080753bc6cd1d
MD5 33084f01280274bb5a264d97803cf2a6
BLAKE2b-256 1e7ce24f45ab7b543b544e8213791d9f0be4b4232582e2d126a622b7e2f404c3

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b864c94cf763143ec51b4d2a0bd2a9eb2ebefa1ab8b0b7aebeb7d709229ad8c2
MD5 606d6269214bf8cc773d600660e2f949
BLAKE2b-256 7dd190f2b9043b5106ebbe2737b80541778675388d14609ad8fbf1b6095c76f8

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0614ea7663c544eaa19c2a05a501d118c6e30649e83de58fb09b5944048002f6
MD5 dbdaae07a4d95f2ef4d46d637711c2d3
BLAKE2b-256 51940012340133db18b9339617a7efc37a45fe4a59616c2f36277504e221adfa

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 85952a669691b6f00c774f99dcea799dfffed77fbf913f4fd4dd496b12cab12a
MD5 def6fc5d212ef2294832994600eef514
BLAKE2b-256 4670d67a3d725733f5d710306eb9822a58700be0e00c4f63f79aeadc73cc5451

See more details on using hashes here.

File details

Details for the file pixelflux-1.2.7-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pixelflux-1.2.7-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f202320b0638a8fbdfc38ba00de90ed24decfb0ea59160bb33358a1955284b08
MD5 39f8d5313e6e771c7f27589fa28bea1c
BLAKE2b-256 ca3c2c9b33107d5e30e6862ab4c7b64ee298ae3ae7d8de8fcea2c12d905792da

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