Skip to content

Commit 4f1c1c3

Browse files
committed
Final review feedback
1 parent 32f5ddc commit 4f1c1c3

10 files changed

Lines changed: 54 additions & 37 deletions

File tree

flatdata-generator/flatdata/generator/tree/nodes/archive.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,6 @@ def resources(self) -> list[resources.ResourceBase]:
5252
return self.children_like(resources.ResourceBase) # type: ignore[type-abstract] # isinstance() with ABC is valid
5353

5454
@property
55-
def doc(self) -> Any:
56-
return self._properties.doc
55+
def doc(self) -> str:
56+
doc = self._properties.doc
57+
return str(doc) if doc is not None else ""

flatdata-generator/flatdata/generator/tree/nodes/resources/base.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ def optional(self) -> bool:
2828
return any(['optional' in d for d in self.decorations])
2929

3030
@property
31-
def doc(self) -> Any:
32-
return self._properties.doc
31+
def doc(self) -> str:
32+
doc = self._properties.doc
33+
return str(doc) if doc is not None else ""
3334

3435
@property
3536
def decorations(self) -> list[Any]:
@@ -40,8 +41,11 @@ def explicit_references(self) -> list[ExplicitReference]:
4041
return self.children_like(ExplicitReference)
4142

4243
@property
43-
def referenced_structures(self) -> list[Any]:
44-
return self.children_like(BuiltinStructureReference) + self.children_like(StructureReference)
44+
def referenced_structures(self) -> list[BuiltinStructureReference | StructureReference]:
45+
return [
46+
*self.children_like(BuiltinStructureReference),
47+
*self.children_like(StructureReference),
48+
]
4549

4650
@property
4751
def max_size(self) -> int | None:

flatdata-generator/flatdata/generator/tree/nodes/resources/bound_resource.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from flatdata.generator.tree.nodes.node import Node
2-
from flatdata.generator.tree.nodes.references import ResourceReference
2+
from flatdata.generator.tree.nodes.references import BuiltinStructureReference, ResourceReference, StructureReference
33
from .base import ResourceBase
44

55
from typing import Any
@@ -21,6 +21,6 @@ def create_references(self) -> list[Node]:
2121
return [ResourceReference(name=r) for r in self._resources]
2222

2323
@property
24-
def referenced_structures(self) -> list[Any]:
24+
def referenced_structures(self) -> list[BuiltinStructureReference | StructureReference]:
2525
return [s for r in self.children_like(ResourceReference) for s in
2626
r.node.referenced_structures] # type: ignore[attr-defined] # .node resolves to a resource type with referenced_structures

flatdata-generator/flatdata/generator/tree/nodes/trivial/constant.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ def type(self) -> BasicType:
2323
return BasicType(self._properties.type)
2424

2525
@property
26-
def doc(self) -> Any:
27-
return self._properties.doc
26+
def doc(self) -> str:
27+
doc = self._properties.doc
28+
return str(doc) if doc is not None else ""
2829

2930
@property
3031
def value(self) -> int:

flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,12 @@ def create(properties: Any, definition: Any) -> 'Enumeration':
4747
bits_required = result._type.bits_required(value=value)
4848
if bits_required > result._type.width:
4949
raise InvalidEnumValueError(enumeration_name=result._name, value=value)
50-
result._bits_required = bits_required # type: ignore[attr-defined] # dead code: attribute is set but never read anywhere
51-
5250
return result
5351

5452
@property
55-
def doc(self) -> Any:
56-
return self._properties.doc
53+
def doc(self) -> str:
54+
doc = self._properties.doc
55+
return str(doc) if doc is not None else ""
5756

5857
@property
5958
def type(self) -> BasicType | None:

flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration_value.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ def create(properties: Any, value: int) -> 'EnumerationValue':
1515
return result
1616

1717
@property
18-
def doc(self) -> Any:
19-
return self._properties.doc
18+
def doc(self) -> str:
19+
doc = self._properties.doc
20+
return str(doc) if doc is not None else ""
2021

2122
@property
2223
def value(self) -> int:

flatdata-generator/flatdata/generator/tree/nodes/trivial/field.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,5 +82,6 @@ def offset(self, value: int) -> None:
8282
self._offset = value
8383

8484
@property
85-
def doc(self) -> Any:
86-
return self._properties.doc
85+
def doc(self) -> str:
86+
doc = self._properties.doc
87+
return str(doc) if doc is not None else ""

flatdata-generator/flatdata/generator/tree/nodes/trivial/structure.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@ def has_range(self) -> bool:
2828
return any(f for f in self.fields if f.range)
2929

3030
@property
31-
def doc(self) -> Any:
32-
return self._properties.doc
31+
def doc(self) -> str:
32+
doc = self._properties.doc
33+
return str(doc) if doc is not None else ""
3334

3435
@property
3536
def size_in_bits(self) -> int:
Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,28 @@
11
from abc import ABCMeta, abstractmethod
22

3-
from collections import namedtuple, deque
3+
from collections import deque
44
from collections.abc import Iterator
5-
from typing import Any
5+
from typing import Any, NamedTuple
66

77
from .errors import CircularReferencing
88
from .nodes.node import Node
99
from .nodes.references import Reference, TypeReference
1010
from .syntax_tree import SyntaxTree
1111

1212

13+
class BfsAttr(NamedTuple):
14+
distance: int
15+
16+
17+
class DfsAttr(NamedTuple):
18+
pass
19+
20+
21+
class _DfsState(NamedTuple):
22+
node: Node
23+
processed: bool
24+
25+
1326
class _Traversal(metaclass=ABCMeta):
1427
def __init__(self, tree: SyntaxTree | Node) -> None:
1528
self._root: Node = tree.root
@@ -25,16 +38,14 @@ def iterate(self) -> Iterator[tuple[Node, Any]]:
2538

2639

2740
class BfsTraversal(_Traversal):
28-
def iterate(self) -> Iterator[tuple[Node, Any]]:
29-
Attr = namedtuple("Attr", ["distance"])
30-
41+
def iterate(self) -> Iterator[tuple[Node, BfsAttr]]:
3142
queue: deque[tuple[Node, int]] = deque([(self._root, 0)])
3243
processed: set[Node] = set()
3344
while queue:
3445
node, distance = queue.popleft()
3546
if node in processed:
3647
continue
37-
yield node, Attr(distance=distance)
48+
yield node, BfsAttr(distance=distance)
3849
# We want to preserve original order if possible, and traverse
3950
# children in *original* order: That way they are popped in order
4051
for child in _Traversal.children(node):
@@ -47,10 +58,8 @@ class DfsTraversal(_Traversal):
4758
_PROCESS_NODE_EARLY = 0
4859
_PROCESS_NODE_LATE = 1
4960

50-
def _iterate(self) -> Iterator[tuple[int, Node, Any]]:
51-
State = namedtuple("State", ["node", "processed"])
52-
Attr = namedtuple("Attr", [])
53-
stack = [State(node=self._root, processed=False)]
61+
def _iterate(self) -> Iterator[tuple[int, Node, DfsAttr]]:
62+
stack = [_DfsState(node=self._root, processed=False)]
5463
discovered: set[Node] = set()
5564
processed: set[Node] = set()
5665

@@ -60,27 +69,27 @@ def _iterate(self) -> Iterator[tuple[int, Node, Any]]:
6069
if node in processed:
6170
continue
6271

63-
yield self._PROCESS_NODE_EARLY, node, Attr()
72+
yield self._PROCESS_NODE_EARLY, node, DfsAttr()
6473
discovered.add(node)
65-
stack.append(State(node=node, processed=True))
74+
stack.append(_DfsState(node=node, processed=True))
6675

6776
# We want to preserve original order if possible, and traverse
6877
# children in *reverse* order: That way they are popped in order
6978
for child in reversed(_Traversal.children(node)):
7079
if child not in discovered and child not in processed:
71-
stack.append(State(node=child, processed=False))
80+
stack.append(_DfsState(node=child, processed=False))
7281
elif child not in processed:
7382
raise CircularReferencing(node, child)
7483
else:
75-
yield self._PROCESS_NODE_LATE, node, Attr()
84+
yield self._PROCESS_NODE_LATE, node, DfsAttr()
7685
processed.add(node)
7786

78-
def iterate(self) -> Iterator[tuple[Node, Any]]:
87+
def iterate(self) -> Iterator[tuple[Node, DfsAttr]]:
7988
for event, node, attr in self._iterate():
8089
if event == self._PROCESS_NODE_EARLY:
8190
yield node, attr
8291

83-
def dependency_order(self) -> Iterator[tuple[Node, Any]]:
92+
def dependency_order(self) -> Iterator[tuple[Node, DfsAttr]]:
8493
for event, node, attr in self._iterate():
8594
if event == self._PROCESS_NODE_LATE:
8695
yield node, attr

flatdata-py/flatdata/lib/resources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ class Multivector(ResourceBase):
181181
def __init__(self, index_mem: Any, mem: Any, index_type: type[Any], *element_types: type[Any]) -> None:
182182
self._index = Vector(index_mem, index_type)
183183
self._mem = mem
184-
self._element_types = element_types # type: ignore[assignment] # tuple from *args; parent declares list but both are indexable at runtime
184+
self._element_types = list(element_types)
185185
self._index_type = index_type
186186

187187
@classmethod

0 commit comments

Comments
 (0)