motorcortex-python 1.0.1__tar.gz → 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {motorcortex_python-1.0.1/motorcortex_python.egg-info → motorcortex_python-1.0.2}/PKG-INFO +1 -1
  2. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/message_types.py +36 -14
  3. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/motorcortex_pb2.py +8 -8
  4. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/motorcortex_pb2.pyi +39 -3
  5. motorcortex_python-1.0.2/motorcortex/version.py +1 -0
  6. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2/motorcortex_python.egg-info}/PKG-INFO +1 -1
  7. motorcortex_python-1.0.1/motorcortex/version.py +0 -1
  8. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/LICENSE +0 -0
  9. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/MANIFEST.in +0 -0
  10. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/README.md +0 -0
  11. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/__init__.py +0 -0
  12. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/_connection_state.py +0 -0
  13. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/_request_builders.py +0 -0
  14. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/_request_utils.py +0 -0
  15. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/_subscribe_dispatch.py +0 -0
  16. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/exceptions.py +0 -0
  17. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/init_threads.py +0 -0
  18. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/motorcortex_hash.json +0 -0
  19. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/nng_url.py +0 -0
  20. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/parameter_tree.py +0 -0
  21. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/py.typed +0 -0
  22. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/reply.py +0 -0
  23. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/request.py +0 -0
  24. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/session.py +0 -0
  25. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/setup_logger.py +0 -0
  26. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/state_callback_handler.py +0 -0
  27. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/subscribe.py +0 -0
  28. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/subscription.py +0 -0
  29. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex/timespec.py +0 -0
  30. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex_python.egg-info/SOURCES.txt +0 -0
  31. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex_python.egg-info/dependency_links.txt +0 -0
  32. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex_python.egg-info/requires.txt +0 -0
  33. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/motorcortex_python.egg-info/top_level.txt +0 -0
  34. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/pyproject.toml +0 -0
  35. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/setup.cfg +0 -0
  36. {motorcortex_python-1.0.1 → motorcortex_python-1.0.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: motorcortex-python
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Python bindings for Motorcortex Engine
5
5
  Home-page: https://www.motorcortex.io
6
6
  Author: Alexey Zakharov
@@ -21,7 +21,7 @@ def importLibrary(name, path):
21
21
 
22
22
  from json import load
23
23
  from inspect import ismodule
24
- from typing import Dict
24
+ from typing import Any, Dict
25
25
 
26
26
  from collections import namedtuple
27
27
  import struct
@@ -333,6 +333,27 @@ class MessageTypes(object):
333
333
 
334
334
  return None
335
335
 
336
+ def _safe_decode_value(self, info: Any, value_bytes: bytes) -> Any:
337
+ """Decode a parameter's value bytes, returning None on failure.
338
+
339
+ Failure modes we tolerate:
340
+ - Empty value bytes (server didn't provide value; e.g. some error paths).
341
+ - Unknown data_type hash (param info malformed or a type the SDK
342
+ doesn't have a decoder for).
343
+ - Decoder raises (corrupt bytes, length mismatch, etc.).
344
+
345
+ The caller checks status to decide whether to trust the returned value.
346
+ """
347
+ if not value_bytes:
348
+ return None
349
+ value_type = self._types_by_hash.get(info.data_type)
350
+ if value_type is None:
351
+ return None
352
+ try:
353
+ return value_type.decode(value_bytes, info.number_of_elements)
354
+ except Exception:
355
+ return None
356
+
336
357
  def decode(self, wire_data):
337
358
  """Decodes data received from the server"""
338
359
 
@@ -343,22 +364,23 @@ class MessageTypes(object):
343
364
  msg.ParseFromString(buf)
344
365
 
345
366
  if type_inst.decode_value == motorcortex_parameter_msg:
346
- if msg.status == motorcortex.OK:
347
- value_type = self._types_by_hash[msg.info.data_type]
348
- return ParameterMsg(msg.header, msg.info, value_type.decode(msg.value, msg.info.number_of_elements),
349
- motorcortex.OK)
350
- else:
351
- return ParameterMsg(msg.header, msg.info, None, msg.status)
367
+ # Always attempt to decode the value bytes. On non-OK status (e.g.
368
+ # TIMEOUT_WAITING_FOR_UPDATE) the server still provides the stale
369
+ # buffer contents for forensic use; preserve them and let the caller
370
+ # decide whether to use the value based on status + timestamp age.
371
+ return ParameterMsg(msg.header, msg.info,
372
+ self._safe_decode_value(msg.info, msg.value),
373
+ msg.status)
352
374
  elif type_inst.decode_value == motorcortex_parameter_list_msg:
353
375
  params = []
354
376
  for param in msg.params:
355
- if msg.status == motorcortex.OK:
356
- value_type = self._types_by_hash[param.info.data_type]
357
- params.append(ParameterMsg(param.header, param.info,
358
- value_type.decode(param.value, param.info.number_of_elements),
359
- motorcortex.OK))
360
- else:
361
- params.append(ParameterMsg(param.header, param.info, None, msg.status))
377
+ # Use the per-element status, not the outer ParameterListMsg status —
378
+ # individual elements can have their own status (e.g. one element
379
+ # times out while others succeed) and that distinction is the whole
380
+ # point of the typed status code.
381
+ params.append(ParameterMsg(param.header, param.info,
382
+ self._safe_decode_value(param.info, param.value),
383
+ param.status))
362
384
  return ParameterListMsg(msg.header, params)
363
385
 
364
386
  return msg
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
13
13
 
14
14
 
15
15
 
16
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11motorcortex.proto\x12\x0bmotorcortex\"i\n\x0fParameterOffset\x12\x36\n\x04type\x18\x01 \x02(\x0e\x32\x17.motorcortex.OffsetType:\x0fOFFSET_ELEMENTS\x12\x0e\n\x06offset\x18\x02 \x02(\r\x12\x0e\n\x06length\x18\x03 \x02(\r\"f\n\x05\x45rror\x12\x11\n\ttimestamp\x18\x01 \x02(\x06\x12\x14\n\x0c\x65rror_number\x18\x02 \x02(\x07\x12\x13\n\x0b\x65rror_level\x18\x03 \x02(\x07\x12\x11\n\tsubsystem\x18\x04 \x02(\x07\x12\x0c\n\x04info\x18\x05 \x02(\x07\"a\n\tErrorList\x12\"\n\x06\x65rrors\x18\x01 \x03(\x0b\x32\x12.motorcortex.Error\x12\x18\n\x10number_of_errors\x18\x02 \x02(\x07\x12\x16\n\x0eupdate_counter\x18\x03 \x02(\x07\"\x8a\x02\n\rParameterInfo\x12\n\n\x02id\x18\x01 \x02(\r\x12\x11\n\tdata_type\x18\x02 \x02(\r\x12\x11\n\tdata_size\x18\x03 \x02(\r\x12\x1a\n\x12number_of_elements\x18\x04 \x02(\r\x12\r\n\x05\x66lags\x18\x05 \x02(\r\x12\x13\n\x0bpermissions\x18\x06 \x02(\r\x12.\n\nparam_type\x18\x07 \x02(\x0e\x32\x1a.motorcortex.ParameterType\x12(\n\x08group_id\x18\x08 \x02(\x0e\x32\x16.motorcortex.UserGroup\x12\x1f\n\x04unit\x18\t \x02(\x0e\x32\x11.motorcortex.Unit\x12\x0c\n\x04path\x18\n \x02(\t\"\x94\x01\n\x12GroupParameterInfo\x12\r\n\x05index\x18\x01 \x02(\r\x12\x0e\n\x06offset\x18\x02 \x02(\r\x12\x0c\n\x04size\x18\x03 \x02(\r\x12(\n\x04info\x18\x04 \x02(\x0b\x32\x1a.motorcortex.ParameterInfo\x12\'\n\x06status\x18\x05 \x02(\x0e\x32\x17.motorcortex.StatusCode\"1\n\x06Header\x12\x14\n\x0c\x66rameCounter\x18\x01 \x02(\x07\x12\x11\n\ttimestamp\x18\x02 \x02(\x06\"Z\n\x08GroupMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12)\n\x06params\x18\x02 \x03(\x0b\x32\x19.motorcortex.ParameterMsg\"Y\n\tStatusMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\'\n\x06status\x18\x02 \x02(\x0e\x32\x17.motorcortex.StatusCode\"P\n\x08LoginMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05login\x18\x02 \x02(\t\x12\x10\n\x08password\x18\x03 \x02(\t\"9\n\x12GetSessionTokenMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\"n\n\x0fSessionTokenMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05token\x18\x02 \x02(\t\x12\'\n\x06status\x18\x03 \x02(\x0e\x32\x17.motorcortex.StatusCode\"G\n\x11RestoreSessionMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05token\x18\x02 \x02(\t\"0\n\tLogoutMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\":\n\x13GetParameterTreeMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\"\x9a\x01\n\x10ParameterTreeMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12*\n\x06params\x18\x02 \x03(\x0b\x32\x1a.motorcortex.ParameterInfo\x12\x0c\n\x04hash\x18\x03 \x02(\r\x12\'\n\x06status\x18\x04 \x02(\x0e\x32\x17.motorcortex.StatusCode\">\n\x17GetParameterTreeHashMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\"r\n\x14ParameterTreeHashMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04hash\x18\x02 \x02(\r\x12\'\n\x06status\x18\x03 \x02(\x0e\x32\x17.motorcortex.StatusCode\"h\n\x0e\x43reateGroupMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x13\n\x0b\x66rq_divider\x18\x02 \x02(\r\x12\r\n\x05\x61lias\x18\x03 \x02(\t\x12\r\n\x05paths\x18\x04 \x03(\t\"\xaa\x01\n\x0eGroupStatusMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\n\n\x02id\x18\x02 \x02(\r\x12\r\n\x05\x61lias\x18\x03 \x02(\t\x12/\n\x06params\x18\x04 \x03(\x0b\x32\x1f.motorcortex.GroupParameterInfo\x12\'\n\x06status\x18\x05 \x02(\x0e\x32\x17.motorcortex.StatusCode\"D\n\x0eRemoveGroupMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05\x61lias\x18\x02 \x02(\t\"D\n\x0fGetParameterMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04path\x18\x02 \x02(\t\"\x95\x01\n\x0cParameterMsg\x12\r\n\x05value\x18\x01 \x02(\x0c\x12#\n\x06header\x18\x02 \x01(\x0b\x32\x13.motorcortex.Header\x12(\n\x04info\x18\x03 \x01(\x0b\x32\x1a.motorcortex.ParameterInfo\x12\'\n\x06status\x18\x04 \x02(\x0e\x32\x17.motorcortex.StatusCode\"h\n\x13GetParameterListMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12,\n\x06params\x18\x02 \x03(\x0b\x32\x1c.motorcortex.GetParameterMsg\"\x8b\x01\n\x10ParameterListMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12)\n\x06params\x18\x02 \x03(\x0b\x32\x19.motorcortex.ParameterMsg\x12\'\n\x06status\x18\x03 \x02(\x0e\x32\x17.motorcortex.StatusCode\"\x81\x01\n\x0fSetParameterMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12,\n\x06offset\x18\x02 \x01(\x0b\x32\x1c.motorcortex.ParameterOffset\x12\x0c\n\x04path\x18\x03 \x02(\t\x12\r\n\x05value\x18\x04 \x02(\x0c\"h\n\x13SetParameterListMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12,\n\x06params\x18\x02 \x03(\x0b\x32\x1c.motorcortex.SetParameterMsg\"\x99\x01\n\x15OverwriteParameterMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12,\n\x06offset\x18\x02 \x01(\x0b\x32\x1c.motorcortex.ParameterOffset\x12\x10\n\x08\x61\x63tivate\x18\x03 \x02(\x08\x12\x0c\n\x04path\x18\x04 \x02(\t\x12\r\n\x05value\x18\x05 \x02(\x0c\"H\n\x13ReleaseParameterMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04path\x18\x02 \x02(\t\"O\n\x07SaveMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04path\x18\x02 \x02(\t\x12\x11\n\tfile_name\x18\x03 \x02(\t\"O\n\x07LoadMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04path\x18\x02 \x02(\t\x12\x11\n\tfile_name\x18\x03 \x02(\t\"C\n\rConsoleCmdMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05value\x18\x02 \x02(\t\"b\n\x11\x43onsoleCmdListMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12(\n\x04\x63mds\x18\x02 \x03(\x0b\x32\x1a.motorcortex.ConsoleCmdMsg*\xab\x02\n\x04Unit\x12\x12\n\x0eunit_undefined\x10\x00\x12\n\n\x06Length\x10\x0f\x12\x06\n\x02mm\x10\x01\x12\x05\n\x01m\x10\x02\x12\n\n\x05\x41ngle\x10\xf1\x01\x12\x07\n\x03rad\x10\x31\x12\x07\n\x03\x64\x65g\x10\x41\x12\t\n\x04Time\x10\xf2\x01\x12\x0b\n\x07nanosec\x10\x12\x12\x0c\n\x08microsec\x10\"\x12\x0c\n\x08millisec\x10\x32\x12\x07\n\x03sec\x10\x42\x12\x0b\n\x06Weight\x10\xf3\x01\x12\x08\n\x04gram\x10\x13\x12\x06\n\x02kg\x10#\x12\r\n\x08Velocity\x10\xf4\x01\x12\t\n\x05m_sec\x10\x14\x12\x0b\n\x07rad_sec\x10$\x12\x11\n\x0c\x41\x63\x63\x65leration\x10\xf5\x01\x12\n\n\x06m_sec2\x10\x15\x12\x0c\n\x08rad_sec2\x10%\x12\n\n\x05\x46orce\x10\xf6\x01\x12\x05\n\x01N\x10\x16\x12\x06\n\x02Nm\x10&\x12\x0b\n\x07percent\x10\x17*_\n\tUserGroup\x12\x18\n\x14user_group_undefined\x10\x00\x12\n\n\x06SYSTEM\x10\x01\x12\x11\n\rADMINISTRATOR\x10\x03\x12\x0c\n\x08OPERATOR\x10\x07\x12\x0b\n\x07MONITOR\x10\x0f*\xc4\x01\n\nPermission\x12\x18\n\x14permission_undefined\x10\x00\x12\x0e\n\tUSER_READ\x10\x80\x02\x12\x0f\n\nUSER_WRITE\x10\x80\x01\x12\x10\n\x0cUSER_EXECUTE\x10@\x12\x0e\n\nGROUP_READ\x10 \x12\x0f\n\x0bGROUP_WRITE\x10\x10\x12\x11\n\rGROUP_EXECUTE\x10\x08\x12\x0f\n\x0bOTHERS_READ\x10\x04\x12\x10\n\x0cOTHERS_WRITE\x10\x02\x12\x12\n\x0eOTHERS_EXECUTE\x10\x01*\xd4\x01\n\x08\x44\x61taType\x12\x17\n\x13\x64\x61ta_type_undefined\x10\x00\x12\x08\n\x04INT8\x10\x01\x12\t\n\x05UINT8\x10\x02\x12\t\n\x05INT16\x10\x03\x12\n\n\x06UINT16\x10\x04\x12\t\n\x05INT32\x10\x05\x12\n\n\x06UINT32\x10\x06\x12\t\n\x05INT64\x10\x07\x12\n\n\x06UINT64\x10\x08\x12\x08\n\x04\x42OOL\x10\t\x12\n\n\x05\x46LOAT\x10\x81\x02\x12\x0b\n\x06\x44OUBLE\x10\x82\x02\x12\t\n\x04\x43HAR\x10\x81\x04\x12\x0b\n\x06STRING\x10\x82\x04\x12\n\n\x05\x42YTES\x10\x99\t\x12\x0e\n\tUSER_TYPE\x10\x80\n*\x84\x01\n\rParameterType\x12\x18\n\x14param_type_undefined\x10\x00\x12\t\n\x05INPUT\x10\x01\x12\n\n\x06OUTPUT\x10\x10\x12\x0e\n\tPARAMETER\x10\x80\x02\x12\x17\n\x12PARAMETER_VOLATILE\x10\x81\x02\x12\x19\n\x14PARAMETER_PERSISTENT\x10\x82\x02*\x9a\x02\n\nStatusCode\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0eREAD_ONLY_MODE\x10\x01\x12\x0c\n\x06\x46\x41ILED\x10\x80\xfe\x03\x12\x15\n\x10\x46\x41ILED_TO_DECODE\x10\x80 \x12\x15\n\x10SUB_LIST_IS_FULL\x10\x80\"\x12\x19\n\x14WRONG_PARAMETER_PATH\x10\x80$\x12 \n\x1b\x46\x41ILED_TO_SET_REQUESTED_FRQ\x10\x80&\x12\x18\n\x13\x46\x41ILED_TO_OPEN_FILE\x10\x80(\x12\x17\n\x12GROUP_LIST_IS_FULL\x10\x80*\x12\x13\n\x0eWRONG_PASSWORD\x10\x80\x42\x12\x17\n\x12USER_NOT_LOGGED_IN\x10\x80\x44\x12\x16\n\x11PERMISSION_DENIED\x10\x80\x46*v\n\nErrorLevel\x12\x19\n\x15\x65rror_level_undefined\x10\x00\x12\x08\n\x04INFO\x10\x01\x12\x0b\n\x07WARNING\x10\x02\x12\x14\n\x10\x46ORCED_DISENGAGE\x10\x03\x12\x0c\n\x08SHUTDOWN\x10\x04\x12\x12\n\x0e\x45MERGENCY_STOP\x10\x05*_\n\nOffsetType\x12\x19\n\x15offset_type_undefined\x10\x00\x12\x13\n\x0fOFFSET_ELEMENTS\x10\x01\x12\x10\n\x0cOFFSET_BYTES\x10\x02\x12\x0f\n\x0bOFFSET_BITS\x10\x03*<\n\rParameterFlag\x12\x12\n\x0eLINK_IS_ACTIVE\x10\x01\x12\x17\n\x13OVERWRITE_IS_ACTIVE\x10\x02')
16
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11motorcortex.proto\x12\x0bmotorcortex\"i\n\x0fParameterOffset\x12\x36\n\x04type\x18\x01 \x02(\x0e\x32\x17.motorcortex.OffsetType:\x0fOFFSET_ELEMENTS\x12\x0e\n\x06offset\x18\x02 \x02(\r\x12\x0e\n\x06length\x18\x03 \x02(\r\"f\n\x05\x45rror\x12\x11\n\ttimestamp\x18\x01 \x02(\x06\x12\x14\n\x0c\x65rror_number\x18\x02 \x02(\x07\x12\x13\n\x0b\x65rror_level\x18\x03 \x02(\x07\x12\x11\n\tsubsystem\x18\x04 \x02(\x07\x12\x0c\n\x04info\x18\x05 \x02(\x07\"a\n\tErrorList\x12\"\n\x06\x65rrors\x18\x01 \x03(\x0b\x32\x12.motorcortex.Error\x12\x18\n\x10number_of_errors\x18\x02 \x02(\x07\x12\x16\n\x0eupdate_counter\x18\x03 \x02(\x07\"\x8a\x02\n\rParameterInfo\x12\n\n\x02id\x18\x01 \x02(\r\x12\x11\n\tdata_type\x18\x02 \x02(\r\x12\x11\n\tdata_size\x18\x03 \x02(\r\x12\x1a\n\x12number_of_elements\x18\x04 \x02(\r\x12\r\n\x05\x66lags\x18\x05 \x02(\r\x12\x13\n\x0bpermissions\x18\x06 \x02(\r\x12.\n\nparam_type\x18\x07 \x02(\x0e\x32\x1a.motorcortex.ParameterType\x12(\n\x08group_id\x18\x08 \x02(\x0e\x32\x16.motorcortex.UserGroup\x12\x1f\n\x04unit\x18\t \x02(\x0e\x32\x11.motorcortex.Unit\x12\x0c\n\x04path\x18\n \x02(\t\"\x94\x01\n\x12GroupParameterInfo\x12\r\n\x05index\x18\x01 \x02(\r\x12\x0e\n\x06offset\x18\x02 \x02(\r\x12\x0c\n\x04size\x18\x03 \x02(\r\x12(\n\x04info\x18\x04 \x02(\x0b\x32\x1a.motorcortex.ParameterInfo\x12\'\n\x06status\x18\x05 \x02(\x0e\x32\x17.motorcortex.StatusCode\"1\n\x06Header\x12\x14\n\x0c\x66rameCounter\x18\x01 \x02(\x07\x12\x11\n\ttimestamp\x18\x02 \x02(\x06\"Z\n\x08GroupMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12)\n\x06params\x18\x02 \x03(\x0b\x32\x19.motorcortex.ParameterMsg\"Y\n\tStatusMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\'\n\x06status\x18\x02 \x02(\x0e\x32\x17.motorcortex.StatusCode\"P\n\x08LoginMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05login\x18\x02 \x02(\t\x12\x10\n\x08password\x18\x03 \x02(\t\"9\n\x12GetSessionTokenMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\"n\n\x0fSessionTokenMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05token\x18\x02 \x02(\t\x12\'\n\x06status\x18\x03 \x02(\x0e\x32\x17.motorcortex.StatusCode\"G\n\x11RestoreSessionMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05token\x18\x02 \x02(\t\"0\n\tLogoutMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\":\n\x13GetParameterTreeMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\"\x9a\x01\n\x10ParameterTreeMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12*\n\x06params\x18\x02 \x03(\x0b\x32\x1a.motorcortex.ParameterInfo\x12\x0c\n\x04hash\x18\x03 \x02(\r\x12\'\n\x06status\x18\x04 \x02(\x0e\x32\x17.motorcortex.StatusCode\">\n\x17GetParameterTreeHashMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\"r\n\x14ParameterTreeHashMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04hash\x18\x02 \x02(\r\x12\'\n\x06status\x18\x03 \x02(\x0e\x32\x17.motorcortex.StatusCode\"h\n\x0e\x43reateGroupMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x13\n\x0b\x66rq_divider\x18\x02 \x02(\r\x12\r\n\x05\x61lias\x18\x03 \x02(\t\x12\r\n\x05paths\x18\x04 \x03(\t\"\xaa\x01\n\x0eGroupStatusMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\n\n\x02id\x18\x02 \x02(\r\x12\r\n\x05\x61lias\x18\x03 \x02(\t\x12/\n\x06params\x18\x04 \x03(\x0b\x32\x1f.motorcortex.GroupParameterInfo\x12\'\n\x06status\x18\x05 \x02(\x0e\x32\x17.motorcortex.StatusCode\"D\n\x0eRemoveGroupMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05\x61lias\x18\x02 \x02(\t\"D\n\x0fGetParameterMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04path\x18\x02 \x02(\t\"\x95\x01\n\x0cParameterMsg\x12\r\n\x05value\x18\x01 \x02(\x0c\x12#\n\x06header\x18\x02 \x01(\x0b\x32\x13.motorcortex.Header\x12(\n\x04info\x18\x03 \x01(\x0b\x32\x1a.motorcortex.ParameterInfo\x12\'\n\x06status\x18\x04 \x02(\x0e\x32\x17.motorcortex.StatusCode\"h\n\x13GetParameterListMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12,\n\x06params\x18\x02 \x03(\x0b\x32\x1c.motorcortex.GetParameterMsg\"\x8b\x01\n\x10ParameterListMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12)\n\x06params\x18\x02 \x03(\x0b\x32\x19.motorcortex.ParameterMsg\x12\'\n\x06status\x18\x03 \x02(\x0e\x32\x17.motorcortex.StatusCode\"\x81\x01\n\x0fSetParameterMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12,\n\x06offset\x18\x02 \x01(\x0b\x32\x1c.motorcortex.ParameterOffset\x12\x0c\n\x04path\x18\x03 \x02(\t\x12\r\n\x05value\x18\x04 \x02(\x0c\"h\n\x13SetParameterListMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12,\n\x06params\x18\x02 \x03(\x0b\x32\x1c.motorcortex.SetParameterMsg\"\x99\x01\n\x15OverwriteParameterMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12,\n\x06offset\x18\x02 \x01(\x0b\x32\x1c.motorcortex.ParameterOffset\x12\x10\n\x08\x61\x63tivate\x18\x03 \x02(\x08\x12\x0c\n\x04path\x18\x04 \x02(\t\x12\r\n\x05value\x18\x05 \x02(\x0c\"H\n\x13ReleaseParameterMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04path\x18\x02 \x02(\t\"O\n\x07SaveMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04path\x18\x02 \x02(\t\x12\x11\n\tfile_name\x18\x03 \x02(\t\"O\n\x07LoadMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\x0c\n\x04path\x18\x02 \x02(\t\x12\x11\n\tfile_name\x18\x03 \x02(\t\"C\n\rConsoleCmdMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12\r\n\x05value\x18\x02 \x02(\t\"b\n\x11\x43onsoleCmdListMsg\x12#\n\x06header\x18\x01 \x01(\x0b\x32\x13.motorcortex.Header\x12(\n\x04\x63mds\x18\x02 \x03(\x0b\x32\x1a.motorcortex.ConsoleCmdMsg*\xab\x02\n\x04Unit\x12\x12\n\x0eunit_undefined\x10\x00\x12\n\n\x06Length\x10\x0f\x12\x06\n\x02mm\x10\x01\x12\x05\n\x01m\x10\x02\x12\n\n\x05\x41ngle\x10\xf1\x01\x12\x07\n\x03rad\x10\x31\x12\x07\n\x03\x64\x65g\x10\x41\x12\t\n\x04Time\x10\xf2\x01\x12\x0b\n\x07nanosec\x10\x12\x12\x0c\n\x08microsec\x10\"\x12\x0c\n\x08millisec\x10\x32\x12\x07\n\x03sec\x10\x42\x12\x0b\n\x06Weight\x10\xf3\x01\x12\x08\n\x04gram\x10\x13\x12\x06\n\x02kg\x10#\x12\r\n\x08Velocity\x10\xf4\x01\x12\t\n\x05m_sec\x10\x14\x12\x0b\n\x07rad_sec\x10$\x12\x11\n\x0c\x41\x63\x63\x65leration\x10\xf5\x01\x12\n\n\x06m_sec2\x10\x15\x12\x0c\n\x08rad_sec2\x10%\x12\n\n\x05\x46orce\x10\xf6\x01\x12\x05\n\x01N\x10\x16\x12\x06\n\x02Nm\x10&\x12\x0b\n\x07percent\x10\x17*_\n\tUserGroup\x12\x18\n\x14user_group_undefined\x10\x00\x12\n\n\x06SYSTEM\x10\x01\x12\x11\n\rADMINISTRATOR\x10\x03\x12\x0c\n\x08OPERATOR\x10\x07\x12\x0b\n\x07MONITOR\x10\x0f*\xc4\x01\n\nPermission\x12\x18\n\x14permission_undefined\x10\x00\x12\x0e\n\tUSER_READ\x10\x80\x02\x12\x0f\n\nUSER_WRITE\x10\x80\x01\x12\x10\n\x0cUSER_EXECUTE\x10@\x12\x0e\n\nGROUP_READ\x10 \x12\x0f\n\x0bGROUP_WRITE\x10\x10\x12\x11\n\rGROUP_EXECUTE\x10\x08\x12\x0f\n\x0bOTHERS_READ\x10\x04\x12\x10\n\x0cOTHERS_WRITE\x10\x02\x12\x12\n\x0eOTHERS_EXECUTE\x10\x01*\xd4\x01\n\x08\x44\x61taType\x12\x17\n\x13\x64\x61ta_type_undefined\x10\x00\x12\x08\n\x04INT8\x10\x01\x12\t\n\x05UINT8\x10\x02\x12\t\n\x05INT16\x10\x03\x12\n\n\x06UINT16\x10\x04\x12\t\n\x05INT32\x10\x05\x12\n\n\x06UINT32\x10\x06\x12\t\n\x05INT64\x10\x07\x12\n\n\x06UINT64\x10\x08\x12\x08\n\x04\x42OOL\x10\t\x12\n\n\x05\x46LOAT\x10\x81\x02\x12\x0b\n\x06\x44OUBLE\x10\x82\x02\x12\t\n\x04\x43HAR\x10\x81\x04\x12\x0b\n\x06STRING\x10\x82\x04\x12\n\n\x05\x42YTES\x10\x99\t\x12\x0e\n\tUSER_TYPE\x10\x80\n*\x84\x01\n\rParameterType\x12\x18\n\x14param_type_undefined\x10\x00\x12\t\n\x05INPUT\x10\x01\x12\n\n\x06OUTPUT\x10\x10\x12\x0e\n\tPARAMETER\x10\x80\x02\x12\x17\n\x12PARAMETER_VOLATILE\x10\x81\x02\x12\x19\n\x14PARAMETER_PERSISTENT\x10\x82\x02*\xbb\x02\n\nStatusCode\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0eREAD_ONLY_MODE\x10\x01\x12\x0c\n\x06\x46\x41ILED\x10\x80\xfe\x03\x12\x15\n\x10\x46\x41ILED_TO_DECODE\x10\x80 \x12\x15\n\x10SUB_LIST_IS_FULL\x10\x80\"\x12\x19\n\x14WRONG_PARAMETER_PATH\x10\x80$\x12 \n\x1b\x46\x41ILED_TO_SET_REQUESTED_FRQ\x10\x80&\x12\x18\n\x13\x46\x41ILED_TO_OPEN_FILE\x10\x80(\x12\x17\n\x12GROUP_LIST_IS_FULL\x10\x80*\x12\x1f\n\x1aTIMEOUT_WAITING_FOR_UPDATE\x10\x80,\x12\x13\n\x0eWRONG_PASSWORD\x10\x80\x42\x12\x17\n\x12USER_NOT_LOGGED_IN\x10\x80\x44\x12\x16\n\x11PERMISSION_DENIED\x10\x80\x46*v\n\nErrorLevel\x12\x19\n\x15\x65rror_level_undefined\x10\x00\x12\x08\n\x04INFO\x10\x01\x12\x0b\n\x07WARNING\x10\x02\x12\x14\n\x10\x46ORCED_DISENGAGE\x10\x03\x12\x0c\n\x08SHUTDOWN\x10\x04\x12\x12\n\x0e\x45MERGENCY_STOP\x10\x05*_\n\nOffsetType\x12\x19\n\x15offset_type_undefined\x10\x00\x12\x13\n\x0fOFFSET_ELEMENTS\x10\x01\x12\x10\n\x0cOFFSET_BYTES\x10\x02\x12\x0f\n\x0bOFFSET_BITS\x10\x03*<\n\rParameterFlag\x12\x12\n\x0eLINK_IS_ACTIVE\x10\x01\x12\x17\n\x13OVERWRITE_IS_ACTIVE\x10\x02')
17
17
 
18
18
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
19
19
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'motorcortex_pb2', globals())
@@ -31,13 +31,13 @@ if _descriptor._USE_C_DESCRIPTORS == False:
31
31
  _PARAMETERTYPE._serialized_start=4203
32
32
  _PARAMETERTYPE._serialized_end=4335
33
33
  _STATUSCODE._serialized_start=4338
34
- _STATUSCODE._serialized_end=4620
35
- _ERRORLEVEL._serialized_start=4622
36
- _ERRORLEVEL._serialized_end=4740
37
- _OFFSETTYPE._serialized_start=4742
38
- _OFFSETTYPE._serialized_end=4837
39
- _PARAMETERFLAG._serialized_start=4839
40
- _PARAMETERFLAG._serialized_end=4899
34
+ _STATUSCODE._serialized_end=4653
35
+ _ERRORLEVEL._serialized_start=4655
36
+ _ERRORLEVEL._serialized_end=4773
37
+ _OFFSETTYPE._serialized_start=4775
38
+ _OFFSETTYPE._serialized_end=4870
39
+ _PARAMETERFLAG._serialized_start=4872
40
+ _PARAMETERFLAG._serialized_end=4932
41
41
  _PARAMETEROFFSET._serialized_start=34
42
42
  _PARAMETEROFFSET._serialized_end=139
43
43
  _ERROR._serialized_start=141
@@ -19,10 +19,10 @@ import builtins as _builtins
19
19
  import sys
20
20
  import typing as _typing
21
21
 
22
- if sys.version_info >= (3, 10):
23
- from typing import TypeAlias as _TypeAlias
22
+ if sys.version_info >= (3, 11):
23
+ from typing import TypeAlias as _TypeAlias, Never as _Never
24
24
  else:
25
- from typing_extensions import TypeAlias as _TypeAlias
25
+ from typing_extensions import TypeAlias as _TypeAlias, Never as _Never
26
26
 
27
27
  DESCRIPTOR: _descriptor.FileDescriptor
28
28
 
@@ -399,6 +399,8 @@ class _StatusCodeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_StatusCode
399
399
  """Failed to open/save/load a file."""
400
400
  GROUP_LIST_IS_FULL: _StatusCode.ValueType # 5376
401
401
  """Failed to create new group, because the group list is full. Release at least one group."""
402
+ TIMEOUT_WAITING_FOR_UPDATE: _StatusCode.ValueType # 5632
403
+ """GetParameter wait deadline expired before a fresh value was produced for the requested parameter."""
402
404
  WRONG_PASSWORD: _StatusCode.ValueType # 8448
403
405
  """Login failed, wrong login or password."""
404
406
  USER_NOT_LOGGED_IN: _StatusCode.ValueType # 8704
@@ -433,6 +435,8 @@ FAILED_TO_OPEN_FILE: StatusCode.ValueType # 5120
433
435
  """Failed to open/save/load a file."""
434
436
  GROUP_LIST_IS_FULL: StatusCode.ValueType # 5376
435
437
  """Failed to create new group, because the group list is full. Release at least one group."""
438
+ TIMEOUT_WAITING_FOR_UPDATE: StatusCode.ValueType # 5632
439
+ """GetParameter wait deadline expired before a fresh value was produced for the requested parameter."""
436
440
  WRONG_PASSWORD: StatusCode.ValueType # 8448
437
441
  """Login failed, wrong login or password."""
438
442
  USER_NOT_LOGGED_IN: StatusCode.ValueType # 8704
@@ -568,6 +572,7 @@ class ParameterOffset(_message.Message):
568
572
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
569
573
  _ClearFieldArgType: _TypeAlias = _typing.Literal["length", b"length", "offset", b"offset", "type", b"type"] # noqa: Y015
570
574
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
575
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
571
576
 
572
577
  Global___ParameterOffset: _TypeAlias = ParameterOffset # noqa: Y015
573
578
 
@@ -610,6 +615,7 @@ class Error(_message.Message):
610
615
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
611
616
  _ClearFieldArgType: _TypeAlias = _typing.Literal["error_level", b"error_level", "error_number", b"error_number", "info", b"info", "subsystem", b"subsystem", "timestamp", b"timestamp"] # noqa: Y015
612
617
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
618
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
613
619
 
614
620
  Global___Error: _TypeAlias = Error # noqa: Y015
615
621
 
@@ -647,6 +653,7 @@ class ErrorList(_message.Message):
647
653
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
648
654
  _ClearFieldArgType: _TypeAlias = _typing.Literal["errors", b"errors", "number_of_errors", b"number_of_errors", "update_counter", b"update_counter"] # noqa: Y015
649
655
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
656
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
650
657
 
651
658
  Global___ErrorList: _TypeAlias = ErrorList # noqa: Y015
652
659
 
@@ -709,6 +716,7 @@ class ParameterInfo(_message.Message):
709
716
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
710
717
  _ClearFieldArgType: _TypeAlias = _typing.Literal["data_size", b"data_size", "data_type", b"data_type", "flags", b"flags", "group_id", b"group_id", "id", b"id", "number_of_elements", b"number_of_elements", "param_type", b"param_type", "path", b"path", "permissions", b"permissions", "unit", b"unit"] # noqa: Y015
711
718
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
719
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
712
720
 
713
721
  Global___ParameterInfo: _TypeAlias = ParameterInfo # noqa: Y015
714
722
 
@@ -753,6 +761,7 @@ class GroupParameterInfo(_message.Message):
753
761
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
754
762
  _ClearFieldArgType: _TypeAlias = _typing.Literal["index", b"index", "info", b"info", "offset", b"offset", "size", b"size", "status", b"status"] # noqa: Y015
755
763
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
764
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
756
765
 
757
766
  Global___GroupParameterInfo: _TypeAlias = GroupParameterInfo # noqa: Y015
758
767
 
@@ -781,6 +790,7 @@ class Header(_message.Message):
781
790
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
782
791
  _ClearFieldArgType: _TypeAlias = _typing.Literal["frameCounter", b"frameCounter", "timestamp", b"timestamp"] # noqa: Y015
783
792
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
793
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
784
794
 
785
795
  Global___Header: _TypeAlias = Header # noqa: Y015
786
796
 
@@ -813,6 +823,7 @@ class GroupMsg(_message.Message):
813
823
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
814
824
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "params", b"params"] # noqa: Y015
815
825
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
826
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
816
827
 
817
828
  Global___GroupMsg: _TypeAlias = GroupMsg # noqa: Y015
818
829
 
@@ -847,6 +858,7 @@ class StatusMsg(_message.Message):
847
858
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
848
859
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "status", b"status"] # noqa: Y015
849
860
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
861
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
850
862
 
851
863
  Global___StatusMsg: _TypeAlias = StatusMsg # noqa: Y015
852
864
 
@@ -893,6 +905,7 @@ class LoginMsg(_message.Message):
893
905
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
894
906
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "login", b"login", "password", b"password"] # noqa: Y015
895
907
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
908
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
896
909
 
897
910
  Global___LoginMsg: _TypeAlias = LoginMsg # noqa: Y015
898
911
 
@@ -923,6 +936,7 @@ class GetSessionTokenMsg(_message.Message):
923
936
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
924
937
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header"] # noqa: Y015
925
938
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
939
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
926
940
 
927
941
  Global___GetSessionTokenMsg: _TypeAlias = GetSessionTokenMsg # noqa: Y015
928
942
 
@@ -971,6 +985,7 @@ class SessionTokenMsg(_message.Message):
971
985
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
972
986
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "status", b"status", "token", b"token"] # noqa: Y015
973
987
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
988
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
974
989
 
975
990
  Global___SessionTokenMsg: _TypeAlias = SessionTokenMsg # noqa: Y015
976
991
 
@@ -1015,6 +1030,7 @@ class RestoreSessionMsg(_message.Message):
1015
1030
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1016
1031
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "token", b"token"] # noqa: Y015
1017
1032
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1033
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1018
1034
 
1019
1035
  Global___RestoreSessionMsg: _TypeAlias = RestoreSessionMsg # noqa: Y015
1020
1036
 
@@ -1051,6 +1067,7 @@ class LogoutMsg(_message.Message):
1051
1067
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1052
1068
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header"] # noqa: Y015
1053
1069
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1070
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1054
1071
 
1055
1072
  Global___LogoutMsg: _TypeAlias = LogoutMsg # noqa: Y015
1056
1073
 
@@ -1085,6 +1102,7 @@ class GetParameterTreeMsg(_message.Message):
1085
1102
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1086
1103
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header"] # noqa: Y015
1087
1104
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1105
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1088
1106
 
1089
1107
  Global___GetParameterTreeMsg: _TypeAlias = GetParameterTreeMsg # noqa: Y015
1090
1108
 
@@ -1132,6 +1150,7 @@ class ParameterTreeMsg(_message.Message):
1132
1150
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1133
1151
  _ClearFieldArgType: _TypeAlias = _typing.Literal["hash", b"hash", "header", b"header", "params", b"params", "status", b"status"] # noqa: Y015
1134
1152
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1153
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1135
1154
 
1136
1155
  Global___ParameterTreeMsg: _TypeAlias = ParameterTreeMsg # noqa: Y015
1137
1156
 
@@ -1171,6 +1190,7 @@ class GetParameterTreeHashMsg(_message.Message):
1171
1190
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1172
1191
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header"] # noqa: Y015
1173
1192
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1193
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1174
1194
 
1175
1195
  Global___GetParameterTreeHashMsg: _TypeAlias = GetParameterTreeHashMsg # noqa: Y015
1176
1196
 
@@ -1215,6 +1235,7 @@ class ParameterTreeHashMsg(_message.Message):
1215
1235
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1216
1236
  _ClearFieldArgType: _TypeAlias = _typing.Literal["hash", b"hash", "header", b"header", "status", b"status"] # noqa: Y015
1217
1237
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1238
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1218
1239
 
1219
1240
  Global___ParameterTreeHashMsg: _TypeAlias = ParameterTreeHashMsg # noqa: Y015
1220
1241
 
@@ -1279,6 +1300,7 @@ class CreateGroupMsg(_message.Message):
1279
1300
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1280
1301
  _ClearFieldArgType: _TypeAlias = _typing.Literal["alias", b"alias", "frq_divider", b"frq_divider", "header", b"header", "paths", b"paths"] # noqa: Y015
1281
1302
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1303
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1282
1304
 
1283
1305
  Global___CreateGroupMsg: _TypeAlias = CreateGroupMsg # noqa: Y015
1284
1306
 
@@ -1337,6 +1359,7 @@ class GroupStatusMsg(_message.Message):
1337
1359
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1338
1360
  _ClearFieldArgType: _TypeAlias = _typing.Literal["alias", b"alias", "header", b"header", "id", b"id", "params", b"params", "status", b"status"] # noqa: Y015
1339
1361
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1362
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1340
1363
 
1341
1364
  Global___GroupStatusMsg: _TypeAlias = GroupStatusMsg # noqa: Y015
1342
1365
 
@@ -1379,6 +1402,7 @@ class RemoveGroupMsg(_message.Message):
1379
1402
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1380
1403
  _ClearFieldArgType: _TypeAlias = _typing.Literal["alias", b"alias", "header", b"header"] # noqa: Y015
1381
1404
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1405
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1382
1406
 
1383
1407
  Global___RemoveGroupMsg: _TypeAlias = RemoveGroupMsg # noqa: Y015
1384
1408
 
@@ -1419,6 +1443,7 @@ class GetParameterMsg(_message.Message):
1419
1443
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1420
1444
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "path", b"path"] # noqa: Y015
1421
1445
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1446
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1422
1447
 
1423
1448
  Global___GetParameterMsg: _TypeAlias = GetParameterMsg # noqa: Y015
1424
1449
 
@@ -1471,6 +1496,7 @@ class ParameterMsg(_message.Message):
1471
1496
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1472
1497
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "info", b"info", "status", b"status", "value", b"value"] # noqa: Y015
1473
1498
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1499
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1474
1500
 
1475
1501
  Global___ParameterMsg: _TypeAlias = ParameterMsg # noqa: Y015
1476
1502
 
@@ -1513,6 +1539,7 @@ class GetParameterListMsg(_message.Message):
1513
1539
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1514
1540
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "params", b"params"] # noqa: Y015
1515
1541
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1542
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1516
1543
 
1517
1544
  Global___GetParameterListMsg: _TypeAlias = GetParameterListMsg # noqa: Y015
1518
1545
 
@@ -1561,6 +1588,7 @@ class ParameterListMsg(_message.Message):
1561
1588
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1562
1589
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "params", b"params", "status", b"status"] # noqa: Y015
1563
1590
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1591
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1564
1592
 
1565
1593
  Global___ParameterListMsg: _TypeAlias = ParameterListMsg # noqa: Y015
1566
1594
 
@@ -1617,6 +1645,7 @@ class SetParameterMsg(_message.Message):
1617
1645
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1618
1646
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "offset", b"offset", "path", b"path", "value", b"value"] # noqa: Y015
1619
1647
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1648
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1620
1649
 
1621
1650
  Global___SetParameterMsg: _TypeAlias = SetParameterMsg # noqa: Y015
1622
1651
 
@@ -1665,6 +1694,7 @@ class SetParameterListMsg(_message.Message):
1665
1694
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1666
1695
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "params", b"params"] # noqa: Y015
1667
1696
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1697
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1668
1698
 
1669
1699
  Global___SetParameterListMsg: _TypeAlias = SetParameterListMsg # noqa: Y015
1670
1700
 
@@ -1729,6 +1759,7 @@ class OverwriteParameterMsg(_message.Message):
1729
1759
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1730
1760
  _ClearFieldArgType: _TypeAlias = _typing.Literal["activate", b"activate", "header", b"header", "offset", b"offset", "path", b"path", "value", b"value"] # noqa: Y015
1731
1761
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1762
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1732
1763
 
1733
1764
  Global___OverwriteParameterMsg: _TypeAlias = OverwriteParameterMsg # noqa: Y015
1734
1765
 
@@ -1775,6 +1806,7 @@ class ReleaseParameterMsg(_message.Message):
1775
1806
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1776
1807
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "path", b"path"] # noqa: Y015
1777
1808
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1809
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1778
1810
 
1779
1811
  Global___ReleaseParameterMsg: _TypeAlias = ReleaseParameterMsg # noqa: Y015
1780
1812
 
@@ -1825,6 +1857,7 @@ class SaveMsg(_message.Message):
1825
1857
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1826
1858
  _ClearFieldArgType: _TypeAlias = _typing.Literal["file_name", b"file_name", "header", b"header", "path", b"path"] # noqa: Y015
1827
1859
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1860
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1828
1861
 
1829
1862
  Global___SaveMsg: _TypeAlias = SaveMsg # noqa: Y015
1830
1863
 
@@ -1875,6 +1908,7 @@ class LoadMsg(_message.Message):
1875
1908
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1876
1909
  _ClearFieldArgType: _TypeAlias = _typing.Literal["file_name", b"file_name", "header", b"header", "path", b"path"] # noqa: Y015
1877
1910
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1911
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1878
1912
 
1879
1913
  Global___LoadMsg: _TypeAlias = LoadMsg # noqa: Y015
1880
1914
 
@@ -1915,6 +1949,7 @@ class ConsoleCmdMsg(_message.Message):
1915
1949
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1916
1950
  _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "value", b"value"] # noqa: Y015
1917
1951
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1952
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1918
1953
 
1919
1954
  Global___ConsoleCmdMsg: _TypeAlias = ConsoleCmdMsg # noqa: Y015
1920
1955
 
@@ -1957,5 +1992,6 @@ class ConsoleCmdListMsg(_message.Message):
1957
1992
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1958
1993
  _ClearFieldArgType: _TypeAlias = _typing.Literal["cmds", b"cmds", "header", b"header"] # noqa: Y015
1959
1994
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1995
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1960
1996
 
1961
1997
  Global___ConsoleCmdListMsg: _TypeAlias = ConsoleCmdListMsg # noqa: Y015
@@ -0,0 +1 @@
1
+ __version__ = '1.0.2'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: motorcortex-python
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Python bindings for Motorcortex Engine
5
5
  Home-page: https://www.motorcortex.io
6
6
  Author: Alexey Zakharov
@@ -1 +0,0 @@
1
- __version__ = '1.0.1'