Skip to main content

PyThra — a Flutter-like GUI framework in Python. a declarative Python UI framework for desktop apps with a webview renderer.

Project description

PyThra GUI Toolkit

PyThra Logo

A declarative Python gui toolkit for building beautiful, modern desktop applications using web technologies.
Inspired by the development patterns of Flutter, PyThra brings the power of a stateful, component-based UI model to Python developers.

Key FeaturesGetting StartedExamplePhilosophyCore ConceptsContributing


🚀 Key Features

  • Declarative UI: Describe your UI as a function of your application's state. When the state changes, PyThra intelligently updates only the necessary parts of the UI.
  • Component-Based: Build your application by composing small, reusable Widgets, just like in modern web frameworks.
  • Python-First: Write your entire application logic, state management, and UI structure in pure Python. No need to write HTML, CSS, or JavaScript by hand.
  • Efficient Reconciliation: Features a sophisticated reconciliation algorithm that minimizes DOM manipulations, ensuring a smooth and responsive user experience.
  • Rich Widget Library: Includes a set of pre-built, Material Design-inspired widgets like Scaffold, AppBar, TextField, ListView, Dialog, and more.
  • Themed and Customizable: Widgets are styled using a shared, dynamic CSS system. Easily create and apply themes, including custom scrollbars powered by SimpleBar.js.
  • Hot Reloading: The architecture is designed to support hot reloading for a rapid development cycle.

📦 Getting Started

Prerequisites

  • Python 3.8+
  • PySide6 (pip install pyside6)

Installation

Currently, PyThra is under active development. To use it, you can install it using pip or clone the repository and install the dependencies.

# Install pythra and its prerequisites
pip install pythra

# Check pythra installation
pythra doctor

# create a pythra project
pyhtra create-project new-app

💡 Example Usage

Building an application with PyThra is simple and intuitive. Here’s a classic "Counter App" example:

# lib/main.py
# import colors
from constants.colors import *

# Welcome to your new Pythra App!
from pythra import (
    Framework,
    StatefulWidget,
    State,
    Column,
    Row,
    Key,
    Widget,
    Container,
    Text,
    Alignment,
    Colors,
    Center,
    ElevatedButton,
    SizedBox,
    MainAxisAlignment,
    CrossAxisAlignment,
    ClipPath,
    EdgeInsets,
    Icon,
    IconButton,
    Icons,
    ButtonStyle,
    TextStyle,
    Stack,
    Positioned,
    ClipBehavior,
    GradientTheme,
)


class HomePageState(State):
    def __init__(self):
        self.count = 0

    def incrementCounter(self):
        self.count += 1
        print("self.count: ", self.count)
        self.setState()

    def decrementCounter(self):
        self.count -= 1
        print("self.count: ", self.count)
        self.setState()

    def build(self) -> Widget:
        rotating_gradient_theme = GradientTheme(
            gradientColors=["red", "yellow", "green", "blue", "red"],
            rotationSpeed="4s",  # <-- Set a rotation speed to enable rotation
        )
        return Container(
            key=Key("home_page_Pythra_wrapper_container"),
            height="100vh",
            width="100vw",
            color=app_black,
            child=Center(
                key=Key("home_page_Pythra_center"),
                child=Stack(
                    key=Key("home_page_Pythra_center_Stack"),
                    clipBehavior=ClipBehavior.NONE,
                    children=[
                        ClipPath(
                            height="30vh",
                            width="30vh",
                            viewBox=[100, 100],
                            points=[
                                (0, 100),
                                (20, 100),
                                (20, 75),
                                (80, 75),
                                (80, 100),
                                (100, 100),
                                (100, 0),
                                (0, 0),
                            ],
                            radius=8,
                            key=Key("home_page_Pythra_home_page_clip_path"),
                            child=Container(
                                key=Key("home_page_Pythra_home_page_container"),
                                height="30vh",
                                width="30vh",
                                gradient=rotating_gradient_theme,
                                padding=EdgeInsets.all(2),
                                child=ClipPath(
                                    height="29.4vh",
                                    width="29.4vh",
                                    viewBox=[100, 100],
                                    points=[
                                        # _ |
                                        (0, 100),
                                        (18.5, 100),
                                        (18.5, 74.8),
                                        (81.5, 74.8),
                                        (81.5, 100),
                                        (100, 100),
                                        (100, 0),
                                        (0, 0),
                                    ],
                                    radius=8,
                                    key=Key(
                                        "home_page_Pythra_home_page_clip_path_child"
                                    ),
                                    child=Container(
                                        key=Key(
                                            "home_page_Pythra_home_page_column_cont"
                                        ),
                                        color=app_white,
                                        padding=EdgeInsets.all(12),
                                        height="100%",
                                        child=Column(
                                            key=Key(
                                                "home_page_Pythra_home_page_column"
                                            ),
                                            children=[
                                                Row(
                                                    crossAxisAlignment=CrossAxisAlignment.END,
                                                    key=Key(
                                                        "home_page_Pythra_counter_headerRow"
                                                    ),
                                                    children=[
                                                        Text(
                                                            "Pythra",
                                                            key=Key("home_page_Pythra"),
                                                            style=TextStyle(
                                                                color=app_black,
                                                                fontSize=20,
                                                            ),
                                                        ),
                                                        SizedBox(
                                                            width=4,
                                                            key=Key("sixe_2_box"),
                                                        ),
                                                        Text(
                                                            "GUI TOOLKIT v0.1.0",
                                                            key=Key(
                                                                "home_page_Pythra_ver"
                                                            ),
                                                            style=TextStyle(
                                                                color=Colors.grey,
                                                                fontSize=10,
                                                            ),
                                                        ),
                                                    ],
                                                ),
                                                SizedBox(
                                                    height=24,
                                                    key=Key("sixe_box_head"),
                                                ),
                                                Row(
                                                    crossAxisAlignment=CrossAxisAlignment.END,
                                                    key=Key(
                                                        "home_page_Pythra_counter_txtRow"
                                                    ),
                                                    children=[
                                                        Text(
                                                            f"Count:",
                                                            key=Key(
                                                                "home_page_Pythra_counter_txt"
                                                            ),
                                                            style=TextStyle(
                                                                color=app_black,
                                                                fontSize=14,
                                                            ),
                                                        ),
                                                        SizedBox(
                                                            width=12,
                                                            key=Key("sixe_box"),
                                                        ),
                                                        Text(
                                                            f"{self.count}",
                                                            key=Key(
                                                                "home_page_Pythra_counter_txt_count"
                                                            ),
                                                            style=TextStyle(
                                                                color=app_black,
                                                                fontSize=20,
                                                                fontWeight="bold",
                                                            ),
                                                        ),
                                                    ],
                                                ),
                                            ],
                                        ),
                                    ),
                                ),
                            ),
                        ),
                        Positioned(
                            height="30vh",
                            width="30vh",
                            top="24.4vh",
                            key=Key("home_page_Pythra_decrement_btn_Positioned"),
                            child=Container(
                                key=Key(
                                    "home_page_Pythra_decrement_btn_Positioned_Container"
                                ),
                                child=Row(
                                    mainAxisAlignment=MainAxisAlignment.CENTER,
                                    key=Key(
                                        "home_page_Pythra_decrement_btn_Positioned_Container_Row"
                                    ),
                                    children=[
                                        IconButton(
                                            key=Key("home_page_Pythra_decrement_btn"),
                                            icon=Icon(
                                                Icons.stat_minus_1_rounded,
                                                key=Key("home_page_Pythra_dec_btn_txt"),
                                            ),
                                            onPressed=self.decrementCounter,
                                        ),
                                        SizedBox(
                                            width=24,
                                            key=Key("sixe_box_dec"),
                                        ),
                                        IconButton(
                                            key=Key("home_page_Pythra_increment_btn"),
                                            icon=Icon(
                                                Icons.stat_1_rounded,
                                                key=Key("home_page_Pythra_btn_txt"),
                                            ),
                                            onPressed=self.incrementCounter,
                                        ),
                                    ],
                                ),
                            ),
                        ),
                    ],
                ),
            ),
        )


class HomePage(StatefulWidget):
    def createState(self) -> HomePageState:
        return HomePageState()


class MainState(State):
    def __init__(self):
        self.home_page = HomePage(key=Key("home_page"))

    def build(self):
        return self.home_page


class Main(StatefulWidget):
    def createState(self) -> MainState:
        return MainState()


if __name__ == "__main__":
    # This allows running the app directly with `python lib/main.py`
    # as well as with the CLI's `pythra run` command.
    app = Framework.instance()
    app.set_root(Main(key=Key("home_page_wrapper")))
    app.run(title="My New Pythra App")

🪄 Demo

PyThra App Demo

📜 Philosophy

PyThra is built on the idea that building desktop UIs should be as fluid and logical as building for the modern web.

  • The UI is a reflection of the state. You don't manually show, hide, or update UI elements. You change the state, and the toolkit figures out the most efficient way to reflect those changes in the UI.
  • Composition over inheritance. Complex UIs are built by nesting simple widgets. A Button isn't a complex class; it's a Container with padding, a Text child, and an event listener.
  • Developer Experience is paramount. Features like hot reloading, a declarative API, and a single language (Python) for everything are designed to make development faster and more enjoyable.

🔬 Core Concepts

  • Widget: The base class for everything you see on the screen. Widgets are lightweight, immutable "blueprints" for UI elements.
  • StatefulWidget & State: For UI that needs to change dynamically, you use a StatefulWidget. Its mutable data is held in a separate State object. Calling setState() on this object is what triggers a UI rebuild.
  • build() method: The core of every State object. It must return a Widget tree that describes the UI for the current state.
  • Reconciler: The engine of the toolkit. It compares the widget tree returned by build() with the previous tree, generates a list of minimal changes (patches), and sends them to the web front-end to be applied to the DOM.
  • Key: A special object that gives a widget a stable identity across rebuilds. This is crucial for preserving state in lists and for maintaining focus on elements like TextField.

🤝 Contributing

Contributions are welcome! Whether it's reporting a bug, proposing a new feature, or submitting a pull request, your help is appreciated.

Please feel free to open an issue to discuss any changes or ideas.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Support the developerr: ko-fi

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

pythra-0.1.24.tar.gz (15.5 MB view details)

Uploaded Source

Built Distributions

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

pythra-0.1.24-cp313-cp313-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.13Windows x86-64

pythra-0.1.24-cp313-cp313-win32.whl (15.6 MB view details)

Uploaded CPython 3.13Windows x86

pythra-0.1.24-cp313-cp313-musllinux_1_2_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pythra-0.1.24-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pythra-0.1.24-cp313-cp313-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pythra-0.1.24-cp312-cp312-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.12Windows x86-64

pythra-0.1.24-cp312-cp312-win32.whl (15.6 MB view details)

Uploaded CPython 3.12Windows x86

pythra-0.1.24-cp312-cp312-musllinux_1_2_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pythra-0.1.24-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pythra-0.1.24-cp312-cp312-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pythra-0.1.24-cp311-cp311-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.11Windows x86-64

pythra-0.1.24-cp311-cp311-win32.whl (15.6 MB view details)

Uploaded CPython 3.11Windows x86

pythra-0.1.24-cp311-cp311-musllinux_1_2_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pythra-0.1.24-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pythra-0.1.24-cp311-cp311-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pythra-0.1.24-cp310-cp310-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.10Windows x86-64

pythra-0.1.24-cp310-cp310-win32.whl (15.6 MB view details)

Uploaded CPython 3.10Windows x86

pythra-0.1.24-cp310-cp310-musllinux_1_2_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pythra-0.1.24-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pythra-0.1.24-cp310-cp310-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pythra-0.1.24-cp39-cp39-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.9Windows x86-64

pythra-0.1.24-cp39-cp39-win32.whl (15.6 MB view details)

Uploaded CPython 3.9Windows x86

pythra-0.1.24-cp39-cp39-musllinux_1_2_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pythra-0.1.24-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (16.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

pythra-0.1.24-cp39-cp39-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file pythra-0.1.24.tar.gz.

File metadata

  • Download URL: pythra-0.1.24.tar.gz
  • Upload date:
  • Size: 15.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythra-0.1.24.tar.gz
Algorithm Hash digest
SHA256 c4f19d0cf6716f0e88d0bde17a36483d9b8ff58a689883d04cd97b9d263f2e70
MD5 f5d289ff4224305bef511d1b25fe472a
BLAKE2b-256 b15924c4f1338124c2afcbb45cbb6e071b70c259abea8f9391591b5cca70c44b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24.tar.gz:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.24-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 15.6 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 pythra-0.1.24-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6503a87288522d242fdfe3cdfc334143e898ad02d0ae25d8a127687cbacd2615
MD5 5886470a90a19333312b940d3b656de3
BLAKE2b-256 49a0f22f267704de304ae33fde33d7713d03c670101e84b13b15fbd9726c7df8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp313-cp313-win_amd64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp313-cp313-win32.whl.

File metadata

  • Download URL: pythra-0.1.24-cp313-cp313-win32.whl
  • Upload date:
  • Size: 15.6 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythra-0.1.24-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 d5a346dbe631a4b495e3ed54a4998fb35df9b12c68bd6ad277f042902727a68f
MD5 5b1bdb2579b8c5ebe16b3f5b66d20cd1
BLAKE2b-256 432d626f5e1b5e289ab38e40aa3a94ccb59f5bbca00ac53b5f70d986f9c44864

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp313-cp313-win32.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 58f75f0e14fda749201c7067e8a924923c37a3d5f1956646e9368d2df8baf0b4
MD5 956f0383120318ae9316349cd3f0d823
BLAKE2b-256 36aee9c6ff022111c8406ec8ae8e0dc2a5376502ac271057c66bcd40d0cda752

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fdd57bd13cabd67e83cb0c089dcd4cec2b50c1aef32e52bcae8e9af3e556fb13
MD5 8f00a849c6eb0d74f3c2fea42ed01772
BLAKE2b-256 46216faa67ad16ce91edb6223ce853e4de1c562af64eb0a3f9eb514a8d040357

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba5b40e7289dba8dd63e657d4bcf2dad8e528769611f2aa61c577a76054fac0b
MD5 500c874806978718f9ec6874fc133553
BLAKE2b-256 1bef53dbc737ca87c8b9d4ffb195011c0080497fce882372b6baf1ea1dfcfdf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.24-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 15.6 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 pythra-0.1.24-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3baa5ee2eb1c9955802ab480c0d761205fa61a731e3be189e11732647d61d764
MD5 bfc19a92bb475cd56792cc3ee786681c
BLAKE2b-256 2b5183969c7d297211bb6e6af440edf3c90ad5f7fe0bd598aa1527848821f033

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp312-cp312-win_amd64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp312-cp312-win32.whl.

File metadata

  • Download URL: pythra-0.1.24-cp312-cp312-win32.whl
  • Upload date:
  • Size: 15.6 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythra-0.1.24-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 0d79b78054c3c981f75375739a813380619e92170fb31fc3010162b3e073db24
MD5 c5ec9665a8042c0e83b1cfb5b35b81f5
BLAKE2b-256 bb3f4e4e6a7bff93239764cc47edc5defd1a794cf7bf030acab38338120a90e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp312-cp312-win32.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 199f3611f5622104058d1347bafb5d40838ceaf6a461d26e4f07e55f17877309
MD5 b5f3c99b63209154e2f12c591878fc4b
BLAKE2b-256 e89fa5f88849bf3029f9fd9378122c1823483937b7eb3ba47bc64cc154c0ba7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c8b00b2e21665727bd7e60810da11a7c1312edb89f81861af776f9f729b17f92
MD5 e549952501c3aa23d95efc01fff30720
BLAKE2b-256 7e3bb2a9591ff7e659180060f9b318147050ced06e058b0e48cab8fa9d2b460a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c0413bbaf889cb4a50ac158c8e8b695ac360b51131ed0bfe1507493790c835f2
MD5 c3a57e8f702219e79a8777e35798cb7b
BLAKE2b-256 a68633a7f1bc22fda061d50d76e4e5f2a82946011fd0e0e299824993b05bf384

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.24-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 15.6 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 pythra-0.1.24-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 154658ee80a362e4adf51d779128f21d46d30a1f51d8d2aababe6791dd765a89
MD5 f96d17497467e3cbce313c1d25a795c5
BLAKE2b-256 08416b04ddb68b4bc04a8d01a0ac2895651947389a0108f2016fde3c3c6b086b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp311-cp311-win_amd64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp311-cp311-win32.whl.

File metadata

  • Download URL: pythra-0.1.24-cp311-cp311-win32.whl
  • Upload date:
  • Size: 15.6 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythra-0.1.24-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 51ec0b6de98222955a6009f1ad3125668d9cadf2ff838b384095257eb1f79a53
MD5 f6200bcdf76cd9fedcd0f9ae0966d526
BLAKE2b-256 67b4cea5dc18b1479454ff22dd03e0f8df9e38cffd2a9a2d24e56e6bc98c6899

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp311-cp311-win32.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cacff33e57c18401d21d2db1d81ba9dc76d12b4171c5b01c94ee8fde169c51c0
MD5 55fb802fd0b6aee396f99d742b463a04
BLAKE2b-256 aceff1aa6d92ecb14e3390e49691420afb78f1b47fb65358a420628360abd8d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 70ee257bfae2b3d9753a6f0fb001a6c954a8723d8329b260202335f7c106347b
MD5 abcf7c626de8523ea69cc46ff8bfbb15
BLAKE2b-256 3108ae882b178e1d80c63bfbcb6ca8a611bc2dc25786ac15babe1157196bd55d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d5e6096089ec9dbd9255a6fac2b5e0704d4b3da69f213d90552a6e17f8c3d53
MD5 3f7cd2772a860309c892249cf10dc53b
BLAKE2b-256 2d14c901833b56ef3746be5074f05f95d0495cf2a418cb29f8ec93d6db3b9243

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.24-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 15.6 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 pythra-0.1.24-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a1dd71a1397fe41eb6b2f37d89190f7376ee9b12062ee4ec9acde02cc917bc2b
MD5 cd08fac3bba14e0f26f30b98d99e3bd6
BLAKE2b-256 111817f8e23eae859e17bd1427cd948e5e14b6ab207630653a51d9bc5f6cb056

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp310-cp310-win_amd64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp310-cp310-win32.whl.

File metadata

  • Download URL: pythra-0.1.24-cp310-cp310-win32.whl
  • Upload date:
  • Size: 15.6 MB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythra-0.1.24-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 23e82683ad9d1e11a0778a3e2265ad85fbc472b176fbdc31d1561062172c61e5
MD5 914e8e16599f507e356eac0aaa7c5e06
BLAKE2b-256 bbbbb7bf73b450cdf93a924ab4c0091d11ed795cd5b4da17e96a2c3506731f05

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp310-cp310-win32.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b08064674b1a459a856dfcfbe4efb2bd1a2fbc9f72e269e4b6f5018dfd010143
MD5 b38edc68d82c9676a407b6ca52663c6f
BLAKE2b-256 a9f5c341e9811190b1ce9aff93299fd3198bc1926f691bd307be9cce3edd3669

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 12c70479f0ae6acefe2516c4a7d0ea032545a62e1aaa33e5c666d9472c62d87f
MD5 5913038b8d9f216044211342f1d884bd
BLAKE2b-256 bd957872b7ae732b061f089c6dc764698016298ee80c172663eaee66275519e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee80d51370da5af0c7de0b4c1c39042a9405795cc378e82f0268b7b79f643e29
MD5 157b089cba57f06e70f785f7680af25c
BLAKE2b-256 43d9670370f8005dfd3b89c94571d27aa3d1f123d4d1b11d29ae958fb8d62098

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.24-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 15.6 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 pythra-0.1.24-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d95e21576e93d92a3be6b5be125009a472f0155d723b75ed15d693c31804d44c
MD5 573f4c025f59f1568983c263bb620f59
BLAKE2b-256 03227d1d08c1f78559b551a0b445faa21ca2ad99ee8ab9e8dea401f6088524f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp39-cp39-win_amd64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp39-cp39-win32.whl.

File metadata

  • Download URL: pythra-0.1.24-cp39-cp39-win32.whl
  • Upload date:
  • Size: 15.6 MB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pythra-0.1.24-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 df5c4e556f0e7ea3c533f9f0005d69297da62dfca835b84c8213f9f41434c714
MD5 8ddf35263a6d37ccd2b391ab7265e0b1
BLAKE2b-256 4461c7e07b9dcf3f9081788438da83a11e3d8a946a10c4f476aa79f55964342d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp39-cp39-win32.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fcee6b248846159b7d68c485608d526bed466faba3e764b433bf91d24f26202d
MD5 d27215528e79f14fc4974ea4f3bdbc6e
BLAKE2b-256 0ffcbdc60a20db79941b3e46d287bbf2ec1e1eff534070bb7c1d8620088b4702

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bb17d1a15dd2f188415f519fa39273728dfb96dc32fdb82a82bd4958ca49f37e
MD5 0904644fbaac593e3a74b4c55ccd198f
BLAKE2b-256 ec3947d0331632d84613853c401867ef437bc67770dcd13282d6862b77b19f4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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

File details

Details for the file pythra-0.1.24-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.24-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d7f27146a1c7c19ab00e597c9103a45bc368bb9367ad743a75bb4af36f73c2aa
MD5 9292c362a1e2dbf40852e29934613315
BLAKE2b-256 29a263956a2d53b5779094cc5a3b26b757d99988cfce9020e0ef137dc0a5d144

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.24-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on pythra-toolkit/pythra-toolkit

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