From c6ad32b1f0d15000ba544bd640a904d93e9c94d6 Mon Sep 17 00:00:00 2001 From: Blair Bonnett Date: Tue, 26 Apr 2022 17:58:26 +0200 Subject: [PATCH] Use new importlib.metadata.entry_points interface where available. With Python 3.10, the entry_points() method returning a SelectableGroups dict interface was deprecated. The preferred way is to now filter by group through a keyword argument. Fixes GH6514. --- xarray/backends/plugins.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/xarray/backends/plugins.py b/xarray/backends/plugins.py index 7444fbf11eb..44953b875d9 100644 --- a/xarray/backends/plugins.py +++ b/xarray/backends/plugins.py @@ -1,6 +1,7 @@ import functools import inspect import itertools +import sys import warnings from importlib.metadata import entry_points @@ -95,7 +96,11 @@ def build_engines(entrypoints): @functools.lru_cache(maxsize=1) def list_engines(): - entrypoints = entry_points().get("xarray.backends", ()) + # New selection mechanism introduced with Python 3.10. See GH6514. + if sys.version_info >= (3, 10): + entrypoints = entry_points(group="xarray.backends") + else: + entrypoints = entry_points().get("xarray.backends", ()) return build_engines(entrypoints)