Metadata-Version: 2.4
Name: echoui
Version: 2.0.0
Summary: Pure Python UI framework with terminal/web/desktop adapters
License: MIT
Project-URL: Homepage, https://github.com/echoui/echoui
Project-URL: Documentation, https://github.com/echoui/echoui#readme
Project-URL: Repository, https://github.com/echoui/echoui
Project-URL: Issues, https://github.com/echoui/echoui/issues
Keywords: ui,tui,terminal,web,framework,python
Classifier: Development Status :: 5 - Production/Stable
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: Programming Language :: Python :: 3.13
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: User Interfaces
Classifier: Topic :: Terminals
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: typing-extensions>=4.7.0
Requires-Dist: rich>=13.0.0
Requires-Dist: wcwidth>=0.2.0
Requires-Dist: aiohttp>=3.9.0
Requires-Dist: psutil>=5.9.0
Provides-Extra: flask
Requires-Dist: flask>=2.3.0; extra == "flask"
Provides-Extra: fastapi
Requires-Dist: fastapi>=0.100.0; extra == "fastapi"
Requires-Dist: uvicorn>=0.23.0; extra == "fastapi"
Provides-Extra: qt
Requires-Dist: PyQt6>=6.5.0; extra == "qt"
Provides-Extra: db-postgres
Requires-Dist: asyncpg>=0.28.0; extra == "db-postgres"
Provides-Extra: db-mysql
Requires-Dist: aiomysql>=0.2.0; extra == "db-mysql"
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: mypy>=1.5.0; extra == "dev"
Requires-Dist: black>=23.9.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Requires-Dist: pylint>=3.0.0; extra == "dev"
Requires-Dist: flake8>=6.1.0; extra == "dev"
Requires-Dist: aiosqlite>=0.19.0; extra == "dev"
Requires-Dist: build>=1.0.0; extra == "dev"
Requires-Dist: twine>=4.0.0; extra == "dev"

# EchoUI

Pure Python terminal UI framework using ASCII/ANSI characters to render interfaces in the terminal. Features a chain-driven component API.

## Features

- **Pure terminal UI**: Renders interfaces using ASCII/ANSI characters
- **Chain-driven API**: All components support method chaining
- **Theme system**: 9 built-in themes with color customization
- **Multiple adapters**: Terminal, Web (aiohttp/Flask/FastAPI), Desktop (Tkinter/PyQt)
- **Database ORM**: In-memory model layer with async session support
- **Cross-version**: Python 3.8-3.14 compatible
- **Cross-platform**: Windows, macOS, Linux support

## Installation

```bash
pip install echoui
```

## Quick Start

```python
from echoui import EchoUI

ui = EchoUI(normal_mode=True)
ui.block("EchoUI").rule("=").success("Ready").print()
```

## Components

- `ConsoleUI` - Terminal console controller
- `BoxBuilder` - Content container with titles
- `TableBuilder` - Formatted table rendering
- `ProgressBar` - Progress bar visualization
- `Spinner` - Loading animation
- `Notification` - Success/warning/error/info notifications
- `BlockArt` - Block character art rendering
- `KeyValueList` - Key-value pair display
- `TreeView` - Hierarchical data display

## Adapters

| Adapter | Backend | Use Case |
|---------|---------|----------|
| TerminalAdapter | Console | Terminal UI |
| AiohttpAdapter | aiohttp | Web, WebSocket |
| FlaskAdapter | Flask | Lightweight web |
| FastAPIAdapter | FastAPI | API with docs |
| TkinterAdapter | Tkinter | Desktop (stdlib) |
| PyQtAdapter | PyQt5/6 | Professional desktop |

## Documentation

- [Architecture](docs/architecture.md)
- [Components](docs/components.md)

## Development

### Local install

```powershell
# Windows
.\scripts\localinstall.ps1
```

```bash
# Linux/macOS
chmod +x scripts/localinstall.sh
./scripts/localinstall.sh
```

Or manually:

```bash
python -m venv venv
source venv/bin/activate   # Windows: .\venv\Scripts\Activate.ps1
pip install -e ".[dev]"
pytest tests/ -v
```

### Quality checks

```bash
black src/ tests/
isort src/ tests/
mypy src/ --strict
pytest tests/ --cov=src/echoui --cov-fail-under=90
```

### Build & publish

```bash
python -m build
twine check dist/*
twine upload dist/*
```

## License

MIT License
