From c4cc8d94eb9e79424f4570370355716f72699d8c Mon Sep 17 00:00:00 2001 From: Alessandro Amici Date: Fri, 18 Dec 2020 12:10:59 +0100 Subject: [PATCH 1/4] Pass filename_or_obj as passed by the user to beckends --- xarray/backends/apiv2.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/xarray/backends/apiv2.py b/xarray/backends/apiv2.py index 3055b0bc33f..6c1ab365300 100644 --- a/xarray/backends/apiv2.py +++ b/xarray/backends/apiv2.py @@ -245,8 +245,6 @@ def open_dataset( if backend_kwargs is None: backend_kwargs = {} - filename_or_obj = _normalize_path(filename_or_obj) - if engine is None: engine = _autodetect_engine(filename_or_obj) From 55399d3d79e6e00bba86acd6daa194c22b0aa1b6 Mon Sep 17 00:00:00 2001 From: Alessandro Amici Date: Fri, 18 Dec 2020 12:14:46 +0100 Subject: [PATCH 2/4] Code style --- xarray/backends/apiv2.py | 1 - 1 file changed, 1 deletion(-) diff --git a/xarray/backends/apiv2.py b/xarray/backends/apiv2.py index 6c1ab365300..ab065027da1 100644 --- a/xarray/backends/apiv2.py +++ b/xarray/backends/apiv2.py @@ -7,7 +7,6 @@ from .api import ( _autodetect_engine, _get_backend_cls, - _normalize_path, _protect_dataset_variables_inplace, ) From 9ccd17b7ef18308f7aa5ef7710c5143ea96a6e0c Mon Sep 17 00:00:00 2001 From: Alessandro Amici Date: Fri, 18 Dec 2020 12:35:05 +0100 Subject: [PATCH 3/4] Fix autodetection to also accept pathlib.Path --- xarray/backends/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xarray/backends/api.py b/xarray/backends/api.py index f6175dc61ca..059453ae93d 100644 --- a/xarray/backends/api.py +++ b/xarray/backends/api.py @@ -1,4 +1,5 @@ import os +import pathlib import warnings from glob import glob from io import BytesIO @@ -159,7 +160,7 @@ def _get_default_engine(path, allow_remote=False): def _autodetect_engine(filename_or_obj): if isinstance(filename_or_obj, AbstractDataStore): engine = "store" - elif isinstance(filename_or_obj, str): + elif isinstance(filename_or_obj, (str, pathlib.Path)): engine = _get_default_engine(filename_or_obj, allow_remote=True) else: engine = _get_engine_from_magic_number(filename_or_obj) From df9c0a172eebb7d2a4cdda9bc64a83cd74c2873b Mon Sep 17 00:00:00 2001 From: Alessandro Amici Date: Fri, 18 Dec 2020 13:12:31 +0100 Subject: [PATCH 4/4] ensure _get_default_engine get an str object --- xarray/backends/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xarray/backends/api.py b/xarray/backends/api.py index 059453ae93d..10526214a08 100644 --- a/xarray/backends/api.py +++ b/xarray/backends/api.py @@ -145,7 +145,7 @@ def _get_engine_from_magic_number(filename_or_obj): return engine -def _get_default_engine(path, allow_remote=False): +def _get_default_engine(path: str, allow_remote: bool = False): if allow_remote and is_remote_uri(path): engine = _get_default_engine_remote_uri() elif is_grib_path(path): @@ -161,7 +161,7 @@ def _autodetect_engine(filename_or_obj): if isinstance(filename_or_obj, AbstractDataStore): engine = "store" elif isinstance(filename_or_obj, (str, pathlib.Path)): - engine = _get_default_engine(filename_or_obj, allow_remote=True) + engine = _get_default_engine(str(filename_or_obj), allow_remote=True) else: engine = _get_engine_from_magic_number(filename_or_obj) return engine