# blueye.protocol
[![Tests](https://github.com/BluEye-Robotics/blueye.protocol/workflows/Tests/badge.svg)](https://github.com/BluEye-Robotics/blueye.protocol/actions)
**Deprecation notice**
Blunux 3.0 introduces a new protocol based on [Protobuf](https://developers.google.com/protocol-buffers/) messages passed over a [ZeroMQ](https://zeromq.org/) layer. Starting with Blunux 3.1 the old TCP/UDP based protocol will no longer be supported/compatible.
## About
This repository contains a python library that defines how to communicate with the underwater drones made by [Blueye Robotics](https://blueyerobotics.com).
The protocol itself is defined in another repository, [ProtocolDefinitions](https://github.com/BluEye-Robotics/ProtocolDefinitions), as is stored as a submodule in this repository. The python code in this repository is (mostly) generated from those definitions.
The `blueye.protocol` package's primary use case is in the [`blueye.sdk`](https://github.com/BluEye-Robotics/blueye.sdk). The SDK implements the necessary "plumbing" to utilize the protocol defined here in `blueye.protocol`, and will make interacting with the Blueye drones much easier. If you wish to interact with the drones in your own project we recommend using the `blueye.sdk` package, not `blueye.protocol` directly.
This package requires Python 3.8 or newer.
## Installation
```shell
pip install blueye.protocol
```
## Development
### Dependency/Package management
We use Poetry for dependency/package management, see the [Poetry docs](https://python-poetry.org/docs/) for installation instructions.
### Code generators
**Important**: This repository includes generated code. If the protocol definitions are changed the generated files need to be updated and committed. The generators are run with:
`invoke generate-udp`
`invoke generate-tcp`
`invoke generate-proto`
### Tests
The tests are located in the `tests` folder, and written using the `pytest` library.
The tests can be run using invoke (to ensure that the protocol files are updated)
``` shell
invoke test
```
or directly using pytest (if you don't want to generate the definitions)
``` shell
pytest
```
### `setup.py`
Since bitbake doesn't have support for pyproject.toml files yet, we need to include a
`setup.py` file to specify the dependencies needed. There's an invoke task for
generating the file that can be run with
``` shell
invoke generate-setup-py
```
If you are running MacOS, you need to install gnu-tar
``` shell
brew install gnu-tar
```
and then run the follwing line before the invoke command:
``` shell
PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"
```
**Be sure to run this script and commit the `setup.py` file when the dependencies have
changed.**
Raw data
{
"_id": null,
"home_page": "https://www.blueyerobotics.com",
"name": "blueye-protocol",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "Blueye, Robotics, Protocol",
"author": "Sindre Hansen",
"author_email": "sindre.hansen@blueye.no",
"download_url": "https://files.pythonhosted.org/packages/b7/81/dd6d4474431a7c038ea2a5d8d5ea5eb29d2571f6801a262296c167b94a56/blueye_protocol-2.6.0.tar.gz",
"platform": null,
"description": "# blueye.protocol\n[![Tests](https://github.com/BluEye-Robotics/blueye.protocol/workflows/Tests/badge.svg)](https://github.com/BluEye-Robotics/blueye.protocol/actions)\n\n**Deprecation notice**\n\nBlunux 3.0 introduces a new protocol based on [Protobuf](https://developers.google.com/protocol-buffers/) messages passed over a [ZeroMQ](https://zeromq.org/) layer. Starting with Blunux 3.1 the old TCP/UDP based protocol will no longer be supported/compatible.\n\n\n## About\nThis repository contains a python library that defines how to communicate with the underwater drones made by [Blueye Robotics](https://blueyerobotics.com).\n\nThe protocol itself is defined in another repository, [ProtocolDefinitions](https://github.com/BluEye-Robotics/ProtocolDefinitions), as is stored as a submodule in this repository. The python code in this repository is (mostly) generated from those definitions.\n\nThe `blueye.protocol` package's primary use case is in the [`blueye.sdk`](https://github.com/BluEye-Robotics/blueye.sdk). The SDK implements the necessary \"plumbing\" to utilize the protocol defined here in `blueye.protocol`, and will make interacting with the Blueye drones much easier. If you wish to interact with the drones in your own project we recommend using the `blueye.sdk` package, not `blueye.protocol` directly.\n\nThis package requires Python 3.8 or newer.\n\n## Installation\n```shell\npip install blueye.protocol\n```\n\n## Development\n\n### Dependency/Package management\nWe use Poetry for dependency/package management, see the [Poetry docs](https://python-poetry.org/docs/) for installation instructions.\n\n\n### Code generators\n**Important**: This repository includes generated code. If the protocol definitions are changed the generated files need to be updated and committed. The generators are run with:\n\n`invoke generate-udp`\n\n`invoke generate-tcp`\n\n`invoke generate-proto`\n\n\n### Tests\nThe tests are located in the `tests` folder, and written using the `pytest` library.\n\nThe tests can be run using invoke (to ensure that the protocol files are updated)\n\n``` shell\ninvoke test\n```\nor directly using pytest (if you don't want to generate the definitions)\n\n``` shell\npytest\n```\n\n### `setup.py`\nSince bitbake doesn't have support for pyproject.toml files yet, we need to include a\n`setup.py` file to specify the dependencies needed. There's an invoke task for\ngenerating the file that can be run with\n``` shell\ninvoke generate-setup-py\n```\n\nIf you are running MacOS, you need to install gnu-tar\n``` shell\nbrew install gnu-tar\n```\n\nand then run the follwing line before the invoke command:\n``` shell\nPATH=\"/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH\"\n```\n\n**Be sure to run this script and commit the `setup.py` file when the dependencies have\nchanged.**\n",
"bugtrack_url": null,
"license": "LGPL-3.0",
"summary": "Python protocol definition for the Blueye drones",
"version": "2.6.0",
"project_urls": {
"Homepage": "https://www.blueyerobotics.com",
"Repository": "https://github.com/blueye-robotics/blueye.protocol"
},
"split_keywords": [
"blueye",
" robotics",
" protocol"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "77175d45ee3121ee8226a0ff6a147ef0fc66ad47984df1206f9d1f4039d1779a",
"md5": "bac7dbeb4917fdd13274da871ad9b816",
"sha256": "baa1b7f7584142bc92b95f58c38bd8e159c8b3c4ea0e143256ad5ebbc1a81eec"
},
"downloads": -1,
"filename": "blueye_protocol-2.6.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bac7dbeb4917fdd13274da871ad9b816",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 57509,
"upload_time": "2024-11-04T12:06:34",
"upload_time_iso_8601": "2024-11-04T12:06:34.135762Z",
"url": "https://files.pythonhosted.org/packages/77/17/5d45ee3121ee8226a0ff6a147ef0fc66ad47984df1206f9d1f4039d1779a/blueye_protocol-2.6.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b781dd6d4474431a7c038ea2a5d8d5ea5eb29d2571f6801a262296c167b94a56",
"md5": "3ab095f7bc3072402ecfd3bcd1770542",
"sha256": "a53f4f635973c3eae3bea507d01998e345d4b7b6e0906ec4042eed8787a1fa93"
},
"downloads": -1,
"filename": "blueye_protocol-2.6.0.tar.gz",
"has_sig": false,
"md5_digest": "3ab095f7bc3072402ecfd3bcd1770542",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 50556,
"upload_time": "2024-11-04T12:06:35",
"upload_time_iso_8601": "2024-11-04T12:06:35.394291Z",
"url": "https://files.pythonhosted.org/packages/b7/81/dd6d4474431a7c038ea2a5d8d5ea5eb29d2571f6801a262296c167b94a56/blueye_protocol-2.6.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-04 12:06:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "blueye-robotics",
"github_project": "blueye.protocol",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "blueye-protocol"
}