From d515e0d017c4ca2ce91898da41d4458b85684d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20M=C3=BChlbauer?= Date: Thu, 11 Jan 2024 09:55:57 +0100 Subject: [PATCH] restructure datatype extraction --- xarray/backends/netCDF4_.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/xarray/backends/netCDF4_.py b/xarray/backends/netCDF4_.py index 78ec795dbb0..90402d732fc 100644 --- a/xarray/backends/netCDF4_.py +++ b/xarray/backends/netCDF4_.py @@ -502,16 +502,16 @@ def prepare_variable( _ensure_no_forward_slash_in_name(name) attrs = variable.attrs.copy() fill_value = attrs.pop("_FillValue", None) + datatype = _get_datatype( + variable, self.format, raise_on_invalid_encoding=check_encoding + ) + # check enum metadata and use netCDF4.EnumType if ( - variable.dtype.metadata - and variable.dtype.metadata.get("enum_name") - and variable.dtype.metadata.get("enum") + np.dtype(datatype).metadata + and datatype.metadata.get("enum_name") + and datatype.metadata.get("enum") ): - datatype = self._build_and_get_enum(name, variable.dtype) - else: - datatype = _get_datatype( - variable, self.format, raise_on_invalid_encoding=check_encoding - ) + datatype = self._build_and_get_enum(name, datatype) encoding = _extract_nc4_variable_encoding( variable, raise_on_invalid=check_encoding, unlimited_dims=unlimited_dims )