Metadata-Version: 2.4
Name: pyqtrapid
Version: 0.1.0
Summary: A modern CLI scaffolding tool and architecture boilerplate generator for PyQt and PySide applications.
Author-email: Eden Iyanda <edeniyanda@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/edeniyanda/pyqtrapid
Project-URL: Documentation, https://github.com/edeniyanda/pyqtrapid#readme
Project-URL: Repository, https://github.com/edeniyanda/pyqtrapid.git
Project-URL: Issues, https://github.com/edeniyanda/pyqtrapid/issues
Keywords: pyqt,pyqt6,pyside6,pyqt5,qt,gui,scaffold,boilerplate,cli,mvp
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: User Interfaces
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: jinja2>=3.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-qt>=4.0.0; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Provides-Extra: pyqt6
Requires-Dist: PyQt6>=6.0.0; extra == "pyqt6"
Provides-Extra: pyside6
Requires-Dist: PySide6>=6.0.0; extra == "pyside6"
Provides-Extra: pyqt5
Requires-Dist: PyQt5>=5.15.0; extra == "pyqt5"
Dynamic: license-file

# pyqtrapid

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/)

A modern CLI scaffolding tool and architecture boilerplate generator for **PyQt6**, **PySide6**, and **PyQt5** applications.

`pyqtrapid` empowers Python developers to launch clean, scalable desktop GUI applications in seconds using proven software design patterns (MVP/MVVM), modern dark themes, built-in resource management, and test suites out of the box.

---

## 🚀 Features

- **Multi-Binding Support**: Seamlessly scaffold projects targeting **PyQt6**, **PySide6** (Qt for Python 6), or legacy **PyQt5**.
- **Clean Architecture (MVP)**: Enforces Model-View-Presenter architecture out of the box to separate UI layouts from domain logic and state.
- **Dynamic Jinja2 Scaffolding**: Fast, customizable template engine generating modern package configurations (`pyproject.toml`).
- **Included Dark Theme**: Comes pre-configured with a sleek modern QSS dark theme stylesheet.
- **Built-in Test Suite**: Pre-configured `pytest` suite for testing domain models without Qt UI dependencies.

---

## 📦 Installation

Install `pyqtrapid` via pip:

```bash
pip install pyqtrapid
```

Or install locally in editable mode:

```bash
pip install -e .
```

---

## ⚡ Quick Start

### 1. Scaffold a New Project

To create a new project using the default **PyQt6** binding:

```bash
pyqtrapid startproject my_app
```

### 2. Choose Your Qt Binding

Specify your preferred Qt Python binding (`pyqt6`, `pyside6`, or `pyqt5`):

```bash
# Target PySide6 (Official Qt for Python 6)
pyqtrapid startproject my_app --binding pyside6

# Target PyQt5
pyqtrapid startproject my_app --binding pyqt5
```

### 3. Run Your Scaffolded Application

```bash
cd my_app
pip install -e .
python main.py
```

---

## 🏗️ Generated Architecture

`pyqtrapid` scaffolds projects structured for long-term scalability and clean maintenance:

```text
my_app/
├── main.py                   # Entry point (QApplication & window runner)
├── pyproject.toml            # Project dependencies and pytest settings
├── src/
│   ├── app.py                # Component wiring & factory function
│   ├── models/               # Pure Python domain state & models
│   ├── views/                # Qt Widgets & visual layouts
│   ├── presenters/           # Presentation logic connecting Views & Models
│   └── resources/            # QSS stylesheets, icons & static assets
├── ui/                       # Qt Designer .ui files
└── tests/                    # Unit tests (pytest)
```

---

## 👤 Author

* **Eden Iyanda** - [Twitter/X](https://twitter.com/EdenTechie) | [Email](mailto:edeniyanda@gmail.com) | [GitHub](https://github.com/edeniyanda)

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
