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

Linux / GitHub Codespaces Note: Minimal Linux containers (like Docker or GitHub Codespaces) require system OpenGL/X11 runtime packages:

sudo apt-get update && sudo apt-get install -y libgl1 libx11-6

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.6.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.6-cp313-cp313-win_amd64.whl (466.6 kB view details)

Uploaded CPython 3.13Windows x86-64

doodle_ui-1.2.6-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.6-cp313-cp313-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

doodle_ui-1.2.6-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.6-cp313-cp313-macosx_11_0_arm64.whl (703.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

doodle_ui-1.2.6-cp312-cp312-win_amd64.whl (466.6 kB view details)

Uploaded CPython 3.12Windows x86-64

doodle_ui-1.2.6-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.6-cp312-cp312-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

doodle_ui-1.2.6-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.6-cp312-cp312-macosx_11_0_arm64.whl (703.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

doodle_ui-1.2.6-cp311-cp311-win_amd64.whl (466.4 kB view details)

Uploaded CPython 3.11Windows x86-64

doodle_ui-1.2.6-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.6-cp311-cp311-musllinux_1_2_i686.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

doodle_ui-1.2.6-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.6-cp311-cp311-macosx_11_0_arm64.whl (703.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: doodle_ui-1.2.6.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.6.tar.gz
Algorithm Hash digest
SHA256 5a9f6910a5f9271f7c501c46567b537d464ab06575f0c73efa08f3feeb54717f
MD5 d6bc0a1005e9dc1be5840f963aa84e43
BLAKE2b-256 9ffb8063c64bac2163242c6266f99a717beaf705bd563e92ea038baad2136cf2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: doodle_ui-1.2.6-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 466.6 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.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 37f3805f15fa6528de01cbd1c9a8ef0f6228feb74133cdf23622130b03b536e2
MD5 4db01b31f850cb0f40627691b63ddb01
BLAKE2b-256 ac63a6d15dce66ce9e03277fbc32dc0c9ead9f641dd76479a6dfe53ecc797626

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c02b516981e07ec59248b076a0dfbc33664a002f82ca8e03c63365848e0c7867
MD5 4358108811ca9a290eed5ba389331af0
BLAKE2b-256 512fd7f1cfcf84c4433588d353fc16dd165720a80ec18ac04b2c0b3388a7b774

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 fcf09dad48ec9ce2484e4727d591ba8372917433db124ae2ebad37417b9faf14
MD5 ce7955acdd559ca6e7ff3b45b00bae13
BLAKE2b-256 2560d55a2a3cff18dca5f4628dacceaa42a654397aa55e07e19085b8fa166688

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8a62c566545d5e36cfd5d4b3d8712b432a2f79052eb4dd7f133fe03ca752cb44
MD5 e838b7576ec5ab119ccaf74a9699b2ff
BLAKE2b-256 9aaf9ac58698562697102b5c9947611ba064cca813bf3f4c54610b5700c322c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 977a8f96f9ed05f2dc18fb9ac52abcb5dfc79a7729aad4a89a5c81ee7bb6fb22
MD5 e04f15c2668526ae63d1b1baf7c11131
BLAKE2b-256 6123288c5bcaa5209688f18538b082420a006e0df02c0970f16fb79b315f53de

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: doodle_ui-1.2.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 466.6 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.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a3b1d62f59b7a42efec1ac7f5c8b2c1900e270dee899479096ee9af0b39202d0
MD5 8fe3e7258633ae77c59874325b1d067d
BLAKE2b-256 5653c52fb42c062fb85e31f26f4fff370a7c20a7a118ce68f6eb5db210cc52d8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bfc2764d510b1b9489717e614d8a076b7a5a73ba721d230ed7286c454b28c647
MD5 64b8efb0190bf464b17e658150c8c55d
BLAKE2b-256 f977f9991eaf3c8d2de23f644979ed53b3aed8245c8b169f9ccea965e7063dcd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d0cdc6233beb7f0b6d4ea4483fdace4b81677e2e35f103855bd2e49fc3d252cf
MD5 bf2a6692d924a2804453f60e214bdb6c
BLAKE2b-256 3eebbf5ddfa0c3f53bd09d957599708356e79f289c272ca46203a3dad2bc690c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fff14df48a72b665538750fe3702694538553c6b9375e6cba51de495cd66af61
MD5 b4dc1c86fd8150013c4277a21cd42afd
BLAKE2b-256 f9f15e84324bcabfbb53507681216073d2f6fb7e3f9c5d345defade4dec38ccd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7e4c44675faf62700896f91ee66265157dad88e325f09d626b77a54c70d3c23
MD5 35b803356cd506f74225044b7126173f
BLAKE2b-256 b6234dd66e7a4d3f1af8a6b18e9b267d19a5525a59ced8d2ead35d2d8d5988aa

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: doodle_ui-1.2.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 466.4 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.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c19e243356cd42db10f28d0303609d84c146f9787e070364d63792226f17b4a2
MD5 015b3dc4d5ca4082b1a78f1e4f2fc925
BLAKE2b-256 32f9a4a95caecb2489333bf7720d5081e0c9ac6b7c1fdccc0af7fca7ff205ece

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b97d798346425122426d3208da9cfbd0486e02129a83840ced35c999d2340f78
MD5 358ae4af8caf9a79fb87ab03d627b764
BLAKE2b-256 498fd0f345b85ca8d4dd53b07b717aaed4a99f89a529851669ad7b4f50bd585a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d07ecc6ac6c917dc11294181fb90ba7f44f56cc19f684e53098e870d81d51437
MD5 9d76327ac3139b0368911ff388eb4787
BLAKE2b-256 6355b64084afb2ceda2d12fbc263713a1beff99c2df7163cc4840863fb32a0fb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 01b6048a78ee5c3dc59f74e9daa45c134eff63e2f6a2a707a9e46776ecb1d678
MD5 91562f9ae8c658f8cf1bbdf3aea40e70
BLAKE2b-256 fc687d9fd5ba45b1dae962159cb76c893ffb85ce4ef950f93eb43aaf026f9dec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.2.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a1313cf6d7352dddc81f48c4b8b36865acd7caaec3c60040446110f757f19b5
MD5 8acef78f25436b4bb2df6229c2b23477
BLAKE2b-256 d4db9f766100409860dc7dccd5964ed21529fba799b8c5f9fb918506bf732bcf

See more details on using hashes here.

Provenance

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