@@ -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