From 1504d7ff1f17bc736a118fb49c8eec1b5c32a39a Mon Sep 17 00:00:00 2001 From: Hauke Schulz <43613877+observingClouds@users.noreply.github.com> Date: Wed, 1 Jun 2022 09:55:55 +0200 Subject: [PATCH 1/5] pdyap version dependent client.open_url call --- xarray/backends/pydap_.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/xarray/backends/pydap_.py b/xarray/backends/pydap_.py index 60e3d047b61..3d93eb19833 100644 --- a/xarray/backends/pydap_.py +++ b/xarray/backends/pydap_.py @@ -1,6 +1,7 @@ from __future__ import annotations import numpy as np +from packaging.version import Version from ..core import indexing from ..core.pycompat import integer_types @@ -17,7 +18,9 @@ try: import pydap.client + import pydap.lib + pydap_version = pydap.lib.__version__ has_pydap = True except ModuleNotFoundError: has_pydap = False @@ -113,15 +116,24 @@ def open( if user_charset is None: user_charset = "ascii" - ds = pydap.client.open_url( - url=url, - application=application, - session=session, - output_grid=output_grid, - timeout=timeout, - verify=verify, - user_charset=user_charset, - ) + if Version(pydap_version) >= Version("3.3.0"): + ds = pydap.client.open_url( + url=url, + application=application, + session=session, + output_grid=output_grid, + timeout=timeout, + verify=verify, + user_charset=user_charset, + ) + else: + ds = pydap.client.open_url( + url=url, + application=application, + session=session, + output_grid=output_grid, + timeout=timeout, + ) return cls(ds) def open_store_variable(self, var): From 8e568cb55bc3e08e0d6d8c3db2140fcc831988f3 Mon Sep 17 00:00:00 2001 From: Hauke Schulz <43613877+observingClouds@users.noreply.github.com> Date: Fri, 3 Jun 2022 14:14:58 +0200 Subject: [PATCH 2/5] use pydap version dependent kwargs --- xarray/backends/pydap_.py | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/xarray/backends/pydap_.py b/xarray/backends/pydap_.py index 3d93eb19833..2accaeeb0e2 100644 --- a/xarray/backends/pydap_.py +++ b/xarray/backends/pydap_.py @@ -102,38 +102,26 @@ def open( user_charset=None, ): - if output_grid is None: - output_grid = True - - if verify is None: - verify = True - if timeout is None: from pydap.lib import DEFAULT_TIMEOUT timeout = DEFAULT_TIMEOUT - if user_charset is None: - user_charset = "ascii" - + kwargs = { + "url": url, + "application": application, + "session": session, + "output_grid": output_grid or True, + "timeout": timeout, + } if Version(pydap_version) >= Version("3.3.0"): - ds = pydap.client.open_url( - url=url, - application=application, - session=session, - output_grid=output_grid, - timeout=timeout, - verify=verify, - user_charset=user_charset, - ) - else: - ds = pydap.client.open_url( - url=url, - application=application, - session=session, - output_grid=output_grid, - timeout=timeout, + kwargs.update( + { + "verify": verify if verify is not None else True, + "user_charset": user_charset or "ascii", + } ) + ds = pydap.client.open_url(**kwargs) return cls(ds) def open_store_variable(self, var): From 218b26e629822bb26a79a1d758fe42c24033dcb3 Mon Sep 17 00:00:00 2001 From: Hauke Schulz <43613877+observingClouds@users.noreply.github.com> Date: Sat, 4 Jun 2022 00:00:39 +0200 Subject: [PATCH 3/5] use pydap's defaults Co-authored-by: Deepak Cherian --- xarray/backends/pydap_.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/xarray/backends/pydap_.py b/xarray/backends/pydap_.py index 2accaeeb0e2..b9c35d171c3 100644 --- a/xarray/backends/pydap_.py +++ b/xarray/backends/pydap_.py @@ -115,12 +115,10 @@ def open( "timeout": timeout, } if Version(pydap_version) >= Version("3.3.0"): - kwargs.update( - { - "verify": verify if verify is not None else True, - "user_charset": user_charset or "ascii", - } - ) + if verify is not None: + kwargs.update({"verify": verify}) + if user_charset is not None: + kwargs.update({"user_charset": user_charset}) ds = pydap.client.open_url(**kwargs) return cls(ds) From 99822c6ce18be4e17a19047df5adb1f6ae01e6d9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 3 Jun 2022 22:02:23 +0000 Subject: [PATCH 4/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- xarray/backends/pydap_.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xarray/backends/pydap_.py b/xarray/backends/pydap_.py index b9c35d171c3..a6ac36104fd 100644 --- a/xarray/backends/pydap_.py +++ b/xarray/backends/pydap_.py @@ -116,7 +116,7 @@ def open( } if Version(pydap_version) >= Version("3.3.0"): if verify is not None: - kwargs.update({"verify": verify}) + kwargs.update({"verify": verify}) if user_charset is not None: kwargs.update({"user_charset": user_charset}) ds = pydap.client.open_url(**kwargs) From 0e0b184437d737c41f681a291a7473b414de13a2 Mon Sep 17 00:00:00 2001 From: Hauke Schulz <43613877+observingClouds@users.noreply.github.com> Date: Wed, 8 Jun 2022 09:43:55 +0200 Subject: [PATCH 5/5] document changes --- doc/whats-new.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/whats-new.rst b/doc/whats-new.rst index 6477722fbbb..25467093b9e 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -136,6 +136,8 @@ Bug fixes - Fixed silent overflow issue when decoding times encoded with 32-bit and below unsigned integer data types (:issue:`6589`, :pull:`6598`). By `Spencer Clark `_. +- Fix backend support of pydap versions <3.3.0 (:issue:`6648`, :pull:`6656`). + By `Hauke Schulz `_. Documentation ~~~~~~~~~~~~~