Name | doip_sdk JSON |
Version |
0.0.8
JSON |
| download |
home_page | None |
Summary | The SDK for the development of DOIP |
upload_time | 2025-07-15 08:32:38 |
maintainer | None |
docs_url | None |
author | Triet Doan |
requires_python | <4.0,>=3.11 |
license | None |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# DOIP-SDK
This is the Software Development Kit (SDK) for DOIP implementation in Python. It provides a template for DOIP servers as
well as some utility methods to facilitate the implementation. Please check our [documentation page][1].
## Installation
This package requires Python version `>=3.11`. To install it, run:
```shell
# Using pip
$ pip install doip-sdk
# Using poetry
$ poetry add doip-sdk
```
## Quick start
### Server side
Suppose that we want to implement a server, which speaks DOIP. For that, we first need to create a handler. A handler is
a component which handles incoming requests. Below is an example handler, which simply returns a success message.
```python
from collections.abc import Iterator
from doip_sdk import DOIPHandler, ServerResponse, ResponseStatus, write_json_segment, write_empty_segment, DOIPServer
class ExampleHandler(DOIPHandler):
def hello(self, first_segment: dict, _: Iterator[bytearray]):
response = ServerResponse(status=ResponseStatus.SUCCESS)
write_json_segment(
socket=self.request,
message=response.model_dump(exclude_none=True)
)
write_empty_segment(socket=self.request)
if __name__ == '__main__':
HOST, PORT = 'localhost', 9999
service_id = 'test-server'
with DOIPServer(service_id, HOST, PORT, ExampleHandler) as server:
server.start()
```
On line 18, we create a server instance, which uses the `ExampleHandler`, and start it. According to the
[DOIP Specification][2], all communication must take place over a secured channel. Therefore, if a private key and a
certificate are not provided, the `DOIPServer` generates a self-signed certificate and use it.
To stop the server, simply press <kbd>ctrl</kbd> + <kbd>c</kbd>.
The `ExampleHandler` above overrides the `hello` method, which is called when a `0.DOIP/Op.Hello` operation is
received. Currently, these methods below can be overridden:
* `hello`
* `create`
* `retrieve`
* `update`
* `delete`
* `search`
* `list_operation`
* `extended_operation`
All of them have the same signature, where the first parameter (except `self`) is the first segment in the request,
and the second parameter is an `Iterator[bytearray]`, which can be used to read other segments in the message.
Each method will be called respectively based on the `operationId` from the client. If the `operationId` does not
refer to a basic operation, the `extended_operation` method will be triggered instead. It is not required to implement
all those methods. If the client asks for an unsupported operation, an error message will be automatically returned.
### Client side
An example client for the server above can be implemented as follows:
```python
from doip_sdk import send_request
if __name__ == '__main__':
host, port = 'localhost', 9999
data = {
'operationId': '0.DOIP/Op.Hello'
}
response = send_request(host=host, port=port, payload=[data])
for segment in response.content:
print(segment.decode('utf-8'))
```
The example client sends a request with the `Hello` operation and print out the response.
[1]: https://doip.pages-ce.gwdg.de/doip-sdk/
[2]: https://www.dona.net/sites/default/files/2018-11/DOIPv2Spec_1.pdf
Raw data
{
"_id": null,
"home_page": null,
"name": "doip_sdk",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.11",
"maintainer_email": null,
"keywords": null,
"author": "Triet Doan",
"author_email": "triet.doan@gwdg.de",
"download_url": "https://files.pythonhosted.org/packages/3a/ab/098bdfa13b73b8a210945151d40e7d18e6097471f43bab85825665056580/doip_sdk-0.0.8.tar.gz",
"platform": null,
"description": "# DOIP-SDK\n\nThis is the Software Development Kit (SDK) for DOIP implementation in Python. It provides a template for DOIP servers as\nwell as some utility methods to facilitate the implementation. Please check our [documentation page][1].\n\n## Installation\n\nThis package requires Python version `>=3.11`. To install it, run:\n\n```shell\n# Using pip\n$ pip install doip-sdk\n\n# Using poetry\n$ poetry add doip-sdk\n```\n\n## Quick start\n\n### Server side\n\nSuppose that we want to implement a server, which speaks DOIP. For that, we first need to create a handler. A handler is\na component which handles incoming requests. Below is an example handler, which simply returns a success message.\n\n```python\nfrom collections.abc import Iterator\n\nfrom doip_sdk import DOIPHandler, ServerResponse, ResponseStatus, write_json_segment, write_empty_segment, DOIPServer\n\n\nclass ExampleHandler(DOIPHandler):\n def hello(self, first_segment: dict, _: Iterator[bytearray]):\n response = ServerResponse(status=ResponseStatus.SUCCESS)\n write_json_segment(\n socket=self.request,\n message=response.model_dump(exclude_none=True)\n )\n write_empty_segment(socket=self.request)\n\n\nif __name__ == '__main__':\n HOST, PORT = 'localhost', 9999\n service_id = 'test-server'\n with DOIPServer(service_id, HOST, PORT, ExampleHandler) as server:\n server.start()\n```\n\nOn line 18, we create a server instance, which uses the `ExampleHandler`, and start it. According to the\n[DOIP Specification][2], all communication must take place over a secured channel. Therefore, if a private key and a\ncertificate are not provided, the `DOIPServer` generates a self-signed certificate and use it.\n\nTo stop the server, simply press <kbd>ctrl</kbd> + <kbd>c</kbd>.\n\nThe `ExampleHandler` above overrides the `hello` method, which is called when a `0.DOIP/Op.Hello` operation is\nreceived. Currently, these methods below can be overridden:\n\n* `hello`\n* `create`\n* `retrieve`\n* `update`\n* `delete`\n* `search`\n* `list_operation`\n* `extended_operation`\n\nAll of them have the same signature, where the first parameter (except `self`) is the first segment in the request,\nand the second parameter is an `Iterator[bytearray]`, which can be used to read other segments in the message.\n\nEach method will be called respectively based on the `operationId` from the client. If the `operationId` does not\nrefer to a basic operation, the `extended_operation` method will be triggered instead. It is not required to implement\nall those methods. If the client asks for an unsupported operation, an error message will be automatically returned.\n\n### Client side\n\nAn example client for the server above can be implemented as follows:\n\n```python\nfrom doip_sdk import send_request\n\nif __name__ == '__main__':\n host, port = 'localhost', 9999\n data = {\n 'operationId': '0.DOIP/Op.Hello'\n }\n response = send_request(host=host, port=port, payload=[data])\n\n for segment in response.content:\n print(segment.decode('utf-8'))\n```\n\nThe example client sends a request with the `Hello` operation and print out the response.\n\n[1]: https://doip.pages-ce.gwdg.de/doip-sdk/\n[2]: https://www.dona.net/sites/default/files/2018-11/DOIPv2Spec_1.pdf\n",
"bugtrack_url": null,
"license": null,
"summary": "The SDK for the development of DOIP",
"version": "0.0.8",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cf0051512f9b2905e3ad73d96a583cab59712f21b9498badb1f613b2291b3def",
"md5": "77f3bc28338654d0a95f5dca2536b73d",
"sha256": "ba1e6d0820d2c13fa4b8ca647ecf829d7b4d76ef2627b4e8a0da5c3bc03b9f38"
},
"downloads": -1,
"filename": "doip_sdk-0.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "77f3bc28338654d0a95f5dca2536b73d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.11",
"size": 12144,
"upload_time": "2025-07-15T08:32:38",
"upload_time_iso_8601": "2025-07-15T08:32:38.104222Z",
"url": "https://files.pythonhosted.org/packages/cf/00/51512f9b2905e3ad73d96a583cab59712f21b9498badb1f613b2291b3def/doip_sdk-0.0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3aab098bdfa13b73b8a210945151d40e7d18e6097471f43bab85825665056580",
"md5": "595cac9df550da8a9991c4bff07eacb4",
"sha256": "ab7c0073088a659ca40e439c9a53209d8f31879ecad632561b650360b2c9cad0"
},
"downloads": -1,
"filename": "doip_sdk-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "595cac9df550da8a9991c4bff07eacb4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.11",
"size": 9687,
"upload_time": "2025-07-15T08:32:38",
"upload_time_iso_8601": "2025-07-15T08:32:38.975468Z",
"url": "https://files.pythonhosted.org/packages/3a/ab/098bdfa13b73b8a210945151d40e7d18e6097471f43bab85825665056580/doip_sdk-0.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-15 08:32:38",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "doip_sdk"
}