id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,active_lock_reason,draft,pull_request,body,reactions,performed_via_github_app,state_reason,repo,type 282061228,MDU6SXNzdWUyODIwNjEyMjg=,1781,UnboundLocalError when opening netCDF file,16152387,closed,0,,3008859,1,2017-12-14T11:01:23Z,2018-01-11T16:53:09Z,2018-01-11T16:53:09Z,NONE,,,,"#### Code Sample, a copy-pastable example if possible ```python import xarray as xr import netCDF4 as nc product = '/Users/stefano/src/s5p/products/NO2/'\ 'S5P_OFFL_L2__NO2____20171107T195219_20171107T213349_00361_01_001107_20171108T122727.nc' # opening the product with netCDF4 works fine no2 = nc.Dataset(product) no2.groups # correctly shows groups' content ``` ``` OrderedDict([('PRODUCT', group /PRODUCT: dimensions(sizes): scanline(5640), ground_pixel(450), corner(4), time(1), polynomial_exponents(6), layer(34), vertices(2) variables(dimensions): int32 scanline(scanline), int32 ground_pixel(ground_pixel), int32 time(time), int32 corner(corner), int32 polynomial_exponents(polynomial_exponents), int32 layer(layer), int32 vertices(vertices), float32 latitude(time,scanline,ground_pixel), float32 longitude(time,scanline,ground_pixel), int32 delta_time(time,scanline), time_utc(time,scanline), uint8 qa_value(time,scanline,ground_pixel), float32 nitrogendioxide_tropospheric_column(time,scanline,ground_pixel), float32 nitrogendioxide_tropospheric_column_precision(time,scanline,ground_pixel), float32 averaging_kernel(time,scanline,ground_pixel,layer), float32 air_mass_factor_troposphere(time,scanline,ground_pixel), float32 air_mass_factor_total(time,scanline,ground_pixel), int32 tm5_tropopause_layer_index(time,scanline,ground_pixel), float32 tm5_constant_a(layer,vertices), float32 tm5_constant_b(layer,vertices) groups: SUPPORT_DATA), ('METADATA', group /METADATA: dimensions(sizes): variables(dimensions): groups: QA_STATISTICS, ALGORITHM_SETTINGS, GRANULE_DESCRIPTION, ISO_METADATA, EOP_METADATA, ESA_METADATA)]) ``` ``` # opening the product with xarray raises an UnboundLocalError exception no2 = xr.open_dataset(product, group='/PRODUCT') ``` ``` --------------------------------------------------------------------------- UnboundLocalError Traceback (most recent call last) in () ----> 1 no2 = xr.open_dataset(product, group='/PRODUCT') /Users/stefano/anaconda/lib/python3.6/site-packages/xarray/backends/api.py in open_dataset(filename_or_obj, group, decode_cf, mask_and_scale, decode_times, autoclose, concat_characters, decode_coords, engine, chunks, lock, cache, drop_variables) 303 lock = _default_lock(filename_or_obj, engine) 304 with close_on_error(store): --> 305 return maybe_decode_store(store, lock) 306 else: 307 if engine is not None and engine != 'scipy': /Users/stefano/anaconda/lib/python3.6/site-packages/xarray/backends/api.py in maybe_decode_store(store, lock) 223 store, mask_and_scale=mask_and_scale, decode_times=decode_times, 224 concat_characters=concat_characters, decode_coords=decode_coords, --> 225 drop_variables=drop_variables) 226 227 _protect_dataset_variables_inplace(ds, cache) /Users/stefano/anaconda/lib/python3.6/site-packages/xarray/conventions.py in decode_cf(obj, concat_characters, mask_and_scale, decode_times, decode_coords, drop_variables) 1153 vars, attrs, coord_names = decode_cf_variables( 1154 vars, attrs, concat_characters, mask_and_scale, decode_times, -> 1155 decode_coords, drop_variables=drop_variables) 1156 ds = Dataset(vars, attrs=attrs) 1157 ds = ds.set_coords(coord_names.union(extra_coords).intersection(vars)) /Users/stefano/anaconda/lib/python3.6/site-packages/xarray/conventions.py in decode_cf_variables(variables, attributes, concat_characters, mask_and_scale, decode_times, decode_coords, drop_variables) 1086 k, v, concat_characters=concat_characters, 1087 mask_and_scale=mask_and_scale, decode_times=decode_times, -> 1088 stack_char_dim=stack_char_dim) 1089 if decode_coords: 1090 var_attrs = new_vars[k].attrs /Users/stefano/anaconda/lib/python3.6/site-packages/xarray/conventions.py in decode_cf_variable(name, var, concat_characters, mask_and_scale, decode_times, decode_endianness, stack_char_dim) 998 if (has_fill or scale_factor is not None or add_offset is not None): 999 if has_fill and np.array(fill_value).dtype.kind in ['U', 'S', 'O']: -> 1000 if string_encoding is not None: 1001 raise NotImplementedError( 1002 'variable %r has a _FillValue specified, but ' UnboundLocalError: local variable 'string_encoding' referenced before assignment ``` ```python # Opening another group with xarray works fine no2 = xr.open_dataset(product, group='/METADATA/QA_STATISTICS') no2 ``` ``` Dimensions: (nitrogendioxide_stratospheric_column_histogram_axis: 100, nitrogendioxide_stratospheric_column_pdf_axis: 400, nitrogendioxide_total_column_histogram_axis: 100, nitrogendioxide_total_column_pdf_axis: 400, nitrogendioxide_tropospheric_column_histogram_axis: 100, nitrogendioxide_tropospheric_column_pdf_axis: 400, vertices: 2) [...] ``` #### Problem description An UnboundLocalError exception is raised while trying to open a netCDF file on a specific group ('```/PRODUCT```'). Opening the file within another group works fine. The same file can be correctly opened with the netCDF4 library. #### Expected Output File correctly loaded. #### Output of ``xr.show_versions()``
INSTALLED VERSIONS ------------------ commit: None python: 3.6.1.final.0 python-bits: 64 OS: Darwin OS-release: 17.2.0 machine: x86_64 processor: i386 byteorder: little LC_ALL: None LANG: None LOCALE: None.None xarray: 0.10.0 pandas: 0.20.1 numpy: 1.12.1 scipy: 0.19.0 netCDF4: 1.2.4 h5netcdf: 0.5.0 Nio: None bottleneck: 1.2.1 cyordereddict: None dask: 0.15.3 matplotlib: 2.1.0 cartopy: 0.15.1 seaborn: 0.8.1 setuptools: 27.2.0 pip: 9.0.1 conda: 4.3.29 pytest: 3.0.7 IPython: 5.3.0 sphinx: 1.5.6
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1781/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue