semvec/pypi-packages huggingface dataset:
jmarkov 0.3.10
A python package for Markov chain modeling
Requires Python: >=3.8

# jmarkov
jMarkov is a library to simplify the modeling of systems with Markov chains.

With jmarkov it is possible to model
- Continuous-time Markov chains (CTMCs)
- Discrete-time Markov chains (DTMCs)
- Infinite and finite Birth-Death processes (BDs)
- Queueing systems
- Markov decision processes (MDPs)
- Stochastic dynamic programs (SDPs)

To use it you can install it from pypi with the command
```bash
pip install jmarkov
```

You can find the documentation on how to use it [here](https://jmarkov.readthedocs.io/en/latest/)
py-renogy 1.2.3
Python wrapper for Renogy API
Requires Python: >=3.10

![Codecov branch](https://img.shields.io/codecov/c/github/firstof9/py-renogy/main?style=flat-square)
![GitHub commit activity (branch)](https://img.shields.io/github/commit-activity/m/firstof9/py-renogy?style=flat-square)
![GitHub last commit](https://img.shields.io/github/last-commit/firstof9/py-renogy?style=flat-square)
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/firstof9/py-renogy?style=flat-square)
# py-renogy
Python Library for Renogy API

A python library for communicating with the Renogy API.
productivity 0.14.1
Python driver for AutomationDirect Productivity Series PLCs.

Productivity
============

Python driver and command-line tool for [AutomationDirect Productivity Series PLCs](https://www.automationdirect.com/adc/overview/catalog/programmable_controllers/productivity_series_controllers).

<p align="center">
  <img src="https://www.automationdirect.com/images/overviews/p-series-cpus_400.jpg" />
</p>

Installation
============

```
uv pip install productivity
```

Usage
=====

### PLC Configuration

This driver uses Modbus TCP/IP for communication. Unlike the ClickPLC, modbus
addresses need to be manually configured in the Productivity PLC firmware (see
[manual](https://cdn.automationdirect.com/static/manuals/p2userm/p2userm.pdf)).

To use this driver, go to `Write Program → Tag Database`, scroll down to the values
you care about, and double click the `Mod Start` cell of each value to assign an address.
Then, go to `File → Export → Tags` to export a csv file. The file is used here so
you don't need to remember the addresses.

### Command Line

To print the tags and their values, simply call the library with the PLC IP address and the tags file.
```
$ productivity the-plc-ip-address path/to/tags.csv
```

Use --set to set values on the PLC:
```
$ productivity the-plc-ip-address path/to/tags.csv -s "{int_test: 4, float_test: 4.45, string_test: foo}"
```
The --set parameter takes [YAML](https://learnxinyminutes.com/docs/yaml/), a simple data format that allows you to easily set multiple tags at once.

See `productivity --help` for more.

### Python

This driver uses Python async/await syntax to asynchronously communicate with
a Productivity2000 PLC. For example:

```python
import asyncio
from productivity import ProductivityPLC

async def run():
    async with ProductivityPLC('the-plc-ip-address', 'path/to/tags.csv') as plc:
        print(await plc.get())

asyncio.run(run())
```

It is also possible to set tag values:
```python
async def run():
    async with ProductivityPLC('the-plc-ip-address', 'path/to/tags.csv') as plc:
        await plc.set(start=True, setpoint=1.1)

asyncio.run(run())
```