Skip to main content

A lightweight and modular terminal UI engine. Designed to make building interactive terminal interfaces simple and structured.

Project description

🧱 TUIX Core 0.4


🧩 Overview

TUIX is a modular terminal UI engine inspired by web technologies.
It introduces a DOM-like component system, a layout engine, and a buffer-based rendering pipeline for building structured and styled terminal interfaces.

v0.4 ships a compiled C + Cython core for low-level latency. Now with a larger builder set, concurrency-safety fixes, hitmap-based mouse routing, and expanded benchmarking coverage.

🆕 What's New In 0.4

  • New builders: Text, Box, Divider, Badge, Button, Icon, Tag, Status, Menu, ScrollContainer (plus existing ProgressBar, Choice, Input, Canvas).
  • New low-level routing capabilities: frame-local compositor hitmap generation + hitmap-based mouse click picking.
  • New non-consuming input snapshot API: input.peek_snapshot().
  • Concurrency and lifecycle hardening across registry/scene/subcycle/object paths.
  • Expanded benchmark suite and reporting (BENCHMARKS.md).

Core vs Framework: TUIX provides a low-level engine core - not a high-level application framework. The public API intentionally exposes low-level primitives and is not designed to be "simple" by itself; higher-level, user-friendly frameworks will be built on top of this core once it has matured and stabilised.


🚀 Installation

pip install tuix-core

Requires Python ≥ 3.10. Pre-built wheels are provided for Windows/Linux/macOS (AMD64, x86, ARM).
Building from source also requires Cython ≥ 0.29 and a C compiler.


⚡ Quick Start

from tuix.core import engine, builders, scenes, registry, objects, buffers, input

engine.init()
builders.register_standard()

scenes.init_scene(b"Main")
registry.registry.current_scene_name = b"Main"
input.listen()

# create a progressbar and animate it
uid = objects.create_object(builders.PROGRESSBAR, b"Main", 0.7, 0.08, 0.45, 0.15)
obj = objects.get_object_by_uid(uid)
snap = buffers.get_buffer_snapshot(b"Main", uid)

if obj and snap:
    for i in range(101):
        objects.tuix_progressbar_set_value(obj, i / 100.0)
        engine.main_loop()

buffers.free_buffer(b"Main", uid)
input.stop()
engine.shutdown()

🧩 Widgets

Builder constant What it renders
builders.PROGRESSBAR Horizontal fill bar with customisable chars and colours
builders.CHOICE Keyboard-navigable list menu
builders.INPUT Single-line text input with placeholder support
builders.CANVAS Free-draw surface - pixels, lines, rects, circles, text, sprites
builders.TEXT Inline text content with runtime fg/bg updates
builders.BOX Framed container with title and color controls
builders.DIVIDER Horizontal/vertical divider with custom symbol/color
builders.BADGE Compact label with fg/bg palette
builders.BUTTON Clickable/keyboard-activatable button state
builders.ICON Centered symbol/icon with configurable colors
builders.TAG Chip-style label with configurable brackets
builders.STATUS IDLE/OK/WARN/ERROR status display widget
builders.MENU Interactive menu with keyboard/mouse selection
builders.SCROLL_CONTAINER Scrollable viewport over virtual content

Progressbar

objects.tuix_progressbar_set_value(obj, 0.75)          # 0.0 – 1.0
objects.tuix_progressbar_set_style(obj,
    ord('#'), ord('-'),          # fill char, empty char
    120, 220, 80,                # fill RGB
    50,  50,  50)                # empty RGB

Choice

objects.tuix_choice_set_options(obj, [b"Yes", b"No", b"Maybe"])
# no manual feed_input needed (handled by engine/main loop)

if objects.tuix_choice_is_confirmed(obj):
    idx = int(objects.tuix_choice_get_result(obj))

Input

objects.tuix_input_set_placeholder(obj, b"Type here...")
# no manual feed_input needed (handled by engine/main loop)

if objects.tuix_input_is_submitted(obj):
    text = objects.tuix_input_get_result(obj)   # bytes

Canvas

objects.tuix_canvas_draw_rect  (obj, x, y, w, h, b'#', filled=1, r, g, b, br, bg, bb)
objects.tuix_canvas_draw_circle(obj, cx, cy, radius, b'O', filled=0, r, g, b, br, bg, bb)
objects.tuix_canvas_draw_line  (obj, x0, y0, x1, y1, b'/', r, g, b, br, bg, bb)
objects.tuix_canvas_draw_text  (obj, x, y, b"hello", r, g, b, br, bg, bb)
objects.tuix_canvas_set_pixel  (obj, x, y, b'*', r, g, b, br, bg, bb)

📁 Examples

Runnable examples are in the examples/ directory:

File Description
examples/widgets/progressbar_dual.py Two bars filling at different speeds
examples/widgets/choice_palette.py Colour palette menu, prints chosen RGB to stdout
examples/widgets/canvas_bounce.py Animated bouncing ball with colour cycling and FPS counter
examples/multimodal/focus_routing.py Keyboard + mouse focus routing between choice and input
examples/showcase/sequential_journey.py Full sequential demo (progressbar → choice → input → canvas)
examples/showcase/buffer_hierarchy_demo.py Parent-child buffer hierarchy and z-index layering (v0.3)
examples/showcase/scene_stats_demo.py Scene stats snapshots and compaction APIs (v0.3)
python examples/widgets/canvas_bounce.py

📚 Documentation

Full documentation is available at: https://docs.custosh.dev/docs/tuix-core


🧪 Tests

pip install pytest
pytest

60 tests covering engine lifecycle, scene management, registry, multimodal routing APIs, widget builders, snapshots/hierarchy APIs, scene compaction/stats, canvas draw calls, and examples layout integrity.


📊 Benchmarks

Benchmarked against blessed, terminal-kit, Ink, ReziTUI, Bubble Tea, Ratatui, OpenTUI.Core, OpenTUI.React, TUIX.Renderer, TUIX.Core, TUIX.Python, Rich, Urwid, PromptToolkit.

Latest run metadata (from BENCHMARKS.md):

  • Date: 2026-04-09T07:26:08.098Z
  • Runtime/OS: Node v22.19.0 on Windows_NT 10.0.26200 (win32 x64)
  • CPU/RAM: 12th Gen Intel(R) Core(TM) i5-12450HX (12 cores), RAM 24352MB

Runs include CI95 intervals and two byte metrics:

  • Bytes(local): bytes reported by each framework counter.
  • Bytes(pty): observed PTY bytes (cross-framework comparable).

Startup

Framework Mean ops/s Peak RSS
Ratatui 262µs 3.8K 27.0 KB
TUIX.Renderer 277µs 3.6K 3.9 MB
TUIX.Core 311µs 3.2K 4.0 MB
ReziTUI 346µs 2.9K 81.8 MB
TUIX.Python 371µs 2.7K 18.4 MB
Ink 3.26ms 306 64.9 MB
Blessed 34.93ms 29 152.6 MB

Tree Construction (1,000 items)

Framework Mean ops/s Peak RSS
TUIX.Renderer 83µs 12.1K 3.9 MB
TUIX.Core 126µs 7.9K 4.0 MB
OpenTUI.Core 134µs 7.5K 34.9 MB
TUIX.Python 219µs 4.6K 18.6 MB
Ratatui 1.30ms 770 27.0 KB
Bubble Tea 1.26ms 791 16.0 MB
Ink 54.72ms 18 364.8 MB

Re-render

Framework Mean ops/s Peak RSS
TUIX.Renderer 18µs 57.0K 3.9 MB
TUIX.Core 19µs 54.0K 4.1 MB
TUIX.Python 24µs 41.0K 18.6 MB
Blessed 35µs 28.2K 526.0 MB
Ratatui 67µs 14.9K 27.0 KB
Bubble Tea 162µs 6.2K 16.0 MB
Ink 812µs 1.2K 364.8 MB

Virtual List (100,000 items, viewport 40)

Framework Mean ops/s Peak RSS
TUIX.Core 31µs 32.2K 4.1 MB
OpenTUI.React 49µs 20.4K 38.9 MB
TUIX.Python 82µs 12.2K 18.8 MB
TUIX.Renderer 96µs 10.4K 4.2 MB
Ratatui 128µs 7.8K 27.0 KB
Ink 820µs 1.2K 365.7 MB

Terminal Full UI (120x40, 24 services)

Framework Mean ops/s Peak RSS
TUIX.Core 61µs 16.4K 4.6 MB
TUIX.Renderer 99µs 10.1K 4.6 MB
TUIX.Python 129µs 7.7K 19.4 MB
Ratatui 260µs 3.8K 27.0 KB
OpenTUI.Core 436µs 2.3K 36.3 MB
Bubble Tea 645µs 1.6K 24.5 MB
Ink 1.94ms 517 366.7 MB

Across the expanded suite, TUIX.Core leads many throughput-heavy scenarios (for example virtual-list and terminal-full-ui), while TUIX.Renderer and TUIX.Python are especially strong in low-latency rerender and input-oriented terminal workloads. Peak RSS for TUIX variants remains low versus most JavaScript/Python UI stacks.

Full tables (including CI95, CV, wall time, RSS growth, Bytes(local), and Bytes(pty)) are in BENCHMARKS.md.


⚙️ Architecture

tuix.core
├── engine.py       init / shutdown / main_loop
├── scenes.py       scene create / free / clear
├── registry.py     active scene pointer
├── builders.py     builder name constants + register_standard()
├── objects.py      widget API (progressbar / choice / input / canvas)
├── buffers.py      buffer snapshots + hierarchy + z-index
├── input.py        input listener + snapshot
├── _structs.py     ctypes mirror of C structs
└── _tuix_cy.pyx    Cython extension - all C calls go through here

The C core handles layout geometry, compositing, and rendering to the terminal. Python drives scene/object lifecycle and can read state safely through snapshots.


⚙️ Future Plans

  • Theme / style system
  • Async-friendly loop integration

Support / Donate

If you enjoy using TUIX, you can support its development:


📜 License

MIT License © 2026 custosh

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

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

tuix_core-0.4.tar.gz (324.0 kB view details)

Uploaded Source

Built Distributions

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

tuix_core-0.4-cp313-cp313-win_amd64.whl (515.9 kB view details)

Uploaded CPython 3.13Windows x86-64

tuix_core-0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tuix_core-0.4-cp313-cp313-macosx_10_13_universal2.whl (748.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

tuix_core-0.4-cp312-cp312-win_amd64.whl (516.5 kB view details)

Uploaded CPython 3.12Windows x86-64

tuix_core-0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tuix_core-0.4-cp312-cp312-macosx_10_13_universal2.whl (753.1 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

tuix_core-0.4-cp311-cp311-win_amd64.whl (516.9 kB view details)

Uploaded CPython 3.11Windows x86-64

tuix_core-0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tuix_core-0.4-cp311-cp311-macosx_10_9_universal2.whl (755.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

tuix_core-0.4-cp310-cp310-win_amd64.whl (516.4 kB view details)

Uploaded CPython 3.10Windows x86-64

tuix_core-0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tuix_core-0.4-cp310-cp310-macosx_10_9_universal2.whl (755.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file tuix_core-0.4.tar.gz.

File metadata

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

File hashes

Hashes for tuix_core-0.4.tar.gz
Algorithm Hash digest
SHA256 02857cae83fbdc5878284d2f2bab9352ee2ed482447e905c49107030c32fbdf6
MD5 ee926c1e05e3f2a0d9b3f9f3573db83a
BLAKE2b-256 9858ca969b4992d830e11c6d9efb4ecebd25d67b56b113d79863e112663b94c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4.tar.gz:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tuix_core-0.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 515.9 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 tuix_core-0.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f70eec8b081de3748263faa9ab4a2714b36d8652d652e689af7cec4546df59a8
MD5 e0ecd5b63652c2d7e0e89356f89f7620
BLAKE2b-256 94825e63d51a0a4232bfb97ac96554be31c93e53ae480a94fed8b0c573d25936

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp313-cp313-win_amd64.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuix_core-0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f469cba8ca85e78505acd938d3d7e46e21060c4cf8be42c5fceaa928b8e8128
MD5 b307a3dbfaaa526e18ab6308edfce76d
BLAKE2b-256 5aaf056611581599f4b5c5c21e148133dc73eaa703bf5f7ce2a7ee4af9e4827c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tuix_core-0.4-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 aae879f7fb1d611daf5040fac435fc79a0cba527f48ed4485beadbd6603ce948
MD5 a9a04f8d18fa6cfd272eff7bfd493f9e
BLAKE2b-256 6a39a92353ef0059030cde070e1c19a261f8d8120b4b9e65b992e83f6dc5e680

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp313-cp313-macosx_10_13_universal2.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tuix_core-0.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 516.5 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 tuix_core-0.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 51f39a2f4dd3437042ee043e331e1b088f575a67c2261f2b06fc50fb0bf1653a
MD5 f4244389b1bc7c514af10db197cacfd1
BLAKE2b-256 251dd6b58cf3df0c73eb67d3ffa1ce5eb99c3e247b835206fa14c52a495c1e0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp312-cp312-win_amd64.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuix_core-0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 57c1c10ad6edc037adf9c46ebab18f641628d71f7cd4e2b69a99a80d6a809346
MD5 1526b6dd9caff6a7456c1b9d857524e5
BLAKE2b-256 3f45bed6666d6ee0b3acb8aca88c179c4900615a67ca90de81ff86badd63aebc

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for tuix_core-0.4-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 a40d9c3c18f1cd671b665d7ad2caa33febfb071d10ad3239ca0bf3e0fdde28b6
MD5 5df702245455c6bc7caa79ab8e35b382
BLAKE2b-256 fbeedf7b75d22e39100f5650c2168685ed499e5e3930d8219407ecdb53d365cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp312-cp312-macosx_10_13_universal2.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tuix_core-0.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 516.9 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 tuix_core-0.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 962757a1c63702672777ce7a2d1393cbabe3142fb2c142294a478c8ea609c0e0
MD5 0764b46d28e8abf1f06ef073f71858b6
BLAKE2b-256 656fb3131797c460605c88088b41771d2fcac520c7f55c79999956a9b66cc87a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp311-cp311-win_amd64.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuix_core-0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f45a581f41578b12a7081860208f5d646ac240801e0c731e607c617c181e57a3
MD5 556d0eb433ee6446ffce35d9c3c53b48
BLAKE2b-256 8f8b1f19a47831c373126def0fde377dfd6b4192ee83e9c498488d2dda9c1307

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tuix_core-0.4-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 93e4bfa126a00e0f7db0a7882ee8ef96f2835ebdd7d1f220099e68bc31811597
MD5 837cd51b8d7ed237a43e292ff970e3d6
BLAKE2b-256 94ad17693a0519bc47cba0ebb34e72914d5d96734485ed72f9352242bd1a68af

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp311-cp311-macosx_10_9_universal2.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tuix_core-0.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 516.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tuix_core-0.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e63806517923a5ac19cd498f24ad06342035986df0c0aaa3ee43630a2fb9e682
MD5 d0592bb006399572538813246ea26be8
BLAKE2b-256 47975825381b8ea81c25f54c33adf8bcd6ced9d8e1fcc4e323d643df11b7e1c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp310-cp310-win_amd64.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tuix_core-0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 15802e21caee49e30b2d1e8ee0509a1d9707b08f503cf98a7805520b400de97c
MD5 c7c52b230b9d0a58e6f302129f58235c
BLAKE2b-256 01e174ddc1715f84d9053d66f1bca232676bbdfebabec88ef48a914242764941

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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

File details

Details for the file tuix_core-0.4-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for tuix_core-0.4-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 69645545a2fec4ea5e1c8cf9ec9dfae7adb968ab084d616b112adec33729d731
MD5 ec9a0fb66c27b148dede4468d3721549
BLAKE2b-256 3ed816f4c87249fff3d9d38938792211f7244ced3ccf0a0b9862f3f85e7bb622

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuix_core-0.4-cp310-cp310-macosx_10_9_universal2.whl:

Publisher: build.yml on anonim1321/build-tuix-core

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