Metadata-Version: 2.4
Name: betza-visualizer
Version: 0.1.0
Summary: Reusable Betza notation parser and movement diagram visualizer.
Author-email: gbtami <gbtami@gmail.com>
Project-URL: Homepage, https://github.com/gbtami/betza-visualizer
Project-URL: Bug Tracker, https://github.com/gbtami/betza-visualizer/issues
Classifier: Development Status :: 3 - Alpha
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 :: Only
Classifier: Topic :: Games/Entertainment :: Board Games
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: tui
Requires-Dist: textual; extra == "tui"
Requires-Dist: textual-fspicker; extra == "tui"
Provides-Extra: catalog-tools
Requires-Dist: requests; extra == "catalog-tools"
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: pytest-playwright; extra == "dev"
Requires-Dist: requests; extra == "dev"
Requires-Dist: textual; extra == "dev"
Requires-Dist: textual-fspicker; extra == "dev"
Dynamic: license-file

# betza-visualizer

Visualizes [fairy chess piece](https://en.wikipedia.org/wiki/List_of_fairy_chess_pieces) movements from their [Betza notation](https://en.wikipedia.org/wiki/Betza%27s_funny_notation).

The project contains:

- a reusable dependency-free Python package, importable as `betza_visualizer`
- a Python Textual TUI frontend
- a browser frontend using TypeScript, HTML, CSS, and SVG

## Python library usage

The core parser and SVG renderer have no runtime dependencies:

```python
from betza_visualizer import BetzaParser, BetzaSvgOptions, render_betza_svg

moves = BetzaParser().parse("BN", board_size=11)
svg = render_betza_svg("BN", BetzaSvgOptions(piece_label="A", title="Archbishop movement"))
```

The generated SVG string is intended to be embedded directly into documentation pages.

## Optional TUI dependencies

The Textual frontend needs optional dependencies:

```bash
pip install 'betza-visualizer[tui]'
python main.py
```

## Development

```bash
pip install -e '.[dev]'
python -m pytest tests/python_unittests
```

## Publishing

The package metadata is defined in `pyproject.toml`. A local wheel can be built with:

```bash
python -m build
```

Almost everything in this repository made by using Google AI tools.

Google AI Studio, gemini-cli, Google Labs Jules using gemini-2.5-pro, gemini2.5-flash

codex-cli using gpt-5.4-codex, gpt-5.5-codex
