Skip to main content

Python bindings for the maya C++26 TUI framework

Project description

maya-py

Python bindings for maya — a C++26 TUI framework with flexbox layout, a SIMD cell-diff renderer, and an Elm-style runtime. maya-py gives you a dead-simple Python API for building styled terminal UIs and interactive apps.

import maya_py as maya
from maya_py import card, field, b, hr

maya.show(card(
    b("maya-py").fg("sky"),
    hr(20),
    field("Status", "Online", value_color="green"),
    field("Region", "us-east-1"),
    title="service",
))

That's the whole program. Strings are UI — no manual element wrapping.

Documentation

A full reference manual lives in docs/:

  • Getting Started — install, first UI, first app.
  • Text & StyleT, markup helpers, colors.
  • Layoutcol, row, card, field, hr, options.
  • Apps — the App class, key bindings, state, the view.
  • Widgets — 44 native renderers: charts, controls, agent UI, scrolling.
  • Renderingshow, to_string, animate, run.
  • Performancememo, the boundary tax, benchmarks.
  • API Reference — every public symbol.
  • Low-Level API — primitives and the native binding.
  • Distribution — standalone wheels for old machines.

The 30-second tour

Text: just style strings

from maya_py import T, b, i, dim_text, c

b("bold")                 # bold
T("hi").bold.fg("sky")     # fluent chain
c("warn", "orange")        # colored
T("x").bg("red").fg("white")

Colors accept names ("red", "sky", "gold"), hex ("#ff8800", "#f80"), tuples ((255, 128, 0)), or ints (0xFF8800).

Layout: stacks that take bare strings

from maya_py import col, row, card, field, hr

col("top", "middle", "bottom")          # vertical
row("left", "right", gap=2)             # horizontal
card("body", title="hi", pad=1)          # bordered box
field("Name", "Ada")                     # "Name: Ada"
hr(40)                                   # horizontal rule

col / row / card accept the full maya flexbox surface as keywords:

  • box model: pad, margin, gap (int or 1/2/4-tuples)
  • border: border ("round"/"double"/"bold"/"dashed"/...), border_color, border_sides=sides(top=..., left=...), title, and positioned border_text=("Title", Top, Center) / border_text_end
  • sizing: width, height, min_width/max_width, min_height/max_height — each takes an int (cells), "50%", a float like 0.5, "auto", or pct(50)/cells(20)/auto()
  • flex: grow, shrink, basis, align, align_self, justify, wrap ("wrap"/"nowrap"/"reverse"), overflow ("hidden"/"scroll")
  • style: bg, fg, style=maya.style(...)

Full layout power

Everything maya C++ can express, the Python API can too:

from maya_py import T, col, row, card, center, stack, grow, component, pct, cells, sides

# percent widths + a flex child that fills the rest
row(
    card("nav", width=pct(30), title="sidebar"),
    grow(card("main content", title="body")),   # expands to fill
    gap=1,
)

# center anything in a region
center("ready", width=cells(20), height=5, border="round")

# z-stack: layers paint on top; the first sets the size
stack(card("  panel  ", height=6), T("NEW").fg("red").bold)

# partial borders
card("footer", border_sides=sides(top=True, right=False, bottom=False, left=False))

# a size-aware widget — render_fn(width, height) draws to fit its box
def bar(w, h):
    filled = int(w * 0.4)
    return T("█" * filled + "░" * (w - filled)).fg("green")
col("Loading", component(bar, height=1))

Widgets: maya's native renderers

maya ships a library of ready-made widgets — they render through the same C++ renderer maya uses, then drop straight into any layout:

from maya_py import col, row, sparkline, gauge, progress, badge, table, bar_chart

col(
    sparkline([3, 1, 4, 1, 5, 9, 2, 6], label="req/s", color="sky", show_last=True),
    gauge(0.72, "load", style="bar"),            # "arc" or "bar"
    progress(0.55, "build", width=24, fill="lime"),
    row(badge("PASS", kind="success"), badge("SKIP", kind="warning"), gap=1),
    table(["Name", ("Score", 0, "right")],       # (header, width, align)
          [["Ada", 99], ["Bob", 7]], bordered=True, title="top"),
    bar_chart([("jan", 4), ("feb", 9), ("mar", 6)]),
    gap=1,
)

Available — every color argument takes a name / (r,g,b) / "#rrggbb" / Color, same as everywhere else:

  • charts & meters: sparkline, gauge, progress, bar_chart, line_chart, heatmap, flame_chart, waterfall
  • controls (rendered in any state — pass checked/on/selected/cursor): checkbox, toggle, radio, select, slider, button
  • text & labels: badge, divider, spinner, callout, status_banner, breadcrumb, tabs, gradient, link, title_chip, model_badge, file_ref, markdown
  • structure & nav: table, tree, list_view, menu, disclosure, key_help, calendar, timeline, picker (bordered command palette)
  • agent UI: thinking, todo_list, toast, inline_diff
  • graphics: image (1-bit braille), canvas (color half-block grid), Canvas (imperative drawing surface: set_pixel/line/rect/fill)
from maya_py import col, row, checkbox, slider, todo_list, timeline, tree

col(
    checkbox("Ship it", checked=True),
    slider(0.6, "volume", width=24, fill="sky"),
    todo_list([("design", "completed"), ("build", "in_progress"), "test"],
              description="sprint", status="running"),
    timeline([("clone", "", "0.4s", "completed"),
              ("compile", "", "", "in_progress", 8)]),
    tree({"label": "src", "expanded": True,
          "children": [{"label": "main.py"}, {"label": "util.py"}]}),
    gap=1,
)

List/tuple inputs are flexible: list items accept "str", (label, description, icon), or {...} dicts; timeline/todo statuses accept strings ("completed", "in_progress", ...) or the exported enums (TaskStatus, TodoItemStatus, ToastLevel, ButtonVariant).

Scrolling: viewport + scrollbar

Clip tall/wide content to a window and pair it with a live scrollbar. Scrolling just works with no handler code — exactly like maya, the run loop auto-forwards ↑↓ / PgUp / PgDn / Home / End and the mouse wheel + scrollbar drag to every on-screen scroll state:

from maya_py import App, col, row, T, scroll_state, viewport, scrollbar

app = App("log", mouse=True)            # mouse=True for wheel + thumb drag
s = scroll_state()                      # auto-dispatch on (the maya default)
app.state(s=s)
content = col(*[T(f"line {i}") for i in range(200)])

@app.on("q", "esc")
def quit(st): app.stop()

@app.view
def view(st):
    return row(
        viewport(content, st.s, height=14, grow=1),   # 14-row window, fills width
        scrollbar(st.s, 14, style="neon", thumb_color="sky"),
        gap=1,
    )

app.run()

That's the whole thing — no scroll handler. viewport(content, state, width=, height=, grow=) clips + scrolls (0 on an axis = fill; grow=1 expands to fill its row/column so a sibling scrollbar pins to the edge). scrollbar(state, size, axis="y"|"x", style=, thumb_color=, track_color=) draws the bar; style is a preset name — line, block, slim, heavy, double, dotted, dashed, braille, ascii, shadow, minimal, neon, retro, danger, pixel. The ScrollState exposes x/y/max_x/max_y, scroll_by, scroll_to, scroll_to_top/bottom, at_top()/at_bottom(), and viewport_bounds (the painted rect, for click hit-testing).

Need custom routing (several independent scroll regions)? Set state.auto_dispatch = False and call scroll_handle(state, ev) yourself inside @app.on_key / @app.on_mouse. Don't do both — that double-scrolls.

Apps: a class with decorators, no event loop

from maya_py import App, card, b

app = App("counter", n=0, quit_keys=("q", "esc"))   # state + quit in the constructor

@app.on("+", "=")
def inc(s): s.n += 1

@app.on("-")
def dec(s): s.n -= 1

@app.view
def view(s):
    return card(b(f"Count: {s.n}").fg("sky"), title="counter")

app.run()

Key names: single chars ("q", "+"), "up"/"down"/"left"/"right", "enter", "esc", "space", "tab", "ctrl+c", "alt+x", etc. Handlers get the state object; the view re-renders every frame.

Text input

Real interactive Input widgets — type into them, Tab between them, read .value. Register them with app.focus(...) and drop them in the view:

from maya_py import App, text_input, col

app = App("search")
query = text_input("type to filter…")
app.focus(query)

@app.view
def view(s):
    return col(query, f"searching: {query.value}")

app.run()

text_input(password=True) masks, textarea() is multi-line. @query.on_submit fires on Enter. An animation tick is @app.on_frame def tick(s, dt): ....

Mouse: clicks, scroll, drag

Decorate handlers for mouse input — registering any of them auto-enables mouse reporting (no mouse=True needed):

from maya_py import App, card

app = App("clicker")
app.state(hits=0, pos=(0, 0))

@app.on_click("left")          # "left" / "right" / "middle" / "any"
def click(s, col, row):        # col, row are 1-based screen cells
    s.hits += 1
    s.pos = (col, row)

@app.on_scroll
def scroll(s, direction):      # -1 up, +1 down
    s.hits += direction

@app.on_mouse
def any_mouse(s, ev):          # every mouse event (press/release/move/scroll)
    ...

@app.on("q", "esc")
def quit(s): app.stop()

@app.view
def view(s):
    return card(f"clicks {s.hits}  at {s.pos}", title="clicker")

app.run()

Low-level predicates work on any event too: mouse_clicked(ev, button), mouse_released(ev), mouse_moved(ev), scrolled_up/down(ev), mouse_pos(ev) -> (col, row) | None, mouse_button(ev), mouse_kind(ev), is_mouse(ev). Mouse needs a terminal that reports it (xterm, kitty, iTerm2, Windows Terminal, or tmux with set -g mouse on).

Animation

import maya_py as maya
from maya_py import animate, card

frames = "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏"
n = 0
def render(dt):
    global n; n += 1
    return card(frames[n % len(frames)] + " working")
animate(render, fps=30)   # maya.quit() to stop

Examples

Every maya C++ example is ported 1:1 to Python — 34 of them, plus extras. Most are full apps you can drive; run any with PYTHONPATH=src python examples/NAME.py. A headless examples/smoke_all.py renders one frame of each (CI-friendly, no TTY needed).

Games & toys (half-block pixel rendering via examples/_halfblock.py):

  • snake.py — playable Snake (arrow keys / WASD).
  • breakout.py — Breakout/Arkanoid with bricks, comet trail, particles.
  • life.py — Conway's Game of Life with heat-aging palettes + patterns.
  • sorts.py — five sorting algorithms racing side by side.
  • maze.py — watch a maze carve itself (recursive backtracker) then a BFS flood-solve it; click to set the start cell, right-click the goal.

Graphics & sims (animate / App render loops):

  • doom_fire.py — the classic Doom fire effect, 3 palettes.
  • fluid.py — advection fluid / plasma with curl-noise velocity.
  • particles.py — a gravity particle fountain.
  • space.py — warp-speed starfield. space3d.py — rotating 3D wireframes.
  • raymarch.py — a real-time raymarched SDF scene (sphere + plane).
  • fps.py — a Wolfenstein-style textured raycaster with a minimap.
  • mandelbrot.py — a zooming coloured Mandelbrot. matrix.py — digital rain.
  • canvas.py — the Canvas drawing surface: lines, rects, a live plot.
  • clock.py — a live analog clock drawn on the Canvas (hands, ticks, arc).
  • gravity.py — an n-body gravity sandbox; mouse-hover crosshair, click to spawn an orbiting burst at the exact pixel.
  • boids.py — Reynolds flocking; the mouse leads or scatters the flock (precise, viewport-bounds hit-testing — no hardcoded offsets).

Dashboards & data:

  • dashboard.py — full-power layout (sidebar, z-stack, size-aware bars).
  • sysmon.py — live system monitor (sparklines, gauges, log feed).
  • stocks.py — stock ticker with sparklines + a gainers board.
  • spectrum.py — a faux audio spectrum analyzer. music.py — a player UI.
  • hacker.py — a "hollywood hacker" terminal of fake breaches.

Apps & agent UI:

  • deploy.py — a CI/CD pipeline dashboard with a live stage timeline.
  • chat.py — a chat client with bubbles + typing indicator.
  • messenger.py — multi-channel chat with unread badges + a composer.
  • ide.py — a VS Code / Zed-style mini IDE (tree, tabs, diagnostics, git).
  • agent.py / agent_session.py — Claude-Code-style agent sessions: thinking → tool cards → todo plan → streaming markdown answer.
  • widgets.py — one-shot widget showcase. widgets_gallery.py — live version.
  • markup.py — a GFM markdown render that flows into scrollback (pipe to less -R).
  • inline_progress.py — inline print + live (no alt-screen takeover).

Primitives & basics:

  • hello.py static card · counter.py / stopwatch.py / todo.py App basics · paint.py mouse painter · live_spinner.py inline animation.
  • scroll.py / scroll_clip.py / scroll_2d.py / scroll_slice.py / scroll_styles.py — every scrolling pattern (clip, two-axis, million-row slice, and all 15 scrollbar styles).

Run any of them:

PYTHONPATH=src python examples/agent_session.py

Install

The wheels are standalone — no compiler needed. maya-py ships precompiled binary wheels for CPython 3.9–3.14 on Linux (x86_64 + aarch64), macOS (universal2 — Apple Silicon and Intel in one wheel, macOS 11+), and Windows (x64), so on a normal machine you just:

pip install maya-py

That's it — the wheel already contains the compiled extension, and pip picks the right one for your OS / architecture / Python automatically.

Terminal note. maya speaks ANSI/VT escapes + truecolor + UTF-8. On Linux and macOS any modern terminal works. On Windows use Windows Terminal (the default on Windows 11; free on Windows 10) or any VT-capable host — the legacy cmd.exe console works too (maya enables ENABLE_VIRTUAL_TERMINAL_PROCESSING on startup), but Windows Terminal gives the best Unicode + color fidelity.

Installing straight from a GitHub Release (no PyPI)

If you'd rather not use PyPI (or want a specific build), install from the release assets. Let pip pick the right wheel for your Python:

pip install --find-links \
  https://github.com/1ay1/maya-py/releases/expanded_assets/v0.1.3 \
  maya-py

Or install a specific .whl by direct URL:

# e.g. CPython 3.13 on x86_64 Linux
pip install https://github.com/1ay1/maya-py/releases/download/v0.1.3/maya_py-0.1.3-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

The Linux wheel works even on machines with a very old C++ toolchain (or none at all), because:

  • the wheel is built inside a manylinux_2_28 container, so it targets glibc 2.28 (2019) and runs on that-or-newer distros;
  • it statically links libstdc++/libgcc, so it doesn't need the host's (old) C++ runtime — it depends only on baseline libc/libm.

The macOS wheel targets macOS 11.0+ and uses the system libc++; the Windows wheel links the UCRT present on every Windows 10+ machine. Nothing on your machine is compiled at install time, so your system compiler is irrelevant.

No matching wheel? Build from the sdist

If no prebuilt wheel matches your platform/Python, install the source distribution — this compiles the extension locally and needs a C++23-capable toolchain and CMake ≥ 3.28:

  • Linux: GCC ≥ 14 or Clang ≥ 18
  • macOS: AppleClang ≥ 15 (Xcode 15 — xcode-select --install)
  • Windows: Visual Studio 2022 ≥ 17.10 (MSVC cl ≥ 19.40), "Desktop development with C++" workload
pip install \
  https://github.com/1ay1/maya-py/releases/download/v0.1.3/maya_py-0.1.3.tar.gz

The compile pulls maya in via CMake FetchContent and takes ~1–2 minutes (it builds maya from source). If your compiler is too old, the build aborts early with a clear, actionable message rather than a wall of template errors.

Development build

To hack on maya-py, build the extension in place (uses a sibling ../maya-src checkout if present, else clones maya):

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
cp build/_maya*.so src/maya_py/
PYTHONPATH=src python examples/hello.py

Wheels are produced by cibuildwheel via .github/workflows/wheels.yml — push a vX.Y.Z tag to build them and attach them to a GitHub Release automatically.

Low-level API

The friendly layer above is built on a thin primitive surface. You rarely need it, but it's there when you want raw control. box/text take explicit Style/Color objects:

maya.box(
    maya.text("Hello", maya.bold | maya.fg(255, 128, 0)),
    border=maya.Round, padding=1,
)
  • text(content, style=None, wrap=...), box(*children, **opts), vstack/hstack/zstack, center, blank(), nothing().
  • box opts mirror maya's BoxBuilder 1:1: direction, wrap, gap, padding, margin, border, border_color, border_sides, border_text, border_text_end, bg, fg, style, overflow, grow, shrink, basis, align, align_self, justify, and width/height/min_*/max_* (each accepts an int, "50%", "auto", or a Dimension).
  • component(fn, grow=..., width=..., height=...) — a lazy element whose fn(width, height) runs once layout allocates a size and returns the tree to fill it.
  • scroll_state(), viewport(content, state, width=, height=), scrollbar(state, size, axis=, style=), scroll_handle(state, ev) — the scrollable-window + scrollbar pair (maya's ScrollState + scrollbar_y/x).
  • Styles compose with |: maya.bold | maya.fg(255, 128, 0), or maya.style(fg=(80,220,120), bold=True).
  • render_to_string(element, width=80), print(element), live(render_fn, fps=30), run(event_fn, render_fn, ...).
  • Event predicates: key(ev, "q"), key_special(ev, SpecialKey.Up), ctrl(ev, "c"), alt(ev, "x"), any_key(ev), resized(ev).

Notes

maya's compile-time DSL (t<"...">, type-state pipes) is resolved by the C++ compiler and can't cross the Python boundary, so maya-py routes everything through maya's equivalent runtime builders. The element trees produced are identical — anything the DSL can express, the runtime API can too.

The widget functions wrap maya's own widget classes (Sparkline, Gauge, Table, ...) and return the Element they build, so what you see is maya's native rendering, not a Python reimplementation. Interactive controls that need maya's Program runtime + focus + signals (Input, TextArea, full List/Tree navigation) aren't wrapped — drive interactivity from the App class instead.

Performance

Honest numbers from examples/bench.py and examples/bench_live.py (30-row dashboard, this machine — yours will differ):

Rendering to a string (one-shot output). Here a tuned pure-Python renderer wins — building the element tree in Python and crossing pybind11 costs more than maya's native render saves:

path per render
maya-py (build + render) ~340 µs
pure-Python equivalent ~68 µs

~65% of maya-py's time is the Python tree construction + boundary crossing, not maya. So if you only render static output, a pure-Python lib like Rich will likely be faster.

Live redraw to a terminal (what maya is built for). When you redraw a frame and only part changed, maya's SIMD cell-diff emits only the changed cells. A string renderer must re-emit the whole frame:

path bytes written / frame
maya-py (diff) ~112 B
re-emit whole frame ~1238 B

maya writes ~11× fewer bytes to the terminal. On a real tty — especially over SSH or a slow connection — bytes-on-wire is the bottleneck, and this is a decisive win. This is the scenario maya was designed for.

Making it fast

Three levers close most of the Python-side gap:

  1. Fluent styling is free. T("x").bold.fg("sky") accumulates state in pure Python and makes a single boundary crossing when the element is built (4.8× faster than the naive one-call-per-.bold approach).

  2. Pass styled cells as tuples to skip the T objects. row/col accept (text, fg[, bg[, attrs]]) tuple specs directly — in a hot redraw path (tables, lists, dashboards) the throwaway T per cell is the dominant build cost, and the tuple form flattens the whole row in one boundary crossing. Byte-identical output, same API:

    from maya_py import row, T, c, DIM
    
    # reads nicer for one-off UI:
    row(T(name).fg("sky"), c(status, color), T(latency).dim, gap=2)
    # faster (tuple cells, zero T allocations — use in per-frame loops):
    row((name, "sky"), (status, color), (latency, None, None, DIM), gap=2)
    

    You can mix both, and any built Element / nested box / component child transparently falls back to the general path — so row(sidebar, grow(main)) still works. (trow/tcol are kept as back-compat aliases; new code can just use row/col.)

  3. memo caches unchanged sub-trees. In a live app, wrap builders whose inputs rarely change — the hot frame then does no Python tree construction, just maya's native diff:

    from maya_py import memo, card, col, b
    
    @memo
    def header(title, count):     # rebuilt only when title/count change
        return card(b(title), f"{count} items")
    
    def view(s):
        return col(header(s.title, len(s.items)), body(s))
    

Bottom line: building a UI in Python always costs Python calls, but the thing that actually matters in a terminal — the per-frame redraw — is now faster than a hand-tuned pure-Python renderer: maya's native layout + paint renders the cached tree in ~25µs vs ~70µs for the bespoke string-builder in examples/bench.py, while still doing real flexbox, wrapping, and a partial-frame diff. memo + tuple-cell row/col let the steady-state frame skip Python almost entirely.

License

MIT (same as maya).

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

maya_py-0.2.1.tar.gz (193.8 kB view details)

Uploaded Source

Built Distributions

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

maya_py-0.2.1-cp314-cp314-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.14Windows x86-64

maya_py-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

maya_py-0.2.1-cp314-cp314-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

maya_py-0.2.1-cp313-cp313-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.13Windows x86-64

maya_py-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

maya_py-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

maya_py-0.2.1-cp312-cp312-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.12Windows x86-64

maya_py-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

maya_py-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

maya_py-0.2.1-cp311-cp311-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.11Windows x86-64

maya_py-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

maya_py-0.2.1-cp311-cp311-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

maya_py-0.2.1-cp310-cp310-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.10Windows x86-64

maya_py-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

maya_py-0.2.1-cp310-cp310-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

maya_py-0.2.1-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

maya_py-0.2.1-cp39-cp39-manylinux_2_28_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

maya_py-0.2.1-cp39-cp39-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file maya_py-0.2.1.tar.gz.

File metadata

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

File hashes

Hashes for maya_py-0.2.1.tar.gz
Algorithm Hash digest
SHA256 47f055d908d3b4c0f5091da4322e4f24bf3de835cb302480cea1e5c02cb3e807
MD5 82f3e5a0c1d5388a99bd3bba5158f162
BLAKE2b-256 00c454898ca59b350d0e511440cfb2a236d4522a42a2fd7855611880c5656e18

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1.tar.gz:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: maya_py-0.2.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for maya_py-0.2.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a023fa04228721739824b9a61b46c00cb7864dac0412841c1be47eeeff89da36
MD5 4afc38e0a8331f55b84df81b5e05d516
BLAKE2b-256 216eeb03a8a13c3aec311fa18c30bed3d536dc9bf014ae6bcaa49d9bd0d09f93

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp314-cp314-win_amd64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a8504e228971b21257e85e1640a3e031d6498c2cd73f92b055d66bd646497f4e
MD5 19d2eac8482fec1607863e4401ed64d8
BLAKE2b-256 b53ebf28843a781a8f003f8705b3dc617970243ad4b1454c5f0395078185c008

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98138f7756a661f99f177a31c3d2cd48c5a8e690f2fdb58aecbbf3407c07de90
MD5 c0df5860f8fc6dc00b47d77732f7a0c0
BLAKE2b-256 10bea95654370fa35c642da0692485ac4d066ae7dd653724f44ea107e9518d2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: maya_py-0.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.0 MB
  • 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 maya_py-0.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6d921d562336853fbe88347fd5f5d676e0dd7bd8874f644f586c0f8a592e2429
MD5 d54cdd1fc4e63d63c5fe3b309e49b889
BLAKE2b-256 97bcffdc826af29193860e3077def13efb1cd73e2a8210b222a3e2fbdb18c521

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp313-cp313-win_amd64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4458c5522e8de14f5caa148039c9e06c28df5fa626e7f2e672e36bd55a0edd6a
MD5 9b90a91322c867b2bc265687a67dd3e6
BLAKE2b-256 3cf5809ab03c4db8fae026035a60ba0c64e99dc5348938f1f3ae4a7a54aa621d

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ad487ca4e84ac10d9e5d7314772359471cdd942179c7d056f756d8609ca1502
MD5 132b141bfc3b19f23a41b2e73b7c4291
BLAKE2b-256 d0fc95072c85278e0e3a657ac0ebd8fd2b6a0e284aaa15de0131901523f52d66

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: maya_py-0.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.0 MB
  • 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 maya_py-0.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ac3ea531787cf83b5d9b702971f96a79d48b4bbe688d513977f10f639c0bd375
MD5 d51abb5f3c101246fee8763289dbe18c
BLAKE2b-256 057a7e1eb4ca06274fcce4f0ed66ad2c1583a9370ab23539a38945e9d6f47b32

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp312-cp312-win_amd64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 270e11825fe0bbbc67a178c8b425bc257e15f5a1681967c82c52462f2c50f8ee
MD5 3a29c6c1891750811248d6ae97d6cb88
BLAKE2b-256 7135607496b6d867a7a33ce4c5a1fd825ed31cfd3dcccfd5a67371fef2fc0d0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d3fa4d1781255c140826016817fa3641634b40f2f67deab8884c21f19fb6f71
MD5 ed680f48c1486100a6aea53839a1c9cb
BLAKE2b-256 15742892f5b4f79cd1f4140b7948ec343991c4ca14411515bb175788ea326468

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: maya_py-0.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.0 MB
  • 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 maya_py-0.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4674e1b3e0cf048e5649fca8207ca5bb81963c140a66e36f4df83278de84609c
MD5 792c2e91260e99c9410fd255fd05bce6
BLAKE2b-256 e10da8d8a15da3e19a3edec8fb8d45738c177de17cf1891b89295f59e91687c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp311-cp311-win_amd64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2499b10d27e48d5dc6dbf07f99208854a0159c07626130da897f4bf4f259eb97
MD5 34d4a2aac8e879495b73ea327425e2c2
BLAKE2b-256 9efefd31c6739a0aeb4b28dc7ff6f363d9fc5a181cebd13c697632c141b2406e

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5cb088c77f9de6568222604658eb935d6d5b42b019c72185a15ed9b9f287a808
MD5 e937c179d930b351bb4922612904f54f
BLAKE2b-256 ae3ca67fcc70caeb74ad9a89fb83d8f3fe56e62f81f224c7bf1dbfba953c4eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: maya_py-0.2.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.0 MB
  • 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 maya_py-0.2.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7b6802ae45dc31bcfc74e8ebb42fbc343681222cb573e9e5554a65b0c863dd54
MD5 263e0e7577ae9855962b30ee1958d6e5
BLAKE2b-256 c168538028a0fe61d59709e5ea6cb8094e7640aabd3da1da3647df144bb16ca9

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp310-cp310-win_amd64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3fb91fa41dc7c97549dea18cb7bf7d13eee015633ce4ab29049229c48b12b19a
MD5 ea96af216a1e1cfafc99e08da8197a7e
BLAKE2b-256 e6446a044d7098dc289e0998f4be24517e0c5dfd354def9bf8166ab10ec98af7

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c47d14978a5170c1fb8a31e5ae94f5384a0f0ea24fdaeb6f8f67405acb96bda
MD5 569944050a4ddf731e04b6d4f5c3615d
BLAKE2b-256 2a6b3dac7a76c3c6bc9d271ee361c07843f17cccd9024eda3ef3bf82bb85e7c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: maya_py-0.2.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for maya_py-0.2.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 64a6fd6b5ed1ed83e6d1ce02486d99fba998d65d56c0dfc83a2710bbc0e3d691
MD5 f0dffdc3332405273bffc930b0f28664
BLAKE2b-256 af0919ef712044cdf24b3a8e97c51d6d6766133e76aa50d5a3431e440bbc9600

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp39-cp39-win_amd64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c5d90651774fd89552a0ecbc4184d21e832c14129978bf0d5f4fb1c60222985
MD5 2a0c65a603b57f9da4488e7a542f3709
BLAKE2b-256 2b1a8fb0a80a97aa15009943e8867e302ad9931e2210d748a82eeae796dc0b5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp39-cp39-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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

File details

Details for the file maya_py-0.2.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for maya_py-0.2.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71b860a67c722134526a00e0cd8bc224b1eb90482e81810653425ceb52bfd8c0
MD5 6298b5b60b070996fbacf4b5aa23c59b
BLAKE2b-256 11e032c812a6fa2bb1c6ea5c4dfed7340514295d1b58ce5e8423c5fd9f679fbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for maya_py-0.2.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: wheels.yml on 1ay1/maya-py

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