Metadata-Version: 2.4
Name: pydux-store
Version: 0.1.0
Summary: A Redux Toolkit-inspired state container for Python desktop applications.
License-Expression: MIT
License-File: LICENSE
Keywords: python,state-management,redux,redux-toolkit,desktop-app,gui,qt,pyside,pyqt,kivy,tkinter,qyro
Author: Neuri
Author-email: ppg@neuri.ai
Maintainer: Luis Alfredo De Los Reyes
Maintainer-email: luisalfredoreyes98@gmail.com
Requires-Python: >=3.10,<3.13.20
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Provides-Extra: all
Provides-Extra: kivy
Provides-Extra: psx
Provides-Extra: pyqt5
Provides-Extra: pyqt6
Provides-Extra: pyside2
Provides-Extra: pyside6
Provides-Extra: qyro
Requires-Dist: PyQt5 (>=5.15.0) ; (python_version < "3.14") and (extra == "all")
Requires-Dist: PyQt5 (>=5.15.0) ; (python_version < "3.14") and (extra == "pyqt5")
Requires-Dist: PyQt6 (>=6.5.0) ; extra == "all"
Requires-Dist: PyQt6 (>=6.5.0) ; extra == "pyqt6"
Requires-Dist: PySide2 (>=5.15.0) ; (python_version < "3.11") and (extra == "all")
Requires-Dist: PySide2 (>=5.15.0) ; (python_version < "3.11") and (extra == "pyside2")
Requires-Dist: PySide6 (>=6.5.0) ; (python_version < "3.14") and (extra == "all")
Requires-Dist: PySide6 (>=6.5.0) ; (python_version < "3.14") and (extra == "pyside6")
Requires-Dist: kivy (>=2.2.0) ; extra == "all"
Requires-Dist: kivy (>=2.2.0) ; extra == "kivy"
Requires-Dist: qyro-engine (>=0.1.0,<1.0.0) ; extra == "all"
Requires-Dist: qyro-engine (>=0.1.0,<1.0.0) ; extra == "qyro"
Requires-Dist: velto-core (>=0.1.0,<1.0.0) ; extra == "all"
Requires-Dist: velto-core (>=0.1.0,<1.0.0) ; extra == "psx"
Project-URL: Homepage, https://github.com/Neuri-AI/pydux
Project-URL: Issues, https://github.com/Neuri-AI/pydux/issues
Project-URL: Repository, https://github.com/Neuri-AI/pydux
Description-Content-Type: text/markdown

# PyDux

> **A Redux Toolkit-inspired state container for Python desktop applications.**

[![Python](https://img.shields.io/badge/Python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue.svg)](https://python.org)
![GitHub Release](https://img.shields.io/github/v/release/Neuri-AI/pydux?include_prereleases&display_name=release&color=stable)
![GitHub Issues](https://img.shields.io/github/issues/Neuri-AI/pydux?color=%23ab7df8)
![GitHub Issues Closed](https://img.shields.io/github/issues-closed/Neuri-AI/pydux?color=green)
![GitHub forks](https://img.shields.io/github/forks/Neuri-AI/pydux)
![GitHub stars](https://img.shields.io/github/stars/Neuri-AI/pydux)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![Sponsor](https://img.shields.io/badge/Sponsor-Buy%20Me%20a%20Coffee-FFDD00?logo=buymeacoffee&logoColor=000000)](https://buymeacoffee.com/neuri)


PyDux gives Python desktop apps one observable source of truth. Dispatch actions,
let reducers update state, and subscribe only to the values a view needs.

## Features

- Redux Toolkit-style slices with generated action creators.
- Selectors and selective subscriptions.
- Async thunks with `pending`, `fulfilled`, and `rejected` actions.
- Optional DevTools, time travel, and a local web inspector.
- Adapters for Qt, Tkinter, Kivy, and [Qyro](https://github.com/Neuri-AI/qyro).

## Installation

```bash
pip install pydux

# With Qyro and PySide6
pip install "pydux[qyro,pyside6]"
```

See the [English installation guide](docs/en/getting-started/installation.mdx)
or the [guía de instalación en español](docs/es/getting-started/installation.mdx)
for every optional framework extra and Poetry command.

## Quick example

```python
from pydux import configure_store, create_slice

counter = create_slice(
    name="counter",
    initial_state={"value": 0},
    reducers={
        "increment": lambda state, action: state.update(value=state["value"] + 1),
    },
)

store = configure_store({"counter": counter}, devtools=False)
store.dispatch(counter.actions.increment())

print(store.get_state())  # {"counter": {"value": 1}}
```

## Documentation

The complete Mintlify documentation lives in [`docs/`](docs/en/index.mdx), in
[English](docs/en/index.mdx) and [español](docs/es/index.mdx):

- [Get started](docs/en/getting-started/quickstart.mdx) / [Primeros pasos](docs/es/getting-started/quickstart.mdx)
- [PyDux + Qyro for beginners](docs/en/getting-started/qyro-for-beginners.mdx) / [PyDux + Qyro para principiantes](docs/es/getting-started/qyro-for-beginners.mdx)
- [API reference](docs/en/reference/api.mdx) / [Referencia de API](docs/es/reference/api.mdx)

To preview it locally, install Mintlify and run `mint dev` from `docs/`.

## Qyro ecosystem

PyDux manages state. [Qyro Runtime](https://github.com/Neuri-AI/qyro) provides
application context, resources, settings, and lifecycle; [Qyro CLI](https://github.com/Neuri-AI/qyro-cli)
scaffolds, builds, packages, and signs applications.

---

## License

MIT. See [LICENSE](LICENSE).
---

## 👥 Organization & Maintainers

- **Organization:** [Neuri](https://github.com/Neuri-AI)
- **Lead Maintainer:** Luis Alfredo De Los Reyes ([luisalfredoreyes98@gmail.com](mailto:luisalfredoreyes98@gmail.com))
- **Ecosystem:** [Qyro](https://github.com/Neuri-AI/qyro) • [Qyro CLI](https://github.com/Neuri-AI/qyro-cli) • [Boilerplates](https://github.com/Neuri-AI)

