MCPcopy Index your code
hub / github.com/pydata/xarray / prepare_variable

Method prepare_variable

xarray/backends/netCDF4_.py:626–671  ·  view source on GitHub ↗
(
        self, name, variable: Variable, check_encoding=False, unlimited_dims=None
    )

Source from the content-addressed store, hash-verified

624 return variable
625
626 def prepare_variable(
627 self, name, variable: Variable, check_encoding=False, unlimited_dims=None
628 ):
629 _ensure_no_forward_slash_in_name(name)
630 attrs = variable.attrs.copy()
631 fill_value = attrs.pop("_FillValue", None)
632 datatype: np.dtype | ncEnumType | h5EnumType
633 datatype = _get_datatype(
634 variable, self.format, raise_on_invalid_encoding=check_encoding
635 )
636 # check enum metadata and use netCDF4.EnumType
637 if (
638 (meta := np.dtype(datatype).metadata)
639 and (e_name := meta.get("enum_name"))
640 and (e_dict := meta.get("enum"))
641 ):
642 datatype = _build_and_get_enum(self, name, datatype, e_name, e_dict)
643 encoding = _extract_nc4_variable_encoding(
644 variable, raise_on_invalid=check_encoding, unlimited_dims=unlimited_dims
645 )
646 if name in self.ds.variables:
647 nc4_var = self.ds.variables[name]
648 else:
649 default_args = dict(
650 varname=name,
651 datatype=datatype,
652 dimensions=variable.dims,
653 zlib=False,
654 complevel=4,
655 shuffle=True,
656 fletcher32=False,
657 contiguous=False,
658 chunksizes=None,
659 endian="native",
660 least_significant_digit=None,
661 fill_value=fill_value,
662 )
663 default_args.update(encoding)
664 default_args.pop("_FillValue", None)
665 nc4_var = self.ds.createVariable(**default_args)
666
667 nc4_var.setncatts(attrs)
668
669 target = NetCDF4ArrayWrapper(name, self)
670
671 return target, variable.data
672
673 def sync(self):
674 self.ds.sync()

Callers

nothing calls this directly

Calls 9

_get_datatypeFunction · 0.85
_build_and_get_enumFunction · 0.85
NetCDF4ArrayWrapperClass · 0.85
copyMethod · 0.45
dtypeMethod · 0.45
getMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected