semvec/pypi-packages huggingface dataset:
airflownetwork 1.0.1
Examine EnergyPlus AirflowNetwork models
Requires Python: >=3.7

# AirflowNetwork

[![PyPI - Version](https://img.shields.io/pypi/v/airflownetwork.svg)](https://pypi.org/project/airflownetwork)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/airflownetwork.svg)](https://pypi.org/project/airflownetwork)

-----

**Table of Contents**

- [About](#about)
- [Installation](#installation)
- [Checks](#checks)
- [License](#license)

## About
This is a small library of functions and classes to examine EnergyPlus AirflowNetwork models. A driver program is provided to analyze models in the epJSON format. To summarize the model contents:

```
airflownetwork summarize my_model.epJSON
```

To create a graph of the model in the DOT format:

```
airflownetwork graph my_model.epJSON
```

To generate an audit of the model:

```
airflownetwork audit my_model.epJSON
```

Further help is available on the command line:

```
airflownetwork --help
```

## Installation

```console
pip install airflownetwork
```

## Checks

The script checks for a number of issues that may cause an AirflowNetwork to function poorly. These include:

### Link Counts

Models with a large number of links (particularly those with too many links between adjacent zones) may model the building correctly and the simulation results may be correct, but the model performance may be quite poor. A situation that has been observed in user models is the use of individual window elements to model each and every window in a buildings. This may be correct, but as the number of windows increases the performance of the model will suffer, and the performance hit may be avoidable if windows the beahve the same are lumped together. For example, if 10 windows connect a zone to the ambient, but all 10 windows experience the same wind pressure and temperature difference, a single winwdow that represents all 10 will be sufficient and eliminate 9 of the 10 calculations required.

The `audit` command counts the links between zones and flags those that are considered excessive. 

### Connectedness

Models in which there are zones that are "isolated" (i.e., are not connected to the rest of the model via linkages) have been known to be sensitive to convergence issues. For the most part, the solution procedure can handle multiple isolated subnetworks in a single matrix solution, issues that are encountered with these models can be hard to diagnose. The easiest fix to connect together subnetworks is to add one or more linkages very high flow resistance (e.g., a crack element with a very small flow coefficient).

The `audit` command checks that the multizone network (just with surfaces) and the full network (multizone + dsitribution) are fully connected. Models with intrazone features are not currently supported.

## License

`airflownetwork` is distributed under the terms of the [BSD-3-Clause](https://spdx.org/licenses/BSD-3-Clause.html) license.
stromnetzgraz 0.1.8
Python client library for Stromnetz Graz API
Requires Python: >=3.6
Keywords: stromnetz graz,power,api

# Python client library for Stromnetz Graz API

[![PyPI package](https://img.shields.io/badge/pip%20install-stromnetzgraz-brightgreen)](https://pypi.org/project/stromnetzgraz/) [![version number](https://img.shields.io/pypi/v/stromnetzgraz?color=green&label=version)](https://github.com/dreautall/stromnetzgraz/releases) [![License](https://img.shields.io/github/license/dreautall/stromnetzgraz)](https://github.com/dreautall/stromnetzgraz/blob/main/LICENSE)

This is a simple client library for the (unofficial) [Stromnetz Graz Smart Meter Web API](https://webportal.stromnetz-graz.at/).

Please note that you must be able to login and view data on the portal before this library will work. Please refer to Stromnetz Graz how to set up access to the smart meter statistics. Best results are achieved in the `IME` mode (15 minute reading intervals), however the library can also fall back to `IMS` (daily reading interval). The most recent data available will be the one for the previous day (see also their [FAQ](https://www.stromnetz-graz.at/sgg/stromzaehler/intelligenter-stromzaehler/faqs)).

## Example

```python
from sngraz import StromNetzGraz

sn = StromNetzGraz(mail, password)
await sn.authenticate()
await sn.update_info()

for installation in sn.get_installations():
    print("Installation ID", installation._installation_id)
    print("Installation is installed at", installation._address)
    for meter in installation.get_meters():
        print("Meter ID", meter.id)
        print("Meter Name", meter._short_name)
        await meter.fetch_consumption_data()

        # meter._data now contains the meter readings of the last 30 days
        print(meter._data)

await sn.close_connection()
```

*The example needs to run in an async context, please see [issue #6](https://github.com/dreautall/stromnetzgraz/issues/6) for an example if you want to run it standalone.*

An `installation` is usually an house or apartment with an individual address and may contain multiple meters (for example a second meter for a hot water boiler). A `meter` is the actual single meter.

Stromnetz Graz assigns individual numerical IDs to both `installation`s and `meter`s. The usually used meter number (33 characters usually starting with `AT00`) is available as attributes (`meter._name` & `meter._short_name`).

## Home Assistant Integration

This library is used in my Home Assistant Custom Component [ha-stromnetzgraz](https://github.com/dreautall/ha-stromnetzgraz), available via HACS. It allows you to have your Smart Meter readings inside Home Assistant! See the [ha-stromnetzgraz repository](https://github.com/dreautall/ha-stromnetzgraz) for more details.
openssl-enc-compat 0.0.3
Pure Python read/write encryption/decryption of encrypted OpenSSL 1.1.1 files

# openssl_enc_compat

Pure Python 2.7 and 3.x library that is compatible with OpenSSL 1.1.1+ encryption and decryption.
https://github.com/clach04/openssl_enc_compat

This is intended to be used a library, rather than as a command line tool.
Can encrypt/decrypt raw binary and base64 encoded content.
Only supports aes-256-cbc with salt using pbkdf2. pbkdf2 iterations defaults to 10,000 to match OpenSSL default but can be specified.

Also checkout:

  * https://github.com/The-Crocop/pyaes256 - lots of dependencies with a nice API but limited to utf-8 data
  * https://github.com/EbryxLabs/opencrypt - Python 3 only with a filename only API (and command line tools)
  * https://github.com/Madhava-mng/openssltool - Python 3 only wapper around openssl command line tool

## Sample

    from openssl_enc_compat.cipher import OpenSslEncDecCompat

    # echo hello| openssl enc -e aes-256-cbc -salt -pbkdf2 -iter 10000 -in - -base64 -out - -pass pass:password
    openssl_crypted_base64_text = 'U2FsdGVkX18NXhFhTlAyvM2jXPu+hhsT344TvO0yLYk='  # base64
    openssl_crypted_base64_text = b'Salted__\r^\x11aNP2\xbc\xcd\xa3\\\xfb\xbe\x86\x1b\x13\xdf\x8e\x13\xbc\xed2-\x89'  # raw binary
    password = b'password'

    print('openssl_crypted_base64_text: %r' % openssl_crypted_base64_text)
    print('password: %r' % password)

    cipher = OpenSslEncDecCompat(password)  # guess/default
    plaintext = cipher.decrypt(openssl_crypted_base64_text)  # guesses if base64 encoded or note
    print('plaintext: %r' % plaintext)

Quick demo:

    python -m openssl_enc_compat.cipher

## Run tests

    python -m openssl_enc_compat.tests.testsuite -v