Skip to content

Commit

Permalink
Merge 4107558 into efc7bcd
Browse files Browse the repository at this point in the history
  • Loading branch information
pmrv committed Apr 15, 2024
2 parents efc7bcd + 4107558 commit e54205a
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions pyiron_base/storage/flattenedstorage.py
Expand Up @@ -29,17 +29,22 @@
from pyiron_base.interfaces.lockable import Lockable, sentinel


_CHARSIZE = np.dtype("U1").itemsize


def _ensure_str_array_size(array, strlen):
"""
Ensures that the given array can store at least string of length `strlen`.
Args:
array (ndarray): array of dtype <U
strlen (int): maximum length that should fit in it
strlen (int, ndarray): maximum length that should fit in it
Returns:
ndarray: either `array` or resized copy
"""
current_length = array.itemsize // np.dtype("1U").itemsize
current_length = array.itemsize // _CHARSIZE
if isinstance(strlen, np.ndarray):
strlen = strlen.itemsize // _CHARSIZE
if current_length < strlen:
return array.astype(f"{2 * strlen}U")
else:
Expand Down Expand Up @@ -938,6 +943,10 @@ def extend(self, other: "FlattenedStorage"):
self.add_array(
name=k, dtype=dtype, shape=a.shape[1:], fill=fill, per="chunk"
)
elif a.dtype.char == "U":
self._per_chunk_arrays[k] = _ensure_str_array_size(
self._per_chunk_arrays[k], a
)
self._per_chunk_arrays[k][self.num_chunks : combined_num_chunks] = a[
0 : other.num_chunks
]
Expand All @@ -948,6 +957,10 @@ def extend(self, other: "FlattenedStorage"):
self.add_array(
name=k, shape=a.shape[1:], dtype=dtype, fill=fill, per="element"
)
elif a.dtype.char == "U":
self._per_element_arrays[k] = _ensure_str_array_size(
self._per_element_arrays[k], a
)
self._per_element_arrays[k][self.num_elements : combined_num_elements] = a[
0 : other.num_elements
]
Expand Down

0 comments on commit e54205a

Please sign in to comment.