semvec/pypi-packages huggingface dataset:
robovac 0.0.9
Python API for communicating with Eufy RoboVac 11c devices

# PyRobovac
Python library for controlling the Eufy RoboVac 11c.

## Requirements
PyRobovac requires Python 3.6+. All other requirements should be installed by Pip.

## Usage
```python
from robovac import Robovac

my_robovac = Robovac('ROBOVAC_IP', 'ROBOVAC_LOCAL_CODE')

# Cleaning modes
my_robovac.start_auto_clean()
my_robovac.start_edge_clean()
my_robovac.start_single_room_clean()
my_robovac.start_spot_clean()

# Set cleaning speed
my_robovac.use_normal_speed()
my_robovac.use_max_speed()

# Stop cleaning
my_robovac.stop()

# Return to charging base
my_robovac.go_home()

# Activate "find me" mode, plays a tone until deactivated
my_robovac.start_find_me()
my_robovac.stop_find_me()

# Move in a given direction
my_robovac.go_forward()
my_robovac.go_backward()
my_robovac.go_left()
my_robovac.go_right()

# Get RoboVac status
my_robovac.get_status()
```

## Local code
The API authenticates with the Robovac using a unique local code.
This is a 16 character string that's unique to the RoboVac. In order to
retrieve this code, the Eufy API can be used. The `get_local_code` function
has been implemented for this purpose

Currently, the IP address provided must match the RoboVac's IP in order
to find the local code.

### get_local_code
```python
from robovac import get_local_code
my_robovac_local_code = get_local_code(my_eufy_username, my_eufy_password, ip_of_my_robovac)
```


## Notes & Acknowledgements
This library can only be used when on the same LAN as the RoboVac.
The library has only been tested with the Eufy RoboVac 11c. It may or
may not work with other models.

Thanks to @mjg59 for his work on decrypting packets received
from Eufy devices. See it here: [google/python-lakeside](https://github.com/google/python-lakeside)
secretconf 0.1.2
manage your secrets and configurations easily

# secretconf

![[https://pypi.python.org/pypi/secretconf](pypi)](https://img.shields.io/pypi/v/secretconf.svg)
![[https://travis-ci.org/xmonader/secretconf]](https://travis-ci.org/xmonader/secretconf.png)

![[https://codecov.io/gh/xmonader/secretconf]](https://codecov.io/gh/xmonader/secretconf/branch/master/graph/badge.svg)


Manage your secret configurations easily

# Installation
`pip3 install secretconf --user`


# Usage
secretconf is a library to manage (encrypt/decrypt) your credentials on demand using public key encryption.

## Hush
hush is a commandline utility installed with secretconf to make your life easier to store and update credentials

```bash
hush --section twittermain --fields 'user,__token' --privatekey ~/.ssh/id_rsa  
```

```bash

hush --help
Usage: hush [OPTIONS]

Options:
    --section TEXT     Section (Appname)
    --privatekey TEXT  Privatekey path
    --configpath TEXT  Secret configuration path
    --fields TEXT      quoted comma separated fields; secret fields are prefixed with __
    --help             Show this message and exit.

```

### Data storage
You can configure where to save the data using `--configpath` which is set to `/tmp/secrets.conf` by default. 
```toml
[twittermain]
user = ahmed
__token = eYCWre9l7IauoHs6K3D5J2wkgnQQBtFV4CoZE3W4tpbxa7Z7Qt+c/LnQhSI=

```
> Please notice that you can't use multiple keys on the same `configpath` file

# API usage 
secretconf [documentation](https://xmonader.github.io/secretconf/api/secretconf/)

## make_config
```python
def test_make_config_creates_file_with_encrypted_data():
    make_config(APPNAME, {'user': USER, '__password': PASSWORD},
                config_path=TEST_CONFIG_PATH, private_key=hashedsk)

    assert os.path.exists(TEST_CONFIG_PATH)
    with open(TEST_CONFIG_PATH, 'r') as f:
        content = f.read()
        assert "user" in content
        assert USER in content
        assert "__password" in content
        assert PASSWORD not in content
```


## read_config

```python
    conf = read_config(APPNAME, config_path=TEST_CONFIG_PATH,
                       private_key=hashedsk)
    assert APPNAME in conf
    assert 'user' in conf[APPNAME]
    assert '__password' in conf[APPNAME]
    assert conf[APPNAME]['user'] == USER
    assert conf[APPNAME]['__password'] == PASSWORD
```

# Testing
secretconf tests exists in [tests](./tests) directory 
- basic tests `test_basic.py`: encryption/decryption and usage of `make_config` and `read_config`
- property based tests `test_properties.py`

You can use `pytest tests` or just `tox` make sure to `install requirements-test.txt` or `make test`


# Generating Docs
`make gendocs`

# Requirements

- setuptools==38.5.0
- click==6.7
- PyNaCl==1.2.1
- npyscreen==4.10.5

# License
Software is provided as is under BSD 3-Clause License


# Authors

`secretconf` was written by `Ahmed Youssef <xmonader@gmail.com>`_.