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.25.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.25-cp313-cp313-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

pythra-0.1.25-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.25-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.25-cp313-cp313-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

pythra-0.1.25-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.25-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.25-cp312-cp312-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

pythra-0.1.25-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.25-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.25-cp311-cp311-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

pythra-0.1.25-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.25-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.25-cp310-cp310-macosx_11_0_arm64.whl (15.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9Windows x86

pythra-0.1.25-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.25-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.25-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.25.tar.gz.

File metadata

  • Download URL: pythra-0.1.25.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.25.tar.gz
Algorithm Hash digest
SHA256 0776f1421b0118d193d084bcd6fd1e11723b39756a3f20a240efb3ea958fd692
MD5 f4dfab75e88a7da1e421e76486194d2c
BLAKE2b-256 fa30c86760c291d7056883f2f3747972f241d77f03afbdaf90ed22c1861e1ba5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25.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.25-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 81232a1e4416ca94d71925fc63121121be376abd9a0cff0c61add10b892f0dce
MD5 a05a7d0e3224c718d98d54abd6f85f30
BLAKE2b-256 be7c7ff28daa8ddc1f7f2cb5f09a9a8b0eaef77cb1284d6366a46b078754231e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp313-cp313-win32.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 d8f8f47ba94b1123a449c6df37f39ea34fcf6c0fe962f1aa7e8145bb1da7dc7d
MD5 10536da4597325a944ded472d7b06ca1
BLAKE2b-256 da6075377459bca8d5145fe7d9c3bc78dff1a1dd07adc4599034e535a6c52e14

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9191c107f81d574c732da06baf6b237d09703eda7d804bb58727d813b7a8c2a8
MD5 3d564bd8e7b124910e650c700ee0a121
BLAKE2b-256 9745491a0baaeb8c9136b4c2de87d8eb460b41dfe478ad36970daa3badacf16e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-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.25-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ac909d58bef41fb55b5528f7b7f578856a6be3d414d91433d87afed98b0555a9
MD5 39856645882f1232f1de9e1ff372d567
BLAKE2b-256 54050423ddb9c03043de89332c21a89fc810e598633b0642e3ecb72ac5bc2c7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ea4df7d8046c42e5588b05dc3cc9ac3c5b1857faead439b24c1f28ec34ceba3
MD5 1f846ec20a8d4fc6bfee5179458241af
BLAKE2b-256 84c5970dde29afa964a79d91ba16f14e85eb46546605ee2a820924b3f3695b51

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 15ccf74604f67765553c7e3d5578836085fc1b01b23ffef3e7248ffb92e44c6d
MD5 f8d378b6e0e2d173083c0ee039d0a898
BLAKE2b-256 37803cdf26220cd59e5b29d85f87bd34aac827ee0dcccddfd3aa18120f1263fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp312-cp312-win32.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ab54052a3acf9a475e8dc3ab32db06ec4d475491889d871766d89b6a8ed7e842
MD5 9d53bdd8a626151db4f0e41e99026208
BLAKE2b-256 784c934381d3fd18a5e67a54d88203a9d2a3b4eda4e079290d40774ee4b16437

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ed98700cae46d86d2e11edbc9602b918ac304d9dad050585f7b224f491614204
MD5 91893a566915ff050a5d8f8b63443ecf
BLAKE2b-256 67489e3c1d73bf2e529529d972296005d557d9e51e4c1656e4055178d7faeb9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-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.25-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4d4480648782d549758f1694d60633d933cb1773eb7def132e2579431c7ae1d
MD5 86091226ca4464c330e72d2c1e601142
BLAKE2b-256 985b838bc0facde1af65a69fd1cd0f42478201b5378af97185ef1ed3e1773ace

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23873ef39f4510628a650e34bf8bc0e6ccfdc0ef1b8c55ea96e0ba230c2efb59
MD5 0ac1d893ce97543a9aecd0a63ae54b67
BLAKE2b-256 f2808f39beb2c5739b19751414b1ec918141fb4459a4db4de308b9487687cc26

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b611babd585bedd10e141947fa4666632b40fa15bc9cc8123a209d7d984c98a0
MD5 43608cb351e94b896eb46fda2d549a48
BLAKE2b-256 bcee83ff2ba6fda4acb97f75c05b84d525f440354579fb14637695080aac367d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp311-cp311-win32.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 9c4cc225e8f613c1b6462c7f661885ed1e0b600969f4a04904986197b3aa3286
MD5 d03575ed66c4e6969bab2cca219e27c1
BLAKE2b-256 392aaed220200b390aadcbcadd201f4c68320a0aaeb40df86cc2882afab2ca2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 15ba7c2a5748e6d0992d3d5bf8901b2993a7b37bf18706193b3e015c99cf90c4
MD5 424ff9e3b9ebc0bc5b00eee6bb863a38
BLAKE2b-256 0592b18276ccee8730dbe78a9e268c2a7ca51ae02448cf2490aca236dd67cb0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-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.25-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 245c9835c8481e6ad6ec7846fe6a5947ab79c42b8f0ae04b0ddb88f1de0f934f
MD5 3dd432bfe55541dd0e07f3496a608c47
BLAKE2b-256 b790386b04ec3a6531bd843966c3044430360f47f4064d4a36e3ec088ea066ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b92f17219241c8199fd150d5d24eeefd6379615e07089d63fb5c88aada24d25
MD5 af256488ae51f3aa57cf63f8b8366d25
BLAKE2b-256 d8ca4135f8e87fedace33010bb3b885b60aabc5c0cf3da931edda3ce816128a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e1a86c2b1b178250cd31b4482221018030537281a412032b224f783c1b377846
MD5 a5a395ec715e32924dc7166599b1a9ce
BLAKE2b-256 e3c2cfbfb0941b580655c3fb15c3fcb5ee5624dff70fec29e30e6d18bc619150

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp310-cp310-win32.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 b233c43b4e614d699028667bec9701157b973e98587aa7882184cfb53df2119a
MD5 98da743148beab673090482582d244d5
BLAKE2b-256 fca648e1a019e66ef1fbe77aa5194d84d2371b66e691e76f57929f19c3f6ca0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c0e3f2dad9cf20ee030a85f96988f14665dad50c1b95ee2573155747a04ea3ed
MD5 b577c1971c71d21fd4ced511a03e54e0
BLAKE2b-256 81f11cea799aeb55e1d825cc92c6016b9173fb4268fcc311850589719fe334ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-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.25-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4014a55c51a7fffcc6400ef0b2b68c3f5c2eab447a6b4e0785ad7b88436bbe14
MD5 ab9211209fd84dad160cc18ee8b27066
BLAKE2b-256 e98f25dc3417a141d3dcb83dd0ceb9e7bb5d25940581a01ff660361b56a6b5f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 420bdefc9714c46a624a497448b6f42b0de5c728e1a89192848b123e0a092456
MD5 8cf9f4c19c7fdb8720d9b31fcf2908cd
BLAKE2b-256 aa2966fa27e9a4b71b0a4c26269ced8a05a9043bab452a1ca48ee1fd02b454e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0b29cf1d605396b8d6b3281201a40e6937dca8be30789430cb748be560a17b99
MD5 8b9b94f55f7b20e8d845e8e89a217b84
BLAKE2b-256 623f90b6c007902645dc964f308ab0a58047cfa6e10641c305a172db9b6d4424

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp39-cp39-win32.whl.

File metadata

  • Download URL: pythra-0.1.25-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.25-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 937005c7a945f6c37b62193af1fef88291b8669773650b323639e0bdd67404b9
MD5 fa4b722542254fa91d6db7664de27fcf
BLAKE2b-256 0acdf60a68fd0a5d029f347d64659e4ea3aaf76076fb5aaaaf177ed0eed0c0f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 59e80c22b1bba2313344045c906a584e8d7a521786db5ccdb7ac3026c54cdfd4
MD5 e45f35359b7275489bc9b30a47e1ff21
BLAKE2b-256 908836ba2f28ac6cbf48ffd0fc4d6f6d9082145e22c67315d981a8050eb744cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-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.25-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a1c1dfb8d22f5596cef2479c420811f900120ca7e2201d8bd0424602064b626a
MD5 2b68b97287ab5856dafbc947b6b454ab
BLAKE2b-256 22141995534e68782f3462717ff43daa85b6096fa4e8c4bfeb31e784ac081ddf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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.25-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pythra-0.1.25-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3207f219c98a50a83cb9590478b76c69f4f3db8bd995a7f0d11475624e7eeffd
MD5 a130205d478e0fba2e5fea1366943da8
BLAKE2b-256 9365321265a3ebe53b352d360ca216b18392040efe3a2cb5b81573724ba3704b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.25-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