Skip to content

Commit 422dc50

Browse files
committed
Review feedback
Signed-off-by: Christian Vetter <christian.vetter@here.com>
1 parent 156fc31 commit 422dc50

3 files changed

Lines changed: 19 additions & 10 deletions

File tree

flatdata-py/flatdata/lib/archive_builder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,13 @@ def _write_index_schema(self, resource_name: str, schema: str) -> None:
120120
self._write_raw_data(
121121
f"{resource_name}_index.schema", bytes(schema, 'utf-8'))
122122

123-
def subarchive(self, name: str) -> None:
123+
def subarchive(self, name: str) -> 'ArchiveBuilder':
124124
"""
125125
Returns an archive builder for the sub-archive `name`.
126126
:raises $name_not_subarchive_error
127127
:param name: name of the sub-archive
128128
"""
129-
NotImplemented
129+
raise NotImplementedError(f"subarchive '{name}' is not implemented")
130130

131131
@classmethod
132132
def __validate_structure_fields(cls, name: str, struct: dict[str, Any], initializer: Any) -> None:

flatdata-py/flatdata/lib/file_resource_writer.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,11 @@ def open(self, name: str, file_path: str) -> None:
4646
def write(self, data: bytes | bytearray) -> None:
4747
'''Write data to file'''
4848
if data:
49-
self._file.write(data) # type: ignore[union-attr] # _file is set by open() before write() is called
49+
assert self._file is not None, "write() called before open()"
50+
self._file.write(data)
5051

5152
def close(self) -> None:
5253
'''Flush data and close file'''
53-
self._file.flush() # type: ignore[union-attr] # _file is set by open() before close() is called
54-
self._file.close() # type: ignore[union-attr] # _file is set by open() before close() is called
54+
assert self._file is not None, "close() called before open()"
55+
self._file.flush()
56+
self._file.close()

flatdata-py/flatdata/lib/resource_storage.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def __init__(self, name: str, writer: Any = None, path: str = "", is_subarchive:
3434
if not path:
3535
raise ArchivePathNotProvidedError()
3636

37-
self.data: bytearray | bytes = bytearray()
37+
self.data: bytearray | bytes | None = bytearray()
3838
self._valid: bool = True
3939
self._resource_writer: Any = None
4040

@@ -54,24 +54,31 @@ def write(self, data: bytes | bytearray) -> None:
5454
5555
:param data(bytearray): bytearray to be added to resource
5656
'''
57+
assert self.data is not None, "write() called on closed resource"
5758
if data and isinstance(data, bytearray) or isinstance(data, bytes):
5859
self.data += data
5960

60-
def get_data(self) -> bytearray | bytes:
61-
'''Returns resources data in bytearray'''
61+
def get_data(self) -> bytearray | bytes | None:
62+
'''Returns resources data in bytearray, or None if the resource is closed.'''
6263
return self.data
6364

6465
def add_size(self) -> None:
6566
'''Calculate size of stored data and appends it to the begining'''
67+
assert self.data is not None, "add_size() called on closed resource"
6668
self.data = int(len(self.data)).to_bytes(
6769
8, byteorder="little", signed=False) + self.data
6870

6971
def add_padding(self) -> None:
7072
'''Add 8 byte zero padding at the end of data'''
73+
assert self.data is not None, "add_padding() called on closed resource"
7174
self.data += b'\x00' * 8
7275

7376
def __str__(self) -> str:
74-
'''Facilitate print for debugging'''
77+
'''Facilitate print for debugging.
78+
79+
Uses !r (repr) instead of implicit __format__ because format(bytes, '')
80+
is deprecated in Python 3.12+ and raises TypeError in 3.14+.
81+
'''
7582
return f'{self.data!r}'
7683

7784
def close(self) -> None:
@@ -81,7 +88,7 @@ def close(self) -> None:
8188
'''
8289
if self._resource_writer:
8390
self._resource_writer.write(self.data)
84-
self.data = None # type: ignore[assignment] # sentinel for closed resource; data lifecycle: bytearray → bytes → None
91+
self.data = None
8592
self._resource_writer.close()
8693

8794
self._valid = False

0 commit comments

Comments
 (0)