Skip to main content

Hardware-accelerated DOM-based UI & 2D Game Engine

Project description

Doodle Engine

Hardware-Accelerated Hybrid C-Python UI & 2D Game Engine

Build games, creative tools, and interactive apps using HTML-like layouts, CSS styling, and Python scripting โ€” all rendered natively on the GPU.


Doodle is a high-performance, lightweight engine that combines a native C rendering core (powered by Raylib) with a highly reactive Python scripting layer. Instead of embedding a browser, Doodle parses HTML-like templates and CSS stylesheets in a single pass, mapping them directly to GPU-accelerated graphics, procedural audio, and real-time collision systems.

โœจ Key Features

Category Features
Rendering GPU-accelerated 2D drawing, rounded rectangles, circles, lines, images, custom GLSL shaders, particle system
Layout Flexbox engine (row/column, justify-content, align-items), absolute positioning, percentage/pixel/grow/fit sizing
Styling Full CSS property system, hover states, dynamic runtime style changes, custom fonts, border-radius, opacity
Input Keyboard polling (down/pressed), mouse position/buttons/wheel/cursor, node click & hover detection
Audio Polyphonic procedural synthesizer (5 waveforms, ADSR envelopes, stereo panning, pitch slide, vibrato, tremolo, low-pass filter), cached sound/music files
Collision Rect-Rect, Circle-Circle, Circle-Rect detection, class-group collision queries, batch collision processing
Animation Tween engine with easing curves (linear, quad_in, quad_out)
Scripting Full Python OOP node wrappers, property accessors (node.x += 10), reactive {{ template }} data binding
Dev Tools Built-in FPS/draw-call/RAM profiler, runtime Python console (~ key), hot-reload for layout, styles, and shaders
Memory & Perf Linked-list memory arenas, O(1) hash cache lookup, Trigonometry LUT, FBO render bypass, 90% reduced node layout structs
DX camelCase + snake_case dual API, full .pyi type stubs for IDE autocomplete, descriptive error messages with layout line numbers

๐Ÿš€ Getting Started

Requirements

  • OS: Windows (x64) or Linux
  • Python: 3.11+
  • C Toolchain: MSYS2/MinGW-w64 (Windows) or GCC (Linux)

Quick Setup

# Clone and enter the repository
git clone https://github.com/user/Doodle.git
cd Doodle

# Create virtual environment
python -m venv .venv

# Compile the native C extension
# Windows (PowerShell):
.venv\Scripts\python.exe setup.py build_ext --inplace

# Linux:
.venv/bin/python setup.py build_ext --inplace

Run the Breakout Demo

# Windows:
.venv\Scripts\python.exe examples\breakout\main.py

# Linux:
.venv/bin/python examples/breakout/main.py

๐Ÿ“– How It Works

Doodle apps are built with three files:

1. layout.html โ€” Define your UI structure

<view id="app">
    <view id="hud">
        <text id="score">SCORE: {{ score }}</text>
        <text id="lives">LIVES: {{ lives }}</text>
    </view>
    <view id="game-area" camera="true">
        <view id="player"></view>
        <view id="ball"></view>
        <circle id="coin" radius="12" color="#facc15"></circle>
    </view>
    <view id="game-over" style="display: none;">
        <text id="msg">GAME OVER</text>
        <button id="restart-btn" onclick="restart">RESTART</button>
    </view>
</view>

2. styles.css โ€” Style everything with familiar CSS

#app {
    flex-direction: column;
    width: 100%;
    height: 100%;
    background-color: #0a0a0a;
}

#hud {
    flex-direction: row;
    justify-content: space-between;
    padding: 12 24;
    background-color: #111;
    font-size: 18;
    color: #00ffcc;
}

#player {
    width: 80px;
    height: 16px;
    background-color: #00ffcc;
    border-radius: 4;
}

#ball {
    width: 16px;
    height: 16px;
    background-color: #ffffff;
    border-radius: 8;
}

3. main.py โ€” Script your logic in Python

import doodle

state = {"score": 0, "lives": 3}

player = doodle.getNode("player")
ball = doodle.getNode("ball")

ball_dx, ball_dy = 5.0, -5.0

def tick():
    global ball_dx, ball_dy

    # Move player with keyboard
    if doodle.isKeyDown(263):  # Left arrow
        player.x -= 8
    if doodle.isKeyDown(262):  # Right arrow
        player.x += 8

    # Move ball
    ball.x += ball_dx
    ball.y += ball_dy

    # Bounce off paddle
    if doodle.checkCollision("ball", "player"):
        ball_dy = -abs(ball_dy)
        doodle.playSynth(440.0, 0.1, doodle.WAVE_SQUARE)
        doodle.shakeCamera(4.0, 0.15)
        doodle.spawnParticles(ball.x, ball.y, 15, "#00ffcc", 3.0, 0.4)

doodle.registerTickCallback(tick)
doodle.run(layout="layout.html", style="styles.css", width=800, height=600, state=state)

๐ŸŽฎ Python API Overview

Engine Lifecycle

doodle.run(layout, style, width, height, title, state)  # Start the engine
doodle.registerTickCallback(fn)                          # Per-frame update function

Node Manipulation (OOP)

node = doodle.getNode("player")    # Get a node wrapper

node.x += 10                       # Direct position access
node.y = 300
node.position = (100, 200)         # Tuple assignment
node.width = 80                    # Resize via CSS
node.text = "Hello!"               # Update inner text
node.visible = False               # Hide from rendering
node.show() / node.hide()          # Visibility methods
node.style.background_color = "red"  # Dynamic CSS properties

Input

doodle.isKeyDown(key_code)          # Held key check
doodle.isKeyPressed(key_code)       # Single-frame press
doodle.getMousePosition()           # (x, y) tuple
doodle.isMouseButtonPressed(0)      # Left click
doodle.isNodeClicked("btn")         # Click detection on DOM node
doodle.isNodeHovered("btn")         # Hover detection on DOM node

Collision Detection

doodle.checkCollision("a", "b")              # Rect/Circle aware
doodle.getFirstCollision("ball", "bricks")   # Class group query
doodle.batchProcess(positions={...}, collisions=[...])  # Batched C call

Audio

doodle.playSound("sfx/hit.wav")                              # Cached WAV/OGG playback
doodle.playSynth(frequency, duration, wave_type=1, attack=0.01, decay=0.05, sustain=0.5, release=0.05, frequency_slide=0.0, vibrato_speed=0.0, vibrato_depth=0.0, tremolo_speed=0.0, tremolo_depth=0.0, filter_cutoff=0.0, pan=0.0) # Synthesizer
# Waveforms: WAVE_SINE=0, WAVE_SQUARE=1, WAVE_TRIANGLE=2, WAVE_SAWTOOTH=3, WAVE_NOISE=4

Effects

doodle.spawnParticles(x, y, count, color_hex, speed, lifetime)  # Particle burst
doodle.shakeCamera(intensity, duration)                         # Screen shake
doodle.animate("node", target_x=100, duration=0.5, ease="quad_out")  # Tweens

Camera

doodle.setCamera(target_x, target_y, offset_x, offset_y, zoom, rotation)

๐Ÿ”ง Developer Tools

Press ~ (tilde) at runtime to open the built-in developer console. Execute Python commands live:

>>> getNode("ball").x += 100
>>> spawnParticles(400, 300, 50, "#ff0", 5.0, 1.0)

The profiler overlay shows FPS, draw calls, particle count, and CPU time per frame.


๐Ÿ“ Repository Structure

Doodle/
โ”œโ”€โ”€ doodle/                    # Python package
โ”‚   โ”œโ”€โ”€ __init__.py            # OOP wrappers, tweens, events, templates
โ”‚   โ”œโ”€โ”€ __init__.pyi           # Full type stubs for IDE autocomplete
โ”‚   โ””โ”€โ”€ cli.py                 # PyInstaller packaging CLI
โ”œโ”€โ”€ src/                       # C extension core (compiles to _doodle.pyd)
โ”‚   โ”œโ”€โ”€ expose_raylib.c        # CPython bindings, main loop, particles
โ”‚   โ”œโ”€โ”€ mparser.h / .c         # DOM tree, node pool, hash-table lookup
โ”‚   โ”œโ”€โ”€ html_parser.h / .c     # Single-pass HTML parser with line tracking
โ”‚   โ”œโ”€โ”€ css_parser.h / .c      # CSS parser with functional registry pattern
โ”‚   โ”œโ”€โ”€ layout.h / .c          # Flexbox layout solver
โ”‚   โ”œโ”€โ”€ renderer.h / .c        # GPU draw traversal, shaders, z-sorting
โ”‚   โ”œโ”€โ”€ daudio.h / .c          # Polyphonic synth, ADSR envelope generator
โ”‚   โ”œโ”€โ”€ particles.h / .c       # Object-pooled particle system
โ”‚   โ”œโ”€โ”€ profiler.h / .c        # FPS counter, draw call tracker, dev console
โ”‚   โ”œโ”€โ”€ cache.h / .c           # Texture, sound, shader, font caching
โ”‚   โ”œโ”€โ”€ color.h / .c           # Hex/named color parser
โ”‚   โ”œโ”€โ”€ unit.h / .c            # CSS unit parser (px, %, grow, fit)
โ”‚   โ”œโ”€โ”€ string_utils.h / .c    # String trimming and helpers
โ”‚   โ””โ”€โ”€ dom_utils.h / .c       # Tree traversal utilities
โ”œโ”€โ”€ examples/                  # Demo applications
โ”‚   โ””โ”€โ”€ breakout/              # Breakout game with CRT shader
โ”œโ”€โ”€ docs/                      # Documentation
โ”‚   โ”œโ”€โ”€ getting-started.md     # Installation & first app tutorial
โ”‚   โ”œโ”€โ”€ api-reference.md       # Complete API reference
โ”‚   โ”œโ”€โ”€ layout-and-styling.md  # HTML tags & CSS properties guide
โ”‚   โ”œโ”€โ”€ architecture.md        # Engine internals & C architecture
โ”‚   โ””โ”€โ”€ cheatsheet.md          # Quick reference card
โ”œโ”€โ”€ third_party/               # Static Raylib binaries
โ”œโ”€โ”€ setup.py                   # Build script
โ”œโ”€โ”€ pyproject.toml             # Package metadata
โ””โ”€โ”€ README.md                  # You are here!

โšก Performance

Doodle is engineered for speed with several custom optimizations:

  • Hash-table node lookup โ€” O(1) average case for FindNodeById instead of tree traversal
  • Object-pooled particles โ€” Pre-allocated particle array, no runtime allocation
  • Batched C calls โ€” batchProcess() combines position/text/visibility/collision updates into one Pythonโ†’C roundtrip
  • Fast math โ€” SSE3 intrinsics, cached inverse values for division elimination, direct phase-boundary square waves
  • Precompiled templates โ€” {{ score }} compiles once to Python {score} format strings
  • Lazy layout โ€” Layout recomputation only when layout_dirty flag is set

๐Ÿ“„ License

MIT License. See LICENSE for details.

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

doodle_ui-1.2.4.tar.gz (44.9 kB view details)

Uploaded Source

Built Distributions

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

doodle_ui-1.2.4-cp313-cp313-win_amd64.whl (459.5 kB view details)

Uploaded CPython 3.13Windows x86-64

doodle_ui-1.2.4-cp313-cp313-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

doodle_ui-1.2.4-cp313-cp313-musllinux_1_2_i686.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

doodle_ui-1.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

doodle_ui-1.2.4-cp313-cp313-macosx_11_0_arm64.whl (686.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

doodle_ui-1.2.4-cp312-cp312-win_amd64.whl (459.5 kB view details)

Uploaded CPython 3.12Windows x86-64

doodle_ui-1.2.4-cp312-cp312-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

doodle_ui-1.2.4-cp312-cp312-musllinux_1_2_i686.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

doodle_ui-1.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

doodle_ui-1.2.4-cp312-cp312-macosx_11_0_arm64.whl (686.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

doodle_ui-1.2.4-cp311-cp311-win_amd64.whl (459.5 kB view details)

Uploaded CPython 3.11Windows x86-64

doodle_ui-1.2.4-cp311-cp311-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

doodle_ui-1.2.4-cp311-cp311-musllinux_1_2_i686.whl (1.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

doodle_ui-1.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

doodle_ui-1.2.4-cp311-cp311-macosx_11_0_arm64.whl (686.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file doodle_ui-1.2.4.tar.gz.

File metadata

  • Download URL: doodle_ui-1.2.4.tar.gz
  • Upload date:
  • Size: 44.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for doodle_ui-1.2.4.tar.gz
Algorithm Hash digest
SHA256 64b834ea956987c6edfd38e3f7bc13dc5eab3fc7a3b5238fa479ece7d5bdc964
MD5 71cded6ea971d6a661ffdad121ded82b
BLAKE2b-256 7bc0ddb4b3bdee6f80ae4da00c1006b7b019700e2dea2e12d7d0f6b4f33f7307

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4.tar.gz:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: doodle_ui-1.2.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 459.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for doodle_ui-1.2.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5f73cb95efac99470faa21ad5d368f2c8382399bb2cc00113ea4f895e4569e1e
MD5 e66ab4c87c53d7d04f02e8a7ba94fcc6
BLAKE2b-256 3b7278fc3ebad2c5c6f1d2892becffd2f70bff2c5d7d5a950d1d19b8f3702282

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp313-cp313-win_amd64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1c77d2c92e17cdb7e0d8b3f2c784b047a9847e27286e314468c53d6c7156db18
MD5 ed91d2d3e9ed906833f26bdbf247c57e
BLAKE2b-256 627b972590c3cffbe558417170a0291c6ddfed795ae662687dc35eb6f47cc071

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a2e31e0acca4a71a3d7f0977073ea328ff9448c9e81103cade3ac8856a33bc65
MD5 5cc69e2e12b5ae187fa5a8cf840bfde7
BLAKE2b-256 2c76d4898519023853038a91dcb1145da331e1fb5deafc5cbb273f04312f3be5

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6bd9aefbba98ac1b5f2ec7b985f677ae1ad0aac95dced1517eb5931826651bc3
MD5 6b956107da80f86daac1c51efb0d652b
BLAKE2b-256 20b7948c517d5f811471fc4a8c4accc8a15b464d490eda7b6b90e34b6b1b2778

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d9c4ff1e45ec6c9d2a15877e6164682f355e433f1342c4ded3f7d1c987b4961
MD5 00e73579f1df3b129fdf1116f06870d5
BLAKE2b-256 e5f3a9176908d2fa01e5b2e789804436a3aa46b8d4b8291c0f1d9fcae697e860

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: doodle_ui-1.2.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 459.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for doodle_ui-1.2.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 293dcfb53480284f26d6ac8ac59d008600c435076312a8a3a1f385c9a7e0b65a
MD5 778a27375dee7c2ea4904f0be9ea49cd
BLAKE2b-256 d00ddec75e4ec3b3cb32fb0d79a6d9ba9354fb4f9fd899a064ca088ae8b121db

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp312-cp312-win_amd64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 90ef480096464bec5bd239f661b2018d8ef277242a10985cfaec6f27804bd8c6
MD5 18341d4189cf7acb4425bdfb46663cb9
BLAKE2b-256 08e31446d8e3682782e5533a2cf327ae1e2025f141ec26cd3db0f377f014d412

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a0ab2a4d8b5870072acd4c081d9e265c9d98ffcc3f3ad0083526e87bb024ef07
MD5 b6c13e5e963a0f9a9a9f5f69fca72b13
BLAKE2b-256 305c2e56b17f313a8d947a7c02fb26a45112e6b375c22231f80c175570c12e4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 160dce2e6050195cbdbe7e42b2239ca58ceb23a9bef905b6347f264e35017e35
MD5 0c49c5b19b8f0588790407765421a6b4
BLAKE2b-256 ba9b2874cb99303ddaf1c40266dd7515deb641eada385e665d5078e10004ac5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9550472c8177ead314cfdb872787ec4517537d80d2e0b23f40ba9c77eeb08222
MD5 cc6fe9c1357ca6f9563cd509d78752d0
BLAKE2b-256 d6c357c55989aba1e5ace5fe397ec967e59805196d272c31081d6f5adfe11214

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: doodle_ui-1.2.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 459.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for doodle_ui-1.2.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e57ef31f563eef29e1c8a231d42c7424bc4ab08109cea279227816430be33045
MD5 3a02b106372cd1c5b9ea8ef67cd0df4f
BLAKE2b-256 03e2fcf0c412f890d942b821b65bfce6ebbfec9282db3ecaca5f671ae940163b

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp311-cp311-win_amd64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ee4b490d0152db487d1568c4f3f4b161296d3cd9814c3d9fca52843b4c1724b9
MD5 16dfe39f33c98044ea1df1dff455655a
BLAKE2b-256 c985a88ea604053cbb51cef91c7f171a416c8e86c981362bd98d7456cf9f9749

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 6067321aa523d089d536d4fd84ee16fa62130614f4fa918f4c4cf041c858b6bd
MD5 6599715b563badf035ded97c5702deac
BLAKE2b-256 845c6b33fbc2ad7291e7f5ce2af599bd1165fdc31308e3bc151cfb7136860206

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e101e64d19f3c22f35323683b46c338f2508f77707721be9c6a6f93d82237f5
MD5 08ac7b85df761d53765100907844f155
BLAKE2b-256 360c97e9aa3cdc17d49ac8ba4c870d251d21124b8753eb2768ce0b8634bae5cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file doodle_ui-1.2.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c606780f52411a1539986a3fd7b20aa89e8da384ac35cd707ad9eea04dc4dd4
MD5 3ae6c14a35b7f6b180a9bfdc48314e4d
BLAKE2b-256 c07ef98e8a8a3b171b5b76cd7f3fa1ca6a181b1f6fcb0bb6e7e9210d6a4bbc5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.4-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on DUDDLEGOD/Doodle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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