Skip to main content

ZenGL

pip install zengl

ZenGL

ZenGL is a low level graphics library. Works on all platforms including the browser.

Description

  • Context is the root object to access OpenGL
  • Image is an OpenGL Texture or Renderbuffer
  • Buffer is an OpenGL Buffer
  • Pipeline is an OpenGL Program + Vertex Array + Framebuffer + complete state for rendering
ctx = zengl.context()
texture = ctx.image(size, 'rgba8unorm', pixels)
renderbuffer = ctx.image(size, 'rgba8unorm', samples=4)
vertex_buffer = ctx.buffer(vertices)
pipeline = ctx.pipeline(...)

The complete OpenGL state is encapsulated by the Pipeline.

Rendering with multiple pipelines guarantees proper state with minimal changes and api calls.

background.render()
scene.render()
particles.render()
bloom.render()

Pipelines render to framebuffers, Images can be blit to the screen.

# init time
pipeline = ctx.pipeline(
    framebuffer=[image, depth],
)
# per frame
image.clear()
depth.clear()
pipeline.render()
image.blit()

Programs are simple, easy, and cached. Unique shader sources are only compiled once.

pipeline = ctx.pipeline(
    vertex_shader='''
        #version 330 core

        void main() {
            gl_Position = ...
        }
    ''',
    fragment_shader='''
        #version 330 core

        out vec4 frag_color;

        void main() {
            frag_color = ...
        }
    ''',
)

Vertex Arrays are simple.

# simple
pipeline = ctx.pipeline(
    vertex_buffers=zengl.bind(vertex_buffer, '3f 3f 2f', 0, 1, 2),
    vertex_count=vertex_buffer.size // zengl.calcsize('3f 3f 2f'),
)
# indexed
pipeline = ctx.pipeline(
    vertex_buffers=zengl.bind(vertex_buffer, '3f 3f 2f', 0, 1, 2),
    index_buffer=index_buffer,
    vertex_count=index_buffer.size // 4,
)
# instanced
pipeline = ctx.pipeline(
    vertex_buffers=[
        *zengl.bind(vertex_buffer, '3f 3f 2f', 0, 1, 2),
        *zengl.bind(instance_buffer, '3f 4f /i', 3, 4),
    ],
    vertex_count=vertex_buffer.size // zengl.calcsize('3f 3f 2f'),
    instance_count=1000,
)

Uniform Buffer, Texture, and Sampler binding is easy.

# uniform buffers
pipeline = ctx.pipeline(
    layout=[
        {
            'name': 'Common',
            'binding': 0,
        },
    ],
    resources=[
        {
            'type': 'uniform_buffer',
            'binding': 0,
            'buffer': uniform_buffer,
        },
    ],
)
# textures
pipeline = ctx.pipeline(
    layout=[
        {
            'name': 'Texture',
            'binding': 0,
        },
    ],
    resources=[
        {
            'type': 'sampler',
            'binding': 0,
            'image': texture,
            'wrap_x': 'clamp_to_edge',
            'wrap_y': 'clamp_to_edge',
            'min_filter': 'nearest',
            'mag_filter': 'nearest',
        },
    ],
)

Postprocessing and Compute can be implemented as rendering a fullscreen quad.

pipeline = ctx.pipeline(
    vertex_shader='''
        #version 330 core

        vec2 vertices[3] = vec2[](
            vec2(-1.0, -1.0),
            vec2(3.0, -1.0),
            vec2(-1.0, 3.0)
        );

        void main() {
            gl_Position = vec4(vertices[gl_VertexID], 0.0, 1.0);
        }
    ''',
    fragment_shader='''
        #version 330 core

        out vec4 frag_color;

        void main() {
            frag_color = ...
        }
    ''',
    topology='triangles',
    vertex_count=3,
)
particle_system = ctx.pipeline(
    vertex_shader=...,
    fragment_shader='''
        #version 330 core

        uniform sampler2D Position;
        uniform sampler2D Velocity;
        uniform vec3 Acceleration;

        layout (location = 0) out vec3 OutputPosition;
        layout (location = 1) out vec3 OutputVelocity;

        void main() {
            ivec2 at = ivec2(gl_FragCoord.xy);
            vec3 position = texelFetch(Position, at, 0).xyz;
            vec3 velocity = texelFetch(Velocity, at, 0).xyz;
            OutputPosition = position + velocity;
            OutputVelocity = velocity + Acceleration;
        }
    ''',
)

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

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.

Disambiguation

  • ZenGL is a drop-in replacement for pure OpenGL code
  • Using ZenGL requires some OpenGL knowledge
  • ZenGL Images are OpenGL Texture Objects or Renderbuffer Objects
  • ZenGL Buffers are OpenGL Buffer Objects
  • ZenGL Pipelines contain an OpenGL Vertex Array Object, a Program Object, and a Framebuffer Object
  • ZenGL Pipelines 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

Browse and try the examples in your browser at the live playground.

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

Metadata

Release files for zengl 2.7.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zengl 2.7.3
File Size Uploaded
zengl-2.7.3.tar.gz 55.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for zengl 2.7.3
File
zengl-2.7.3-cp315-cp315t-win_amd64.whl CPython 3.15 CPython 3.15 free-threading Windows x86-64 Details
zengl-2.7.3-cp315-cp315t-musllinux_1_2_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ x86-64 Details
zengl-2.7.3-cp315-cp315t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
zengl-2.7.3-cp315-cp315t-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64 Details
zengl-2.7.3-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
zengl-2.7.3-cp315-cp315-musllinux_1_2_x86_64.whl CPython 3.15 CPython 3.15 Linux musl 1.2+ x86-64 Details
zengl-2.7.3-cp315-cp315-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
zengl-2.7.3-cp315-cp315-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 macOS 11.0+ ARM64 Details
zengl-2.7.3-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
zengl-2.7.3-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
zengl-2.7.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details
zengl-2.7.3-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
zengl-2.7.3-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
zengl-2.7.3-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
zengl-2.7.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
zengl-2.7.3-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
zengl-2.7.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
zengl-2.7.3-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
zengl-2.7.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details
zengl-2.7.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
zengl-2.7.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
zengl-2.7.3-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
zengl-2.7.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
zengl-2.7.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
zengl-2.7.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
zengl-2.7.3-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
zengl-2.7.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details
zengl-2.7.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
zengl-2.7.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
zengl-2.7.3-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
zengl-2.7.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details
zengl-2.7.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 3.1 MB

Release files / zengl-2.7.3.tar.gz

Download URL zengl-2.7.3.tar.gz
Size 55.6 kB
Tags Source
SHA-256 checksum
How to use checksums
1c748c90989e9989dc256b0c3a70e53d271a4aba7546f42221c0f21227e17d9c
BLAKE2b-256 checksum
How to use checksums
a89bc2b8cfa5a127c5a3b658bfcc31c1aee8182003f96f1e45711457e6a54d96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp315-cp315t-win_amd64.whl

Download URL zengl-2.7.3-cp315-cp315t-win_amd64.whl
Size 49.1 kB
Tags CPython 3.15 CPython 3.15 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
16cc9109ff0a8bc7ea10f0953ee948f3dd4cdeffa9a91161687bef0007713141
BLAKE2b-256 checksum
How to use checksums
40f3e62550c6c97eaf6cd9d684ad9290e1e9844c95178469c25ced465231cb53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp315-cp315t-musllinux_1_2_x86_64.whl

Download URL zengl-2.7.3-cp315-cp315t-musllinux_1_2_x86_64.whl
Size 162.5 kB
Tags CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a5792c08da9a511b0c354b65517ca3da03b09338f07f2c5d96265d03f127dc5b
BLAKE2b-256 checksum
How to use checksums
c31dd5692a7244c6c89ff8d86486dd63e722effd48da77933979cd4addc70dfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp315-cp315t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL zengl-2.7.3-cp315-cp315t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 165.0 kB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
96b338bba34be740f6276b6b10def7ca1360b0a12afadba3d882c53a34c3c82e
BLAKE2b-256 checksum
How to use checksums
07a9e518dc6d2d1dd70a7a9b8ae0d9e346ce686979293ef7f8d6b9e7712e7603
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp315-cp315t-macosx_11_0_arm64.whl

Download URL zengl-2.7.3-cp315-cp315t-macosx_11_0_arm64.whl
Size 46.7 kB
Tags CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9f1efd4357c5f60c9acf6b8aa785be9801e7b538207e7d2f5c5a2704d328ffe0
BLAKE2b-256 checksum
How to use checksums
67a925c672bba2bcf25afd3e741c5ab87dd72d9526d8749b97a330b033b4fc0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp315-cp315-win_amd64.whl

Download URL zengl-2.7.3-cp315-cp315-win_amd64.whl
Size 48.4 kB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
69344035f35f79f62a2c20c78be2f87952c305aa25a9bf9035a1139bcaba6edb
BLAKE2b-256 checksum
How to use checksums
038b6f028eb049a4251cd2787df4d6975009bafd2f2c5075fa3c136b2e28b942
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp315-cp315-musllinux_1_2_x86_64.whl

Download URL zengl-2.7.3-cp315-cp315-musllinux_1_2_x86_64.whl
Size 140.2 kB
Tags CPython 3.15 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f32e06aba96ccaacdfd7314880bbff853b90af21b08cfc04d9d21abd14424b80
BLAKE2b-256 checksum
How to use checksums
102630748cd76fa07b514c368acb342fceb733ae98f7321807b59540986c5ea3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp315-cp315-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL zengl-2.7.3-cp315-cp315-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 141.5 kB
Tags CPython 3.15 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
8ad2974fdf47f3bfd768d98b21bde18c7d2fcfa46d7937504e395886134fccc0
BLAKE2b-256 checksum
How to use checksums
e2fe1acfbd2872d3b2a08d908d7ce83cd8dcde3a040226923dac21c3333c7b63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp315-cp315-macosx_11_0_arm64.whl

Download URL zengl-2.7.3-cp315-cp315-macosx_11_0_arm64.whl
Size 45.7 kB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
435219aae3d61a6c7ed09ba6099208d3c4e5c091bd27956843be2795f115b83f
BLAKE2b-256 checksum
How to use checksums
46ba1caa15b210a101c0eaea8e645695dbb6e348ed586fcd326361ea1afa2791
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp314-cp314t-win_amd64.whl

Download URL zengl-2.7.3-cp314-cp314t-win_amd64.whl
Size 49.1 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
1b151acf5778559965bbf77276d46968c3a522924c236b9f69787c2c3c371dc1
BLAKE2b-256 checksum
How to use checksums
5162ce75ee2289dd4ce5435a948305bfd6c42ac2a9a64605e6ebeec5e4e2dff5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL zengl-2.7.3-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 162.5 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
5b76156137067bcd0325c4cbba565892cd364b0c0f46c52882c4bdca01cda8af
BLAKE2b-256 checksum
How to use checksums
5a55d50ee49c399f1310ee46d68adc40452083271542ca31ce601abc4c819df8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL zengl-2.7.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 165.1 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
d3d66f87d3b20f2e5072a49c5cc214a41b2fdebed6222aada5b13d134f6935b6
BLAKE2b-256 checksum
How to use checksums
f9f7f411103de7ebbf5b1152441d48164356ed325b65170573ecad80eb71f4a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp314-cp314t-macosx_11_0_arm64.whl

Download URL zengl-2.7.3-cp314-cp314t-macosx_11_0_arm64.whl
Size 46.7 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e7c7eff1bfb18596e4a3cc604ba1b05812c6f2c9dacc8777968323e695287c8a
BLAKE2b-256 checksum
How to use checksums
fa86fa891629a6b640f8cde4bd1404ccc67a8cc3181ba77a20a96f5248b953c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp314-cp314-win_amd64.whl

Download URL zengl-2.7.3-cp314-cp314-win_amd64.whl
Size 48.4 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
fbbffb3a09b1319e351d2b34d911f77c8aa35b7a445e85711a8bb3290e869c26
BLAKE2b-256 checksum
How to use checksums
d263551a16dbbdaaff9984f65d984625b7475ea435a00c5288ab7100c61b8ad9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL zengl-2.7.3-cp314-cp314-musllinux_1_2_x86_64.whl
Size 140.2 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
b32365282b50c9d1d29ecb6136dbf649447f64bf9d88310fe61f2d17978b3899
BLAKE2b-256 checksum
How to use checksums
c9584ea95b95505d13a0a472223c98a413d67a4021e4d79d00671990633756e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL zengl-2.7.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 141.4 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
8da4265fbedb95003b5789164dd188c229bc4993cbf1a594ad0649bb38fea518
BLAKE2b-256 checksum
How to use checksums
92f11a756fdbe53c0c2d49caff054068c5d22f70e42c8cd535dfed87a595fc51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp314-cp314-macosx_11_0_arm64.whl

Download URL zengl-2.7.3-cp314-cp314-macosx_11_0_arm64.whl
Size 45.7 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
be1c32e5a57e0a40e94060434bcee0db4e36e1cd22a99874e8f0e792c5a4a357
BLAKE2b-256 checksum
How to use checksums
b62bcaadd88dcb1ca44bf69c95fca767f913ff46202b95e2335ec9e88af31826
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp313-cp313-win_amd64.whl

Download URL zengl-2.7.3-cp313-cp313-win_amd64.whl
Size 47.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
952b9ccfaf543ee6033d9770396b61a2334acf15fea3f373753cee3f0ad9e46e
BLAKE2b-256 checksum
How to use checksums
597b54465424c277b27c4aab83c9c96eea36ed4400c582b02c1056c983d850a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL zengl-2.7.3-cp313-cp313-musllinux_1_2_x86_64.whl
Size 140.7 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
98cd2c2008354159122eb438b2fa945e0c4ea1b37623a565aae09ecd99491883
BLAKE2b-256 checksum
How to use checksums
a8aff1bfdb10db7c49eaeefdeb8a544b4b3c1954936e3f07bba610c810b4154a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL zengl-2.7.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 142.0 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
25a875f1ce8af903d3f633702ff0ed9d2d23f79689d1fac8918120927a60e528
BLAKE2b-256 checksum
How to use checksums
9748159e0c345f74e4fff275f392dc42205a6aceabaaccaa60fff3260bd4ab50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp313-cp313-macosx_11_0_arm64.whl

Download URL zengl-2.7.3-cp313-cp313-macosx_11_0_arm64.whl
Size 45.7 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
25c8362c1c896fb46042994d470f82940ee3efd2d0bc4ba6a2d9a6ee7fe8f35a
BLAKE2b-256 checksum
How to use checksums
6bb505a52e93dfeeff32c76f76cb8b645c6dd62f41d6248b5de1a4adb7477a8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp312-cp312-win_amd64.whl

Download URL zengl-2.7.3-cp312-cp312-win_amd64.whl
Size 47.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6c932bd20f2fba1313866686889041ba4d6bdb222bd03c7ea940b59346eac77f
BLAKE2b-256 checksum
How to use checksums
eb36245c94e61391a9e37ec4176269f2b9aff99a4ce401c5625529ee3cb701d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL zengl-2.7.3-cp312-cp312-musllinux_1_2_x86_64.whl
Size 140.7 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f473c1d636cdd5220c6e0471d53b33cab0ccfc29e17f7729f637d71f2fa9745b
BLAKE2b-256 checksum
How to use checksums
674836da976e1dc0a9cbc3d480e515158fa06f5b863b3a286e3f0786ba637a48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL zengl-2.7.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 141.9 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
b51cf55e10e0c99e3f74604f5b4a7d151bc139f77efa2cb6f21685068b6ffb49
BLAKE2b-256 checksum
How to use checksums
a459bdc110f3e99410cacf9f41ee8de7c4c8252eb702e53b67a2ab75e8b1cf20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp312-cp312-macosx_11_0_arm64.whl

Download URL zengl-2.7.3-cp312-cp312-macosx_11_0_arm64.whl
Size 45.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f1de4f84b85c6673c994b2498f8c0abaed40ff24df0ed4c453b0b31355ad30f8
BLAKE2b-256 checksum
How to use checksums
6388f08cfe4a7bda21828dc2d622649ec87dc998bbdd0a41233ed9873b3dfa6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp311-cp311-win_amd64.whl

Download URL zengl-2.7.3-cp311-cp311-win_amd64.whl
Size 47.0 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
6cc6fd3c4b8d62dcc89ec72d763537aa9ffd38a98bb0a769f41c29dbc758f026
BLAKE2b-256 checksum
How to use checksums
2205792eb6936dd543deaa47f3968cbfbceabd76b2317e6ba3bb03249002b131
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL zengl-2.7.3-cp311-cp311-musllinux_1_2_x86_64.whl
Size 135.8 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
b72ba1ce130432b20d1d8fccc8cd741abe115a91a9c5dfc7519b83fa0e64d88d
BLAKE2b-256 checksum
How to use checksums
f97f939a848493b38e62d32db16c52258d4b220a379c04a48970b897924d6cc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL zengl-2.7.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 137.0 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
a8851f5dbee1569d226f79cdd3c957e6fd86a366cd98c25effd2325b6bee609d
BLAKE2b-256 checksum
How to use checksums
f2140c2d3107fbab4988ab810289cacb26f14933e96d1fefa432f1f8db1836a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp311-cp311-macosx_11_0_arm64.whl

Download URL zengl-2.7.3-cp311-cp311-macosx_11_0_arm64.whl
Size 45.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
56f599e3c53f5d54481f76c7581c76d2da1a1f2b4f908393dc3870e110c904fb
BLAKE2b-256 checksum
How to use checksums
120a23f2916bef3cf0ae86b2bbbf4410bfba70ff78753dce801a840d196cfdd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp310-cp310-win_amd64.whl

Download URL zengl-2.7.3-cp310-cp310-win_amd64.whl
Size 47.0 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
54a70a54d67057d3d52f3fecb24fa50020ee33bcff65ef98eb9bfac60545640c
BLAKE2b-256 checksum
How to use checksums
be8528bd273f5b84349979ffaf5eb64b83d5ba06fc6994e79742a4669fd32fe6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL zengl-2.7.3-cp310-cp310-musllinux_1_2_x86_64.whl
Size 134.8 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
2572b9ce3c6fad5300456d13f7b28c68489d9732b875123cf1c8c6016cc9ce74
BLAKE2b-256 checksum
How to use checksums
1b68dc0d2b8ec344c720e891e7af09c686ba771d132a85227dc36354cad4a11b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL zengl-2.7.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 136.0 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
ae62247f73dea1145a4ccd0af66b36594d6886aaf5d7cc9b628884bca14a6f0d
BLAKE2b-256 checksum
How to use checksums
4c149edaaaa7fe2a220b7f748221071251fcf5a670a9fc9deb4af99b73292839
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / zengl-2.7.3-cp310-cp310-macosx_11_0_arm64.whl

Download URL zengl-2.7.3-cp310-cp310-macosx_11_0_arm64.whl
Size 45.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f58f9526730e6266581e21cdb051acd173e62556d87672a59976ce8d2d9e94ac
BLAKE2b-256 checksum
How to use checksums
3b276133a7826cca62a210003904522d01292cb03920c447f546cae5eeb120aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

2.7.3 This release

33 release files

2.7.2

31 release files

2.6.1

21 release files

2.5.5

21 release files

2.5.3

55 release files

2.5.0

33 release files

2.4.1

33 release files

2.3.0

29 release files

2.2.1

66 release files

2.1.0

66 release files

1.9.2

55 release files

1.9.0

48 release files

1.8.3

48 release files

1.8.2

48 release files

1.8.1

48 release files

1.8.0

48 release files

1.6.1

1 release file

1.6.0

1 release file

1.5.0

40 release files

1.4.3

40 release files

1.4.2

40 release files

1.4.1

40 release files

1.4.0

40 release files

1.2.2

40 release files

1.2.0

24 release files

1.1.0

24 release files

1.0.1

24 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page