c-struct-data-parser 0.3.0__tar.gz → 0.4.0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: c-struct-data-parser
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: Declaratively define and parse C data structures
5
5
  Author: Gregory.Kuhn
6
6
  Author-email: Gregory.Kuhn <gregory.kuhn@analog.com>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "c-struct-data-parser"
3
- version = "0.3.0"
3
+ version = "0.4.0"
4
4
  description = "Declaratively define and parse C data structures"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -73,10 +73,13 @@ class IntDefinition(DataDefinition):
73
73
  @classmethod
74
74
  def parser(cls, reader: Reader) -> Tuple[IntDefinition, Reader]:
75
75
  (address, data_bytes), new_reader = reader.read(cls.size)
76
- return cls(
77
- int.from_bytes(data_bytes, byteorder=cls.byteorder),
78
- metadata=Metadata(address),
79
- ), new_reader
76
+ return (
77
+ cls(
78
+ int.from_bytes(data_bytes, byteorder=cls.byteorder),
79
+ metadata=Metadata(address),
80
+ ),
81
+ new_reader,
82
+ )
80
83
 
81
84
  def __repr__(self) -> str:
82
85
  cls_name = type(self).__name__
@@ -155,7 +158,7 @@ class StructDefinition(DataDefinition):
155
158
  )
156
159
  for (k, t), v in zip(self.field_types.items(), fields):
157
160
  if not isinstance(v, t):
158
- raise ValueError(f"Got unexpected value: {v} for type: {t}")
161
+ raise ValueError(f"Got unexpected value: {v} for type: {t!r}")
159
162
  setattr(self, k, v)
160
163
 
161
164
  def __str__(self) -> str:
@@ -453,12 +456,13 @@ class ArrayDefinition(DataDefinition):
453
456
 
454
457
 
455
458
  def create_array_definition(
459
+ name: str,
456
460
  target_type: Type[DataDefinition],
457
461
  num_elems: int,
458
462
  ) -> Type[ArrayDefinition]:
459
463
  fields_parser = create_repeat_parser(num_elems, target_type.parser)
460
464
  return type(
461
- f"{target_type.__name__}Array",
465
+ name,
462
466
  (ArrayDefinition,),
463
467
  {
464
468
  "target_type": target_type,
@@ -23,5 +23,8 @@ class Reader(ABC):
23
23
  def new_reader(self, address: int) -> Reader:
24
24
  return type(self)(address)
25
25
 
26
+ def __repr__(self) -> str:
27
+ return f"{type(self).__name__}({self.address:#x})"
28
+
26
29
 
27
30
  ReaderData = Tuple[AddressData, Reader]