Metadata-Version: 2.4
Name: ezqt-app
Version: 5.6.0
Summary: Lightweight framework based on PySide6 to quickly build modern desktop applications, with integrated resource, theme, and reusable component management.
Project-URL: Homepage, https://github.com/neuraaak/ezqt-app
Project-URL: Documentation, https://neuraaak.github.io/ezqt-app/
Project-URL: Repository, https://github.com/neuraaak/ezqt-app
Project-URL: Issues, https://github.com/neuraaak/ezqt-app/issues
Project-URL: PyPI, https://pypi.org/project/ezqt-app/
Author: Neuraaak
Maintainer: Neuraaak
License: MIT
License-File: LICENSE
Keywords: application,framework,pyside6,qt
Classifier: Development Status :: 5 - Production/Stable
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.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Desktop Environment
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: User Interfaces
Requires-Python: >=3.11
Requires-Dist: click>=8.2.1
Requires-Dist: colorama>=0.4.6
Requires-Dist: defusedxml>=0.7.1
Requires-Dist: ezplog>=2.0.0
Requires-Dist: ezqt-widgets>=2.0.0
Requires-Dist: langdetect>=1.0.0
Requires-Dist: pydantic>=2.8.0
Requires-Dist: pyside6<7.0.0,>=6.7.3
Requires-Dist: pyyaml>=6.0
Requires-Dist: requests>=2.32.4
Requires-Dist: ruamel-yaml>=0.18.6
Provides-Extra: dev
Requires-Dist: bandit>=1.7.0; extra == 'dev'
Requires-Dist: build>=1.0.0; extra == 'dev'
Requires-Dist: grimp>=2.3.0; extra == 'dev'
Requires-Dist: import-linter>=2.0.0; extra == 'dev'
Requires-Dist: pre-commit>=3.0.0; extra == 'dev'
Requires-Dist: pyright>=1.1.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.10.0; extra == 'dev'
Requires-Dist: pytest-xdist>=3.0.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Requires-Dist: twine>=4.0.0; extra == 'dev'
Requires-Dist: ty>=0.0.13; extra == 'dev'
Requires-Dist: types-pyyaml; extra == 'dev'
Requires-Dist: types-requests; extra == 'dev'
Requires-Dist: typing-extensions>=4.0.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: git-cliff>=2.7.0; extra == 'docs'
Requires-Dist: mike>=2.0.0; extra == 'docs'
Requires-Dist: mkdocs-coverage>=1.1.0; extra == 'docs'
Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
Requires-Dist: mkdocs-section-index>=0.3.0; extra == 'docs'
Requires-Dist: mkdocs<2.0.0,>=1.6.0; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.27.0; extra == 'docs'
Requires-Dist: pymdown-extensions>=10.7; extra == 'docs'
Provides-Extra: test
Requires-Dist: import-linter>=2.0.0; extra == 'test'
Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
Requires-Dist: pytest-mock>=3.10.0; extra == 'test'
Requires-Dist: pytest-xdist>=3.0.0; extra == 'test'
Requires-Dist: pytest>=7.0.0; extra == 'test'
Description-Content-Type: text/markdown

# EzQt-App

[![PyPI version](https://img.shields.io/pypi/v/ezqt-app?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/ezqt-app/)
[![Python versions](https://img.shields.io/pypi/pyversions/ezqt-app?style=flat&logo=python&logoColor=white)](https://pypi.org/project/ezqt-app/)
[![PyPI status](https://img.shields.io/pypi/status/ezqt-app?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/ezqt-app/)
[![License](https://img.shields.io/badge/license-MIT-green?style=flat&logo=github&logoColor=white)](https://github.com/neuraaak/ezqt-app/blob/main/LICENSE)
[![CI](https://img.shields.io/github/actions/workflow/status/neuraaak/ezqt-app/publish-pypi.yml?style=flat&label=publish&logo=githubactions&logoColor=white)](https://github.com/neuraaak/ezqt-app/actions/workflows/publish-pypi.yml)
[![Docs](https://img.shields.io/badge/docs-Github%20Pages-blue?style=flat&logo=materialformkdocs&logoColor=white)](https://neuraaak.github.io/ezqt-app/)
[![uv](https://img.shields.io/badge/package%20manager-uv-DE5FE9?style=flat&logo=uv&logoColor=white)](https://github.com/astral-sh/uv)
[![linter](https://img.shields.io/badge/linter-ruff-orange?style=flat&logo=ruff&logoColor=white)](https://github.com/astral-sh/ruff)
[![type checker](https://img.shields.io/badge/type%20checker-ty-orange?style=flat&logo=astral&logoColor=white)](https://github.com/astral-sh/ty)

![Logo](docs/assets/logo-min.png)

**EzQt-App** is a PySide6 framework to bootstrap and structure desktop applications with a ready-to-use shell, configuration workflow, translation support, and reusable UI components.

## 🚀 Quick start

Install with uv:

```bash
uv add ezqt-app
```

Install with pip:

```bash
pip install ezqt-app
```

From source:

```bash
git clone https://github.com/neuraaak/ezqt-app.git
cd ezqt_app
pip install .
```

Minimal application:

```python
import sys
from ezqt_app import EzApplication, EzQt_App, init

init()
app = EzApplication(sys.argv)
window = EzQt_App().build()
window.show()
sys.exit(app.exec())
```

## ✨ Key features

- Application bootstrap: init, assets generation, and project setup workflows
- Modular services: config, settings, runtime, translation, and UI orchestration
- Hexagonal architecture: domain contracts, service adapters, and clean boundaries
- Translation stack: .ts loading + .qm lifecycle, EzTranslator interceptor, non-blocking auto-translation
- Built-in CLI: commands for project init/create, docs, info, and translation conversion
- Typed codebase: Python 3.11+ with strict linting/typing toolchain

## 📚 Documentation

- [Getting Started](https://neuraaak.github.io/ezqt-app/getting-started/) - Installation, bootstrap, and first app
- [User Guides](https://neuraaak.github.io/ezqt-app/guides/) - Development, testing, and styling guidance
- [API Reference](https://neuraaak.github.io/ezqt-app/api/) - Service- and architecture-oriented API documentation
- [CLI Reference](https://neuraaak.github.io/ezqt-app/cli/) - Command-line utilities and command options
- [Examples](https://neuraaak.github.io/ezqt-app/examples/) - Practical usage snippets for common scenarios
- [Concepts](https://neuraaak.github.io/ezqt-app/concepts/) - Architecture rationale and design decisions

## 🖥️ CLI commands

```bash
ezqt init [--force] [--verbose] [--no-main]
ezqt create [--template basic|advanced] [--name my_app] [--verbose]
ezqt convert
ezqt docs [--serve] [--port 8000]
ezqt info
```

See the full [CLI reference](https://neuraaak.github.io/ezqt-app/cli/).

## 🧪 Testing

```bash
# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/

# By marker
pytest tests/ -m unit
pytest tests/ -m integration

# Coverage report
pytest tests/ --cov=src/ezqt_app --cov-report=html
```

See the [testing guide](https://neuraaak.github.io/ezqt-app/guides/testing/).

## 📋 Requirements

- Python >= 3.11
- PySide6 >= 6.7.3, < 7.0.0

## ⚖️ License

MIT License - see [LICENSE](LICENSE) for details.

## 🔗 Links

- Repository: [github.com/neuraaak/ezqt-app](https://github.com/neuraaak/ezqt-app)
- Issues: [github.com/neuraaak/ezqt-app/issues](https://github.com/neuraaak/ezqt-app/issues)
- Documentation: [neuraaak.github.io/ezqt-app](https://neuraaak.github.io/ezqt-app/)
- PyPI: [pypi.org/project/ezqt-app](https://pypi.org/project/ezqt-app/)
- Changelog: [neuraaak.github.io/ezqt-app/changelog](https://neuraaak.github.io/ezqt-app/changelog/)
