A lightweight and modular terminal UI engine. Designed to make building interactive terminal interfaces simple and structured.
Project description
🧱 TUIX Core 0.5
🧩 Overview
TUIX is a modular terminal UI engine inspired by web technologies. It introduces a DOM-like component system, a nested layout model, a viewport-aware input/rendering pipeline, and a buffer-based renderer for building structured and styled terminal interfaces.
v0.5 ships a compiled C + Cython core focused on stability and composition. It hardens resize/teardown memory ownership, lowers render-path lock contention, promotes scrollable viewports to first-class layout/input owners, and expands the Python API around layout, modal UI, scene state, and widget control.
🆕 What's New In 0.5
- Core buffer ownership hardening:
TuixBuffer.pixels_owned, safer core/builder pixel lifetime rules, and core-owned copies for builder-returned temporary buffers. - Resize and teardown stability fixes across scene clear, registry destroy, buffer allocation, compaction, blank-row scratch rebuilds, and builder cached-pixel cleanup.
- Lower lock contention: builder callbacks run outside the global registry lock while snapshots/copies keep resize and build steps safe.
- Rendering diff stability improvements in text and halfblock renderers by comparing terminal-visible ANSI color output instead of unstable intermediate color values.
- Input routing fixes for heavy hover/drag traffic, hitmap target picking, viewport ownership, and generic mouse capture.
- Scrollable containers are now integrated through a viewport-aware compositor, geometry resolver, hitmap, and input-routing pipeline.
- First nested-layout contract:
TuixLayoutSlot,TuixLayoutRect, parent-first subtree rebuilds, and per-child slot/layout/grid override APIs. - New layout builders: Row, Column, SplitPane, and Grid.
- New viewport/UI widgets: Checkbox, ListView, TextArea, and Dialog.
- Python bindings now cover scene selection, modal activation, transactions, scene stats/compaction, mouse capture, layout/grid overrides, richer snapshots, and the new widget/layout APIs.
- Compatibility aliases remain for older high-level names such as
menu_set_options,status_set_status,button_is_pressed,scroll_container_get_scroll_pos, andbox_set_color. VideoPlayerBuilderremains internal-only for now due to stability concerns and low practical demand.
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. A higher-level framework API is now available at https://github.com/custosh/tuixpy.
🚀 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, objects, buffers, input
engine.init()
builders.register_standard()
scenes.init_scene(b"Main")
scenes.select_scene(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.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 |
Viewport-backed scroll container with content-space children |
builders.ROW |
Horizontal stack/flex-style layout parent |
builders.COLUMN |
Vertical stack/flex-style layout parent |
builders.SPLITPANE |
Two-pane layout with draggable/keyboard-resizable divider |
builders.GRID |
Grid layout with fixed and weighted row/column tracks |
builders.CHECKBOX |
Toggle with label, checked/disabled state, mouse and keyboard input |
builders.LISTVIEW |
Viewport-backed virtual list with selection and activation |
builders.TEXTAREA |
Multiline viewport-backed editor with cursor/scroll/editing APIs |
builders.DIALOG |
Modal dialog with backdrop, focus trapping, and close handling |
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)
Layout Builders
row_uid = objects.create_object(builders.ROW, b"Main", 0.9, 0.25, 0.1, 0.05)
row = objects.get_object_by_uid(row_uid)
objects.tuix_stack_set_gap(row, 2)
objects.tuix_stack_set_padding(row, 1, 1, 1, 1)
objects.tuix_stack_set_justify(row, builders.JUSTIFY_SPACE_BETWEEN)
objects.tuix_stack_set_align(row, builders.ALIGN_STRETCH)
label_uid = objects.tuix_stack_add_object(row, b"Main", builders.TEXT, 1.0, 1.0)
buffers.set_buffer_layout_slot_by_uid(label_uid, grow=1.0, min_w=12)
grid_uid = objects.create_object(builders.GRID, b"Main", 0.9, 0.5, 0.35, 0.05)
grid = objects.get_object_by_uid(grid_uid)
objects.tuix_grid_set_columns(grid, [
(builders.GRID_TRACK_WEIGHT, 1),
(builders.GRID_TRACK_FIXED, 24),
])
objects.tuix_grid_set_rows(grid, [
(builders.GRID_TRACK_FIXED, 3),
(builders.GRID_TRACK_WEIGHT, 1),
])
objects.tuix_grid_set_gaps(grid, 1, 1)
child_uid = objects.tuix_grid_add_object(grid, b"Main", builders.TEXT, 1.0, 1.0)
buffers.set_buffer_grid_placement_by_uid(child_uid, row=1, col=0, row_span=1, col_span=2)
Viewport And Modal Widgets
list_uid = objects.create_object(builders.LISTVIEW, b"Main", 0.4, 0.4, 0.1, 0.05)
listview = objects.get_object_by_uid(list_uid)
objects.tuix_listview_set_title(listview, b"Items")
objects.tuix_listview_set_items(listview, [b"Alpha", b"Beta", b"Gamma"])
textarea_uid = objects.create_object(builders.TEXTAREA, b"Main", 0.5, 0.4, 0.1, 0.5)
textarea = objects.get_object_by_uid(textarea_uid)
objects.tuix_textarea_set_title(textarea, b"Notes")
objects.tuix_textarea_set_placeholder(textarea, b"Type here...")
dialog_uid = objects.create_object(builders.DIALOG, b"Main", 0.9, 0.7, 0.05, 0.05)
dialog = objects.get_object_by_uid(dialog_uid)
objects.tuix_dialog_set_title(dialog, b"Confirm")
objects.tuix_dialog_activate(dialog, b"Main")
📁 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/widgets/text_and_box_demo.py |
Text and box builder styling demo |
examples/widgets/button_and_badge_demo.py |
Button and badge interaction demo |
examples/widgets/menu_and_tags_demo.py |
Menu and tag widgets together |
examples/widgets/scroll_container_demo.py |
Scroll container viewport demo |
examples/widgets/viewport_modal_demo.py |
ListView, TextArea, Checkbox, Button, and Dialog demo |
examples/multimodal/focus_routing.py |
Focus routing between Choice, ListView, and TextArea |
examples/showcase/sequential_journey.py |
Full sequential demo (progressbar → choice → input → canvas) |
examples/showcase/layout_demo.py |
Row, SplitPane, Grid, layout slots, and grid placement demo |
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
65 tests covering engine lifecycle, scene management, registry, multimodal routing APIs, widget builders, nested layout helpers, viewport widgets, modal state, 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 benchmark_report.md):
- Date: 2026-05-20T05:03:14.509Z
- 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
The README summary keeps Mean, ops/s, and Peak RSS. The full report also includes Runs, Run CV, Mean CI95, Wall, RSS Growth, 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 | 152µs | 6.6K | 27.0 KB |
| ReziTUI | 256µs | 3.9K | 81.4 MB |
| TUIX.Python | 286µs | 3.5K | 18.9 MB |
| TUIX.Core | 315µs | 3.2K | 4.1 MB |
| Bubble Tea | 315µs | 3.2K | 11.9 MB |
| TUIX.Renderer | 324µs | 3.1K | 3.9 MB |
| OpenTUI.React | 368µs | 2.7K | 35.9 MB |
Tree Construction (1,000 items)
| Framework | Mean | ops/s | Peak RSS |
|---|---|---|---|
| TUIX.Core | 108µs | 9.3K | 4.2 MB |
| TUIX.Renderer | 109µs | 9.2K | 4.0 MB |
| OpenTUI.Core | 110µs | 9.1K | 35.1 MB |
| TUIX.Python | 241µs | 4.1K | 19.1 MB |
| OpenTUI.React | 367µs | 2.7K | 38.2 MB |
| ReziTUI | 424µs | 2.4K | 188.5 MB |
| Rich | 1.00ms | 998 | 31.9 MB |
Re-render
| Framework | Mean | ops/s | Peak RSS |
|---|---|---|---|
| TUIX.Python | 9µs | 114.3K | 19.2 MB |
| TUIX.Renderer | 10µs | 98.0K | 4.0 MB |
| TUIX.Core | 15µs | 68.2K | 4.3 MB |
| Blessed | 27µs | 36.5K | 526.7 MB |
| Ratatui | 46µs | 21.7K | 27.0 KB |
| OpenTUI.React | 50µs | 19.8K | 38.2 MB |
| ReziTUI | 60µs | 16.7K | 196.6 MB |
Layout Stress (4 cols x 10 rows)
| Framework | Mean | ops/s | Peak RSS |
|---|---|---|---|
| TUIX.Renderer | 72µs | 13.9K | 4.0 MB |
| OpenTUI.Core | 80µs | 12.5K | 35.1 MB |
| OpenTUI.React | 80µs | 12.5K | 39.1 MB |
| TUIX.Core | 81µs | 12.3K | 4.2 MB |
| Ratatui | 89µs | 11.2K | 27.0 KB |
| TUIX.Python | 109µs | 9.2K | 19.3 MB |
| Bubble Tea | 172µs | 5.8K | 16.2 MB |
Scroll Stress (2,000 items)
| Framework | Mean | ops/s | Peak RSS |
|---|---|---|---|
| OpenTUI.React | 46µs | 21.5K | 39.1 MB |
| ReziTUI | 73µs | 13.7K | 191.7 MB |
| OpenTUI.Core | 91µs | 11.0K | 35.3 MB |
| Bubble Tea | 102µs | 9.8K | 16.2 MB |
| Ratatui | 111µs | 9.0K | 27.0 KB |
| TUIX.Core | 247µs | 4.0K | 4.2 MB |
| TUIX.Python | 311µs | 3.2K | 19.3 MB |
| TUIX.Renderer | 314µs | 3.2K | 4.0 MB |
Virtual List (100,000 items, viewport 40)
| Framework | Mean | ops/s | Peak RSS |
|---|---|---|---|
| OpenTUI.React | 62µs | 16.2K | 39.1 MB |
| Ratatui | 71µs | 14.0K | 27.0 KB |
| Blessed | 98µs | 10.2K | 529.4 MB |
| OpenTUI.Core | 104µs | 9.6K | 35.3 MB |
| ReziTUI | 111µs | 9.0K | 193.6 MB |
| Bubble Tea | 113µs | 8.9K | 20.2 MB |
| TUIX.Renderer | 120µs | 8.3K | 4.0 MB |
| TUIX.Core | 136µs | 7.4K | 4.3 MB |
| TUIX.Python | 156µs | 6.4K | 19.3 MB |
Terminal Full UI (120x40, 24 services)
| Framework | Mean | ops/s | Peak RSS |
|---|---|---|---|
| Ratatui | 193µs | 5.2K | 27.0 KB |
| OpenTUI.Core | 293µs | 3.4K | 37.3 MB |
| TUIX.Renderer | 352µs | 2.8K | 4.3 MB |
| OpenTUI.React | 365µs | 2.7K | 39.3 MB |
| TUIX.Python | 383µs | 2.6K | 19.8 MB |
| TUIX.Core | 413µs | 2.4K | 4.7 MB |
| Bubble Tea | 466µs | 2.1K | 20.5 MB |
In this run, TUIX.Core is effectively tied for the fastest 1,000-item tree construction, TUIX.Python leads the low-latency re-render scenario, and TUIX.Renderer leads layout stress. Terminal full-UI and scroll/virtual-list scenarios are more mixed, but TUIX variants keep Peak RSS around 4-20 MB and the full report shows low observed PTY byte output for several full-screen workloads.
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 / stats / mouse capture
├── scenes.py scene lifecycle / focus / modal / transactions / compaction
├── registry.py active scene pointer
├── builders.py builder constants + layout/grid constants + register_standard()
├── objects.py widget, layout, viewport, and modal runtime APIs
├── buffers.py snapshots + hierarchy + z-index + layout/grid overrides
├── input.py input listener + consuming/non-consuming snapshots
├── _structs.py ctypes mirror of C structs
└── _tuix_cy.pyx Cython extension - all C calls go through here
The C core handles layout geometry, viewport clipping, hitmap generation, compositing, diffing, and terminal rendering. Python drives scene/object lifecycle, widget state, nested layout placement, and safe state inspection through snapshots.
⚙️ Future Plans
- Optional runtime assertions around buffer bounds and ownership
- Debug mode for buffer allocation/free and ownership-transition logs
- 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
Release history Release notifications | RSS feed
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 tuix_core-0.5.tar.gz.
File metadata
- Download URL: tuix_core-0.5.tar.gz
- Upload date:
- Size: 403.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36407dfcb4b6b110cb1fe90542aae9f6c906f6bd4e42a441c7bada8cf0435b7d
|
|
| MD5 |
a497cfa7c7355f18aa0a46a432fdc23f
|
|
| BLAKE2b-256 |
701a3babae7a0b7cae362974ab70b3727612b4fef0588359f48eed6f1657f2a4
|
Provenance
The following attestation bundles were made for tuix_core-0.5.tar.gz:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5.tar.gz -
Subject digest:
36407dfcb4b6b110cb1fe90542aae9f6c906f6bd4e42a441c7bada8cf0435b7d - Sigstore transparency entry: 1592620833
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: tuix_core-0.5-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 678.6 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fd0dfe6c02c9a294b1f48ac4ac6b2d53da44381d4047040fac4fa26a45fedbf
|
|
| MD5 |
aaa5445dfe2ab6ec1eb8f71cf115527a
|
|
| BLAKE2b-256 |
d5d5160e01161d84e2676c777cf592cf0aa734c4617f44c0e45d6fd5a0f155ad
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp313-cp313-win_amd64.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp313-cp313-win_amd64.whl -
Subject digest:
3fd0dfe6c02c9a294b1f48ac4ac6b2d53da44381d4047040fac4fa26a45fedbf - Sigstore transparency entry: 1592620976
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: tuix_core-0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.1 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.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
727af8936821a8b0b7e3377ef4d5261ab8576feac47edac8c4717cd5ad63180a
|
|
| MD5 |
8cb6890982ec5a48b6b15bb00a56e407
|
|
| BLAKE2b-256 |
e32ed2641e78c8ff79ba0b8442390f82c3969a7db397bd8c52a228869218bc1c
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
727af8936821a8b0b7e3377ef4d5261ab8576feac47edac8c4717cd5ad63180a - Sigstore transparency entry: 1592620914
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp313-cp313-macosx_10_13_universal2.whl.
File metadata
- Download URL: tuix_core-0.5-cp313-cp313-macosx_10_13_universal2.whl
- Upload date:
- Size: 984.0 kB
- Tags: CPython 3.13, macOS 10.13+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
660babbd7715bcf081555a544c675fb00767af4f7b6b8977cf608aef034e9f85
|
|
| MD5 |
448f397b451ed08c8652fba9e5f4f593
|
|
| BLAKE2b-256 |
2ba5b288347183a619bf7b24bb27c687cb657c90971ed4c62fc2519b23ed377b
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp313-cp313-macosx_10_13_universal2.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp313-cp313-macosx_10_13_universal2.whl -
Subject digest:
660babbd7715bcf081555a544c675fb00767af4f7b6b8977cf608aef034e9f85 - Sigstore transparency entry: 1592620939
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: tuix_core-0.5-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 679.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1214c525bb18765572b2e949fc2c84ead1db9c274fcfde1ea5c6af4e1425ed29
|
|
| MD5 |
e26ed2a0c5d6f3649b207ff7b31228a2
|
|
| BLAKE2b-256 |
8b2c0f401531b928da6621075033a0e2848769637cb9306940b733e5d97d78b8
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp312-cp312-win_amd64.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp312-cp312-win_amd64.whl -
Subject digest:
1214c525bb18765572b2e949fc2c84ead1db9c274fcfde1ea5c6af4e1425ed29 - Sigstore transparency entry: 1592620932
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: tuix_core-0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.1 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.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2739435ee5c6abfb6161d6da3028675a88115e49d191937f1224402f523f9ce2
|
|
| MD5 |
981ce6ad94b268c099aa8c4d814ace00
|
|
| BLAKE2b-256 |
d061ebe9cd352a7555f9dcb2f39e63824f75877f0e2d6ee32e3a88c506661de8
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
2739435ee5c6abfb6161d6da3028675a88115e49d191937f1224402f523f9ce2 - Sigstore transparency entry: 1592620875
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp312-cp312-macosx_10_13_universal2.whl.
File metadata
- Download URL: tuix_core-0.5-cp312-cp312-macosx_10_13_universal2.whl
- Upload date:
- Size: 988.5 kB
- Tags: CPython 3.12, macOS 10.13+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbd3e0ccfbf2ec922ee040af4c12269459cbcf63c7c39f314a824675c4cc6f7c
|
|
| MD5 |
959831c660656eb2c7a2ef83c8cf7d43
|
|
| BLAKE2b-256 |
745f1001d8a56b74e95c7eee3c433b82793516f9c760a3103ab2adde462feed8
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp312-cp312-macosx_10_13_universal2.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp312-cp312-macosx_10_13_universal2.whl -
Subject digest:
cbd3e0ccfbf2ec922ee040af4c12269459cbcf63c7c39f314a824675c4cc6f7c - Sigstore transparency entry: 1592620986
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: tuix_core-0.5-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 705.2 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33e99cf6529f20e933b60a540f9ed2390b3224afdce973319e2490f54b2c0cfb
|
|
| MD5 |
cf72dcd7b23e1db75aba599659ca0bef
|
|
| BLAKE2b-256 |
54001842bd22e616707104a5da4ab8d1a6d8bbbd7327f6bf6bde72299b4bf84c
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp311-cp311-win_amd64.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp311-cp311-win_amd64.whl -
Subject digest:
33e99cf6529f20e933b60a540f9ed2390b3224afdce973319e2490f54b2c0cfb - Sigstore transparency entry: 1592620922
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: tuix_core-0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.2 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.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ce041575b52070ff53350e926d543aa5b3fecdaa62a9a209738d5870a8595ae
|
|
| MD5 |
366af3642a3d03b373e4a96d32cd5f4c
|
|
| BLAKE2b-256 |
162531807389b039c4df2a965e6a508b03df1f4b6bf5c3d2b9a227f547382622
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
1ce041575b52070ff53350e926d543aa5b3fecdaa62a9a209738d5870a8595ae - Sigstore transparency entry: 1592620962
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp311-cp311-macosx_10_9_universal2.whl.
File metadata
- Download URL: tuix_core-0.5-cp311-cp311-macosx_10_9_universal2.whl
- Upload date:
- Size: 988.3 kB
- Tags: CPython 3.11, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52d29af74d89074ac83a2497dd42527038f69f10fcb0b9bb216b08bbcf037bc2
|
|
| MD5 |
d6fe5f28234f390d9cf1eebb3c2d3530
|
|
| BLAKE2b-256 |
7bf0b2bd38765903e7f883f28bdaa851511a43224d4a9442bd5875b7394d17e3
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp311-cp311-macosx_10_9_universal2.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp311-cp311-macosx_10_9_universal2.whl -
Subject digest:
52d29af74d89074ac83a2497dd42527038f69f10fcb0b9bb216b08bbcf037bc2 - Sigstore transparency entry: 1592620949
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: tuix_core-0.5-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 704.9 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca837711869a1cd3c04b05404eefcb4203567abec3ff393f3d0ce67c4cff4e53
|
|
| MD5 |
e54aa3f72404edd772b4c94a8b673379
|
|
| BLAKE2b-256 |
a1e0a1f90d2d96c66f18cd03f9bd21626334be00e181bb96e2408e452f89a590
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp310-cp310-win_amd64.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp310-cp310-win_amd64.whl -
Subject digest:
ca837711869a1cd3c04b05404eefcb4203567abec3ff393f3d0ce67c4cff4e53 - Sigstore transparency entry: 1592620844
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: tuix_core-0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a8421344e881ea5e40e996acb46119103d3f7225e435d6cbfedf76ddea9ab8d
|
|
| MD5 |
4f205f87e2c7926894c959688da48281
|
|
| BLAKE2b-256 |
f06768b1fd398a8e34aa4ec3f31c7eae62f5d3a0ff8417551345acbad4887d57
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
3a8421344e881ea5e40e996acb46119103d3f7225e435d6cbfedf76ddea9ab8d - Sigstore transparency entry: 1592620896
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tuix_core-0.5-cp310-cp310-macosx_10_9_universal2.whl.
File metadata
- Download URL: tuix_core-0.5-cp310-cp310-macosx_10_9_universal2.whl
- Upload date:
- Size: 987.8 kB
- Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ad268db40c1ccf6b35f7667e349ba98b35521c02f1a5325cedb3ed406e2eeec
|
|
| MD5 |
134c956d3efafbc07dfe0103f6f9bfee
|
|
| BLAKE2b-256 |
f7274419f531b75f515ed5659de6a37aa8d9c5d705a885b954be48a1bb1614dc
|
Provenance
The following attestation bundles were made for tuix_core-0.5-cp310-cp310-macosx_10_9_universal2.whl:
Publisher:
build.yml on anonim1321/build-tuix-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuix_core-0.5-cp310-cp310-macosx_10_9_universal2.whl -
Subject digest:
0ad268db40c1ccf6b35f7667e349ba98b35521c02f1a5325cedb3ed406e2eeec - Sigstore transparency entry: 1592620856
- Sigstore integration time:
-
Permalink:
anonim1321/build-tuix-core@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/anonim1321
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@c9882fd339ee9a3a54b53c3a8f54bde73b93bac8 -
Trigger Event:
workflow_dispatch
-
Statement type: