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.5.tar.gz (200.6 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.5-cp313-cp313-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pixelflux-1.2.5-cp313-cp313-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pixelflux-1.2.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.5-cp312-cp312-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pixelflux-1.2.5-cp312-cp312-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pixelflux-1.2.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.5-cp311-cp311-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pixelflux-1.2.5-cp311-cp311-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pixelflux-1.2.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.5-cp310-cp310-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pixelflux-1.2.5-cp310-cp310-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pixelflux-1.2.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.5-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.5-cp39-cp39-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pixelflux-1.2.5-cp39-cp39-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

pixelflux-1.2.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.5-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

pixelflux-1.2.5-cp38-cp38-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pixelflux-1.2.5-cp38-cp38-musllinux_1_2_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

pixelflux-1.2.5-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

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

pixelflux-1.2.5-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

File details

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

File metadata

  • Download URL: pixelflux-1.2.5.tar.gz
  • Upload date:
  • Size: 200.6 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.5.tar.gz
Algorithm Hash digest
SHA256 f9342f27f873faf6b6bf3fb2befe6ce3b36c9fd8ba08ab58444fc972f7d1563d
MD5 95e0e066aa6c5e15a3cf21f64416fc48
BLAKE2b-256 d3fb06b5fd241947c400f0a7fbe350e593b637fe6f4a08305536feb0dca4cd51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cc0300025e7dc6de1706a136e7b61e8ed56b23f6b2980b804ab3e8a822c526d6
MD5 90332559a8bc862eda3f46f059755413
BLAKE2b-256 1c586fe0205c22d9358adac8b740545ae209777cedce9ffacc22e42eb9b1ab1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6520528442fc73645f46f0b64be51e58420855963320ca138ddbac6d2213f297
MD5 01eec1153ed4a6812b501d6aa94198bf
BLAKE2b-256 6083647cb1b2ef6e0ea151f253f99067bc899dbd3c66d3d07c102a70dfb4e613

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e48b210379c6f5137fc9a7580702ef171599d6470c0072e9fdc077461a997663
MD5 9b062b43c841a84b76bf24c57837a806
BLAKE2b-256 ae007784fecdc78a66efef5ffbc06886982472032c256eecbe8393f4fef00924

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 95c28141ac5e861399ad6c20279d37487aef8291636634fe8e29fda40df13e54
MD5 218aa6f9e03ad96d0f56f6407fcd2b72
BLAKE2b-256 722e2c08de2a3d87732cd3c7bddda039939f6822d8bdc0e17651f25df0679156

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c2486cfeb2a9da64733bc13dc5444241f29e07c4043569caf21037e867dd4d98
MD5 7d0de6e4e0df44f05e73fee4550d0c78
BLAKE2b-256 b4c7c70df6b049695de4a5bba58c8dd7a4ced54152a30e7c12ec24e28965412c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8564898876d35e94bfd9a79c4a648906a690c20c9f190b1dd9bd2e620f7e5177
MD5 dd69b1afcf5c07c5758ee411ecc78e93
BLAKE2b-256 c3fcc14993ac4d2cb4f1815731e15383e18f9088190ef279b7498c6f388660ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7baa0f579a822d558a0b16112ee4a0155cad75a7bbd96f7442eca677e179ccbd
MD5 04382cf475d27a1aec52c2f6bf99f9a2
BLAKE2b-256 d1e9d9540b16a85094e12ef389923e1c4c451181e24aa62e521e32d1e91a4de0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8394d8e39e76e5e67ac5c187291a238059ff687d6d6b1da0f2f1de1b9fbfb339
MD5 4595db45d0c611fca10c45339ff62352
BLAKE2b-256 3b08af74d7d26854facad8eb25a334288cd287fb059e5f365f1f331f0c5f1b50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e07d9cc74d66baea43112dec20d351f0428d34ae155fcca0a0c78ab8a6b4acc4
MD5 3f9450e6fb97d396dec092d4fc2c4d78
BLAKE2b-256 22958b7e0bf9a073de515acdf81912002fb17e7ea43b58fc70746a049f2a39d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b5b273bc67ddcd96c2da6e9d0d603350e1389325236530e0e8032d50159ba6ed
MD5 09a8da3f9463c27250cef52620465772
BLAKE2b-256 e2be978eec96ce9085d56b803fea53db937d0f5da86acf55cad91fca6848cc69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9f354800be710b5e3b357645438e7e2340fe81f821f23f4bd2c571024f6d7698
MD5 5e4f0d6306105b378b66199b5eab9ac7
BLAKE2b-256 cd7c5ca25f7ce0980bd70efa81b1e5edd41714553b1ea66dcb22ffde3d075e0d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d4394c5f4d166b32bc638c58a00454b70b1be6d5b3ae463ebd5ec9b5293b715d
MD5 115ae0058665765dc29e2a8ba28daa25
BLAKE2b-256 ba14abc0c741a1d179c0f6d5cbec586344bc81d441c706df15cc3f41933fb2ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 03874ce6035d721d4221e28c08fa8936e147cdf27ae61e5705374dd86b14f92e
MD5 90550aa90eda6e8c3e4b8b689998658f
BLAKE2b-256 8c2a10bc57ee610d4c1a1dc7f7df5de069532ca5b79d6574dbcdf06db57baf9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1b8468facc7a0e8fb4652dcbe98e779c02ca92dc077c4d2fe3566fcf190b98fd
MD5 8fb6b18382c2816b7028ec262b2c80db
BLAKE2b-256 4e6780d8c3a036264b10e532b3801a9b0fb710cb246fd0fcf78e43db42176fe1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d8730cfc0c743f516629ea0ba3202cfdc17782337a672af2e223bd776ec127e5
MD5 4dbb78e5228b96aba2e3e3d8e4d910e1
BLAKE2b-256 c3da303b9e932897e530b69fc905fcaafc834750c0b796e3345cb3bccb367bf0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 19b908fa1a73df536b619a25310230744bbbd3230595a62af2eaaddee41c1ac2
MD5 85733e6ac1baa54c85e1366d21b28026
BLAKE2b-256 d73cd6f2aa3fc2adbb4dda19bea0dfadba37f012f38598fb1b05f1d22231188a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4705a61e3b48e89602a5c7b465bdcc7ed65904dd13904a5270fab4b19fde4774
MD5 a0d0650a2573b7dd15533ade902b6dc1
BLAKE2b-256 872b49157e9fef8fc81551cd1e44e13144ec37ce23f0b7e2a54c539e2aaf677c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0ceafe96af629e3f897f0942a7b37f895ab1c9411731069cf6e1ef83e20cef5a
MD5 75bae3692ddae805239434315cef574d
BLAKE2b-256 86838e3cdfd98240a4fb1846fe009140fddaf8aae3c6340769b1379bc03bd989

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2c8c50afdd307af66cc7c044a063edb1435edf841ee828c541c19f56aed56090
MD5 0885364a2edfabd55f6765a84ee75db4
BLAKE2b-256 b6c17c3e49a0544502c658f373641d0b77c9a06c607b74cafc18790385da47cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f695fae3e1fa6ad897491957406d04aecde73bf77a444f772469eb453ff4faa1
MD5 24445cb41d4258a5ae2e0ca2cbfd68bd
BLAKE2b-256 2ffe699f96b3934b08454cd901b0a010078d8100ed406621c3f5fa89d0f780e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 935110b0139af8562fb236f7b2b744da00c5922a17cef34c07a32fac6bb3fcbe
MD5 f579fa6818c6e0a99530b7e8f3a68ae1
BLAKE2b-256 fa7e0af658046bbd6bf39da71cb28a32dac85652d8eb1f815623a20fc93141bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 808963f3e3b1be39c51d8643411e51ae8315da7f5adac6ff44e5fd81c7d3b074
MD5 b5fb2b873b59e9325cf7c14e06b4d007
BLAKE2b-256 9c86856721f50f455115bba4fd41ba24e3f002cc97e3700f18ae1d196704399b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f96caa6d76bea1ac496f96edbfa6a91ca446518f1eb6b993d512c5efe117478b
MD5 a5e5a464dacd48c151695d2f893a045b
BLAKE2b-256 8723ba67351fc4235b618f33000d130fbe5132161c7fad79d6adf4309a0bdba7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixelflux-1.2.5-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b75c1b8dc21de581f281997930975f03e18a38b33093512dd74ce6cca473672f
MD5 ced7c06b1c3bc41a741b0e56c13204e9
BLAKE2b-256 ca57e21ae4ce0ba17b729d2d7d7f94985cb9fc58fd79f94536b6c4f0d0620946

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