MCPcopy
hub / github.com/pydata/xarray / _convert_unsigned_fill_value

Function _convert_unsigned_fill_value

xarray/coding/variables.py:203–236  ·  view source on GitHub ↗
(
    name: T_Name,
    data: Any,
    unsigned: str,
    raw_fill_value: Any,
    encoded_fill_values: set,
)

Source from the content-addressed store, hash-verified

201
202
203def _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
239def _encode_unsigned_fill_value(

Callers 1

decodeMethod · 0.85

Calls 3

lazy_elemwise_funcFunction · 0.90
dtypeMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…