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
FindNodeByIdinstead 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_dirtyflag 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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a9f6910a5f9271f7c501c46567b537d464ab06575f0c73efa08f3feeb54717f
|
|
| MD5 |
d6bc0a1005e9dc1be5840f963aa84e43
|
|
| BLAKE2b-256 |
9ffb8063c64bac2163242c6266f99a717beaf705bd563e92ea038baad2136cf2
|
Provenance
The following attestation bundles were made for doodle_ui-1.2.6.tar.gz:
Publisher:
release.yml on DUDDLEGOD/Doodle
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6.tar.gz -
Subject digest:
5a9f6910a5f9271f7c501c46567b537d464ab06575f0c73efa08f3feeb54717f - Sigstore transparency entry: 2246380017
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37f3805f15fa6528de01cbd1c9a8ef0f6228feb74133cdf23622130b03b536e2
|
|
| MD5 |
4db01b31f850cb0f40627691b63ddb01
|
|
| BLAKE2b-256 |
ac63a6d15dce66ce9e03277fbc32dc0c9ead9f641dd76479a6dfe53ecc797626
|
Provenance
The following attestation bundles were made for doodle_ui-1.2.6-cp313-cp313-win_amd64.whl:
Publisher:
release.yml on DUDDLEGOD/Doodle
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp313-cp313-win_amd64.whl -
Subject digest:
37f3805f15fa6528de01cbd1c9a8ef0f6228feb74133cdf23622130b03b536e2 - Sigstore transparency entry: 2246386634
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c02b516981e07ec59248b076a0dfbc33664a002f82ca8e03c63365848e0c7867
|
|
| MD5 |
4358108811ca9a290eed5ba389331af0
|
|
| BLAKE2b-256 |
512fd7f1cfcf84c4433588d353fc16dd165720a80ec18ac04b2c0b3388a7b774
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp313-cp313-musllinux_1_2_x86_64.whl -
Subject digest:
c02b516981e07ec59248b076a0dfbc33664a002f82ca8e03c63365848e0c7867 - Sigstore transparency entry: 2246386340
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp313-cp313-musllinux_1_2_i686.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp313-cp313-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcf09dad48ec9ce2484e4727d591ba8372917433db124ae2ebad37417b9faf14
|
|
| MD5 |
ce7955acdd559ca6e7ff3b45b00bae13
|
|
| BLAKE2b-256 |
2560d55a2a3cff18dca5f4628dacceaa42a654397aa55e07e19085b8fa166688
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp313-cp313-musllinux_1_2_i686.whl -
Subject digest:
fcf09dad48ec9ce2484e4727d591ba8372917433db124ae2ebad37417b9faf14 - Sigstore transparency entry: 2246385492
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a62c566545d5e36cfd5d4b3d8712b432a2f79052eb4dd7f133fe03ca752cb44
|
|
| MD5 |
e838b7576ec5ab119ccaf74a9699b2ff
|
|
| BLAKE2b-256 |
9aaf9ac58698562697102b5c9947611ba064cca813bf3f4c54610b5700c322c1
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
8a62c566545d5e36cfd5d4b3d8712b432a2f79052eb4dd7f133fe03ca752cb44 - Sigstore transparency entry: 2246383235
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 703.9 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
977a8f96f9ed05f2dc18fb9ac52abcb5dfc79a7729aad4a89a5c81ee7bb6fb22
|
|
| MD5 |
e04f15c2668526ae63d1b1baf7c11131
|
|
| BLAKE2b-256 |
6123288c5bcaa5209688f18538b082420a006e0df02c0970f16fb79b315f53de
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
977a8f96f9ed05f2dc18fb9ac52abcb5dfc79a7729aad4a89a5c81ee7bb6fb22 - Sigstore transparency entry: 2246385739
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3b1d62f59b7a42efec1ac7f5c8b2c1900e270dee899479096ee9af0b39202d0
|
|
| MD5 |
8fe3e7258633ae77c59874325b1d067d
|
|
| BLAKE2b-256 |
5653c52fb42c062fb85e31f26f4fff370a7c20a7a118ce68f6eb5db210cc52d8
|
Provenance
The following attestation bundles were made for doodle_ui-1.2.6-cp312-cp312-win_amd64.whl:
Publisher:
release.yml on DUDDLEGOD/Doodle
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp312-cp312-win_amd64.whl -
Subject digest:
a3b1d62f59b7a42efec1ac7f5c8b2c1900e270dee899479096ee9af0b39202d0 - Sigstore transparency entry: 2246387153
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfc2764d510b1b9489717e614d8a076b7a5a73ba721d230ed7286c454b28c647
|
|
| MD5 |
64b8efb0190bf464b17e658150c8c55d
|
|
| BLAKE2b-256 |
f977f9991eaf3c8d2de23f644979ed53b3aed8245c8b169f9ccea965e7063dcd
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp312-cp312-musllinux_1_2_x86_64.whl -
Subject digest:
bfc2764d510b1b9489717e614d8a076b7a5a73ba721d230ed7286c454b28c647 - Sigstore transparency entry: 2246380837
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp312-cp312-musllinux_1_2_i686.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp312-cp312-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0cdc6233beb7f0b6d4ea4483fdace4b81677e2e35f103855bd2e49fc3d252cf
|
|
| MD5 |
bf2a6692d924a2804453f60e214bdb6c
|
|
| BLAKE2b-256 |
3eebbf5ddfa0c3f53bd09d957599708356e79f289c272ca46203a3dad2bc690c
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp312-cp312-musllinux_1_2_i686.whl -
Subject digest:
d0cdc6233beb7f0b6d4ea4483fdace4b81677e2e35f103855bd2e49fc3d252cf - Sigstore transparency entry: 2246381416
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fff14df48a72b665538750fe3702694538553c6b9375e6cba51de495cd66af61
|
|
| MD5 |
b4dc1c86fd8150013c4277a21cd42afd
|
|
| BLAKE2b-256 |
f9f15e84324bcabfbb53507681216073d2f6fb7e3f9c5d345defade4dec38ccd
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
fff14df48a72b665538750fe3702694538553c6b9375e6cba51de495cd66af61 - Sigstore transparency entry: 2246384010
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 703.9 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7e4c44675faf62700896f91ee66265157dad88e325f09d626b77a54c70d3c23
|
|
| MD5 |
35b803356cd506f74225044b7126173f
|
|
| BLAKE2b-256 |
b6234dd66e7a4d3f1af8a6b18e9b267d19a5525a59ced8d2ead35d2d8d5988aa
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
d7e4c44675faf62700896f91ee66265157dad88e325f09d626b77a54c70d3c23 - Sigstore transparency entry: 2246384323
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c19e243356cd42db10f28d0303609d84c146f9787e070364d63792226f17b4a2
|
|
| MD5 |
015b3dc4d5ca4082b1a78f1e4f2fc925
|
|
| BLAKE2b-256 |
32f9a4a95caecb2489333bf7720d5081e0c9ac6b7c1fdccc0af7fca7ff205ece
|
Provenance
The following attestation bundles were made for doodle_ui-1.2.6-cp311-cp311-win_amd64.whl:
Publisher:
release.yml on DUDDLEGOD/Doodle
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp311-cp311-win_amd64.whl -
Subject digest:
c19e243356cd42db10f28d0303609d84c146f9787e070364d63792226f17b4a2 - Sigstore transparency entry: 2246382699
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b97d798346425122426d3208da9cfbd0486e02129a83840ced35c999d2340f78
|
|
| MD5 |
358ae4af8caf9a79fb87ab03d627b764
|
|
| BLAKE2b-256 |
498fd0f345b85ca8d4dd53b07b717aaed4a99f89a529851669ad7b4f50bd585a
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp311-cp311-musllinux_1_2_x86_64.whl -
Subject digest:
b97d798346425122426d3208da9cfbd0486e02129a83840ced35c999d2340f78 - Sigstore transparency entry: 2246380339
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp311-cp311-musllinux_1_2_i686.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp311-cp311-musllinux_1_2_i686.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d07ecc6ac6c917dc11294181fb90ba7f44f56cc19f684e53098e870d81d51437
|
|
| MD5 |
9d76327ac3139b0368911ff388eb4787
|
|
| BLAKE2b-256 |
6355b64084afb2ceda2d12fbc263713a1beff99c2df7163cc4840863fb32a0fb
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp311-cp311-musllinux_1_2_i686.whl -
Subject digest:
d07ecc6ac6c917dc11294181fb90ba7f44f56cc19f684e53098e870d81d51437 - Sigstore transparency entry: 2246381965
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01b6048a78ee5c3dc59f74e9daa45c134eff63e2f6a2a707a9e46776ecb1d678
|
|
| MD5 |
91562f9ae8c658f8cf1bbdf3aea40e70
|
|
| BLAKE2b-256 |
fc687d9fd5ba45b1dae962159cb76c893ffb85ce4ef950f93eb43aaf026f9dec
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
01b6048a78ee5c3dc59f74e9daa45c134eff63e2f6a2a707a9e46776ecb1d678 - Sigstore transparency entry: 2246383625
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file doodle_ui-1.2.6-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: doodle_ui-1.2.6-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 703.9 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a1313cf6d7352dddc81f48c4b8b36865acd7caaec3c60040446110f757f19b5
|
|
| MD5 |
8acef78f25436b4bb2df6229c2b23477
|
|
| BLAKE2b-256 |
d4db9f766100409860dc7dccd5964ed21529fba799b8c5f9fb918506bf732bcf
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
doodle_ui-1.2.6-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
0a1313cf6d7352dddc81f48c4b8b36865acd7caaec3c60040446110f757f19b5 - Sigstore transparency entry: 2246384959
- Sigstore integration time:
-
Permalink:
DUDDLEGOD/Doodle@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Branch / Tag:
refs/heads/master - Owner: https://github.com/DUDDLEGOD
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@fe6e84c756afb37451e5cc2ccc5522e5b326b55a -
Trigger Event:
workflow_dispatch
-
Statement type: