Metadata-Version: 2.2
Name: xronos
Version: 0.4.0
Summary: Reactors for Python
Author-Email: "Jeff C. Jensen" <elgeeko@xronos.com>, Peter Donovan <peter@xronos.com>, Christian Menard <christian@xronos.com>
License: BSD 3-Clause License
         
         Copyright © 2024 Xronos Inc. All rights reserved.
         
         Redistribution and use in source and binary forms, with or without modification, are
         permitted provided that the following conditions are met:
         
         1. Redistributions of source code must retain the above copyright notice, this list of
            conditions, and the following disclaimer.
         
         2. Redistributions in binary form must reproduce the above copyright notice, this list
            of conditions, and the following disclaimer in the documentation and/or other
            materials provided with the distribution.
         
         3. Neither the name of the copyright holder nor the names of its contributors may be
            used to endorse or promote products derived from this software without specific prior
            written permission.
         
         THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
         EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
         MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
         THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
         SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
         PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
         INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
         STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
         THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
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: Operating System :: POSIX :: Linux
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Embedded Systems
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Project-URL: Homepage, https://xronos.com
Project-URL: Repository, https://github.com/xronos-inc/xronos
Project-URL: Documentation, https://xronos-inc.github.io/xronos/index.html
Requires-Python: >=3.10
Requires-Dist: typing-extensions>=4.5.0
Provides-Extra: dashboard
Requires-Dist: xronos-dashboard==0.4.0; extra == "dashboard"
Description-Content-Type: text/markdown

# Xronos

The Xronos library for writing reactor programs.

## Resources

Github: https://github.com/xronos-inc/xronos

Documentation: https://xronos-inc.github.io/xronos

pypi: https://pypi.org/project/xronos

## Prerequisites

Architectures:
- amd64
- arm64

Platforms:
- Ubuntu 22.04
- Ubuntu 24.04

Python:
- Python 3.10
- Python 3.11
- Python 3.12
- Python 3.13

## Installation

We recommend working in a virtual environment. Use the following commands to create and load a new environment `.venv`.

```shell
python -m venv .venv
source .venv/bin/activate
```

Install the `xronos` pip packge:

```shell
pip install xronos
```

## Hello World

This section shows you how to write a hello world program using xronos. Create a file called `hello.py` and paste the following content into it.

```python
import xronos

class Hello(xronos.Reactor):
    @xronos.reaction
    def hello(self, interface):
        interface.add_trigger(self.startup)
        return lambda: print(f"Hello, world!")

env = xronos.Environment()
env.create_reactor("hello", Hello)
env.execute()
```

If you see the following output, the library is installed successfully.

```shell
$ python hello.py
Hello, world!
```
