Skip to content

Commit 719a7c8

Browse files
authored
Merge pull request #147 from martindurant/intake2
2 parents 8dfcba8 + 20172a7 commit 719a7c8

22 files changed

+172
-1293
lines changed

ci/environment-py310.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,27 @@ name: test_env
22
channels:
33
- conda-forge
44
dependencies:
5-
- python=3.10
5+
- python=3.9
66
- aiohttp
77
- boto3
88
- exifread
99
- flask
1010
- h5netcdf
11-
- intake
1211
- netcdf4
1312
- pip
1413
- pydap
1514
- pytest
1615
- rasterio
17-
- s3fs >= 2021.08.0
16+
- s3fs
1817
- scikit-image
19-
- xarray >= 0.17
2018
- rangehttpserver
19+
- xarray
2120
- zarr
22-
- moto < 3
21+
- moto
2322
- s3fs
2423
- rioxarray
25-
- werkzeug < 2.2.0
24+
- werkzeug
2625
- dask
26+
- numpy <2
27+
- pip:
28+
- git+https://github.com/intake/intake

ci/environment-py311.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,27 @@ name: test_env
22
channels:
33
- conda-forge
44
dependencies:
5-
- python=3.11
5+
- python=3.9
66
- aiohttp
77
- boto3
88
- exifread
99
- flask
1010
- h5netcdf
11-
- intake
1211
- netcdf4
1312
- pip
1413
- pydap
1514
- pytest
1615
- rasterio
17-
- s3fs >= 2021.08.0
16+
- s3fs
1817
- scikit-image
19-
- xarray >= 0.17
2018
- rangehttpserver
19+
- xarray
2120
- zarr
22-
- moto < 3
21+
- moto
2322
- s3fs
2423
- rioxarray
25-
- werkzeug < 2.2.0
24+
- werkzeug
2625
- dask
26+
- numpy <2
27+
- pip:
28+
- git+https://github.com/intake/intake

ci/environment-py312.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,27 @@ name: test_env
22
channels:
33
- conda-forge
44
dependencies:
5-
- python=3.12
5+
- python=3.9
66
- aiohttp
77
- boto3
88
- exifread
99
- flask
1010
- h5netcdf
11-
- intake
1211
- netcdf4
1312
- pip
1413
- pydap
1514
- pytest
1615
- rasterio
17-
- s3fs >= 2021.08.0
16+
- s3fs
1817
- scikit-image
1918
- rangehttpserver
20-
- xarray >= 0.17
19+
- xarray
2120
- zarr
22-
- moto < 3
21+
- moto
2322
- s3fs
2423
- rioxarray
25-
- werkzeug < 2.2.0
24+
- werkzeug
2625
- dask
26+
- numpy <2
27+
- pip:
28+
- git+https://github.com/intake/intake

ci/environment-py39.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,21 @@ dependencies:
88
- exifread
99
- flask
1010
- h5netcdf
11-
- intake
1211
- netcdf4
1312
- pip
1413
- pydap
1514
- pytest
1615
- rasterio
17-
- s3fs >= 2021.08.0
16+
- s3fs
1817
- scikit-image
1918
- rangehttpserver
20-
- xarray >= 0.17
19+
- xarray
2120
- zarr
22-
- moto < 3
21+
- moto
2322
- s3fs
2423
- rioxarray
25-
- werkzeug < 2.2.0
24+
- werkzeug
2625
- dask
27-
26+
- numpy <2
27+
- pip:
28+
- git+https://github.com/intake/intake

ci/environment-upstream.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ dependencies:
1919
- pandas
2020
- tornado
2121
- zarr
22-
- moto < 3
22+
- moto
2323
- intake
2424
- rioxarray
2525
- gdal
26-
- werkzeug < 2.2.0
26+
- werkzeug
2727
- rioxarray
2828
- dask
29+
- numpy <2
2930
- pip:
3031
- git+https://github.com/fsspec/filesystem_spec.git
3132
- git+https://github.com/intake/intake.git

intake_xarray/__init__.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,10 @@
22
__version__ = get_versions()['version']
33
del get_versions
44

5-
import intake # Import this first to avoid circular imports during discovery.
6-
from intake.container import register_container
5+
import intake_xarray.base
6+
import intake
77
from .netcdf import NetCDFSource
88
from .opendap import OpenDapSource
99
from .raster import RasterIOSource
10-
from .xzarr import ZarrSource
11-
from .xarray_container import RemoteXarray
10+
#from .xzarr import ZarrSource
1211
from .image import ImageSource
13-
14-
15-
try:
16-
intake.register_driver('remote-xarray', RemoteXarray)
17-
except ValueError:
18-
pass
19-
20-
register_container('xarray', RemoteXarray)

intake_xarray/base.py

Lines changed: 15 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,22 @@
1-
from . import __version__
2-
from intake.source.base import DataSource, Schema
1+
class IntakeXarraySourceAdapter:
2+
container = "xarray"
3+
name = "xarray"
4+
version = ""
35

6+
def to_dask(self):
7+
if "chunks" not in self.reader.kwargs:
8+
return self.reader(chunks={}).read()
9+
else:
10+
return self.reader.read()
411

5-
class DataSourceMixin(DataSource):
6-
"""Common behaviours for plugins in this repo"""
7-
version = __version__
8-
container = 'xarray'
9-
partition_access = True
10-
11-
def _get_schema(self):
12-
"""Make schema object, which embeds xarray object and some details"""
13-
from .xarray_container import serialize_zarr_ds
14-
15-
self.urlpath = self._get_cache(self.urlpath)[0]
16-
17-
if self._ds is None:
18-
self._open_dataset()
12+
def __call__(self, *args, **kwargs):
13+
return self
1914

20-
metadata = {
21-
'dims': dict(self._ds.dims),
22-
'data_vars': {k: list(self._ds[k].coords)
23-
for k in self._ds.data_vars.keys()},
24-
'coords': tuple(self._ds.coords.keys()),
25-
}
26-
if getattr(self, 'on_server', False):
27-
metadata['internal'] = serialize_zarr_ds(self._ds)
28-
metadata.update(self._ds.attrs)
29-
self._schema = Schema(
30-
datashape=None,
31-
dtype=None,
32-
shape=None,
33-
npartitions=None,
34-
extra_metadata=metadata)
35-
return self._schema
15+
get = __call__
3616

3717
def read(self):
38-
"""Return a version of the xarray with all the data in memory"""
39-
self._load_metadata()
40-
return self._ds.load()
18+
return self.reader(chunks=None).read()
4119

42-
def read_chunked(self):
43-
"""Return xarray object (which will have chunks)"""
44-
self._load_metadata()
45-
return self._ds
46-
47-
def read_partition(self, i):
48-
"""Fetch one chunk of data at tuple index i
49-
"""
50-
import numpy as np
51-
self._load_metadata()
52-
if not isinstance(i, (tuple, list)):
53-
raise TypeError('For Xarray sources, must specify partition as '
54-
'tuple')
55-
if isinstance(i, list):
56-
i = tuple(i)
57-
if hasattr(self._ds, 'variables') or i[0] in self._ds.coords:
58-
arr = self._ds[i[0]].data
59-
i = i[1:]
60-
else:
61-
arr = self._ds.data
62-
if isinstance(arr, np.ndarray):
63-
return arr
64-
# dask array
65-
return arr.blocks[i].compute()
66-
67-
def to_dask(self):
68-
"""Return xarray object where variables are dask arrays"""
69-
return self.read_chunked()
20+
discover = read
7021

71-
def close(self):
72-
"""Delete open file from memory"""
73-
self._ds = None
74-
self._schema = None
22+
read_chunked = to_dask

intake_xarray/derived.py

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)