Metadata-Version: 2.3
Name: sagpy
Version: 0.0.11
Summary: Implementation of the Schedule-Abstraction Graph (SAG) in Python.
Project-URL: Homepage, https://github.com/RaduLucianR/sag-py
Project-URL: Issues, https://github.com/RaduLucianR/sag-py/issues
Author-email: Radu Lucian Radulescu <radlucradulescu@gmail.com>
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.12
Requires-Dist: drawpyo>=0.2.1
Requires-Dist: matplotlib>=3.6.3
Requires-Dist: networkx>=3.4.2
Requires-Dist: tqdm>=4.66.6
Description-Content-Type: text/markdown

# Schedule-Abstraction Graph in Python

Schedule-abstraction graph (SAG) is a reachability-based response-time analysis for real-time systems.

This is the unofficial implementation of the SAG in Python. This is still WIP (Work-in-Progress). The implemented SAG follows the following paper:
- M. Nasri, G. Nelissen, and B. Brandenburg, “[Response-Time Analysis of Limited-Preemptive Parallel DAG Tasks under Global Scheduling](https://drops.dagstuhl.de/storage/00lipics/lipics-vol133-ecrts2019/LIPIcs.ECRTS.2019.21/LIPIcs.ECRTS.2019.21.pdf)”, Proceedings of the 31st Euromicro Conference on Real-Time Systems (ECRTS 2019), pp. 21:1–21:23, July 2019.

You can visit the official repository [here](https://github.com/SAG-org/schedule_abstraction-main).

### Run example
1. Clone the repository and run the `sagpy.py` script on a `csv` file that contains a set of jobs. A job is a tuple: `(name, r_min, r_max, C_min, C_max, p)`. The SAG for regular JLFP WC schedulers is run by default. Use the `--ROS` flag to run the SAG for the ROS2 executor with (by default) 2 threads. The algorithm prints to console the best response times and worst response times for the given jobs, and makes a `png` image with the constructed SAG so you can see exactly the state-transition system.
```
python3 sag_cli.py examples/input_examples/job_sets/mitra_example.csv --ROS
```

Output files are by default generated in the `~/USER/.sagpy` folder.
