|
1
|
|
|
""" |
|
2
|
|
|
Element None |
|
3
|
|
|
|
|
4
|
|
|
A non-packable, non-unpackable item that can help facilitate with additional information about an object, |
|
5
|
|
|
pass extra references to a variable and potentially more |
|
6
|
|
|
|
|
7
|
|
|
.. code-block:: python |
|
8
|
|
|
|
|
9
|
|
|
ExampleMessage = Message('VarTest', [('x', 'B'), ('y', 'B')]) |
|
10
|
|
|
|
|
11
|
|
|
CRCedMessage = Message('CRCedMessage', [ |
|
12
|
|
|
('data', ExampleMessage), # A data field that has the example message in it |
|
13
|
|
|
('extra_param', None), # The None Element |
|
14
|
|
|
('crc', 'I', my_crc32, ['data', 'extra_param']), # Crc the data, and give an error if we have something unexpected |
|
15
|
|
|
]) |
|
16
|
|
|
|
|
17
|
|
|
""" |
|
18
|
|
|
|
|
19
|
1 |
|
from typing import Optional |
|
|
|
|
|
|
20
|
|
|
|
|
21
|
1 |
|
from starstruct.element import register, Element |
|
22
|
1 |
|
from starstruct.modes import Mode |
|
23
|
|
|
|
|
24
|
|
|
|
|
25
|
1 |
|
@register |
|
26
|
1 |
|
class ElementNone(Element): |
|
27
|
|
|
""" |
|
28
|
|
|
Initialize a StarStruct element object. |
|
29
|
|
|
|
|
30
|
|
|
:param field: The fields passed into the constructor of the element |
|
31
|
|
|
:param mode: The mode in which to pack the bytes |
|
32
|
|
|
:param alignment: Number of bytes to align to |
|
33
|
|
|
""" |
|
34
|
1 |
|
def __init__(self, field: list, mode: Optional[Mode]=Mode.Native, alignment: Optional[int]=1): |
|
35
|
1 |
|
self.name = field[0] |
|
36
|
|
|
|
|
37
|
1 |
|
self.update(mode=mode, alignment=alignment) |
|
38
|
|
|
|
|
39
|
1 |
|
@staticmethod |
|
40
|
1 |
|
def valid(field: tuple) -> bool: |
|
41
|
1 |
|
return len(field) == 2 \ |
|
42
|
|
|
and isinstance(field[0], str) \ |
|
43
|
|
|
and field[1] is None |
|
44
|
|
|
|
|
45
|
1 |
|
def validate(self, msg): |
|
46
|
1 |
|
return True |
|
47
|
|
|
|
|
48
|
1 |
|
def update(self, mode=None, alignment=None): |
|
49
|
1 |
|
if mode: |
|
50
|
1 |
|
self._mode = mode |
|
51
|
|
|
|
|
52
|
1 |
|
if alignment: |
|
53
|
1 |
|
self._alignment = alignment |
|
54
|
1 |
|
return |
|
55
|
|
|
|
|
56
|
1 |
|
def pack(self, msg): |
|
57
|
1 |
|
return b'' |
|
58
|
|
|
|
|
59
|
1 |
|
def unpack(self, msg, buf): |
|
60
|
1 |
|
return (None, buf) |
|
61
|
|
|
|
|
62
|
1 |
|
def make(self, msg): |
|
63
|
|
|
return msg[self.name] |
|
64
|
|
|
|
This can be caused by one of the following:
1. Missing Dependencies
This error could indicate a configuration issue of Pylint. Make sure that your libraries are available by adding the necessary commands.
2. Missing __init__.py files
This error could also result from missing
__init__.pyfiles in your module folders. Make sure that you place one file in each sub-folder.