(
self, name, variable: Variable, check_encoding=False, unlimited_dims=None
)
| 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() |
nothing calls this directly
no test coverage detected