xcube-cci 0.11.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. xcube_cci-0.11.3/.github/workflows/publish_pypi.yml +35 -0
  2. xcube_cci-0.11.3/.gitignore +132 -0
  3. xcube_cci-0.11.3/CHANGES.md +181 -0
  4. xcube_cci-0.11.3/LICENSE +21 -0
  5. xcube_cci-0.11.3/MANIFEST.in +4 -0
  6. xcube_cci-0.11.3/PKG-INFO +135 -0
  7. xcube_cci-0.11.3/README.md +81 -0
  8. xcube_cci-0.11.3/appveyor.yml +62 -0
  9. xcube_cci-0.11.3/environment.yml +18 -0
  10. xcube_cci-0.11.3/examples/notebooks/Ex0-DCFS-Setup.ipynb +87 -0
  11. xcube_cci-0.11.3/examples/notebooks/Ex1a-DCFS-CCI_access.ipynb +2090 -0
  12. xcube_cci-0.11.3/examples/notebooks/Ex1b-DCFS-CCI_access.ipynb +1381 -0
  13. xcube_cci-0.11.3/pyproject.toml +63 -0
  14. xcube_cci-0.11.3/setup.cfg +4 -0
  15. xcube_cci-0.11.3/setup.py +53 -0
  16. xcube_cci-0.11.3/test/__init__.py +0 -0
  17. xcube_cci-0.11.3/test/open_all.py +260 -0
  18. xcube_cci-0.11.3/test/resources/ESACCI-OZONE-L3-NP-MERGED-KNMI-199701-fv0002.nc.das +137 -0
  19. xcube_cci-0.11.3/test/resources/test_req.json +27 -0
  20. xcube_cci-0.11.3/test/test_cciodp.py +561 -0
  21. xcube_cci-0.11.3/test/test_chunkstore.py +218 -0
  22. xcube_cci-0.11.3/test/test_dataaccess.py +949 -0
  23. xcube_cci-0.11.3/test/test_dataframeaccess.py +21 -0
  24. xcube_cci-0.11.3/test/test_kcaccess.py +121 -0
  25. xcube_cci-0.11.3/test/test_normalize.py +56 -0
  26. xcube_cci-0.11.3/test/test_plugin.py +40 -0
  27. xcube_cci-0.11.3/test/test_timeutil.py +32 -0
  28. xcube_cci-0.11.3/test/test_zarraccess.py +114 -0
  29. xcube_cci-0.11.3/xcube_cci/__init__.py +23 -0
  30. xcube_cci-0.11.3/xcube_cci/cciodp.py +2354 -0
  31. xcube_cci-0.11.3/xcube_cci/chunkstore.py +1061 -0
  32. xcube_cci-0.11.3/xcube_cci/constants.py +174 -0
  33. xcube_cci-0.11.3/xcube_cci/data/__init__.py +0 -0
  34. xcube_cci-0.11.3/xcube_cci/data/dataset_states.json +7661 -0
  35. xcube_cci-0.11.3/xcube_cci/data/excluded_data_sources +0 -0
  36. xcube_cci-0.11.3/xcube_cci/data/kc_refs.json +119377 -0
  37. xcube_cci-0.11.3/xcube_cci/data/stores.yml +39 -0
  38. xcube_cci-0.11.3/xcube_cci/data/zarr_to_dsrids +41 -0
  39. xcube_cci-0.11.3/xcube_cci/dataaccess.py +949 -0
  40. xcube_cci-0.11.3/xcube_cci/dataframeaccess.py +252 -0
  41. xcube_cci-0.11.3/xcube_cci/kcaccess.py +41 -0
  42. xcube_cci-0.11.3/xcube_cci/normalize.py +99 -0
  43. xcube_cci-0.11.3/xcube_cci/plugin.py +157 -0
  44. xcube_cci-0.11.3/xcube_cci/timerangegetter.py +187 -0
  45. xcube_cci-0.11.3/xcube_cci/timeutil.py +37 -0
  46. xcube_cci-0.11.3/xcube_cci/vdcaccess.py +149 -0
  47. xcube_cci-0.11.3/xcube_cci/version.py +22 -0
  48. xcube_cci-0.11.3/xcube_cci/zarraccess.py +98 -0
  49. xcube_cci-0.11.3/xcube_cci.egg-info/PKG-INFO +135 -0
  50. xcube_cci-0.11.3/xcube_cci.egg-info/SOURCES.txt +52 -0
  51. xcube_cci-0.11.3/xcube_cci.egg-info/dependency_links.txt +1 -0
  52. xcube_cci-0.11.3/xcube_cci.egg-info/entry_points.txt +2 -0
  53. xcube_cci-0.11.3/xcube_cci.egg-info/requires.txt +12 -0
  54. xcube_cci-0.11.3/xcube_cci.egg-info/top_level.txt +2 -0
@@ -0,0 +1,35 @@
1
+ # This workflows will upload a Python Package using Twine when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3
+
4
+ # This workflows uses actions that are not certified by GitHub.
5
+ # They are provided by a third-party and are governed by
6
+ # separate terms of service, privacy policy, and support
7
+ # documentation.
8
+
9
+ name: publish to PyPI
10
+
11
+ on:
12
+ release:
13
+ types: [published]
14
+
15
+ jobs:
16
+ deploy:
17
+ name: Publish to PyPI
18
+ runs-on: ubuntu-latest
19
+
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: '3.x'
26
+ - name: Install dependencies
27
+ run: |
28
+ python -m pip install --upgrade pip
29
+ pip install build
30
+ - name: Build package
31
+ run: python -m build
32
+ - name: Publish to PyPI
33
+ run: |
34
+ pip install twine
35
+ python -m twine upload --username __token__ --password ${{ secrets.PYPI_API_TOKEN }} dist/*
@@ -0,0 +1,132 @@
1
+ # IntelliJ / PyCharm
2
+ .idea
3
+
4
+ # Byte-compiled / optimized / DLL files
5
+ __pycache__/
6
+ *.py[cod]
7
+ *$py.class
8
+
9
+ # C extensions
10
+ *.so
11
+
12
+ # Distribution / packaging
13
+ .Python
14
+ build/
15
+ develop-eggs/
16
+ dist/
17
+ downloads/
18
+ eggs/
19
+ .eggs/
20
+ lib/
21
+ lib64/
22
+ parts/
23
+ sdist/
24
+ var/
25
+ wheels/
26
+ pip-wheel-metadata/
27
+ share/python-wheels/
28
+ *.egg-info/
29
+ .installed.cfg
30
+ *.egg
31
+ MANIFEST
32
+
33
+ # PyInstaller
34
+ # Usually these files are written by a python script from a template
35
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
36
+ *.manifest
37
+ *.spec
38
+
39
+ # Installer logs
40
+ pip-log.txt
41
+ pip-delete-this-directory.txt
42
+
43
+ # Unit test / coverage reports
44
+ htmlcov/
45
+ .tox/
46
+ .nox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ *.py,cover
54
+ .hypothesis/
55
+ .pytest_cache/
56
+
57
+ # Translations
58
+ *.mo
59
+ *.pot
60
+
61
+ # Django stuff:
62
+ *.log
63
+ local_settings.py
64
+ db.sqlite3
65
+ db.sqlite3-journal
66
+
67
+ # Flask stuff:
68
+ instance/
69
+ .webassets-cache
70
+
71
+ # Scrapy stuff:
72
+ .scrapy
73
+
74
+ # Sphinx documentation
75
+ docs/_build/
76
+
77
+ # PyBuilder
78
+ target/
79
+
80
+ # Jupyter Notebook
81
+ .ipynb_checkpoints
82
+
83
+ # IPython
84
+ profile_default/
85
+ ipython_config.py
86
+
87
+ # pyenv
88
+ .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
98
+ __pypackages__/
99
+
100
+ # Celery stuff
101
+ celerybeat-schedule
102
+ celerybeat.pid
103
+
104
+ # SageMath parsed files
105
+ *.sage.py
106
+
107
+ # Environments
108
+ .env
109
+ .venv
110
+ env/
111
+ venv/
112
+ ENV/
113
+ env.bak/
114
+ venv.bak/
115
+
116
+ # Spyder project settings
117
+ .spyderproject
118
+ .spyproject
119
+
120
+ # Rope project settings
121
+ .ropeproject
122
+
123
+ # mkdocs documentation
124
+ /site
125
+
126
+ # mypy
127
+ .mypy_cache/
128
+ .dmypy.json
129
+ dmypy.json
130
+
131
+ # Pyre type checker
132
+ .pyre/
@@ -0,0 +1,181 @@
1
+ ## Changes in 0.11.3
2
+ * Fixed retrieval of data sets with unsigned data types
3
+ (this affected SNOW datasets)
4
+ * Increased list of supported kerchunk datasets
5
+
6
+ ## Changes in 0.11.2
7
+ * Fixed retrieval of time steps of BIOMASS datasets
8
+
9
+ ## Changes in 0.11.1
10
+ * Improved support of vector data cubes
11
+ * Improved support of FIRE ECV datasets
12
+
13
+ ## Changes in 0.11
14
+
15
+ * Migrated code from `ESA CCI Toolbox`. This encompasses the following changes:
16
+ * Added store aliases `esa-cdc` and `esa-climate-data-centre`, `esa-cci`
17
+ and `esa-cci-zarr`
18
+ * Added new data store `esa-cci-kc`
19
+ (and corresponding xcube data store `esa-cci-kc`) that allows performant
20
+ accessing of selected datasets of the ESA Climate Data Centre using a
21
+ Zarr view of the original NetCDF files. This approach is made possible by
22
+ using the [kerchunk](https://fsspec.github.io/kerchunk/) package. Also
23
+ added new Notebook that demonstrates usage of the new data store.
24
+ * Added opener `"datafame:geojson:esa-cdc"` to open data as data frames
25
+ * Added opener `"vectordatacube::esa-cdc"` to open data as vector data cubes
26
+ * Updated list of dataset states
27
+ * Set up pipeline to publish package on pypi
28
+
29
+ ## Changes in 0.10.2
30
+
31
+ * Fixed support for climatology datasets
32
+
33
+ ## Changes in 0.10.1
34
+
35
+ * Fixed support for SST climatology dataset
36
+
37
+ ## Changes in 0.10
38
+
39
+ * Support Climatology Datasets
40
+ * Ensure compatiblity with Python versions > 3.10. This concerns the way
41
+ new event loops are created within threads. A deprecated event loop
42
+ policy has been removed.
43
+ Solves issues [#61](https://github.com/dcs4cop/xcube-cci/issues/61)
44
+ and [#64](https://github.com/dcs4cop/xcube-cci/issues/64)
45
+
46
+ ## Changes in 0.9.9
47
+
48
+ * Removed cache
49
+ * Pinned pydap version
50
+ * Improved determination of CCI data chunks
51
+
52
+ ## Changes in 0.9.8
53
+
54
+ * Consider environment parameter `READ_CEDA_CATALOGUE` to trigger whether
55
+ metadata from the ceda catalogue shall be read. Enabled by default.
56
+ * Updated list of supported datasets.
57
+ No odp-provided datasets are excluded anymore.
58
+
59
+ ## Changes in 0.9.7
60
+
61
+ * Zarr Datastore reads data ids from json file if provided
62
+ * Updated CCI Store to set zarr store (from here on, xcube 0.12.1 is required)
63
+ [#62](https://github.com/dcs4cop/xcube-cci/issues/62)
64
+
65
+ ## Changes in 0.9.6
66
+
67
+ * Updated Example Notebooks
68
+ * Extended support of datasets. Previously, datasets which had a chunking of
69
+ the time dimension larger than one were not handled properly. This affected
70
+ OZONE in a monthly resolution, SEALEVEL in a monthly resolution, and several
71
+ ICESHEETS datasets. [#12](https://github.com/dcs4cop/xcube-cci/issues/12)
72
+ * Chunk sizes may now also be decreased, in order to achieve optimal chunkings.
73
+ For some datasets (e.g., BIOMASS), this increases the performance and helps
74
+ avoiding memory issues. [#48](https://github.com/dcs4cop/xcube-cci/issues/48)
75
+
76
+ ## Changes in 0.9.5
77
+
78
+ * Allow reading of datasets that do not specify chunk sizes (e.g., FIRE)
79
+ [Cate #1033](https://github.com/CCI-Tools/cate/issues/1033).
80
+
81
+ ## Changes in 0.9.4
82
+
83
+ * Ensure compatibility with xarray >= 0.20.2 and python >= 3.10
84
+ * Ensure compatibility with expected odp update
85
+
86
+ ## Changes in 0.9.3
87
+
88
+ * Always show time bounds as coordinate, not as data variable
89
+ * Prevent IndexError when requesting data with a time range
90
+
91
+ ## Changes in 0.9.2
92
+
93
+ * Fixed issue where opening datasets in a daily resolution without a delimiting
94
+ time range would cause memory errors
95
+ [#56](https://github.com/dcs4cop/xcube-cci/issues/56).
96
+
97
+ ## Changes in 0.9.1
98
+ * Fixed issue that datasets with spatial bounds could not be opened.
99
+ * Show version as `__version__`
100
+ * The interface of the method `search_data` of the CciOdpDataStore
101
+ has been changed. Search parameters `ecv`, `frequency` `institute`,
102
+ `processing_level`, `product_string`, `product_version`, `data_type`,
103
+ `sensor`, and `platform` may now be passed in a dictionary parameter named
104
+ `cci_attrs`. This makes it possible again to use the parameter `data_type`
105
+ [#54](https://github.com/dcs4cop/xcube-cci/issues/54).
106
+
107
+ ## Changes in 0.9.0
108
+ * Version 0.9 now requires xcube 0.9 because of incompatible API changes in the
109
+ xcube data store framework.
110
+ * CciOdpCubeOpener has been removed.
111
+ * CciOdpDatasetOpener and CciOdpDataStore now have a new constructor parameter
112
+ `normalize`, that may be used to apply normalization steps to the CCI
113
+ datasets.
114
+ * Set coordinates correctly. All coordinates are present in data descriptions
115
+ and opened datasets, no coordinates appear as data variables
116
+ [#42](https://github.com/dcs4cop/xcube-cci/issues/42).
117
+ * CRS are supported correctly. CRS variables are present in datasets in case
118
+ the CRS is different from 'WGS84', the CRS information is provided by the
119
+ data descriptor [#50](https://github.com/dcs4cop/xcube-cci/issues/50).
120
+
121
+ ## Changes in 0.8.1
122
+
123
+ * Fixed an issue that caused that occasionally values returned by open_data consisted
124
+ of random numbers where a fill value would have been expected. (#47)
125
+ * DataDescriptors contain coords
126
+ * Internal virtual file system is built lazily, so opening datasets has become faster.
127
+ * Store parameter method `get_search_params_schema` has been revised to correctly support
128
+ all parameter values.
129
+ * Support more datasets from ODP.
130
+ * Fixed support of `user_agent` parameter
131
+ * Added CCI Zarr Store as convenience store to access cci zarr datasets
132
+
133
+ ## Changes in 0.8.0
134
+
135
+ * Added `user_agent` as additional optional store parameter.
136
+ * Provided xcube data store framework interface compatibility with
137
+ breaking changes in xcube 0.8.0 (see https://github.com/dcs4cop/xcube/issues/420).
138
+
139
+ ## Changes in 0.7.0
140
+ * Removed constant-valued parameters from opener schema
141
+ * Renamed store parameters `opensearch_url` and `opensearch_description_url` to
142
+ `endpoint_url` and `endpoint_description_url`, respectively.
143
+ * Chunkstore considers bounding box when accessing data. Less data is accessed and normalized. (#33)
144
+ * Fixed time range detection for datasets with daily time frequency.
145
+ * Fixed problem with the encoding of a dataset's coordinate variables that occurs
146
+ when using `xcube_cci` with xcube 0.6.0. (#27)
147
+ * Removed CLI
148
+
149
+ ## Changes in 0.6.0.
150
+ * Support type specifiers [#18](https://github.com/dcs4cop/xcube-cci/issues/18).
151
+ The CCI Store supports type specifiers `dataset` and `dataset[cube]`
152
+ * Descriptions of variables and dimensions are different for the same dataset,
153
+ depending on what type specifier is set.
154
+ * There are now two DataOpeners: The CciOdpDatasetOpener and the CciOdpCubeOpener.
155
+ Both openers are used by the CciOdpDataStore, with the CciOdpDatasetOpener being the default.
156
+ The CciOdpDatasetOpener will open any data sets from the CCI Open Data Portal without changing their dimensions.
157
+ The CciOdpCubeOpener will normalize datasets to have dimensions `lat`, `lon`, `time` (and possibly others).
158
+ Subsetting is only supported for data cubes.
159
+ As not all datasets can be normalized to cubes, the CciOdpCubeOpener supports a subset of the datasets that can be accessed with the CciOdpDatasetOpener.
160
+ * Establish common data store conventions ([#10](https://github.com/dcs4cop/xcube-cci/issues/10)
161
+ * xcube-cci can now get the time ranges for satellite-orbit-frequency datasets available via opensearch
162
+ * Introduced new optional parameters to CciStore:
163
+ - enable_warnings
164
+ - num_retries
165
+ - _retry_backoff_max
166
+ - _retry_backoff_base
167
+ * Updated setup.py [#16](https://github.com/dcs4cop/xcube-cci/issues/16)
168
+ * Added opener parameters `time_range` and `spatial_res`
169
+ * String-encoded variables are added to datasets as metadata
170
+ * Updated example notebooks
171
+
172
+ ## Changes in 0.5.0.
173
+
174
+ Initial version.
175
+ This version has been designed to work with the `xcube` store framework that has been introduced with
176
+ `xcube` v0.5.0.
177
+ It affords
178
+ - a CciOdpDataOpener Implementaton for opening datasets from the ESA CCI Open Data Portal.
179
+ The Opener has open parameters `variable_names`, `time_period`, `bbox`, and `crs`.
180
+ - a CciStore Implementation that uses and extends the aforementioned opener and allows for searching
181
+ the ESA CCI Open Data Portal
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 DCS4COP
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,4 @@
1
+ include xcube_cci/data/excluded_data_sources
2
+ include xcube_cci/data/dataset_states.json
3
+ include xcube_cci/data/stores.yml
4
+ include xcube_cci/data/kc_refs.json
@@ -0,0 +1,135 @@
1
+ Metadata-Version: 2.2
2
+ Name: xcube_cci
3
+ Version: 0.11.3
4
+ Summary: An xcube plugin that allows generating data cubes from the ESA CCI Open Data Portal.
5
+ Author: ESA CCI Toolbox Development Team
6
+ License: MIT License
7
+
8
+ Copyright (c) 2020 DCS4COP
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/esa-cci/xcube-cci
29
+ Project-URL: Bug Tracker, https://github.com/esa-cci/xcube-cci/issues
30
+ Project-URL: Changelog, https://github.com/esa-cci/xcube-cci/CHANGES.md
31
+ Project-URL: Download, https://pypi.org/project/xcube-cci/#files
32
+ Project-URL: Release notes, https://github.com/esa-cci/xcube-cci/releases
33
+ Keywords: data science,cci,climate data
34
+ Classifier: Programming Language :: Python
35
+ Classifier: Programming Language :: Python :: 3
36
+ Classifier: Programming Language :: Python :: 3.10
37
+ Classifier: Programming Language :: Python :: 3.11
38
+ Classifier: License :: OSI Approved :: MIT License
39
+ Classifier: Operating System :: OS Independent
40
+ Requires-Python: >=3.10
41
+ Description-Content-Type: text/markdown
42
+ License-File: LICENSE
43
+ Requires-Dist: aiohttp>=3.6
44
+ Requires-Dist: lxml>=4.5
45
+ Requires-Dist: nest-asyncio>=1.3
46
+ Requires-Dist: numpy>=2
47
+ Requires-Dist: pydap>=3.4
48
+ Requires-Dist: rioxarray
49
+ Requires-Dist: xcube-core>=1.4.0
50
+ Requires-Dist: xvec
51
+ Provides-Extra: dev
52
+ Requires-Dist: pytest; extra == "dev"
53
+ Requires-Dist: pytest-cov; extra == "dev"
54
+
55
+ [![Build Status](https://ci.appveyor.com/api/projects/status/7kum33o5g1osqg9l?svg=true)](https://ci.appveyor.com/project/bcdev/xcube-cci)
56
+
57
+ # xcube-cci
58
+
59
+ An [xcube plugin](https://xcube.readthedocs.io/en/latest/plugins.html) that allows
60
+ generating data cubes from the ESA CCI Open Data Portal.
61
+
62
+ ### Installing the xcube-cci plugin
63
+
64
+ #### Installation into a new environment with conda
65
+
66
+ xcube-cci and all necessary dependencies (including xcube itself) are available
67
+ on [conda-forge](https://conda-forge.org/), and can be installed using the
68
+ [conda package manager](https://docs.conda.io/projects/conda/en/latest/).
69
+ The conda package manager itself can be obtained in the [miniconda
70
+ distribution](https://docs.conda.io/en/latest/miniconda.html).
71
+ Once conda is installed, xcube-cci can be installed like this:
72
+
73
+ ```
74
+ $ conda create --name xcube-cci-environment --channel conda-forge xcube-cci
75
+ $ conda activate xcube-cci-environment
76
+ ```
77
+
78
+ The name of the environment may be freely chosen.
79
+
80
+ #### Installation into an existing environment with conda
81
+
82
+ xcube-cci can also be installed into an existing conda environment.
83
+ With an existing conda environment activated, execute this command:
84
+
85
+ ```
86
+ $ conda install --channel conda-forge xcube-cci
87
+ ```
88
+
89
+ xcube and any other necessary dependencies will be installed or updated if they are not
90
+ already installed in a compatible version.
91
+
92
+ #### Installation into an existing environment from the repository
93
+
94
+ If you want to install xcube-cci directly from the git repository (for example
95
+ in order to use an unreleased version or to modify the code), you can do so as follows:
96
+
97
+ ```
98
+ $ git clone https://github.com/esa-cci/xcube-cci.git
99
+ $ cd xcube-cci
100
+ $ conda env create
101
+ $ conda activate xcube-cci
102
+ $ pip install --no-deps -e .
103
+ ```
104
+
105
+ ## Testing
106
+
107
+ You can run the unit tests for xcube-cci by executing
108
+
109
+ ```
110
+ $ pytest
111
+ ```
112
+
113
+ in the `xcube-cci` repository. Note that, in order to successfully run the
114
+ tests using the current repository version of xcube-cci, you may also need to
115
+ install the repository version of xcube rather than its latest conda-forge
116
+ release.
117
+
118
+ To create a test coverage report, you can use
119
+
120
+ ```
121
+ coverage run --include='xcube_cci/**' --module pytest
122
+ coverage html
123
+ ```
124
+
125
+ This will write a coverage report to `htmlcov/index.html`.
126
+
127
+ ## Use
128
+
129
+ Jupyter notebooks demonstrating the use of the xcube-cds plugin can be found
130
+ in the `examples/notebooks/` subdirectory of the repository.
131
+
132
+ ## Releasing
133
+
134
+ To release `xcube-cci`, please follow the steps outlined in the
135
+ [xcube Developer Guide](https://github.com/dcs4cop/xcube/blob/master/docs/source/devguide.md#release-process).
@@ -0,0 +1,81 @@
1
+ [![Build Status](https://ci.appveyor.com/api/projects/status/7kum33o5g1osqg9l?svg=true)](https://ci.appveyor.com/project/bcdev/xcube-cci)
2
+
3
+ # xcube-cci
4
+
5
+ An [xcube plugin](https://xcube.readthedocs.io/en/latest/plugins.html) that allows
6
+ generating data cubes from the ESA CCI Open Data Portal.
7
+
8
+ ### Installing the xcube-cci plugin
9
+
10
+ #### Installation into a new environment with conda
11
+
12
+ xcube-cci and all necessary dependencies (including xcube itself) are available
13
+ on [conda-forge](https://conda-forge.org/), and can be installed using the
14
+ [conda package manager](https://docs.conda.io/projects/conda/en/latest/).
15
+ The conda package manager itself can be obtained in the [miniconda
16
+ distribution](https://docs.conda.io/en/latest/miniconda.html).
17
+ Once conda is installed, xcube-cci can be installed like this:
18
+
19
+ ```
20
+ $ conda create --name xcube-cci-environment --channel conda-forge xcube-cci
21
+ $ conda activate xcube-cci-environment
22
+ ```
23
+
24
+ The name of the environment may be freely chosen.
25
+
26
+ #### Installation into an existing environment with conda
27
+
28
+ xcube-cci can also be installed into an existing conda environment.
29
+ With an existing conda environment activated, execute this command:
30
+
31
+ ```
32
+ $ conda install --channel conda-forge xcube-cci
33
+ ```
34
+
35
+ xcube and any other necessary dependencies will be installed or updated if they are not
36
+ already installed in a compatible version.
37
+
38
+ #### Installation into an existing environment from the repository
39
+
40
+ If you want to install xcube-cci directly from the git repository (for example
41
+ in order to use an unreleased version or to modify the code), you can do so as follows:
42
+
43
+ ```
44
+ $ git clone https://github.com/esa-cci/xcube-cci.git
45
+ $ cd xcube-cci
46
+ $ conda env create
47
+ $ conda activate xcube-cci
48
+ $ pip install --no-deps -e .
49
+ ```
50
+
51
+ ## Testing
52
+
53
+ You can run the unit tests for xcube-cci by executing
54
+
55
+ ```
56
+ $ pytest
57
+ ```
58
+
59
+ in the `xcube-cci` repository. Note that, in order to successfully run the
60
+ tests using the current repository version of xcube-cci, you may also need to
61
+ install the repository version of xcube rather than its latest conda-forge
62
+ release.
63
+
64
+ To create a test coverage report, you can use
65
+
66
+ ```
67
+ coverage run --include='xcube_cci/**' --module pytest
68
+ coverage html
69
+ ```
70
+
71
+ This will write a coverage report to `htmlcov/index.html`.
72
+
73
+ ## Use
74
+
75
+ Jupyter notebooks demonstrating the use of the xcube-cds plugin can be found
76
+ in the `examples/notebooks/` subdirectory of the repository.
77
+
78
+ ## Releasing
79
+
80
+ To release `xcube-cci`, please follow the steps outlined in the
81
+ [xcube Developer Guide](https://github.com/dcs4cop/xcube/blob/master/docs/source/devguide.md#release-process).
@@ -0,0 +1,62 @@
1
+ version: '{build}'
2
+
3
+ image:
4
+ - Ubuntu2204
5
+ - macOS
6
+
7
+ configuration: Release
8
+
9
+ platform:
10
+ - x64
11
+
12
+ # Do not build feature branch with open Pull Requests.
13
+ # Note that a feature branch build may still occur on the first push to
14
+ # the branch -- see
15
+ # https://help.appveyor.com/discussions/questions/18437-skip_branch_with_pr-setting-doesnt-work
16
+ skip_branch_with_pr: true
17
+
18
+ for:
19
+ -
20
+ matrix:
21
+ only:
22
+ - image: macOS
23
+ install:
24
+ - curl -Ls https://micro.mamba.pm/api/micromamba/osx-64/latest | tar -xvj bin/micromamba
25
+ - mv bin/micromamba ./micromamba
26
+ -
27
+ matrix:
28
+ only:
29
+ - image: Ubuntu2204
30
+ install:
31
+ - curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba
32
+ - mv bin/micromamba ./micromamba
33
+
34
+ build_script:
35
+ # Diagnostics
36
+ - echo $PLATFORM
37
+ - echo $APPVEYOR_BUILD_WORKER_IMAGE
38
+ - echo $APPVEYOR_BUILD_FOLDER
39
+ - uname -a
40
+ - pwd
41
+ - ls
42
+
43
+ # Set up micromamba
44
+ - ./micromamba shell init -s bash --root-prefix ~/micromamba
45
+ - source ~/.bashrc
46
+ - source ~/.profile
47
+ - hash -r
48
+ - mkdir -p ~/micromamba/pkgs/
49
+ - export MAMBA_ROOT_PREFIX=~/micromamba
50
+ - export MAMBA_EXE=$(pwd)/micromamba
51
+ - . $MAMBA_ROOT_PREFIX/etc/profile.d/mamba.sh
52
+
53
+ - micromamba create --name xcube-cci --file $APPVEYOR_BUILD_FOLDER/environment.yml
54
+ - micromamba activate xcube-cci
55
+ - cd $APPVEYOR_BUILD_FOLDER
56
+ - pip install --no-deps .
57
+
58
+ - git status
59
+ - micromamba list
60
+
61
+ # Run the test suite
62
+ - pytest -v --cov=xcube_cci
@@ -0,0 +1,18 @@
1
+ name: xcube-cci
2
+ channels:
3
+ - conda-forge
4
+ dependencies:
5
+ # Python
6
+ - python >=3.10
7
+ # Required
8
+ - xcube >= 1.4.0
9
+ - aiohttp >= 3.6
10
+ - lxml >= 4.5
11
+ - nest-asyncio >= 1.3
12
+ - numpy >= 2.0
13
+ - pydap >= 3.4
14
+ - rioxarray
15
+ - xvec
16
+ # Test libs
17
+ - pytest
18
+ - pytest-cov