Metadata-Version: 2.4
Name: Moho
Version: 0.2.13
Summary: Python framework for Rich Internet Applications (Tornado + Bootstrap + .mh UI language)
Author-email: "Denis Korolkov, Stepan Rakhimov" <escape.app.net@gmail.com>
License-Expression: AGPL-3.0-or-later
Project-URL: Homepage, https://escape-projects.gitlab.io/moho-framework/
Project-URL: Documentation, https://escape-projects.gitlab.io/moho-framework/
Project-URL: Repository, https://gitlab.com/escape-projects/moho-framework
Project-URL: Issues, https://gitlab.com/escape-projects/moho-framework/-/issues
Keywords: ria,web,tornado,bootstrap,widgets
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
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: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.13.3
Requires-Dist: scipy
Requires-Dist: tornado>=6.0
Requires-Dist: matplotlib>=3.3.1
Requires-Dist: plotly>=5.0
Requires-Dist: Pygments>=2.14
Requires-Dist: docutils>=0.20
Provides-Extra: lint
Requires-Dist: ruff==0.16.4; extra == "lint"
Requires-Dist: black==26.5.1; extra == "lint"
Provides-Extra: test
Requires-Dist: playwright; extra == "test"
Provides-Extra: webview
Requires-Dist: pywebview; extra == "webview"
Dynamic: license-file

# Moho

Python framework for Rich Internet Applications. The programming model is
Kivy-like (widgets, properties, `.mh` layout files); the runtime is a Tornado
server plus Bootstrap in the browser.

Documentation, getting started, and the live showcase:

https://escape-projects.gitlab.io/moho-framework/

## Install

```bash
pip install moho
```

Requires Python 3.9+. Linux and Windows wheels are on PyPI. From a source
checkout (C compiler, Cython, numpy): `pip install -e .`
After install, `moho-showcase` starts the full widget demo.
Lint: `pip install -e ".[lint]"` then `ruff check .` and `black --check .`.

## Examples

```bash
moho-showcase                                      # full widget demo (http://localhost:8888/)
moho-showcase --webview                            # desktop app (needs: pip install -e ".[webview]")
cd examples/showcase && python app.py              # same app, from the examples tree
cd examples/showcase && python app.py --webview    # same desktop window from the examples tree
cd examples/tutorials/first_app && python app.py   # Hello World
cd examples/physics && python app.py               # thin lens, Snell, pendulum
```

Desktop chrome-less start: ``run(webview=True)`` (or ``--webview``) opens a frameless
pywebview window and injects Moho's TitleBar. The HTTP server binds localhost only
and picks the next free port from 8888 if the requested port is busy. Install the
optional extra with ``pip install moho[webview]``.

