Metadata-Version: 2.1
Name: floras
Version: 0.1.0
Summary: A package for network flow-based test synthesis.
Keywords: test synthesis,network flow,testing
Author-Email: floras developers <tulip@tulip-control.org>
License: BSD-3-Clause
Classifier: License :: OSI Approved :: BSD License
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Project-URL: Homepage, https://github.com/tulip-control/floras
Project-URL: Bug Tracker, https://github.com/tulip-control/floras/issues
Project-URL: Documentation, https://floras.sourceforge.io/
Project-URL: Source Code, https://github.com/tulip-control/floras
Requires-Python: <3.13,>=3.10
Requires-Dist: numpy>=1.24.1
Requires-Dist: gurobipy==11.0.3
Requires-Dist: imageio>=2.19.3
Requires-Dist: ipdb>=0.13.11
Requires-Dist: matplotlib>=3.9.2
Requires-Dist: networkx>=3.0
Requires-Dist: scipy>=1.10.1
Requires-Dist: tulip==1.4.0
Requires-Dist: pygraphviz>=1.13
Requires-Dist: jupyter>=1.1.1
Provides-Extra: docs
Requires-Dist: mkdocs>=1.6.1; extra == "docs"
Requires-Dist: mkdocs-material>=9.5.34; extra == "docs"
Requires-Dist: mkdocstrings-python>=1.11.1; extra == "docs"
Requires-Dist: mkdocs-jupyter>=0.25.1; extra == "docs"
Provides-Extra: tests
Requires-Dist: pytest>=8.3.3; extra == "tests"
Requires-Dist: coverage>=7.6.1; extra == "tests"
Description-Content-Type: text/markdown

### Build Status
[![MacOS Build with PDM](https://github.com/tulip-control/floras/actions/workflows/macos_build_pdm.yaml/badge.svg?branch=main)](https://github.com/tulip-control/floras/actions/workflows/macos_build_pdm.yaml)
[![MacOS Build with conda](https://github.com/tulip-control/floras/actions/workflows/macos_build_conda.yaml/badge.svg?branch=main)](https://github.com/tulip-control/floras/actions/workflows/macos_build_conda.yaml)

[![Ubuntu Build with PDM](https://github.com/tulip-control/floras/actions/workflows/ubuntu_build_pdm.yaml/badge.svg?branch=main)](https://github.com/tulip-control/floras/actions/workflows/ubuntu_build_pdm.yaml)
[![Ubuntu Build with conda](https://github.com/tulip-control/floras/actions/workflows/ubuntu_build_conda.yaml/badge.svg?branch=main)](https://github.com/tulip-control/floras/actions/workflows/ubuntu_build_conda.yaml)

[![codecov](https://codecov.io/gh/tulip-control/floras/graph/badge.svg?token=35W9GHZD3R)](https://codecov.io/gh/tulip-control/floras)
[![Lint](https://github.com/tulip-control/floras/actions/workflows/lint.yaml/badge.svg)](https://github.com/tulip-control/floras/actions/workflows/lint.yaml)

# Floras: Flow-Based Reactive Test Synthesis for Autonomous Systems

<p align="center">
  <img src="https://raw.githubusercontent.com/tulip-control/floras/refs/heads/main/docs/logo.png" width="250" />
</p>

Detailed installation instruction and the user's guide can be found in the [floras documentation](https://floras.readthedocs.io).

### Requirements
Floras requires `Python>=3.10,<3.13` and a C++17-compliant compiler (for example `g++>=7.0` or `clang++>=5.0`).
You can check the versions by running `python --version` and `gcc --version`.

#### Pre-installing Graphviz
Please pre-install [graphviz](https://graphviz.org) and [pygraphviz](https://pygraphviz.github.io).
If you are using a Mac, please install it via [brew](https://brew.sh) and [pip](https://pypi.org/project/pip/):
```
brew install graphviz
pip install pygraphviz
```
On Ubuntu, please install graphviz using these commands:
```
sudo apt-get install graphviz graphviz-dev
pip install pygraphviz
```

## Installing Floras

To install floras, please clone the repository:
```
git clone https://github.com/tulip-control/floras.git
```
We are using [pdm](https://pdm-project.org/en/latest/) to manage the dependencies.
```
pip install pdm
```
Navigate to the repo to install floras and all required dependencies:
```
cd floras
pdm install
```
Next, install [spot](https://spot.lre.epita.fr/) by running:
```
pdm run python get_spot.py
```
If you are using [conda](https://conda.org/), instead of the above command, you can install spot directly from [conda-forge](https://conda-forge.org/) (this is faster). This does not work on MacOS, please use the above command to build spot in that case.
```
conda install -c conda-forge spot
```
If the spot installation does not work, please install it according to the instructions on the [spot website](https://spot.lre.epita.fr/install.html).

To enter the virtual environment created by pdm:
```
$(pdm venv activate)
```
You can test your installation by running the following command:
```
pdm install -G tests
pdm run pytest -v tests
```

If these instructions don't work for you, you can find more information about the installation process and troubleshooting, please visit [the floras documentation](https://floras.readthedocs.io/en/latest/installing/).

You can also build the documentation by running:
```
pdm install -G docs
pdm run mkdocs build
```

The floras repository contains implementations of the algorithms developed in the following paper:

[Josefine B. Graebener*, Apurva S. Badithela*, Denizalp Goktas, Wyatt Ubellacker, Eric V. Mazumdar, Aaron D. Ames, and Richard M. Murray. "Flow-Based Synthesis of Reactive Tests for Discrete Decision-Making Systems with Temporal Logic Specifications." ArXiv abs/2404.09888 (2024).](https://arxiv.org/abs/2404.09888)
