Installation ============ ``pysm`` supports Python 3.7 and newer. Install it from `PyPI `_:: python -m pip install pysm Or clone the `Github pysm repository `_ and install the checkout:: git clone https://github.com/pgularski/pysm cd pysm python -m pip install . The package includes ``py.typed`` and ``.pyi`` files, so type checkers and editors can use the shipped type information without an extra stub package. The classic ``from pysm import StateMachine, State, Event`` import remains dependency-free; optional runtime helpers are imported from their own modules. MicroPython ----------- Use ``upysm`` when installing the library on MicroPython. ``upysm`` is the MicroPython distribution channel for selected ``pysm`` releases; it is not a fork and does not carry separate application code. The installed package still imports as ``pysm``: .. code-block:: python from pysm import Event, State, StateMachine Modern MicroPython installations should use ``mip`` through ``mpremote``: .. code-block:: console mpremote mip install https://pgularski.github.io/upysm/ Pin a specific release for repeatable device builds: .. code-block:: console mpremote mip install https://pgularski.github.io/upysm/0.4.0/ You can also install from the MicroPython REPL: .. code-block:: python import mip mip.install('https://pgularski.github.io/upysm/') Older firmware that still uses ``upip`` can install the package from PyPI: .. code-block:: python import upip upip.install('upysm') The default ``upysm`` build is core-focused. Optional modules such as ``pysm.queued``, ``pysm.aio``, ``pysm.serialization``, and ``pysm.builder`` are documented for regular Python and should only be added to constrained device builds intentionally. Building the documentation locally ---------------------------------- The documentation build uses Sphinx and the Read the Docs theme:: python -m pip install -r docs/requirements.txt python -m sphinx -b html docs docs/_build/html