Metadata-Version: 2.1
Name: xronos
Version: 0.0.4
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
Requires-Dist: xronos-dashboard==0.0.4; extra == "dashboard"
Requires-Dist: xronos-telemetry==0.0.4; extra == "telemetry"
Provides-Extra: dashboard
Provides-Extra: telemetry
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!
```
