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

Installation (Zero Compiler Required)

On Windows, Linux, and macOS, you can install doodle-ui directly from PyPI. Pre-compiled binary wheels are included so no C compiler (GCC, MSVC, Clang, CMake, or Raylib) is required:

pip install doodle-ui

Developer Setup (Building from Source)

If you clone the repository or customize the engine C core, third_party/ includes all required Raylib headers and static libraries out-of-the-box:

# Clone repository
git clone https://github.com/DUDDLEGOD/Doodle.git
cd Doodle

# Create virtual environment
python -m venv .venv

# Compile native C extension (uses tracked third_party/ Raylib binaries)
# Windows (PowerShell):
.venv\Scripts\python.exe setup.py build_ext --inplace

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

Run Demo Applications

# Run Breakout Demo
python examples/breakout/main.py

# Run Timer Demo
python examples/timer/main.py

# Run Calculator Demo
python examples/calculator/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.5.tar.gz (35.9 MB 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.5-cp313-cp313-win_amd64.whl (465.9 kB view details)

Uploaded CPython 3.13Windows x86-64

doodle_ui-1.2.5-cp313-cp313-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

doodle_ui-1.2.5-cp313-cp313-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

doodle_ui-1.2.5-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.5-cp313-cp313-macosx_11_0_arm64.whl (703.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

doodle_ui-1.2.5-cp312-cp312-win_amd64.whl (465.9 kB view details)

Uploaded CPython 3.12Windows x86-64

doodle_ui-1.2.5-cp312-cp312-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

doodle_ui-1.2.5-cp312-cp312-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

doodle_ui-1.2.5-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.5-cp312-cp312-macosx_11_0_arm64.whl (703.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

doodle_ui-1.2.5-cp311-cp311-win_amd64.whl (465.9 kB view details)

Uploaded CPython 3.11Windows x86-64

doodle_ui-1.2.5-cp311-cp311-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

doodle_ui-1.2.5-cp311-cp311-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

doodle_ui-1.2.5-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.5-cp311-cp311-macosx_11_0_arm64.whl (703.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: doodle_ui-1.2.5.tar.gz
  • Upload date:
  • Size: 35.9 MB
  • 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.5.tar.gz
Algorithm Hash digest
SHA256 f7bb277dec4d7c11f249874a74491c360fbe9950b7df78ff40a089fa3ffabb29
MD5 4845c8929cd8739cddbb34963cb4e433
BLAKE2b-256 09a58653756583d5ec09aee72224060af33357ace452ea56cce90a64bf4b5acf

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5.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.5-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: doodle_ui-1.2.5-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 465.9 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.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 91fbf6737d117cc65ce59595babadcd1fac57e2ae3e99c9bdfd67b24202f7ac0
MD5 b7a04fcff3dc7df1a765dae51674b412
BLAKE2b-256 7f897cc5c3bc10af522023a9e92fa8ecea2d63f156f25f8c81b30eb13c22aa6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a62f14a1d7c6fd295cddf968685f277ccefeeec92757f7e72e4090b7a4febaff
MD5 6c6e8779c095e198b032255dee81ba31
BLAKE2b-256 c8dea030dac9977d69502d03ee29fe05abba20af7edefb0da7c7b0a32703cf6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c9351dbca01d46eb07b7d112cb5011cd6dcf977cb3f5ba4855668dd9fa25c4fd
MD5 0f41da7fcd930fa129517dac4511f5a2
BLAKE2b-256 bdb28f3c2fdebe4b9983a774d61f84030028326302113e9909bf6cd50c0224de

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 213f1e8d4f1b61c818d0c26c25b53799e77e087a9f17da64a6f2faa1896412d8
MD5 7d49ba0d7e3d0d04ba27edbc8776f35b
BLAKE2b-256 6061611e7132d8de70376894e5f12de325db66ab81a71d3f3ec2b6fce9b768d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a68d6be04d870a8f779ccbd99b93f20be005df737c236e5a08361cd063376610
MD5 e1abead3dd9ac572eaefb26d309d6370
BLAKE2b-256 d74abf6ddf6504ae026759cc4d84abe8c919f71f5163137074574f9d4da9dcb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: doodle_ui-1.2.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 465.9 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.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 11ea46b0d5458c09719ea90a973be53e3873b03cdafb4cc6caa6717db37f3ae8
MD5 cd04878c01d71a9a4877d454f7af5a10
BLAKE2b-256 1fb87ba14fa69aded68be6e62dffe43fcd96b3ac5e3ace823655e55b9b5aecbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 32b5a4523ff0e79eddcc8bb5d43721c8653bead3391c70f6c48ee595454a1e69
MD5 a74307695abd29bdaeec0972c8134c15
BLAKE2b-256 ff2ade83dcc919c67babae1e6a5cfc2290179654fa8af5a41f2ee8d033f1fb4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b05ed83facacd1bef92a0d08dfb7bb9178d4a0ef0c6be39a176b3130f7e06dd5
MD5 1ef200950859203af42d0fe7d8bd0b0d
BLAKE2b-256 3192880c7e7dc50c7d994fe2702cf095bd6aa0cbd99f4d8a28b289486f1f3430

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d55b62318458389abe880372d02bbb51124433b3eb88966c16549f9f7a80560
MD5 1c558a22319f194d2421e1a60da6cd5e
BLAKE2b-256 fe5ac4e514dca95de42a2b2687255986508cb87f12fe3b3745ce01c1b26895a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce9fe766863b238b29f6e4e7603ec501248f73e9348cca0c93cd61949859d1f7
MD5 f17dda6db0224601af51041eed21d296
BLAKE2b-256 584b6bc3486929d234acce2810347bc5b3961095ad3739aed906b26eea11abec

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: doodle_ui-1.2.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 465.9 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.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d01e970c3d4dd5e1b60a1059c5e36495866b708c01ab11583452909a8f2f6322
MD5 93eccfa8434ef152750b6395df73d3de
BLAKE2b-256 808e87966add9039182c64274077b224c0c6844ca8d1a75e5adaba39a17a8b97

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c5259b9180c72204453b7161cca70cb92fbfbc5fc09ff080f98a5c7640024573
MD5 ceeec135038c1a157d5f25abb2a1357e
BLAKE2b-256 cb5e7f679dd3c209e401517ed3a6ec340ccb70a3e5a46428b02610c22ab53c04

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f40a8840e91c86d15889247585e986f81c09eac27a9ca0f41de7b3292e2ae3a4
MD5 bd4f0d028746211dc79d319b3c7f917d
BLAKE2b-256 7035a5e7d94233c37781988e95a26717e99946da7197d74ce5f2e7f943a4a9ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de9c0c101508b8681be81a6fc7c742c76eeeec83ebb4e56fd1b8b5735b1f546d
MD5 9c2995b52583fc789f91b04ca11fcbc2
BLAKE2b-256 1cfdbefc7a04b95e15d82dca6c5ddd22b848d57823e6ad1acf6efc648d1cce3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for doodle_ui-1.2.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 908ad485faf7d87e4700740067a9cd2c04946d8d6d34b1eb11eb31a5fd6e49ff
MD5 55d12e44b72250cf5bcd32ba15c7f287
BLAKE2b-256 ad89da0d46a373e7434e30aec76bed20ef98a4623f4a6db901dee6548a2ad238

See more details on using hashes here.

Provenance

The following attestation bundles were made for doodle_ui-1.2.5-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