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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

pythra-0.1.22-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.22-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.22-cp313-cp313-macosx_11_0_arm64.whl (15.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

pythra-0.1.22-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.22-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.22-cp312-cp312-macosx_11_0_arm64.whl (15.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

pythra-0.1.22-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.22-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.22-cp311-cp311-macosx_11_0_arm64.whl (15.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

pythra-0.1.22-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.22-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.9 MB view details)

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

pythra-0.1.22-cp310-cp310-macosx_11_0_arm64.whl (15.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9Windows x86

pythra-0.1.22-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.22-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.22-cp39-cp39-macosx_11_0_arm64.whl (15.6 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pythra-0.1.22.tar.gz
Algorithm Hash digest
SHA256 a88a74968c2cc71f5ac27d9c0406bc62d8477fab96eebfb0d3aabe4f1c0d7761
MD5 4f2f19bac3e9ffece3df1357189dea0c
BLAKE2b-256 e7d3acf89273e3a96e52912f1ffcc5361bec0789efe72bc2b2669953394e6177

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2651577b38f627c47be895ee87d858bb17ffc0b285d1d9eb83200c423bd4b84f
MD5 aa4b70773235c324b22e03662682f2b9
BLAKE2b-256 ee182e727220e9d0d739eedfde65e24269d12e20d58dcb81c89cb3c0ca257b09

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 e72448402a6e78d440d13244fbf29cf4cc1a9ac300fffba7bc89c2dfe3b36d20
MD5 713bdce5717dcb93cf51121c4c355080
BLAKE2b-256 c068b7c215b71cffefc76f25ed1d238d81ce9e4dff0dce1c96e3d093f51e0867

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f3f603353df8bfd6d7698d76ae4d4d7c444feed715b0cfbef3da04003139c58b
MD5 fbec498d41b6a2c7657a1134c601404e
BLAKE2b-256 28a144d1deb2565467fa8523e28a20b254a9a1d29dd66d55db4f0d4e9cbc1aa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.22-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.22-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.22-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fcd222716af3ec6175b7af94820831208397ec020f6f78d8d3d94a9b6cb2c77f
MD5 1eb40f18119ccc011b6b6c30309b627a
BLAKE2b-256 276ce1924257a3269f35c6709df6ef50b37b731b6709ac4e7d94aa50f501a132

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3af2f66572ae135cfc2d7e6b562e279953e45565e19e770a3f99e9f1eae80248
MD5 14dceea1d3cc313f1f0c88e412cc0072
BLAKE2b-256 297ed55b900c8b4b3d1cc8117890127b97c7a9d1ac4cb54a9fc995cf97a0d431

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0f3a4ed97f42756522140f546037137cfce0ae9c2bb7f52ea5250027415b35f3
MD5 c838f4579949f2e2b0064a4600673fe7
BLAKE2b-256 747f92555c972a3a03a842b3881c430ee70cd907ced9bc442d4b8f2e60b808c7

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 481221e13b9e9f87d4ea999ef4da7e941f9ec0880ee188ad04dbd1418d99b4e9
MD5 0f8c4cee322ecf3cf8611255810c9859
BLAKE2b-256 c3a29324b701179812a2f5982e786a4f3b1368360cec97427e260a832f5821f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 159402f75ab9885951648375595c1d9538f22495aac17d2366dea114a3f2f647
MD5 8c3d34e44a5a0e032d13f3e7b1e23cf6
BLAKE2b-256 c9d629100450d19ca197342dcdbd2483bfc5e4be46191babce74a9d448187930

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.22-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.22-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.22-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd6af3fbe405e17ab1e1075c6e64ea7f2f56e771fbe67d083f1c6835a7e4e85d
MD5 849d722af8fd536848ee907550bc9299
BLAKE2b-256 1de2abd048e92a66569d46b83e49d139b0ada3cc97913791cb50ddbe67883b49

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1fa10e71922008d2e855ccc67c4a4a3820c59fd42a6ea9353cb8013b8e125b80
MD5 d327fe66e9c0312de1b2f8c761f73a2d
BLAKE2b-256 2d622be33ff2b4a45718354eb99bdba306651658492f9084f77911f913716907

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 18dbdd0598869ee7dcdd687624d1c6bf0776e599af2886e375ab61b949812361
MD5 c14b85faef6bd495334f72c3d903db9f
BLAKE2b-256 7a546fa802be097e6b015ff3d0bdd8557380d5979c49b116960b987f442d6cf5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 cad21f5451096b526d8193f37b547d1ff2eef35c8e248ead4498fc3790b9f984
MD5 7181a80a9f8b5e666f44d3bd8157de8e
BLAKE2b-256 9466baa6118cfc19a211b9c278b3498cdf0938afd923d259710a34cd3177f1c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7e8ad09b1e1779182d1dfa3818c7d46b8eb50b6d0396252c7127ba97697063d1
MD5 13a73b6b2cf5cf9ea0442fcad971a9a2
BLAKE2b-256 9f6ff2d193fe11c3c6e5f8bef797ba63e17f4a468ba04c6300a7be4401e94b91

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.22-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.22-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.22-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 daf3dcf149bc282c46a70cfb1bdddc3c04383923351547119c56dfc5e0737ddf
MD5 2e0b40c396dfa46720ab2c3d285aaf77
BLAKE2b-256 ce413bd75989c6c3a5cc805722d74e0c35593a87d583457b4c27a14f8fa01891

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8075cba112b2e112df46018f7227495aa2b5c17f04616765d3caef051e44d62
MD5 d980820e2a86666a1deccf452455c09e
BLAKE2b-256 634020c98e0bf684cf4e405fb733128eb6afa4407d62f77f41ccb78ea08b60d7

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 29907a547636404d04c88442c42f478d61ebcf0d68722dcbfa1851a5fac0060e
MD5 740040b58b146fe52d906dc33efc9498
BLAKE2b-256 6fb4c2948b5eeeadcfffef936dcef25e67415de7b30b12fd6a366c7edec5ad89

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 efe190058b2e841515041386d27ab16de5703d49cc2784a6afe1ce271d0b3150
MD5 407acef1791202a868988b5096ecc7b4
BLAKE2b-256 bd03d126756851aa9239575635d97db6ab409a18ceeaca37bedba270352a0583

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bf855d12ae4a0029049373548ef2658ddf5fbade9ebea191c81930803221b885
MD5 98fd2a701a309bc64698e3637a78b361
BLAKE2b-256 df16646d86e5cbf91441a65ade0239311a8ec2ea5216f9d843a61af3aeaf94bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.22-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.22-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.22-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3c3a5a5cd018e0a59e902fe0e22d93d6ad3cbeabf6915059df7986e84e9083d6
MD5 b5652bb74e686502da6bbfef7340b651
BLAKE2b-256 c71312bf9b0d3242cff5b51a21e60e6dd319be3478a039c5992541a6125952a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64ae955fb0b2cab1aa9819321dc07dfa6f69a5e9c6893b53bfee4086fda3d781
MD5 a789bf8f485b09a31bb107797c154f70
BLAKE2b-256 46605ba3a46db3956475e03d9c92295998ced6259611ef7de6e3685635afd0f3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 45bc680e0ebe8048c644568f5c9b623e85ab9aa25faa9de289feeafa414faa6d
MD5 04a966427b10ad7195c013c1788fa369
BLAKE2b-256 36619a2d902f0d77adaed50025de513cab4cd8f23e868d0327387cb7a0296a44

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pythra-0.1.22-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.7

File hashes

Hashes for pythra-0.1.22-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 df24fae0d36234b27733b7b0302214f8b7d881802c067cacea1c480cf1698430
MD5 2bda1fa3b727a540476b5efdc566fc48
BLAKE2b-256 b82f7db4b002593514581fcfb10f32f22617b94e3c24824501aff0cae1ddcf00

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 532f2915b96f60f316bfe9b36a130405869b4eb6b898e6c1ce991c15cb3b11bf
MD5 40ce7475387c5600248505fdbfcc270c
BLAKE2b-256 02183c77c646a58a829ee89cc485d2b7bbc1d529736c580c94688a3f8cc400fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pythra-0.1.22-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.22-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.22-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 710830985219cd7b74c968a2476f55508b6e2c217678e1e3782cc1435f5289f6
MD5 2735785989e66679c1edec1d815d9d05
BLAKE2b-256 a39c4589b1b7012d56b93e43281a57303960c10664dbe8be17ae3517c3a4906e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pythra-0.1.22-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04dff7ffe09b25bbd6b9a248c8dc0f88ac24da6a1508cef229222949463b4b90
MD5 049de25ec69f8bc8beceed3da8bcedc4
BLAKE2b-256 4b6ec49f96d7bf3d667ce4ea654a5339a7d48513ffe7898e366cc9253f0be055

See more details on using hashes here.

Provenance

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