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 1046454702,I_kwDOAMm_X84-X6Gu,5944,Backend / plugin system `remove_duplicates` raises AttributeError on discovering duplicates,9155111,closed,0,,,11,2021-11-06T07:46:38Z,2021-11-15T17:33:43Z,2021-11-15T17:33:43Z,CONTRIBUTOR,,,," **What happened**: In [one of my CI runs](https://github.com/eX-Mech/pymech/runs/4124742207?check_suite_focus=true#step:7:248) somehow the entrypoints ended up being defined twice. Then, I discovered that the function `remove_duplicates` which weeds out duplicate entrypoints were not updated. **What you expected to happen**: No bugs in `remove_duplicates` function **Minimal Complete Verifiable Example**: ```python # Put your MCVE code here from xarray.backends.plugins import remove_duplicates from importlib.metadata import entry_points eps = entry_points().get('xarray.backends', ()) remove_duplicates(eps) remove_duplicates(eps + eps) ``` ``` :1: DeprecationWarning: EntryPoints list interface is deprecated. Cast to list if needed. remove_duplicates(eps + eps) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ----> 1 remove_duplicates(eps + eps) ~/.pyenv/versions/3.9.7/envs/pymech/lib/python3.9/site-packages/xarray/backends/plugins.py in remove_duplicates(entrypoints) 27 matches_len = len(matches) 28 if matches_len > 1: ---> 29 selected_module_name = matches[0].module_name 30 all_module_names = [e.module_name for e in matches] 31 warnings.warn( AttributeError: 'EntryPoint' object has no attribute 'module_name' ``` **Anything else we need to know?**: Following v0.20.0 the entrypoints were discovered using `importlib.metadata` / `importlib_metadata`, but it was broken for 3rd party backeds. In v0.20.1 after #5931 the backend detection was fixed, but remains to be thoroughly tested #5934. This bug might be rare, compared to #5930, so I would recommend having some tests in place before making the next release. **Environment**:
Output of xr.show_versions() INSTALLED VERSIONS ------------------ commit: None python: 3.9.7 (default, Nov 3 2021, 09:51:04) [GCC 11.1.0] python-bits: 64 OS: Linux OS-release: 5.10.75-1-lts machine: x86_64 processor: byteorder: little LC_ALL: None LANG: C LOCALE: (None, None) libhdf5: 1.12.1 libnetcdf: None xarray: 0.20.1 pandas: 1.3.4 numpy: 1.21.3 scipy: None netCDF4: None pydap: None h5netcdf: 0.11.0 h5py: 3.5.0 Nio: None zarr: None cftime: None nc_time_axis: None PseudoNetCDF: None rasterio: 1.2.10 cfgrib: None iris: None bottleneck: None dask: 2021.10.0 distributed: None matplotlib: None cartopy: None seaborn: None numbagg: None fsspec: 2021.10.1 cupy: None pint: None sparse: None setuptools: 57.4.0 pip: 21.3.1 conda: None pytest: 6.2.5 IPython: 7.29.0 sphinx: 4.2.0
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/5944/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 1043276928,I_kwDOAMm_X84-LySA,5930,Regression: 3rd party backends are not discovered with `xarray==0.20.0`,9155111,closed,0,,,7,2021-11-03T09:25:48Z,2021-11-11T10:06:47Z,2021-11-03T16:55:55Z,CONTRIBUTOR,,,,"**What happened**: I am a library developer for `pymech` and I added a (unreleased) xarray backend following the documentation and `rioxarray`'s implementation. This works with `xarray==0.19.0`, but with the `xarray==0.20.0` it no longer works. Could someone clarify what has changed? **What you expected to happen**: Backends can be discovered while using `xr.open_dataset(...)` with or without using the `engine=` keyword argument. **Minimal Complete Verifiable Example**: Since `pymech`'s xarray backend is unreleased, I will demonstrate it via rioxarray: ```py #test.py from xarray.backends import plugins print(""engines ="", plugins.list_engines()) plugins.get_backend(""rasterio"") ``` ```sh $ pip install xarray==0.19.0 rioxarray $ python test.py engines = {'rasterio': , 'store': } $ pip install xarray==0.20.0 $ python test.py engines = {'store': } Traceback (most recent call last): File """", line 1, in File ""/tmp/venv/lib/python3.9/site-packages/xarray/backends/plugins.py"", line 164, in get_backend raise ValueError( ValueError: unrecognized engine rasterio must be one of: ['store'] ``` **Anything else we need to know?**: **Environment**:
Output of xr.show_versions() INSTALLED VERSIONS ------------------ commit: None python: 3.9.7 (default, Oct 10 2021, 15:13:22) [GCC 11.1.0] python-bits: 64 OS: Linux OS-release: 5.10.75-1-lts machine: x86_64 processor: byteorder: little LC_ALL: None LANG: C LOCALE: (None, None) libhdf5: None libnetcdf: None xarray: 0.20.0 pandas: 1.3.4 numpy: 1.21.3 scipy: None netCDF4: None pydap: None h5netcdf: None h5py: None Nio: None zarr: None cftime: None nc_time_axis: None PseudoNetCDF: None rasterio: 1.2.10 cfgrib: None iris: None bottleneck: None dask: None distributed: None matplotlib: None cartopy: None seaborn: None numbagg: None fsspec: None cupy: None pint: None sparse: None setuptools: 57.4.0 pip: 21.2.3 conda: None pytest: None IPython: 7.29.0 sphinx: None
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/5930/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue