Loosen type requirements / guarantees for properties

We will still return a dict, but only require a mapping when writing
This commit is contained in:
Jan Petykiewicz 2025-04-21 19:39:08 -07:00
parent 4ffb87d361
commit 428e396b9b

View File

@ -3,6 +3,7 @@ Functionality for reading/writing elements (geometry, text labels,
structure references) and associated properties. structure references) and associated properties.
""" """
from typing import IO, TypeVar from typing import IO, TypeVar
from collections.abc import Mapping
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
from dataclasses import dataclass from dataclasses import dataclass
@ -56,7 +57,7 @@ def read_properties(stream: IO[bytes]) -> dict[int, bytes]:
return properties return properties
def write_properties(stream: IO[bytes], properties: dict[int, bytes]) -> int: def write_properties(stream: IO[bytes], properties: Mapping[int, bytes]) -> int:
""" """
Write element properties. Write element properties.
@ -147,7 +148,7 @@ class Reference(Element):
colrow: tuple[int, int] | NDArray[numpy.int16] | None colrow: tuple[int, int] | NDArray[numpy.int16] | None
""" Number of columns and rows (AREF) or None (SREF) """ """ Number of columns and rows (AREF) or None (SREF) """
properties: dict[int, bytes] properties: Mapping[int, bytes]
""" Properties associated with this reference. """ """ Properties associated with this reference. """
@classmethod @classmethod
@ -229,7 +230,7 @@ class Boundary(Element):
xy: NDArray[numpy.int32] xy: NDArray[numpy.int32]
""" Ordered vertices of the shape. First and last points should be identical. """ """ Ordered vertices of the shape. First and last points should be identical. """
properties: dict[int, bytes] properties: Mapping[int, bytes]
""" Properties for the element. """ """ Properties for the element. """
@classmethod @classmethod
@ -275,7 +276,7 @@ class Path(Element):
xy: NDArray[numpy.int32] xy: NDArray[numpy.int32]
""" Path centerline coordinates """ """ Path centerline coordinates """
properties: dict[int, bytes] properties: Mapping[int, bytes]
""" Properties for the element. """ """ Properties for the element. """
@classmethod @classmethod
@ -340,7 +341,7 @@ class Box(Element):
xy: NDArray[numpy.int32] xy: NDArray[numpy.int32]
""" Box coordinates (5 pairs) """ """ Box coordinates (5 pairs) """
properties: dict[int, bytes] properties: Mapping[int, bytes]
""" Properties for the element. """ """ Properties for the element. """
@classmethod @classmethod
@ -374,7 +375,7 @@ class Node(Element):
xy: NDArray[numpy.int32] xy: NDArray[numpy.int32]
""" 1-50 pairs of coordinates. """ """ 1-50 pairs of coordinates. """
properties: dict[int, bytes] properties: Mapping[int, bytes]
""" Properties for the element. """ """ Properties for the element. """
@classmethod @classmethod
@ -434,7 +435,7 @@ class Text(Element):
string: bytes string: bytes
""" Text content """ """ Text content """
properties: dict[int, bytes] properties: Mapping[int, bytes]
""" Properties for the element. """ """ Properties for the element. """
@classmethod @classmethod