From 015b50bfcfc15a15c688ffc33a102dc171c12989 Mon Sep 17 00:00:00 2001 From: Ryan May Date: Fri, 13 Dec 2024 15:22:12 -0700 Subject: [PATCH 1/4] MNT: Simplify _find_base_tds_url() Instead of splitting on the path, just explicitly recombine the schema and the netloc. --- src/siphon/catalog.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/siphon/catalog.py b/src/siphon/catalog.py index 91d4726fa..9e6857fbe 100644 --- a/src/siphon/catalog.py +++ b/src/siphon/catalog.py @@ -851,11 +851,8 @@ def _find_base_tds_url(catalog_url): Will retain URL scheme, host, port and username/password when present. """ - url_components = urlparse(catalog_url) - if url_components.path: - return catalog_url.split(url_components.path)[0] - else: - return catalog_url + scheme, netloc, *_ = urlparse(catalog_url) + return scheme + '://' + netloc def get_latest_access_url(catalog_url, access_method): From 1e2cc9fcb4339c43bc230b303396c5a528a0e456 Mon Sep 17 00:00:00 2001 From: Ryan May Date: Fri, 13 Dec 2024 15:28:41 -0700 Subject: [PATCH 2/4] BUG: Fix incorrect URLs in hyrax catalog THREDDS Client Catalog spec explicitly says that the service base and the urlpath should be concatenated directly. So avoid using urljoin(), which was treating the urlpath as an absolute path on the server. This breaks a weird link in a ramadda catalog. Just adjust the test for ramadda and treat its urlpath (with full server) as a bug. --- src/siphon/catalog.py | 7 +- tests/fixtures/oceandata_hyrax_dataset | 892 +++++++++++++++++++++++++ tests/test_catalog.py | 13 +- 3 files changed, 907 insertions(+), 5 deletions(-) create mode 100644 tests/fixtures/oceandata_hyrax_dataset diff --git a/src/siphon/catalog.py b/src/siphon/catalog.py index 9e6857fbe..4dc09a792 100644 --- a/src/siphon/catalog.py +++ b/src/siphon/catalog.py @@ -582,18 +582,17 @@ def make_access_urls(self, catalog_url, all_services, metadata=None): if isinstance(service, CompoundService): for subservice in service.services: server_base = urljoin(server_url, subservice.base) - access_urls[subservice.service_type] = urljoin(server_base, - self.url_path) + access_urls[subservice.service_type] = server_base + self.url_path else: server_base = urljoin(server_url, service.base) - access_urls[service.service_type] = urljoin(server_base, self.url_path) + access_urls[service.service_type] = server_base + self.url_path # process access children of dataset elements for service_type in self.access_element_info: url_path = self.access_element_info[service_type] if service_type in all_service_dict: server_base = urljoin(server_url, all_service_dict[service_type].base) - access_urls[service_type] = urljoin(server_base, url_path) + access_urls[service_type] = server_base + url_path self.access_urls = access_urls diff --git a/tests/fixtures/oceandata_hyrax_dataset b/tests/fixtures/oceandata_hyrax_dataset new file mode 100644 index 000000000..0f377cc43 --- /dev/null +++ b/tests/fixtures/oceandata_hyrax_dataset @@ -0,0 +1,892 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br, zstd + Connection: + - keep-alive + User-Agent: + - Siphon (0.9.post533+g337f5813.d20241213) + method: GET + uri: https://oceandata.sci.gsfc.nasa.gov/opendap/SeaWiFS/L3SMI/2000/0101/catalog.xml + response: + body: + string: "\n \n + \ \n + \ \n + \ \n\n + \ \n + \ \n + \ 3728708\n 2022-10-04T22:47:18Z\n \n + \ \n \n \n + \ 1931087\n 2022-10-04T23:06:47Z\n \n + \ \n \n \n + \ 1919890\n 2022-10-04T23:06:50Z\n \n + \ \n \n \n + \ 1846663\n 2022-10-04T23:06:53Z\n \n + \ \n \n \n + \ 1789900\n 2022-10-04T23:06:55Z\n \n + \ \n \n \n + \ 1643482\n 2022-10-04T23:06:58Z\n \n + \ \n \n \n + \ 1745482\n 2022-10-04T23:07:00Z\n \n + \ \n \n \n + \ 1802348\n 2022-10-04T23:07:04Z\n \n + \ \n \n \n + \ 1812766\n 2022-10-04T23:07:06Z\n \n + \ \n \n \n + \ 1607377\n 2022-10-04T23:07:09Z\n \n + \ \n \n \n + \ 1890453\n 2022-10-04T23:07:11Z\n \n + \ \n \n \n + \ 1709468\n 2022-10-04T23:07:14Z\n \n + \ \n \n \n + \ 2083147\n 2022-10-04T23:07:17Z\n \n + \ \n \n \n + \ 2070814\n 2022-10-04T23:07:20Z\n \n + \ \n \n \n + \ 2058951\n 2022-10-04T23:07:22Z\n \n + \ \n \n \n + \ 2034497\n 2022-10-04T23:07:25Z\n \n + \ \n \n \n + \ 2027980\n 2022-10-04T23:07:28Z\n \n + \ \n \n \n + \ 1966353\n 2022-10-04T23:07:31Z\n \n + \ \n \n \n + \ 2078822\n 2022-10-04T23:07:34Z\n \n + \ \n \n \n + \ 3395815\n 2022-10-04T23:07:37Z\n \n + \ \n \n \n + \ 1800362\n 2022-10-04T23:07:40Z\n \n + \ \n \n \n + \ 1917894\n 2022-10-04T22:21:06Z\n \n + \ \n \n \n + \ 7344059\n 2022-10-04T22:36:09Z\n \n + \ \n \n \n + \ 1708291\n 2022-10-04T22:28:41Z\n \n + \ \n \n \n + \ 1962064\n 2022-10-04T22:32:49Z\n \n + \ \n \n \n + \ 2290685\n 2022-10-04T22:11:49Z\n \n + \ \n \n \n + \ 2268807\n 2022-10-04T22:11:55Z\n \n + \ \n \n \n + \ 2217774\n 2022-10-04T22:11:59Z\n \n + \ \n \n \n + \ 2195779\n 2022-10-04T22:12:05Z\n \n + \ \n \n \n + \ 2143753\n 2022-10-04T22:12:09Z\n \n + \ \n \n \n + \ 2039783\n 2022-10-04T22:12:12Z\n \n + \ \n \n \n + \ 2481178\n 2022-10-04T22:12:22Z\n \n + \ \n \n \n + \ 2168398\n 2022-10-04T22:12:27Z\n \n + \ \n \n \n + \ 10796062\n 2022-10-05T11:51:08Z\n \n + \ \n \n \n + \ 4323003\n 2022-10-05T12:13:24Z\n \n + \ \n \n \n + \ 4265601\n 2022-10-05T12:13:29Z\n \n + \ \n \n \n + \ 3955670\n 2022-10-05T12:13:36Z\n \n + \ \n \n \n + \ 3723653\n 2022-10-05T12:13:41Z\n \n + \ \n \n \n + \ 3108628\n 2022-10-05T12:13:49Z\n \n + \ \n \n \n + \ 3524833\n 2022-10-05T12:13:55Z\n \n + \ \n \n \n + \ 3784124\n 2022-10-05T12:14:01Z\n \n + \ \n \n \n + \ 3123824\n 2022-10-05T12:14:04Z\n \n + \ \n \n \n + \ 2968690\n 2022-10-05T12:14:08Z\n \n + \ \n \n \n + \ 4127822\n 2022-10-05T12:14:11Z\n \n + \ \n \n \n + \ 3384370\n 2022-10-05T12:14:17Z\n \n + \ \n \n \n + \ 4946588\n 2022-10-05T12:14:20Z\n \n + \ \n \n \n + \ 4899348\n 2022-10-05T12:14:32Z\n \n + \ \n \n \n + \ 4852876\n 2022-10-05T12:14:37Z\n \n + \ \n \n \n + \ 4746106\n 2022-10-05T12:14:43Z\n \n + \ \n \n \n + \ 4727215\n 2022-10-05T12:14:52Z\n \n + \ \n \n \n + \ 4456685\n 2022-10-05T12:14:58Z\n \n + \ \n \n \n + \ 4938222\n 2022-10-05T12:15:02Z\n \n + \ \n \n \n + \ 9471463\n 2022-10-05T12:15:09Z\n \n + \ \n \n \n + \ 3751818\n 2022-10-05T12:15:14Z\n \n + \ \n \n \n + \ 4221762\n 2022-10-05T12:17:26Z\n \n + \ \n \n \n + \ 9717921\n 2022-10-05T12:14:14Z\n \n + \ \n \n \n + \ 3713392\n 2022-10-05T12:36:29Z\n \n + \ \n \n \n + \ 4408015\n 2022-10-05T12:08:00Z\n \n + \ \n \n \n + \ 5751759\n 2022-10-05T11:49:34Z\n \n + \ \n \n \n + \ 5655196\n 2022-10-05T11:49:41Z\n \n + \ \n \n \n + \ 5448510\n 2022-10-05T11:49:45Z\n \n + \ \n \n \n + \ 5361909\n 2022-10-05T11:49:51Z\n \n + \ \n \n \n + \ 5152373\n 2022-10-05T11:49:55Z\n \n + \ \n \n \n + \ 4744451\n 2022-10-05T11:49:58Z\n \n + \ \n \n \n + \ 6646967\n 2022-10-05T11:50:04Z\n \n + \ \n \n \n + \ 5387775\n 2022-10-05T11:50:10Z\n \n + \ \n \n \n + \ 15089342\n 2022-10-06T12:18:49Z\n \n + \ \n \n \n + \ 5535613\n 2022-10-06T12:25:59Z\n \n + \ \n \n \n + \ 5419321\n 2022-10-06T12:25:12Z\n \n + \ \n \n \n + \ 4911691\n 2022-10-06T12:25:21Z\n \n + \ \n \n \n + \ 4574914\n 2022-10-06T12:25:46Z\n \n + \ \n \n \n + \ 3586035\n 2022-10-06T12:26:47Z\n \n + \ \n \n \n + \ 4231469\n 2022-10-06T12:27:17Z\n \n + \ \n \n \n + \ 4668109\n 2022-10-06T12:27:08Z\n \n + \ \n \n \n + \ 3096437\n 2022-10-06T12:27:53Z\n \n + \ \n \n \n + \ 3345324\n 2022-10-06T12:25:16Z\n \n + \ \n \n \n + \ 5190928\n 2022-10-06T12:25:30Z\n \n + \ \n \n \n + \ 3970471\n 2022-10-06T12:25:19Z\n \n + \ \n \n \n + \ 6387009\n 2022-10-06T12:26:14Z\n \n + \ \n \n \n + \ 6316826\n 2022-10-06T12:27:32Z\n \n + \ \n \n \n + \ 6260153\n 2022-10-06T12:28:27Z\n \n + \ \n \n \n + \ 6050672\n 2022-10-06T12:26:59Z\n \n + \ \n \n \n + \ 6057893\n 2022-10-06T12:28:32Z\n \n + \ \n \n \n + \ 5606347\n 2022-10-06T12:29:21Z\n \n + \ \n \n \n + \ 6453829\n 2022-10-06T12:29:45Z\n \n + \ \n \n \n + \ 13063214\n 2022-10-06T12:26:14Z\n \n + \ \n \n \n + \ 4490112\n 2022-10-06T12:25:30Z\n \n + \ \n \n \n + \ 5260134\n 2022-10-06T12:18:26Z\n \n + \ \n \n \n + \ 9533924\n 2022-10-06T12:20:03Z\n \n + \ \n \n \n + \ 4997467\n 2022-10-06T12:19:09Z\n \n + \ \n \n \n + \ 5587864\n 2022-10-06T12:19:44Z\n \n + \ \n \n \n + \ 7755808\n 2022-10-06T12:22:27Z\n \n + \ \n \n \n + \ 7584550\n 2022-10-06T12:22:33Z\n \n + \ \n \n \n + \ 7239140\n 2022-10-06T12:22:35Z\n \n + \ \n \n \n + \ 7076329\n 2022-10-06T12:22:38Z\n \n + \ \n \n \n + \ 6742329\n 2022-10-06T12:22:40Z\n \n + \ \n \n \n + \ 6030495\n 2022-10-06T12:22:43Z\n \n + \ \n \n \n + \ 9267593\n 2022-10-06T12:22:46Z\n \n + \ \n \n \n + \ 7215843\n 2022-10-06T12:22:48Z\n \n + \ \n \n \n + \ 15143611\n 2022-10-06T14:42:05Z\n \n + \ \n \n \n + \ 5548350\n 2022-10-06T14:36:07Z\n \n + \ \n \n \n + \ 5431715\n 2022-10-06T14:36:09Z\n \n + \ \n \n \n + \ 4920743\n 2022-10-06T14:36:12Z\n \n + \ \n \n \n + \ 4581798\n 2022-10-06T14:36:15Z\n \n + \ \n \n \n + \ 3588065\n 2022-10-06T14:36:17Z\n \n + \ \n \n \n + \ 4236891\n 2022-10-06T14:36:20Z\n \n + \ \n \n \n + \ 4676588\n 2022-10-06T14:36:22Z\n \n + \ \n \n \n + \ 3080761\n 2022-10-06T14:36:25Z\n \n + \ \n \n \n + \ 3345488\n 2022-10-06T14:36:30Z\n \n + \ \n \n \n + \ 5201364\n 2022-10-06T14:36:35Z\n \n + \ \n \n \n + \ 3972980\n 2022-10-06T14:36:38Z\n \n + \ \n \n \n + \ 6399228\n 2022-10-06T14:36:45Z\n \n + \ \n \n \n + \ 6329534\n 2022-10-06T14:36:48Z\n \n + \ \n \n \n + \ 6271798\n 2022-10-06T14:36:53Z\n \n + \ \n \n \n + \ 6061706\n 2022-10-06T14:37:01Z\n \n + \ \n \n \n + \ 6068418\n 2022-10-06T14:37:06Z\n \n + \ \n \n \n + \ 5616151\n 2022-10-06T14:37:08Z\n \n + \ \n \n \n + \ 6467426\n 2022-10-06T14:37:16Z\n \n + \ \n \n \n + \ 13109856\n 2022-10-06T14:37:21Z\n \n + \ \n \n \n + \ 4494736\n 2022-10-06T14:37:26Z\n \n + \ \n \n \n + \ 5268910\n 2022-10-06T14:41:36Z\n \n + \ \n \n \n + \ 9529453\n 2022-10-06T14:54:30Z\n \n + \ \n \n \n + \ 5014905\n 2022-10-06T14:45:59Z\n \n + \ \n \n \n + \ 5599460\n 2022-10-06T14:44:44Z\n \n + \ \n \n \n + \ 7778012\n 2022-10-06T14:28:47Z\n \n + \ \n \n \n + \ 7605471\n 2022-10-06T14:28:50Z\n \n + \ \n \n \n + \ 7257501\n 2022-10-06T14:28:53Z\n \n + \ \n \n \n + \ 7093678\n 2022-10-06T14:28:56Z\n \n + \ \n \n \n + \ 6756756\n 2022-10-06T14:28:59Z\n \n + \ \n \n \n + \ 6039337\n 2022-10-06T14:29:02Z\n \n + \ \n \n \n + \ 9299511\n 2022-10-06T14:29:05Z\n \n + \ \n \n \n + \ 7233572\n 2022-10-06T14:29:08Z\n \n + \ \n \n \n + \ 17799629\n 2022-10-06T22:06:44Z\n \n + \ \n \n \n + \ 6207121\n 2022-10-06T22:20:56Z\n \n + \ \n \n \n + \ 6022423\n 2022-10-06T22:21:00Z\n \n + \ \n \n \n + \ 5394860\n 2022-10-06T22:21:05Z\n \n + \ \n \n \n + \ 4989818\n 2022-10-06T22:21:09Z\n \n + \ \n \n \n + \ 3878159\n 2022-10-06T22:21:13Z\n \n + \ \n \n \n + \ 4603881\n 2022-10-06T22:21:18Z\n \n + \ \n \n \n + \ 5129781\n 2022-10-06T22:21:23Z\n \n + \ \n \n \n + \ 3160524\n 2022-10-06T22:21:25Z\n \n + \ \n \n \n + \ 3512697\n 2022-10-06T22:20:00Z\n \n + \ \n \n \n + \ 5649834\n 2022-10-06T22:20:12Z\n \n + \ \n \n \n + \ 4218767\n 2022-10-06T22:20:22Z\n \n + \ \n \n \n + \ 6605850\n 2022-10-06T22:20:27Z\n \n + \ \n \n \n + \ 6529578\n 2022-10-06T22:20:30Z\n \n + \ \n \n \n + \ 6439563\n 2022-10-06T22:20:34Z\n \n + \ \n \n \n + \ 6292493\n 2022-10-06T22:20:38Z\n \n + \ \n \n \n + \ 6111013\n 2022-10-06T22:20:43Z\n \n + \ \n \n \n + \ 5904949\n 2022-10-06T22:20:46Z\n \n + \ \n \n \n + \ 6704603\n 2022-10-06T22:20:51Z\n \n + \ \n \n \n + \ 15318612\n 2022-10-06T22:20:54Z\n \n + \ \n \n \n + \ 4552207\n 2022-10-06T22:20:57Z\n \n + \ \n \n \n + \ 5651883\n 2022-10-06T22:08:48Z\n \n + \ \n \n \n + \ 10098100\n 2022-10-06T22:09:03Z\n \n + \ \n \n \n + \ 5573566\n 2022-10-06T22:06:37Z\n \n + \ \n \n \n + \ 6247387\n 2022-10-06T22:07:48Z\n \n + \ \n \n \n + \ 8466764\n 2022-10-06T22:12:54Z\n \n + \ \n \n \n + \ 8222832\n 2022-10-06T22:12:58Z\n \n + \ \n \n \n + \ 7796791\n 2022-10-06T22:13:02Z\n \n + \ \n \n \n + \ 7447093\n 2022-10-06T22:13:05Z\n \n + \ \n \n \n + \ 6898201\n 2022-10-06T22:13:10Z\n \n + \ \n \n \n + \ 5999057\n 2022-10-06T22:13:16Z\n \n + \ \n \n \n + \ 10278280\n 2022-10-06T22:13:19Z\n \n + \ \n \n \n + \ 7534867\n 2022-10-06T22:13:23Z\n \n + \ \n \n \n \n" + headers: + Connection: + - keep-alive + Content-Description: + - thredds_catalog + Content-Encoding: + - gzip + Content-Security-Policy: + - 'upgrade-insecure-requests; default-src ''self'' image-src ''self'' blob: + ''unsafe-inline'' ''unsafe-eval'' data: oceancolor.gsfc.nasa.gov *.earthdata.nasa.gov + *.google.com *.gstatic.com *.googleapis.com www.googletagmanager.com www.google-analytics.com + www.youtube.com s.ytimg.com stats.g.doubleclick.net dap.digitalgov.gov cdn.earthdata.nasa.gov + api.ipify.org *.cloudflare.com maxcdn.bootstrapcdn.com platform.twitter.com + cdn.bokeh.org cdn.holoviz.org;' + Content-Type: + - text/xml + Date: + - Fri, 13 Dec 2024 20:09:34 GMT + Last-Modified: + - Fri, 13 Dec 2024 20:09:34 GMT + Server: + - nginx + Strict-Transport-Security: + - max-age=31536000; includesubdomains; preload + Transfer-Encoding: + - chunked + X-DAP: + - '3.2' + X-FRAME-OPTIONS: + - DENY + - SAMEORIGIN + XDODS-Server: + - dods/3.2 + XOPeNDAP-Server: + - asciival/, bes/, builddmrpp_module/, csv_handler/, dapreader_module/, dmrpp_module/, + fileout_covjson/, fileout_json/, fileout_netcdf/, freeform_handler/, functions/, + gateway/, gdal_module/, hdf4_handler/, hdf5_handler/, libdap/, ncml_moddule/, + netcdf_handler/, ngap_module/, s3_reader/, usage/, w10n_handler/, xml_data_handler/ + vary: + - accept-encoding + status: + code: 200 + message: '' +version: 1 diff --git a/tests/test_catalog.py b/tests/test_catalog.py index ff90cf95a..fd1a4a8f2 100644 --- a/tests/test_catalog.py +++ b/tests/test_catalog.py @@ -350,7 +350,7 @@ def test_ramadda_access_urls(): cat = (TDSCatalog(url).catalog_refs[0].follow().catalog_refs[0].follow() .catalog_refs[0].follow()) - ds = cat.datasets[3] + ds = cat.datasets['dynamo_basic_v2b_2011all.nc'] assert ds.access_urls['opendap'] == ('http://weather.rsmas.miami.edu/repository/opendap/' 'synth:a43c1cc4-1cf2-4365-97b9-6768b8201407:L3YyYl91c' '2VzRUNPQS9keW5hbW9fYmFzaWNfdjJiXzIwMTFhbGwubmM=' @@ -405,3 +405,14 @@ def test_nasa_hyrax_dataset(): # Checks #gh-759 assert len(cat.datasets) == 161 assert 'epic_1b_20240413222222_03.h5' in cat.datasets + + +# Fixes #724 +@recorder.use_cassette('oceandata_hyrax_dataset') +def test_oceandata_hyrax_dataset(): + """Test that dap urls from the Oceandata Hyrax server are properly generated.""" + cat = TDSCatalog('https://oceandata.sci.gsfc.nasa.gov/opendap/SeaWiFS/L3SMI/2000/0101/' + 'catalog.xml') + dap_url = cat.datasets[0].access_urls['dap'] + assert dap_url == ('https://oceandata.sci.gsfc.nasa.gov/opendap/hyrax/SeaWiFS/L3SMI/2000/' + '0101/SEASTAR_SEAWIFS_GAC.20000101.L3m.DAY.CHL.chlor_a.9km.nc') From 823dab12ddfc95df5bae142f30ef351da7d9b383 Mon Sep 17 00:00:00 2001 From: Ryan May Date: Fri, 13 Dec 2024 15:38:58 -0700 Subject: [PATCH 3/4] BUG: Fix hyrax 'dap' services not available for remote_access() One block of code was not correctly mapping service *type* to url, leaving 'dap' in the access_urls dict, rather than 'opendap'. --- src/siphon/catalog.py | 11 ++++++----- tests/test_catalog.py | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/siphon/catalog.py b/src/siphon/catalog.py index 4dc09a792..276ce0bf7 100644 --- a/src/siphon/catalog.py +++ b/src/siphon/catalog.py @@ -588,11 +588,12 @@ def make_access_urls(self, catalog_url, all_services, metadata=None): access_urls[service.service_type] = server_base + self.url_path # process access children of dataset elements - for service_type in self.access_element_info: - url_path = self.access_element_info[service_type] - if service_type in all_service_dict: - server_base = urljoin(server_url, all_service_dict[service_type].base) - access_urls[service_type] = server_base + url_path + for sname in self.access_element_info: + if sname in all_service_dict: + service = all_service_dict[sname] + url_path = self.access_element_info[sname] + server_base = urljoin(server_url, service.base) + access_urls[service.service_type] = server_base + url_path self.access_urls = access_urls diff --git a/tests/test_catalog.py b/tests/test_catalog.py index fd1a4a8f2..00651b7e1 100644 --- a/tests/test_catalog.py +++ b/tests/test_catalog.py @@ -413,6 +413,7 @@ def test_oceandata_hyrax_dataset(): """Test that dap urls from the Oceandata Hyrax server are properly generated.""" cat = TDSCatalog('https://oceandata.sci.gsfc.nasa.gov/opendap/SeaWiFS/L3SMI/2000/0101/' 'catalog.xml') - dap_url = cat.datasets[0].access_urls['dap'] + dap_url = cat.datasets[0].access_urls['opendap'] assert dap_url == ('https://oceandata.sci.gsfc.nasa.gov/opendap/hyrax/SeaWiFS/L3SMI/2000/' '0101/SEASTAR_SEAWIFS_GAC.20000101.L3m.DAY.CHL.chlor_a.9km.nc') + assert cat.datasets[0].remote_access() From b4350d5eeb8b14d57d90b36c24469709ae39eb76 Mon Sep 17 00:00:00 2001 From: Ryan May Date: Fri, 13 Dec 2024 15:42:38 -0700 Subject: [PATCH 4/4] ENH: Add some more supported service aliases DODS is considered an alias for OPENDAP. Also add (legacy) support for 'http' as a synonym for HTTPServer. --- src/siphon/catalog.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/siphon/catalog.py b/src/siphon/catalog.py index 276ce0bf7..6c14fa16b 100644 --- a/src/siphon/catalog.py +++ b/src/siphon/catalog.py @@ -670,7 +670,8 @@ def remote_access(self, service=None, use_xarray=None): if service is None: service = 'CdmRemote' if 'CdmRemote' in self.access_urls else 'OPENDAP' - if service not in (CaseInsensitiveStr('CdmRemote'), CaseInsensitiveStr('OPENDAP')): + if service not in (CaseInsensitiveStr('CdmRemote'), CaseInsensitiveStr('OPENDAP'), + CaseInsensitiveStr('DODS')): raise ValueError(service + ' is not a valid service for remote_access') return self.access_with_service(service, use_xarray) @@ -735,7 +736,7 @@ def access_with_service(self, service, use_xarray=None): else: from .cdmr import Dataset as CDMRDataset provider = CDMRDataset - elif service == 'OPENDAP': + elif service == 'OPENDAP' or service == 'DODS': if use_xarray: try: import xarray as xr @@ -753,7 +754,7 @@ def access_with_service(self, service, use_xarray=None): elif service in self.ncss_service_names: from .ncss import NCSS provider = NCSS - elif service == 'HTTPServer': + elif service == 'HTTPServer' or service == CaseInsensitiveStr('http'): provider = session_manager.urlopen else: raise ValueError(service + ' is not an access method supported by Siphon')