Skip to main content

Self-Contained OpenGL Rendering Pipelines for Python

Project description

ZenGL

ZenGL

pip install zengl

Concept

ZenGL is a low level graphics library.

  • ZenGL turns OpenGL into Vulkan like Rendering Pipelines
  • ZenGL uses OpenGL 3.3 Core and OpenGL 3.0 ES - runs everywhere
  • ZenGL provides a developer friendly experience in protyping complex scenes

ZenGL emerged from an experimental version of ModernGL. To keep ModernGL backward compatible, ZenGL was re-designed from the ground-up to support a strict subset of OpenGL. On the other hand, ModernGL supports a wide variety of OpenGL versions and extensions.

ZenGL is "ModernGL hard mode"

ZenGL intentionally does not support:

  • Transform Feedback
  • Geometry Shaders
  • Tesselation
  • Compute Shaders
  • 3D Textures
  • Storage Buffers

Most of the above can be implemented in a more hardware friendly way using the existing ZenGL API. Interoperability with other modules is also possible. Using such may reduce the application's portablity. It is even possible to use direct OpenGL calls together with ZenGL, however this is likely not necessary.

It is common to render directly to the screen with OpenGL. With ZenGL, the right way is to render to a framebuffer and blit the final image to the screen. This allows fine-grained control of the framebuffer format, guaranteed multisampling settings, correct depth/stencil precison. It is also possible to render directly to the screen, however this feature is designed to be used for the postprocessing step.

This design allows ZenGL to support:

  • Rendering without a window
  • Rendering to multiple windows
  • Rendering to HDR monitors
  • Refreshing the screen without re-rendering the scene
  • Apply post-processing without changing how the scene is rendered
  • Making reusable shaders and components
  • Taking screenshots or exporting a video

The default framebuffer in OpenGL is highly dependent on how the Window is created. It is often necessary to configure the Window to provide the proper depth precision, stencil buffer, multisampling and double buffering. Often the "best pixel format" lacks all of these features on purpose. ZenGL aims to allow choosing these pixel formats and ensures the user specifies the rendering requirements. It is even possible to render low-resolution images and upscale them for high-resolution monitors. Tearing can be easily prevented by decoupling the scene rendering from the screen updates.

ZenGL was designed for Prototyping

It is tempting to start a project with Vulkan, however even getting a simple scene rendered requires tremendous work and advanced tooling to compile shaders ahead of time. ZenGL provides self-contained Pipelines which can be easily ported to Vulkan. ZenGL code is verbose and easy to read.

ZenGL support multiple design patters

Many libraries enfore certain design patterns. ZenGL avoids this by providing cached pipeline creation, pipeline templating and lean resourece and framebuffer definition. It is supported to create pipelines on the fly or template them for certain use-cases.

TODO: examples for such patters

Disambiguation

  • ZenGL is a drop-in replacement for pure OpenGL code
  • Using ZenGL requires some OpenGL knowledge
  • ZenGL Images are OpenGL Texture Objects or OpenGL Renderbuffer Objects
  • ZenGL Buffers are OpenGL Buffer Objects
  • ZenGL Pipelines contain an OpenGL Vertex Array Object, an OpenGL Program Object, and an OpenGL Framebuffer Object
  • ZenGL Pielines may also contain OpenGL Sampler Objects
  • Creating ZenGL Pipelines does not necessarily compile the shader from source
  • The ZenGL Shader Cache exists independently from the Pipeline objects
  • A Framebuffer is always represented by a Python list of ZenGL Images
  • There is no Pipeline.clear() method, individual images must be cleared independently
  • GLSL Uniform Blocks and sampler2D objects are bound in the Pipeline layout
  • Textures and Uniform Buffers are bound in the Pipeline resources

Examples

bezier_curves deferred_rendering envmap fractal grass normal_mapping rigged_objects wireframe

Simple Pipeline Definition

pipeline = ctx.pipeline(
    # program definition
    vertex_shader='...',
    fragment_shader='...',
    layout=[
        {
            'name': 'Uniforms',
            'binding': 0,
        },
        {
            'name': 'Texture',
            'binding': 0,
        },
    ],

    # descriptor sets
    resources=[
        {
            'type': 'uniform_buffer',
            'binding': 0,
            'buffer': uniform_buffer,
        },
        {
            'type': 'sampler',
            'binding': 0,
            'image': texture,
        },
    ],

    # uniforms
    uniforms={
        'color': [0.0, 0.5, 1.0],
        'iterations': 10,
    },

    # program definition global state
    depth={
        'func': 'less',
        'write': False,
    },
    stencil={
        'front': {
            'fail_op': 'replace',
            'pass_op': 'replace',
            'depth_fail_op': 'replace',
            'compare_op': 'always',
            'compare_mask': 1,
            'write_mask': 1,
            'reference': 1,
        },
        'back': ...,
        # or
        'both': ...,
    },
    blend={
        'enable': True,
        'src_color': 'src_alpha',
        'dst_color': 'one_minus_src_alpha',
    },
    cull_face='back',
    topology='triangles',

    # framebuffer
    framebuffer=[color1, color2, ..., depth],
    viewport=(x, y, width, height),

    # vertex array
    vertex_buffers=[
        *zengl.bind(vertex_buffer, '3f 3f', 0, 1), # bound vertex attributes
        *zengl.bind(None, '2f', 2), # unused vertex attribute
    ],
    index_buffer=index_buffer, # or None
    short_index=False, # 2 or 4 byte intex
    vertex_count=...,
    instance_count=1,
    first_vertex=0,

    # override includes
    includes={
        'common': '...',
    },
)

# some members are actually mutable and calls no OpenGL functions
pipeline.viewport = ...
pipeline.vertex_count = ...
pipeline.uniforms['iterations'][:] = struct.pack('i', 50) # writable memoryview

# rendering
pipeline.render() # no parameters for hot code

Download files

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

Source Distribution

zengl-2.4.0.tar.gz (54.7 kB view details)

Uploaded Source

Built Distributions

zengl-2.4.0-cp311-abi3-win_amd64.whl (47.4 kB view details)

Uploaded CPython 3.11+ Windows x86-64

zengl-2.4.0-cp311-abi3-win32.whl (40.5 kB view details)

Uploaded CPython 3.11+ Windows x86

zengl-2.4.0-cp311-abi3-musllinux_1_1_x86_64.whl (134.1 kB view details)

Uploaded CPython 3.11+ musllinux: musl 1.1+ x86-64

zengl-2.4.0-cp311-abi3-musllinux_1_1_i686.whl (123.8 kB view details)

Uploaded CPython 3.11+ musllinux: musl 1.1+ i686

zengl-2.4.0-cp311-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (133.7 kB view details)

Uploaded CPython 3.11+ manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

zengl-2.4.0-cp311-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (123.1 kB view details)

Uploaded CPython 3.11+ manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

zengl-2.4.0-cp311-abi3-macosx_11_0_arm64.whl (44.6 kB view details)

Uploaded CPython 3.11+ macOS 11.0+ ARM64

zengl-2.4.0-cp311-abi3-macosx_10_9_x86_64.whl (47.1 kB view details)

Uploaded CPython 3.11+ macOS 10.9+ x86-64

zengl-2.4.0-cp310-cp310-win_amd64.whl (47.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

zengl-2.4.0-cp310-cp310-win32.whl (40.3 kB view details)

Uploaded CPython 3.10 Windows x86

zengl-2.4.0-cp310-cp310-musllinux_1_1_x86_64.whl (135.3 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

zengl-2.4.0-cp310-cp310-musllinux_1_1_i686.whl (125.8 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

zengl-2.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (131.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

zengl-2.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (122.2 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

zengl-2.4.0-cp310-cp310-macosx_11_0_arm64.whl (44.4 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

zengl-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl (47.0 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

zengl-2.4.0-cp39-cp39-win_amd64.whl (47.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

zengl-2.4.0-cp39-cp39-win32.whl (40.3 kB view details)

Uploaded CPython 3.9 Windows x86

zengl-2.4.0-cp39-cp39-musllinux_1_1_x86_64.whl (134.8 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

zengl-2.4.0-cp39-cp39-musllinux_1_1_i686.whl (125.3 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

zengl-2.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (131.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

zengl-2.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (121.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

zengl-2.4.0-cp39-cp39-macosx_11_0_arm64.whl (44.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

zengl-2.4.0-cp39-cp39-macosx_10_9_x86_64.whl (47.0 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

zengl-2.4.0-cp38-cp38-win_amd64.whl (47.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

zengl-2.4.0-cp38-cp38-win32.whl (40.3 kB view details)

Uploaded CPython 3.8 Windows x86

zengl-2.4.0-cp38-cp38-musllinux_1_1_x86_64.whl (139.6 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

zengl-2.4.0-cp38-cp38-musllinux_1_1_i686.whl (129.6 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

zengl-2.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (134.5 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

zengl-2.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (125.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

zengl-2.4.0-cp38-cp38-macosx_11_0_arm64.whl (44.4 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

zengl-2.4.0-cp38-cp38-macosx_10_9_x86_64.whl (47.0 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file zengl-2.4.0.tar.gz.

File metadata

  • Download URL: zengl-2.4.0.tar.gz
  • Upload date:
  • Size: 54.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0.tar.gz
Algorithm Hash digest
SHA256 e9c0350a552c68ce28a708872825ee80aabb136d2968d08dd0a98a03df215f11
MD5 6e29a2e7a334731f7c04653f504c65df
BLAKE2b-256 3b33b8da59378c6cc585831691bce449770804e124566500cdd178ebbcc27157

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: zengl-2.4.0-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 47.4 kB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4ee5ec889c153cc2349fcae66a13ca69f2ec842997acfa7edef30ea7634e5317
MD5 244e83b79e69489aa05a3fa56b3f9d29
BLAKE2b-256 87c5d7623f9577dd2245d9e9b7f9ae065b2227b299441d7d940d6d8cc414cba6

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp311-abi3-win32.whl.

File metadata

  • Download URL: zengl-2.4.0-cp311-abi3-win32.whl
  • Upload date:
  • Size: 40.5 kB
  • Tags: CPython 3.11+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 c2d4759f49d24399060da206fb478a0765987040eef34d157507f5278630b9a2
MD5 dbe1f7487ddd4dcaf6458fdc8ce72a79
BLAKE2b-256 db54d07078553bb5e48968945c576c5d2436d5eee78f39f1cdfec01b765ccabc

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp311-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp311-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f196dad9a60faa18a528f78101c3fffe7021baea122fe5e545bc50c779675acf
MD5 53300f16179d63741320edeef43d7da0
BLAKE2b-256 1b017eea05189741af8be2410e9d5a58af26230c97fa65afc9887846daa24d0b

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp311-abi3-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp311-abi3-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 d87ad0d49da64d5fe1b7af0759bed55b9b512af48156d23b911cf2673457c448
MD5 3df4f72d95394e657e20d85a635aee00
BLAKE2b-256 4edce233f070914c2ea1f7a17d4965a837fe9aa263a8ad38a189b60a1ab72b76

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp311-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp311-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c8923de163427c821afe159fa82f12c820296925d2bf70208467e09159aaae3
MD5 e0197072df1ff76543b00542c78e7009
BLAKE2b-256 801a0f782655badefb7bf9afb43f6fff2b46cd6c0a40a86ac1e8436a5bd6d767

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp311-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp311-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 709260508ad689b920b78cfbb9668ecea48747939fac755da241f03ffabe8ad6
MD5 4e8b173b2b51e6622bb97087d64bb9fb
BLAKE2b-256 a99e8b17eaefc90f2b9d8e1eb8cbd56cda9c78ba923767e812d58fd6ae2bad36

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ed3ae36f99d013fbe4f1feb9f610b57256f03fd31fe3279048d36bceae428f7f
MD5 7e840a178883bbd7b7ed362b4bcb6cd4
BLAKE2b-256 db8aeb7dac1cd0165637245072004559a4f0497edfc908ed0582ed8769a16669

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp311-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp311-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 aabca8b379e26365bdbb0327ca63c7efa6f784180cb214bfedac35f9b8a59eb1
MD5 dcf68d6f5037d44d4c93e7b608da7893
BLAKE2b-256 e5e9a384be9f46c34f1992261a2d8354195d35fe8ef9ee26bec42ebb34eef724

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: zengl-2.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 47.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 63dbbda4a1c775969b6a120947fe2bf4e59714e6d3e65e47add022775648065a
MD5 ea2aac129253cc41e673365e2e3f559d
BLAKE2b-256 c89f40c5980e4ee69478232d3d34c98db63b55e791c6a81ccb3c75a72a19bf24

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: zengl-2.4.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 40.3 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 003de6c1cfed3508638414c7cb3ba6086706b585f59d7d8f16e26312054d0b03
MD5 825bdf8e8e2b9f946ad878b6a61dde3d
BLAKE2b-256 799bd58491058cf76a697f31731b6a0315e133ecd78d989dd609d732505c4d71

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 6371ae1926ce5cb3f5313a51b361bc6fdc44cb46f2c7c516365e329a5cbaa04b
MD5 73d6b8418261a18c51c25362abb0e57f
BLAKE2b-256 a857f944499b003a98f4de82a328d619f78ea3be8660cc54df1ab5cda66d6bb8

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 dd992de430774e852370127bf4e97368988f99553b355bb3296d0384f2988c48
MD5 1178f0f7166e52f46ca4a6ee0a95b4e0
BLAKE2b-256 f21c57cd37374bee6211109eff319ad409f747f30a1956c2c832b106e866d7a1

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 da47d758c0df306c2580167c03effb20e593f1899c86fa295bbcd928a698a9a6
MD5 36ecb46cc686ba8080acafb6df2f7405
BLAKE2b-256 777f6378d3f8c5ccfa8679aea6538f2b467cc7f81c320676780829ab3a4e5e66

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 cfe7108729315bb5ca085a78b3c86b4bc1a37e8d427836c34df2b9009621215f
MD5 b24a046256680ac9fece6bb683f85173
BLAKE2b-256 451dcf626c59b725b6bbfc985e339a42d0c9549c7df067a8bb20f1d0e5886046

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a74fc8345c9addb6fe824a562b2a1695acf0bea45a73ae1f13003b5e35b703db
MD5 8beeeb59f34153aafd72d05fcf5853ec
BLAKE2b-256 f2560690bacc917a37a062e0b4af7181448f4e668501950a4c2d3d68bd869631

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 90a84d98f7361748c4639b37b3c7aa6d46e51bf73a385bef36df218e0451ba1e
MD5 df581f5c2456c6840b2a58264d0e7183
BLAKE2b-256 d7453b1f5b9df1e50e72e8a38ffa5cce221502a72362d3238746761957b3019e

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: zengl-2.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 47.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 7dc76afbfc81c8555c8d04f0170db389c593ce1ee440fdcc5b61e802a28fce0e
MD5 aa7ff8bdcf82ff67047b8d7203508aa6
BLAKE2b-256 8c401ec56930ebd412dc5dd900c2bce0fa5bb2fec2400cb28adfcc971944f4bf

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp39-cp39-win32.whl.

File metadata

  • Download URL: zengl-2.4.0-cp39-cp39-win32.whl
  • Upload date:
  • Size: 40.3 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 4efc9e719475fcd6d90d7eaa0ce0e44d2a88a97a2d9f3edcb223e6375094cdb3
MD5 527fb8ab3dbf3defeb7ecdcfb3524b29
BLAKE2b-256 43a5dcca0021eaca2e7045f6f76164d8fe4a7ee4e839d3e7e8e7e1570f678678

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 db93189169a4cb151fb305a574a766d3cf9e146d5b18c2b40df61bbfe12a3104
MD5 04561c84a9a2f50660a2d22a0acfee26
BLAKE2b-256 5fffde4ec94621eba31de17d16a0dc52abeed6f69823e115a52be62959f131a0

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 2bbe7af0d45c330c08c7457380af6004cfb9023cc9ea14d8964a6fde6d321df6
MD5 4338b6fa0c0c651fb1dd12c8cad2cab3
BLAKE2b-256 cfc3ad3edbb071f2a246f8aa3ec3f3848eeaed4b0222c652e4fe21b28677e46b

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 46b9f3e7f2c785e3a6ef8b83a7c1d964162141b3023aafbfdb20926a8ee9b03c
MD5 8bc35e5746e9c94ef175627b1f1762f5
BLAKE2b-256 2f77bb609727e2333f4d66bc118d89f288521c347c0ac629d7718137e502d6fe

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 98d8dafbe8bb6c5276d7c8a4c567f2dcfed7c892bfdd0a8531aaaaa2570a79ae
MD5 9fca9ccf9645a254e0c764c5b1d49b0a
BLAKE2b-256 0b01ac5ad554575f61b04fe845b5bdaf0291c9d4d3f6de679af348d175ef9086

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e8adf97e649d3b2432707d2b7f1687a38ef907d2006247aa7d4eab601e96271a
MD5 c8db1fb8794092e8d0f866e7fb8cb371
BLAKE2b-256 5e6211a50ece683039a7dd743b02b22b54d8ca62d0406200f45d1eda7a1fe5d2

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e4b2bad7a38cf6d635da4c51ec7e0fa1ca040b30daf02d98ea25ce35e7679223
MD5 5e902495a6b93fd5b6cc57896ab9814c
BLAKE2b-256 13f88221cad65a6189bfa5f1c2b3f5142f0ed77cfb7a15d493d9a963d4bfe3d9

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: zengl-2.4.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 47.2 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 092ec8e1c6368088993d60af5c927eb98408d4e37ebbe7a1bdbfbf20ba1756e8
MD5 273379c1fc51f61e02383e7a9427e89c
BLAKE2b-256 df42e047928cd7e50632a03f57a0083b17045454992174a7e6accf448d82c2b9

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp38-cp38-win32.whl.

File metadata

  • Download URL: zengl-2.4.0-cp38-cp38-win32.whl
  • Upload date:
  • Size: 40.3 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for zengl-2.4.0-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 2dd5cf5ba111df1d7a4db33eda26afc79085de9241474b308a2874d25324a003
MD5 04435330b1fdc67fc6afde6ac304a84b
BLAKE2b-256 1a9d54962b3824a7eaf7409ce0c4d9bb97fb79d31fe80806151b94bbb7b07b5a

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 99e5ad89bd657d8a4bd2895132d2561b50a172e72748bf8b01b08954742ba1a2
MD5 bc8eb9dbadcf075430ee2c5e7f31964d
BLAKE2b-256 1f07c35d16cd9a599720d69bae05f9f2ec37ef28c97acf824dce1bce77eb275e

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 b9c39004ea8af8651097f8e02ab913a47b552096777cebaa3ca4221db6d69f80
MD5 36e75fc6e7dd0ca0aa8c0673db37f598
BLAKE2b-256 3d1e0aa044be717ab5a0b5cb61a15532e655656d6cef199f5cffa9fb3bd0b78c

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f48e8802256053330d237c0773666c4669740531a70236cfa4dbe14ba63a5de1
MD5 81afeffa9e631fece2181e8e7087a6e6
BLAKE2b-256 38208e7716220cb5159e46ce61f726edbe3387e0dce09b36a977caf24f8bf39f

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b82cf3918468e25f21b3f0c766481809d2b380f737194cefaf1a86ddf3a360a3
MD5 a3d112baae46e2e03ad8667ee3ede64c
BLAKE2b-256 9aa7d6e42810093b8251177d89721d187ae19d968d7d08ff784ce619a66ef533

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba68ac64f4ba09adf9e4687072ba6789412151c966d2f4682bb9d7d3e6178104
MD5 2642cdb15b3cd1c83821ad8e90c7d230
BLAKE2b-256 89008413a66b40cde05e37f0db51cd8d6bb3e28441ea0ebda08a5c4a15891de5

See more details on using hashes here.

Provenance

File details

Details for the file zengl-2.4.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for zengl-2.4.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 148cff414691d8ef49b13ead72b4526615ac88220e3859e9d90b75a0796c4512
MD5 70d159fc3c58da33277827a42bac1150
BLAKE2b-256 4817f2b09ad9cbe1de6e28a9c239a08b2dc43c1b75b59ed00e5736bf3503c1bf

See more details on using hashes here.

Provenance

Supported by

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