(
name: T_Name,
data: Any,
unsigned: str,
raw_fill_value: Any,
encoded_fill_values: set,
)
| 201 | |
| 202 | |
| 203 | def _convert_unsigned_fill_value( |
| 204 | name: T_Name, |
| 205 | data: Any, |
| 206 | unsigned: str, |
| 207 | raw_fill_value: Any, |
| 208 | encoded_fill_values: set, |
| 209 | ) -> Any: |
| 210 | if data.dtype.kind == "i": |
| 211 | if unsigned == "true": |
| 212 | unsigned_dtype = np.dtype(f"u{data.dtype.itemsize}") |
| 213 | transform = partial(np.asarray, dtype=unsigned_dtype) |
| 214 | if raw_fill_value is not None: |
| 215 | new_fill = np.array(raw_fill_value, dtype=data.dtype) |
| 216 | encoded_fill_values.remove(raw_fill_value) |
| 217 | # use view here to prevent OverflowError |
| 218 | encoded_fill_values.add(new_fill.view(unsigned_dtype).item()) |
| 219 | data = lazy_elemwise_func(data, transform, unsigned_dtype) |
| 220 | elif data.dtype.kind == "u": |
| 221 | if unsigned == "false": |
| 222 | signed_dtype = np.dtype(f"i{data.dtype.itemsize}") |
| 223 | transform = partial(np.asarray, dtype=signed_dtype) |
| 224 | data = lazy_elemwise_func(data, transform, signed_dtype) |
| 225 | if raw_fill_value is not None: |
| 226 | new_fill = signed_dtype.type(raw_fill_value) |
| 227 | encoded_fill_values.remove(raw_fill_value) |
| 228 | encoded_fill_values.add(new_fill) |
| 229 | else: |
| 230 | warnings.warn( |
| 231 | f"variable {name!r} has _Unsigned attribute but is not " |
| 232 | "of integer type. Ignoring attribute.", |
| 233 | SerializationWarning, |
| 234 | stacklevel=3, |
| 235 | ) |
| 236 | return data |
| 237 | |
| 238 | |
| 239 | def _encode_unsigned_fill_value( |
no test coverage detected
searching dependent graphs…