Metadata-Version: 2.1
Name: niraapad
Version: 1.5.5
Summary: A library that routes all communication to the N9 and UR3 robots via a secure middlebox.
Home-page: https://github.com/ubc-systopia/cps-security-code
Author: Arpan Gujarati
Author-email: arpanbg@cs.ubc.ca
License: MIT
Platform: UNKNOWN
Requires-Python: >=3.6.0
License-File: LICENSE


# Niraapad
Prototype for the CPS security project

## Dependencies

* Python 3.7.3
* Python package grpcio 1.32.0
* Python package grpcio-tools 1.32.0
* Python package protobuf 3.15.6
* Python package tensorflow 2.4.1

The package may work with earlier versions of these depenencies, but this has not been tested.

## Styleguide

* We try to follw the [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html)
* In order to use a tool like [YAPF](https://github.com/google/yapf) (Yet Another Python Formatter) for auto-formatting:
    * Run `yapf --style google -i -r -vv files .` in the niraapad folder, or
    * Run `yapf --style google -i -vv files <filepath>` to format a specific file

## Build Steps

* Generate the gRPC stubs using one of the following methods:
    * Run `scripts/compile_proto_files.sh` script in bash
    * Run task `build` defined in `.vscode/tasks.json` in Visual Studio Code

## Testing Steps

* Test on a single machine using one of the following methods:
    * Run `.\niraapad\test\test_middlebox.py`
    * Run task `test` defined in `.vscode/tasks.json` in Visual Studio Code

* Test on two machines as follows:
    * On the server machine, run `.\niraapad\middlebox\start_server.py -P 1337 -K .\niraapad\keys\ispy_cs_ubc_ca\ -S`
    * On the client machine, run `.\niraapad\test\test_niraapad.py -D -H ispy.cs.ubc.ca -P 1337 -K .\niraapad\keys\ispy_cs_ubc_ca\ -S`
    * (Use `.\niraapad\middlebox\start_server.py --help` or `.\niraapad\test\test_niraapad.py --help` for details)

#### Running UR simulator

* Details on setting up UR simulator and connecting it with python script: https://github.com/ubc-systopia/cps-security-code/blob/main/docs/URsim_Setup.pdf

* Test on a single machine as follows:
    * Turn on the VMware Player and run the UR simulator virtual machine
    * Run the UR3 robot simulator and turn on the robot from the button on the bottom left
    * Run the `test_init_vm` test using `niraapad/test/test_middlebox.py`

* Test on two machines as follows:
    * TODO

## Distribution

* To distribute the `niraapad` package on Python Package Index:
    * Clean all old files related to distribution using `rm -rf build/ dist/ *egg*`
    * Update the version info in file `__version__.py`
    * Generate the distribution package using `python3 setup.py sdist bdist_wheel`
    * Run `twine check dist/*` to check for errors and warnings
    * If you want to test the final package, upload it first to TestPyPI server using `twine upload --repository testpypi dist/*`
    * The package can be installed from TestPyPI server using `pip install -i https://test.pypi.org/simple/ niraapad==1.1.0`
    * After the package is tested, upload it to the PyPI server using `twine upload dist/*`

* Currently, Arpan Gujarati is the sole owner and maintainer of the `niraapad` package on Python Package Index


