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), cached sound file playback, background music streams
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 profiler, runtime Python console (~ key), hot-reload for layout & styles
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 playback
doodle.playSynth(freq, duration, waveform, atk, dec, sus, rel)  # Procedural synth
# Waveforms: WAVE_SINE, WAVE_SQUARE, WAVE_TRIANGLE, WAVE_SAWTOOTH, WAVE_NOISE

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.1.0.tar.gz (71.2 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.1.0-cp313-cp313-win_amd64.whl (448.8 kB view details)

Uploaded CPython 3.13Windows x86-64

doodle_ui-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

doodle_ui-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (947.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

doodle_ui-1.1.0-cp313-cp313-macosx_11_0_arm64.whl (675.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

doodle_ui-1.1.0-cp312-cp312-win_amd64.whl (448.8 kB view details)

Uploaded CPython 3.12Windows x86-64

doodle_ui-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12musllinux: musl 1.2+ i686

doodle_ui-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (947.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

doodle_ui-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (676.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

doodle_ui-1.1.0-cp311-cp311-win_amd64.whl (448.7 kB view details)

Uploaded CPython 3.11Windows x86-64

doodle_ui-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ i686

doodle_ui-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (948.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

doodle_ui-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (675.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for doodle_ui-1.1.0.tar.gz
Algorithm Hash digest
SHA256 fe53352834f54d6927c2d85a2ef23b28d75df50488ceefd5ed8efe20dc14f894
MD5 28599e4582bf59554d04709773d7245c
BLAKE2b-256 351c0a4ec7270e6e28b1ddec0031cef5208a77730455a65e6e7aa938741b34e7

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for doodle_ui-1.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 db5866cfad65fb99714c70a58d6c8a98afcb4192293f99ca852b87c46ad86977
MD5 d865106aea4b048cc1096af144a271ea
BLAKE2b-256 59883e1a9e82fb17a9887cdf91fb9a6b53eeb8d6d2790018682e1526445f84b8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1bf94d0d796ee34972ffaa6ef5b4a940d43da54859a93e832e3abf645a644443
MD5 501fc123fcb2592729193213d1919ac5
BLAKE2b-256 a286353154a7fafcea79a7bda0419986bdc07d3f324cfc546d2be1d3fc482fb5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b93c4694f94694c3e971850e2d11995ccd7a640ac4fa2b27785d5867f16c8b89
MD5 e3b0f4dd95ea8bbf748947c2dfa802ce
BLAKE2b-256 a07b74ef34fa5073f2cdfba21fce91f848ce2224d61367cd37e57880946f42f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c76da9e48a8c41d1d24483efd0c0981080c84916df676e8276932e1f40ae7481
MD5 bc9b1db10a930faea41f081bb514a9d5
BLAKE2b-256 7bc5549699889cb2e51e9979449899de0fe5565f4860c38d88dad6d7328a2bcf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34e98e9c26b86230c5246206d53070ab09895de59b50170d4fd7732bd4a3d880
MD5 6e61da6fdb0462da74fbd6a2ac278deb
BLAKE2b-256 192487f61ec3afd1bd6176199f13f6682fb4a4dff8244db67d9a1d2456e3f120

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for doodle_ui-1.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4b076530ddf16c425b7d8fd6624be2688a899afbc3b4be94813a4fa6a3843976
MD5 6d0c9a7be04d07f8523b0c4dc832d493
BLAKE2b-256 9ac1123871526c62c7a0758585b8ec2cffb5a1a9789cd0cb4afd604a39c2d843

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e6615047f63423fd8565c9fe599b556c81fb93a3d6577962f1cca43315d8d4c7
MD5 f75ea21c6a8505bb55e491134758d2f6
BLAKE2b-256 93aa9db46f15bf50c88055c7931a1cf785f821af88beeb6e5400d56cfbe263eb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5ba0acd0ec2f2f0776aec01e034fb05caf86570b78e600c94b91871fd9c6c051
MD5 d2bcfbd02bd59a79369ed5eb4f1b0b29
BLAKE2b-256 69c7b3de4d4a5fb3f2d332d38210914b90a71244356fbac6f61d025673a143fd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd2cc91a60a93db9f09e567bd93ce70279a945a6234883d97b46e7ec9a86a8f6
MD5 a08a3c2078d7787eb89b355eb726899e
BLAKE2b-256 5f59abfb8913b352a9d80610eed220be6a70a3fbcdaf261d7d8083d3b81621e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 719988911a4e72f1c05b9969c6b0afc73e3a64f0026ba19021964d4235880c9a
MD5 84580b2743e7aab32d3d5748aea1eb44
BLAKE2b-256 882baa30cb6056b38853c9b7a86ad5a966d6941f2f46b04418ea17b9533d95e5

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for doodle_ui-1.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4e725a2c4a72d1373ded81fe6109350c4a120ecc140318225105c033042ed881
MD5 7e8dc777725fd2c34816d52766430599
BLAKE2b-256 5d1db2c9a8115676ab699bf6f08df3d8903fd478c5486d44f0d858e486596d5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 48ee846c4015d885cff6afb0d65dbc2195df1e0260e9a1e816d9c46a0ec58cc8
MD5 9078d9fcbe8ec77c263d2b5428f86819
BLAKE2b-256 188ccd1c4b2d63c6e688bda0af0f3eed6f34b0767f2ec5ad57e9d2c2ec57850d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 3fc0244046e895228bc6db28a442288a55b11e944950aa346a1bf65c70ef258d
MD5 cac3ef4703a1d171f0e13bf34de52a78
BLAKE2b-256 9fd2f5b0dc4295cf017875c6449c27c3654011b9d6245ab5a32c3728b97fc917

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa8d6abf3aca565c83f3df4e3ce1c4391e81519cd62308c9be4f2ed8b7bb1656
MD5 bf23db74b627a4a25c51e888a4b430cc
BLAKE2b-256 166862c8a839a789deea642bf488b49d7e631b7e64f2ebd5430eada01aea6d12

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for doodle_ui-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6cb088a6e0c35d0aabdebb7610beb044f5ab94e40afec53c1cffee4dd972aece
MD5 eba6f8b31713e0d00980a5c051e5ca52
BLAKE2b-256 a4273d18b2db1ae787fba03b7ab0d266f3b0e6ac902d44dc5b5a837f2164487b

See more details on using hashes here.

Provenance

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