Skip to main content

Redux implementation for Python (Binary Extension)

Project description

🎛️ Python Redux

codecov PyPI - Python Version PyPI PyPI - License GitHub Workflow Status

🌟 Overview

Python Redux is a Redux implementation for Python, bringing Redux's state management architecture to Python applications.

🔎 Sample Usage

Minimal todo application store implemented using python-redux:

import uuid
from dataclasses import replace
from typing import Sequence

from immutable import Immutable

from redux import (
    BaseAction,
    BaseEvent,
    CompleteReducerResult,
    FinishAction,
    ReducerResult,
)
from redux.main import Store


# state:
class ToDoItem(Immutable):
    id: str
    content: str
    is_done: bool = False


class ToDoState(Immutable):
    items: Sequence[ToDoItem]


# actions:
class AddTodoItemAction(BaseAction):
    content: str


class MarkTodoItemDone(BaseAction):
    id: str


class RemoveTodoItemAction(BaseAction):
    id: str


# events:
class CallApi(BaseEvent):
    parameters: object


# reducer:
def reducer(
    state: ToDoState | None,
    action: BaseAction,
) -> ReducerResult[ToDoState, BaseAction, BaseEvent]:
    if state is None:
        return ToDoState(
            items=[
                ToDoItem(
                    id=uuid.uuid4().hex,
                    content='Initial Item',
                ),
            ],
        )
    if isinstance(action, AddTodoItemAction):
        return replace(
            state,
            items=[
                *state.items,
                ToDoItem(
                    id=uuid.uuid4().hex,
                    content=action.content,
                ),
            ],
        )
    if isinstance(action, RemoveTodoItemAction):
        return replace(
            state,
            actions=[item for item in state.items if item.id != action.id],
        )
    if isinstance(action, MarkTodoItemDone):
        return CompleteReducerResult(
            state=replace(
                state,
                items=[
                    replace(item, is_done=True) if item.id == action.id else item
                    for item in state.items
                ],
            ),
            events=[CallApi(parameters={})],
        )
    return state


store = Store(reducer)


# subscription:
dummy_render = print
store.subscribe(dummy_render)


# autorun:
@store.autorun(
    lambda state: state.items[0].content if len(state.items) > 0 else None,
)
def reaction(content: str | None) -> None:
    print(content)


@store.view(lambda state: state.items[0])
def first_item(first_item: ToDoItem) -> ToDoItem:
    return first_item


@store.view(lambda state: [item for item in state.items if item.is_done])
def done_items(done_items: list[ToDoItem]) -> list[ToDoItem]:
    return done_items


# event listener, note that this will run async in a separate thread, so it can include
# io operations like network calls, etc:
dummy_api_call = print
store.subscribe_event(
    CallApi,
    lambda event: dummy_api_call(event.parameters, done_items()),
)

# dispatch:
store.dispatch(AddTodoItemAction(content='New Item'))

store.dispatch(MarkTodoItemDone(id=first_item().id))

store.dispatch(FinishAction())

⚙️ Features

  • Redux API for Python developers.

  • Reduce boilerplate by dropping type property, payload classes and action creators:

    • Each action is a subclass of BaseAction.
    • Its type is checked by utilizing isinstance (no need for type property).
    • Its payload are its direct properties (no need for a separate payload object).
    • Its creator is its auto-generated constructor.
  • Use type annotations for all its API.

  • Immutable state management for predictable state updates using python-immutable.

  • Offers a streamlined, native API for handling side-effects asynchronously, eliminating the necessity for more intricate utilities such as redux-thunk or redux-saga.

  • Incorporates the autorun decorator and the view decorator, inspired by the mobx framework, to better integrate with elements of the software following procedural patterns.

  • Supports middlewares.

📦 Installation

The package handle in PyPI is python-redux

Pip

pip install python-redux

Poetry

poetry add python-redux

🛠 Usage

Handling Side Effects with Events

Python-redux introduces a powerful concept for managing side effects: Events. This approach allows reducers to remain pure while still signaling the need for side effects.

Why Events?

  • Separation of Concerns: By returning events, reducers stay pure and focused solely on state changes, delegating side effects to other parts of the software.
  • Flexibility: Events allow asynchronous operations like API calls to be handled separately, enhancing scalability and maintainability.

How to Use Events

  • Reducers: Reducers primarily return a new state. They can optionally return actions and events, maintaining their purity as these do not enact side effects themselves.
  • Dispatch Function: Besides actions, dispatch function can now accept events, enabling a more integrated flow of state and side effects.
  • Event Listeners: Implement listeners for specific events. These listeners handle the side effects (e.g., API calls) asynchronously.

Best Practices

  • Define Clear Events: Create well-defined events that represent specific side effects.
  • Use Asynchronously: Design event listeners to operate asynchronously, keeping your application responsive. Note that python-redux, by default, runs all event handler functions in new threads.

This concept fills the gap in handling side effects within Redux's ecosystem, offering a more nuanced and integrated approach to state and side effect management.

See todo sample below or check the todo demo or features demo to see it in action.

Autorun Decorator

Inspired by MobX's autorun and reaction, python-redux introduces the autorun decorator. This decorator requires a selector function as an argument. The selector is a function that accepts the store instance and returns a derived object from the store's state. The primary function of autorun is to establish a subscription to the store. Whenever the store is changed, autorun executes the selector with the updated store. Importantly, the decorated function is triggered only if there is a change in the selector's return value. This mechanism ensures that the decorated function runs in response to relevant state changes, enhancing efficiency and responsiveness in the application.

See todo sample below or check the todo demo or features demo to see it in action.

View Decorator

Inspired by MobX's computed, python-redux introduces the view decorator. It takes a selector and each time the decorated function is called, it only runs the function body if the returned value of the selector is changed, otherwise it simply returns the previous value. So unlike computed of MobX, it doesn't extract the requirements of the function itself, you need to provide them in the return value of the selector function.

Combining reducers - combine_reducers

You can compose high level reducers by combining smaller reducers using combine_reducers utility function. This works mostly the same as the JS redux library version except that it provides a mechanism to dynamically add/remove reducers to/from it. This is done by generating an id and returning it along the generated reducer. This id is used to refer to this reducer in the future. Let's assume you composed a reducer like this:

reducer, reducer_id = combine_reducers(
    state_type=StateType,
    first=straight_reducer,
    second=second_reducer,
)

You can then add a new reducer to it using the reducer_id like this:

store.dispatch(
    CombineReducerRegisterAction(
        combine_reducers_id=reducer_id,
        key='third',
        third=third_reducer,
    ),
)

You can also remove a reducer from it like this:

store.dispatch(
    CombineReducerRegisterAction(
        combine_reducers_id=reducer_id,
        key='second',
    ),
)

Without this id, all the combined reducers in the store tree would register third reducer and unregister second reducer, but thanks to this reducer_id, these actions will only target the desired combined reducer.

🎉 Demo

For a detailed example, see features demo.

🤝 Contributing

Contributions following Python best practices are welcome.

📜 License

This project is released under the Apache-2.0 License. See the LICENSE file for more details.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_redux-0.25.2.dev126020910352100100.tar.gz (23.1 kB view details)

Uploaded Source

Built Distributions

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

python_redux-0.25.2.dev126020910352100100-cp313-cp313-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.13Windows x86-64

python_redux-0.25.2.dev126020910352100100-cp313-cp313-win32.whl (974.1 kB view details)

Uploaded CPython 3.13Windows x86

python_redux-0.25.2.dev126020910352100100-cp313-cp313-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

python_redux-0.25.2.dev126020910352100100-cp313-cp313-musllinux_1_2_i686.whl (2.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

python_redux-0.25.2.dev126020910352100100-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

python_redux-0.25.2.dev126020910352100100-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

python_redux-0.25.2.dev126020910352100100-cp313-cp313-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

python_redux-0.25.2.dev126020910352100100-cp312-cp312-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.12Windows x86-64

python_redux-0.25.2.dev126020910352100100-cp312-cp312-win32.whl (976.5 kB view details)

Uploaded CPython 3.12Windows x86

python_redux-0.25.2.dev126020910352100100-cp312-cp312-musllinux_1_2_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

python_redux-0.25.2.dev126020910352100100-cp312-cp312-musllinux_1_2_i686.whl (2.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

python_redux-0.25.2.dev126020910352100100-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

python_redux-0.25.2.dev126020910352100100-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

python_redux-0.25.2.dev126020910352100100-cp312-cp312-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

python_redux-0.25.2.dev126020910352100100-cp311-cp311-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.11Windows x86-64

python_redux-0.25.2.dev126020910352100100-cp311-cp311-win32.whl (989.4 kB view details)

Uploaded CPython 3.11Windows x86

python_redux-0.25.2.dev126020910352100100-cp311-cp311-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

python_redux-0.25.2.dev126020910352100100-cp311-cp311-musllinux_1_2_i686.whl (2.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

python_redux-0.25.2.dev126020910352100100-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

python_redux-0.25.2.dev126020910352100100-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

python_redux-0.25.2.dev126020910352100100-cp311-cp311-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file python_redux-0.25.2.dev126020910352100100.tar.gz.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100.tar.gz
Algorithm Hash digest
SHA256 2178b3ee74589d51a72c2fdadd9c48992f0bb073735414747c637272f014c08d
MD5 3d4ca531d0c718e3aecc11fe0c807d5c
BLAKE2b-256 33c37c614bf359fd4e8cebd66b0ee170ea885363abe9ace2706230eb36590fa3

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100.tar.gz:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-py3-none-any.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-py3-none-any.whl
Algorithm Hash digest
SHA256 9ba9250d41db510eab743c4ed37dfccdc7a51f2625377972a16fd35ce615c752
MD5 7e7998fc6d3f11ee4132bc8898e3c094
BLAKE2b-256 b517b9725f3359e6484df8ee262c6852798e62df5e17166d266765c4765b9bb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-py3-none-any.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5eb284efb22be6bd107f35ddab939ea723aec7d285c75dea4e0c5eedd423aa7b
MD5 0c16833614b5f58bfa8431613b5a4b65
BLAKE2b-256 49a0fb2e73b0a2da00956d407b427d5f6f801ad59dcf71339822526de695298e

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp313-cp313-win_amd64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp313-cp313-win32.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 663b60adce8c5f738c58e73a8df3b760a439bea202ffd963455107b4b4565ab6
MD5 43f5f7754c5bf42aa73120f1e7b20320
BLAKE2b-256 cd76fc2c059a5c8e980e003a9725312f4e632e9f24b143692c037d0a843c699b

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp313-cp313-win32.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 36ea4a401c2b4cc49ecca42ad0bb03bd56745ceb273b6672f34f060d2219fbc7
MD5 58a6e14bce2393c1d1da794cdefd1784
BLAKE2b-256 f4bb7d5277a3c568d8c1744ee9f3d3e6501caf553f8753993260bca104cc40a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4856667988e6c028ff9cfd526a18d79dcf6615b100e3cda37fa327a2abb935aa
MD5 28287064f0fddd8596fca4292d70a0af
BLAKE2b-256 02b58a8694cd23e076ba486dcaa6d8a9570ff8b52ecb0a6ce4e47d9d7a3dffcd

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dbdf34f1354700b465089ecc7a65dec83d7904b6d236cd378864c1948a99436c
MD5 61c3e5fb42872624f3e5ca386576b74f
BLAKE2b-256 359162d780cecf5d16faccc2bf999925e8481cc04acf65e7a915c4cd39c4345e

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a37f08ee690f4e03f5336b691030b31e62c0d46d4edb51143d0a3b12602735ee
MD5 36700030c5f98f7acf1efa89cfe9c0c2
BLAKE2b-256 c57b5cb2f9a94fdcf68cae844c5f97b6ebaf9d54e2d3f6b59986c01e171e43b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06874ef5115224d37628699d776ef46de99e5164af966c45684ec4e33d160bf7
MD5 cffaf60a45889fd97fe8d570b9966267
BLAKE2b-256 d85955266a9bf90df8513ea35aaae66368905727220ebf0895cf8b51f60b7374

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ff9fb351887830643e15f4664f6862c159c197be605d01889c06c2df3d5c88e7
MD5 86f4fde6ef722c81eb6b02e14c3244c8
BLAKE2b-256 6200062ad4409c9b3feaa74b5815c0834b52fc01b4e11875dcece1075a0d76d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp312-cp312-win_amd64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp312-cp312-win32.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 8a2d49e99d846f5d03637e83b75473844397dd6535abc140d386d1f0878105d1
MD5 523d45c2b937bd3c87dfb48885c2e6e2
BLAKE2b-256 7dd95ef36f4f7aedf5f603d098b96f394b4b322f9669e4c18d31e8226a4b9ac5

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp312-cp312-win32.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2fcfc669fc78f08c28930317494ac66b57e29b27eba9eed9534b8b127c5793f8
MD5 dc42157a20db8b6bff40a440cf237323
BLAKE2b-256 4552e7e727566f54b9b6631bccedb1502df61ccb5e9cf65cab9124bc819570bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ea03ad83c75b0f43ddd9c40dd121ec4a16abf278f59f082faaa0adf1bc47cec9
MD5 e6041c1236916911349272ed02c87db2
BLAKE2b-256 7b0eba39c354cc080bb4b46324b5f142a20ae7e250b6d9ac3f4ed9d036183d03

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a865fe746567d9e8e6362df8f828fa28330fab5833bac81427eea3b8ab9206a
MD5 4b61493039137cffb1706fdc658e7870
BLAKE2b-256 8c4c18df3c402c4cc39b05176abd46ca65325b67eab385b2438ac9a8f37996d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d002476bc3de8c12180fd130b3aee6749115d2308bbe85f624f58dbbc45d944a
MD5 357f5c237732dd0cfdd8a6a6e9a6b24e
BLAKE2b-256 4a3ea3f712d4f40b5bd8eafe7d22fe9855f7a1d09881de0618aea024ecdad5d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 793b12f214f8f205f1a6ca70a61ba521741d7d4b179d26a17e5423ef0e6108ac
MD5 dc1838b12d94951152beaf42fcf6a1e3
BLAKE2b-256 75b0af1ad59df7fed46c776fdbf6ca35c16a9b2b07bf70569d81cb35500ba462

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 23ca6024ae2839ecfc9685dd909799f6d9d4304c58a64ec09d228f866b84dfc6
MD5 ed40ffb8e57ca78feb395305363fa431
BLAKE2b-256 4182c5151b68e949f82ba7e12467394d11079cccd7073ff2872e4140c85c327c

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp311-cp311-win_amd64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp311-cp311-win32.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 135635fa314b6b22cc392845d3d8cb448f1a0f5b849d3dbc73953d98c83ba5b9
MD5 b53e2364fd081abb6f945fc169b2afda
BLAKE2b-256 07c66a394706ba91ea91d151d0ad403e27b717524e18f51c6db41f3ad4016f90

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp311-cp311-win32.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5af1c5a8d088a839abff3496b082f83c1e11e03220b7d41a67fa194586cfd2b6
MD5 bf75e4739fcff4803c71d374f658caed
BLAKE2b-256 02b041a6de4510b2d0b90e0c1a9951247a66c6f449fc1fe45a8d5e2429801d47

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d78f306ba4cb5c3672e1daa4c213a9d04ce66d7d2f5cbc1ad187106eab2eada1
MD5 ace010cd38b4d476328d02c4832f09f4
BLAKE2b-256 68fa918e43743739beadc03f1cd07078563a9ca442716e49111809221226f213

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 681bfdfe8352c2ce5874ce2742944e4de5d32498cf797f05e90ad3bc69f59d03
MD5 81a2814f459c3324ee82eb9fb7f3c046
BLAKE2b-256 9a70060f7e36930b45ac34199e4df6802ed5474c0b96524630eb26aec60c7a10

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 50bd7b44f6824d8602ad59e60c9f1c10591db2e450551517c5d83c317ea966c6
MD5 d266a7c3dd2a8a6ef6cc05493f9543ee
BLAKE2b-256 43622bdc07a4d909de3d4883c5abaadffe35236739b82586a9252ff915ef61c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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

File details

Details for the file python_redux-0.25.2.dev126020910352100100-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for python_redux-0.25.2.dev126020910352100100-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3e3771be35698e1ff44b031e7c56d05c2ddc8837e6ccc9898ca32bcdb52cb7c0
MD5 66f559a876a644604572f282b371a619
BLAKE2b-256 e57094d7b8bf6d5e453e30440af97bfa8a798684223eb7eed1e7a2400e3df320

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_redux-0.25.2.dev126020910352100100-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: integration_delivery.yml on sassanh/python-redux

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