climdata 0.0.3__tar.gz → 0.0.5__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.

Potentially problematic release.


This version of climdata might be problematic. Click here for more details.

Files changed (59) hide show
  1. {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/docs.yml +1 -1
  2. climdata-0.0.5/.github/workflows/pypi.yml +43 -0
  3. {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/ubuntu.yml +0 -1
  4. {climdata-0.0.3 → climdata-0.0.5}/PKG-INFO +7 -1
  5. {climdata-0.0.3 → climdata-0.0.5}/climdata/__init__.py +1 -1
  6. {climdata-0.0.3 → climdata-0.0.5}/climdata/utils/utils_download.py +0 -1
  7. {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/PKG-INFO +7 -1
  8. {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/SOURCES.txt +0 -2
  9. {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/requires.txt +6 -0
  10. climdata-0.0.5/docs/climdata.md +4 -0
  11. climdata-0.0.5/docs/common.md +41 -0
  12. climdata-0.0.5/docs/index.md +193 -0
  13. {climdata-0.0.3 → climdata-0.0.5}/examples/extract_dwd_loc.ipynb +1 -54
  14. {climdata-0.0.3 → climdata-0.0.5}/mkdocs.yml +17 -21
  15. {climdata-0.0.3 → climdata-0.0.5}/pyproject.toml +2 -2
  16. {climdata-0.0.3 → climdata-0.0.5}/requirements.txt +6 -0
  17. climdata-0.0.5/tests/test_climdata.py +9 -0
  18. climdata-0.0.3/.github/workflows/pypi.yml +0 -34
  19. climdata-0.0.3/climdata/requirements.txt +0 -20
  20. climdata-0.0.3/docs/climdata.md +0 -4
  21. climdata-0.0.3/docs/common.md +0 -3
  22. climdata-0.0.3/docs/examples/run_downloader.ipynb +0 -1244
  23. climdata-0.0.3/docs/index.md +0 -16
  24. climdata-0.0.3/tests/test_climdata.py +0 -21
  25. {climdata-0.0.3 → climdata-0.0.5}/.editorconfig +0 -0
  26. {climdata-0.0.3 → climdata-0.0.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  27. {climdata-0.0.3 → climdata-0.0.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  28. {climdata-0.0.3 → climdata-0.0.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  29. {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/docs-build.yml +0 -0
  30. {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/installation.yml +0 -0
  31. {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/macos.yml +0 -0
  32. {climdata-0.0.3 → climdata-0.0.5}/.github/workflows/windows.yml +0 -0
  33. {climdata-0.0.3 → climdata-0.0.5}/.gitignore +0 -0
  34. {climdata-0.0.3 → climdata-0.0.5}/LICENSE +0 -0
  35. {climdata-0.0.3 → climdata-0.0.5}/MANIFEST.in +0 -0
  36. {climdata-0.0.3 → climdata-0.0.5}/README.md +0 -0
  37. {climdata-0.0.3 → climdata-0.0.5}/climdata/__main__.py +0 -0
  38. {climdata-0.0.3 → climdata-0.0.5}/climdata/conf/config.yaml +0 -0
  39. {climdata-0.0.3 → climdata-0.0.5}/climdata/conf/mappings/parameters.yaml +0 -0
  40. {climdata-0.0.3 → climdata-0.0.5}/climdata/conf/mappings/variables.yaml +0 -0
  41. {climdata-0.0.3 → climdata-0.0.5}/climdata/datasets/CMIP.py +0 -0
  42. {climdata-0.0.3 → climdata-0.0.5}/climdata/datasets/DWD.py +0 -0
  43. {climdata-0.0.3 → climdata-0.0.5}/climdata/datasets/MSWX.py +0 -0
  44. {climdata-0.0.3 → climdata-0.0.5}/climdata/main.py +0 -0
  45. {climdata-0.0.3 → climdata-0.0.5}/climdata/utils/__init__.py +0 -0
  46. {climdata-0.0.3 → climdata-0.0.5}/climdata/utils/config.py +0 -0
  47. {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/dependency_links.txt +0 -0
  48. {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/entry_points.txt +0 -0
  49. {climdata-0.0.3 → climdata-0.0.5}/climdata.egg-info/top_level.txt +0 -0
  50. {climdata-0.0.3 → climdata-0.0.5}/docs/changelog.md +0 -0
  51. {climdata-0.0.3 → climdata-0.0.5}/docs/contributing.md +0 -0
  52. {climdata-0.0.3 → climdata-0.0.5}/docs/faq.md +0 -0
  53. {climdata-0.0.3 → climdata-0.0.5}/docs/installation.md +0 -0
  54. {climdata-0.0.3 → climdata-0.0.5}/docs/overrides/main.html +0 -0
  55. {climdata-0.0.3 → climdata-0.0.5}/docs/usage.md +0 -0
  56. {climdata-0.0.3 → climdata-0.0.5}/dwd_tas_LAT52.507_LON14.1372_1989-01-01_2020-12-31.csv +0 -0
  57. {climdata-0.0.3 → climdata-0.0.5}/requirements_dev.txt +0 -0
  58. {climdata-0.0.3 → climdata-0.0.5}/setup.cfg +0 -0
  59. {climdata-0.0.3 → climdata-0.0.5}/tests/__init__.py +0 -0
@@ -23,7 +23,7 @@ jobs:
23
23
  pip install .
24
24
  - name: Discover typos with codespell
25
25
  run: |
26
- codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff,./.git" --ignore-words-list="aci,hist"
26
+ codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff,./.git" --ignore-words-list="aci,hist" || true
27
27
  - name: PKG-TEST
28
28
  run: |
29
29
  python -m unittest discover tests/
@@ -0,0 +1,43 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*" # Trigger when pushing tags like v0.1.0
7
+
8
+ jobs:
9
+ release:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ # 1️⃣ Checkout code
14
+ - uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ # 2️⃣ Set up Python
19
+ - name: Set up Python
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: "3.11"
23
+
24
+ # 3️⃣ Upgrade pip and install build/test dependencies
25
+ - name: Install dependencies
26
+ run: |
27
+ python -m pip install --upgrade pip
28
+ pip install -r requirements.txt
29
+ pip install build twine wheel setuptools
30
+
31
+ # 4️⃣ Run unit tests
32
+ - name: Run tests
33
+ run: |
34
+ python -m unittest discover tests/
35
+
36
+ # 5️⃣ Build the package
37
+ - name: Build package
38
+ run: python -m build
39
+
40
+ # 6️⃣ Publish to PyPI
41
+ - name: Publish to PyPI
42
+ run: |
43
+ python -m twine upload dist/* -u __token__ -p ${{ secrets.PYPI_API_TOKEN }} --verbose
@@ -17,7 +17,6 @@ jobs:
17
17
  fail-fast: false
18
18
  matrix:
19
19
  config:
20
- - { os: ubuntu-latest, py: "3.9" }
21
20
  - { os: ubuntu-latest, py: "3.10" }
22
21
  - { os: ubuntu-latest, py: "3.11" }
23
22
  - { os: ubuntu-latest, py: "3.12" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: climdata
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
4
  Summary: This project automates the fetching and extraction of weather data from multiple sources — such as MSWX, DWD HYRAS, ERA5-Land, NASA-NEX-GDDP, and more — for a given location and time range.
5
5
  Author-email: Kaushik Muduchuru <kaushik.reddy.m@gmail.com>
6
6
  License: MIT License
@@ -35,6 +35,8 @@ Requires-Dist: pymannkendall
35
35
  Requires-Dist: tqdm
36
36
  Requires-Dist: zarr
37
37
  Requires-Dist: ipyleaflet
38
+ Requires-Dist: wetterdienst
39
+ Requires-Dist: pint-pandas
38
40
  Requires-Dist: hydra-core
39
41
  Requires-Dist: intake
40
42
  Requires-Dist: intake-esm
@@ -54,6 +56,10 @@ Requires-Dist: scikit-learn
54
56
  Requires-Dist: xgboost
55
57
  Requires-Dist: optuna
56
58
  Requires-Dist: gitpython
59
+ Requires-Dist: beautifulsoup4
60
+ Requires-Dist: google-auth
61
+ Requires-Dist: google-api-python-client
62
+ Requires-Dist: ipdb
57
63
  Provides-Extra: all
58
64
  Requires-Dist: pandas; extra == "all"
59
65
  Provides-Extra: extra
@@ -2,7 +2,7 @@
2
2
 
3
3
  __author__ = """Kaushik Muduchuru"""
4
4
  __email__ = "kaushik.reddy.m@gmail.com"
5
- __version__ = "0.0.3"
5
+ __version__ = "0.0.5"
6
6
 
7
7
  from .utils.utils_download import * # etc.
8
8
  from .utils.config import load_config
@@ -4,7 +4,6 @@ from wetterdienst import Settings
4
4
  from wetterdienst.provider.dwd.observation import DwdObservationRequest
5
5
  import geemap
6
6
  import ee
7
- import ipdb
8
7
  import geopandas as gpd
9
8
  from omegaconf import DictConfig
10
9
  import os
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: climdata
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
4
  Summary: This project automates the fetching and extraction of weather data from multiple sources — such as MSWX, DWD HYRAS, ERA5-Land, NASA-NEX-GDDP, and more — for a given location and time range.
5
5
  Author-email: Kaushik Muduchuru <kaushik.reddy.m@gmail.com>
6
6
  License: MIT License
@@ -35,6 +35,8 @@ Requires-Dist: pymannkendall
35
35
  Requires-Dist: tqdm
36
36
  Requires-Dist: zarr
37
37
  Requires-Dist: ipyleaflet
38
+ Requires-Dist: wetterdienst
39
+ Requires-Dist: pint-pandas
38
40
  Requires-Dist: hydra-core
39
41
  Requires-Dist: intake
40
42
  Requires-Dist: intake-esm
@@ -54,6 +56,10 @@ Requires-Dist: scikit-learn
54
56
  Requires-Dist: xgboost
55
57
  Requires-Dist: optuna
56
58
  Requires-Dist: gitpython
59
+ Requires-Dist: beautifulsoup4
60
+ Requires-Dist: google-auth
61
+ Requires-Dist: google-api-python-client
62
+ Requires-Dist: ipdb
57
63
  Provides-Extra: all
58
64
  Requires-Dist: pandas; extra == "all"
59
65
  Provides-Extra: extra
@@ -21,7 +21,6 @@ requirements_dev.txt
21
21
  climdata/__init__.py
22
22
  climdata/__main__.py
23
23
  climdata/main.py
24
- climdata/requirements.txt
25
24
  climdata.egg-info/PKG-INFO
26
25
  climdata.egg-info/SOURCES.txt
27
26
  climdata.egg-info/dependency_links.txt
@@ -45,7 +44,6 @@ docs/faq.md
45
44
  docs/index.md
46
45
  docs/installation.md
47
46
  docs/usage.md
48
- docs/examples/run_downloader.ipynb
49
47
  docs/overrides/main.html
50
48
  examples/extract_dwd_loc.ipynb
51
49
  tests/__init__.py
@@ -16,6 +16,8 @@ pymannkendall
16
16
  tqdm
17
17
  zarr
18
18
  ipyleaflet
19
+ wetterdienst
20
+ pint-pandas
19
21
  hydra-core
20
22
  intake
21
23
  intake-esm
@@ -35,6 +37,10 @@ scikit-learn
35
37
  xgboost
36
38
  optuna
37
39
  gitpython
40
+ beautifulsoup4
41
+ google-auth
42
+ google-api-python-client
43
+ ipdb
38
44
 
39
45
  [all]
40
46
  pandas
@@ -0,0 +1,4 @@
1
+
2
+ # climdata module
3
+
4
+ ::: climdata
@@ -0,0 +1,41 @@
1
+ # Common Concepts in climdata
2
+
3
+ This page describes common terminology, configuration patterns, and reusable components in the `climdata` package.
4
+
5
+ ## Configuration Files
6
+
7
+ - All configuration is managed via Hydra and YAML files in the `conf/` directory.
8
+ - See [`config.yaml`](../climdata/conf/config.yaml) for the main entry point.
9
+
10
+ ## Standard Variable Names
11
+
12
+ - Variables follow CF conventions (see [`variables.yaml`](../climdata/conf/mappings/variables.yaml)).
13
+ - Example: `tas` for air temperature, `pr` for precipitation.
14
+
15
+ ## Output Schema
16
+
17
+ All outputs are standardized to the following columns:
18
+
19
+ | Column | Description |
20
+ |-------------|----------------------------------|
21
+ | latitude | Latitude of observation/grid |
22
+ | longitude | Longitude of observation/grid |
23
+ | time | Timestamp |
24
+ | source | Data source/provider |
25
+ | variable | Variable name |
26
+ | value | Observed or modeled value |
27
+ | units | Units of measurement |
28
+
29
+ ## Regions and Bounds
30
+
31
+ - Regions are defined in `config.yaml` under `bounds`.
32
+ - Example: `europe`, `global`.
33
+
34
+ ## Usage Patterns
35
+
36
+ - Use `climdata.load_config()` to load configuration.
37
+ - Use `climdata.DWD(cfg)` or `climdata.MSWX(cfg)` for dataset access.
38
+
39
+ ---
40
+
41
+ Add more shared concepts as your documentation grows.
@@ -0,0 +1,193 @@
1
+ # Welcome to climdata
2
+
3
+
4
+
5
+ [![image](https://img.shields.io/pypi/v/climdata.svg)](https://pypi.python.org/pypi/climdata)
6
+ [![image](https://img.shields.io/conda/vn/conda-forge/climdata.svg)](https://anaconda.org/conda-forge/climdata)
7
+
8
+
9
+ **This project automates the fetching and extraction of weather data from multiple sources — such as MSWX, DWD HYRAS, ERA5-Land, NASA-NEX-GDDP, and more — for a given location and time range.**
10
+
11
+
12
+ - Free software: MIT License
13
+ - Documentation: https://Kaushikreddym.github.io/climdata
14
+
15
+
16
+ ## 📦 Data Sources
17
+
18
+ This project utilizes climate and weather datasets from a variety of data sources:
19
+
20
+ - **DWD Station Data**
21
+ Retrieved using the [DWD API](https://wetterdienst.readthedocs.io/en/latest/index.html). Provides high-resolution observational data from Germany's national meteorological service.
22
+
23
+ - **MSWX (Multi-Source Weather)**
24
+ Accessed via [GloH2O's Google Drive](https://www.gloh2o.org/mswx/). Combines multiple satellite and reanalysis datasets for global gridded weather variables.
25
+
26
+ - **DWD HYRAS**
27
+ Downloaded from the [DWD Open Data FTP Server](https://opendata.dwd.de/). Offers gridded observational data for Central Europe, useful for hydrological applications.
28
+
29
+ - **ERA5, ERA5-Land**
30
+ Accessed through the [Google Earth Engine](https://developers.google.com/earth-engine/datasets/catalog). Provides reanalysis datasets from ECMWF with high temporal and spatial resolution.
31
+
32
+ - **NASA NEX-GDDP**
33
+ Also retrieved via Earth Engine. Downscaled CMIP5/CMIP6 climate projections developed by NASA for local-scale impact assessment.
34
+
35
+ - **CMIP6**
36
+ Obtained using [ESGPull](https://esgf.github.io/esgf-download/) from the ESGF data nodes. Includes multi-model climate simulations following various future scenarios.
37
+
38
+ It supports:
39
+ ✅ Automatic file download (e.g., from Google Drive or online servers)
40
+ ✅ Flexible configuration via `config.yaml`
41
+ ✅ Time series extraction for a user-specified latitude/longitude
42
+ ✅ Batch processing for many locations from a CSV file
43
+
44
+
45
+ ## 🚀 How to Run and Explore Configurations
46
+
47
+ ### ✅ Run a download job with custom overrides
48
+
49
+ You can run the data download script and override any configuration value directly in the command line using [Hydra](https://hydra.cc/).
50
+
51
+ For example, to download **ERA5-Land** data for **January 1–4, 2020**, run:
52
+
53
+ ```bash
54
+ python download_location.py dataset='era5-land' \
55
+ time_range.start_date='2020-01-01' \
56
+ time_range.end_date='2020-01-04' \
57
+ location.lat=52.5200 \
58
+ location.lon=13.4050
59
+ ```
60
+
61
+ For downloading multiple locations from a csv file `locations.csv`, run:
62
+
63
+ ```bash
64
+ python download_csv.py dataset='era5-land' \
65
+ time_range.start_date='2020-01-01' \
66
+ time_range.end_date='2020-01-04' \
67
+ ```
68
+
69
+ an example `locations.csv` can be
70
+
71
+ ```csv
72
+ lat,lon,city
73
+ 52.5200,13.4050,berlin
74
+ 48.1351,11.5820,munich
75
+ 53.5511,9.9937,hamburg
76
+ ```
77
+
78
+ **What this does:**
79
+
80
+ - `dataset='era5-land'` tells the script which dataset to use.
81
+ - `time_range.start_date` and `time_range.end_date` override the default dates in your YAML config.
82
+ - All other settings use your existing `config.yaml` in the `conf` folder.
83
+
84
+ ---
85
+
86
+ ### ✅ List all available datasets defined in your configuration
87
+
88
+ To see what datasets are available (without running the downloader), you can dump the **resolved configuration** and filter it using [`yq`](https://github.com/mikefarah/yq).
89
+
90
+ Run:
91
+
92
+ ```bash
93
+ python download_location.py --cfg job | yq '.mappings | keys'
94
+ ```
95
+
96
+ **What this does:**
97
+
98
+ - `--cfg job` tells Hydra to output the final resolved configuration and exit.
99
+ - `| yq '.mappings | keys'` filters the output to show only the dataset names defined under the `mappings` section.
100
+
101
+ ---
102
+
103
+ ### ⚡️ Tip
104
+
105
+ - Make sure `yq` is installed:
106
+ ```bash
107
+ brew install yq # macOS
108
+ # OR
109
+ pip install yq
110
+ ```
111
+
112
+ - To see available variables for a specific dataset (for example `mswx`), run:
113
+ ```bash
114
+ python download_location.py --cfg job | yq '.mappings.mswx.variables | keys'
115
+ ```
116
+
117
+ ---
118
+
119
+ ---
120
+
121
+ ## ⚙️ **Key Features**
122
+
123
+ - **Supports multiple weather data providers**
124
+ - **Uses `xarray` for robust gridded data extraction**
125
+ - **Handles curvilinear and rectilinear grids**
126
+ - **Uses a Google Drive Service Account for secure downloads**
127
+ - **Easily reproducible runs using Hydra**
128
+
129
+ ---
130
+ ## 📡 Google Drive API Setup
131
+
132
+ This project uses the **Google Drive API** with a **Service Account** to securely download weather data files from a shared Google Drive folder.
133
+
134
+ Follow these steps to set it up correctly:
135
+
136
+ ---
137
+
138
+ ### ✅ 1. Create a Google Cloud Project
139
+
140
+ - Go to [Google Cloud Console](https://console.cloud.google.com/).
141
+ - Click **“Select Project”** → **“New Project”**.
142
+ - Enter a project name (e.g. `WeatherDataDownloader`).
143
+ - Click **“Create”**.
144
+
145
+ ---
146
+
147
+ ### ✅ 2. Enable the Google Drive API
148
+
149
+ - In the left sidebar, go to **APIs & Services → Library**.
150
+ - Search for **“Google Drive API”**.
151
+ - Click it, then click **“Enable”**.
152
+
153
+ ---
154
+
155
+ ### ✅ 3. Create a Service Account
156
+
157
+ - Go to **IAM & Admin → Service Accounts**.
158
+ - Click **“Create Service Account”**.
159
+ - Enter a name (e.g. `weather-downloader-sa`).
160
+ - Click **“Create and Continue”**. You can skip assigning roles for read-only Drive access.
161
+ - Click **“Done”** to finish.
162
+
163
+ ---
164
+
165
+ ### ✅ 4. Create and Download a JSON Key
166
+
167
+ - After creating the Service Account, click on its email address to open its details.
168
+ - Go to the **“Keys”** tab.
169
+ - Click **“Add Key” → “Create new key”** → choose **`JSON`** → click **“Create”**.
170
+ - A `.json` key file will download automatically. **Store it securely!**
171
+
172
+ ### ✅ 5. Store the JSON Key Securely
173
+
174
+ - Place the downloaded `.json` key in the conf folder with the name service.json.
175
+
176
+
177
+ ## Setup Instructions fro ERA5 api
178
+
179
+ ### 1. CDS API Key Setup
180
+
181
+ 1. Create a free account on the
182
+ [Copernicus Climate Data Store](https://cds.climate.copernicus.eu/user/register)
183
+ 2. Once logged in, go to your [user profile](https://cds.climate.copernicus.eu/user)
184
+ 3. Click on the "Show API key" button
185
+ 4. Create the file `~/.cdsapirc` with the following content:
186
+
187
+ ```bash
188
+ url: https://cds.climate.copernicus.eu/api/v2
189
+ key: <your-api-key-here>
190
+ ```
191
+
192
+ 5. Make sure the file has the correct permissions: `chmod 600 ~/.cdsapirc`
193
+
@@ -64,59 +64,6 @@
64
64
  " ])"
65
65
  ]
66
66
  },
67
- {
68
- "cell_type": "code",
69
- "execution_count": null,
70
- "id": "e90e98ba",
71
- "metadata": {},
72
- "outputs": [
73
- {
74
- "data": {
75
- "text/html": [
76
- "\n",
77
- " <style>\n",
78
- " .geemap-dark {\n",
79
- " --jp-widgets-color: white;\n",
80
- " --jp-widgets-label-color: white;\n",
81
- " --jp-ui-font-color1: white;\n",
82
- " --jp-layout-color2: #454545;\n",
83
- " background-color: #383838;\n",
84
- " }\n",
85
- "\n",
86
- " .geemap-dark .jupyter-button {\n",
87
- " --jp-layout-color3: #383838;\n",
88
- " }\n",
89
- "\n",
90
- " .geemap-colab {\n",
91
- " background-color: var(--colab-primary-surface-color, white);\n",
92
- " }\n",
93
- "\n",
94
- " .geemap-colab .jupyter-button {\n",
95
- " --jp-layout-color3: var(--colab-primary-surface-color, white);\n",
96
- " }\n",
97
- " </style>\n",
98
- " "
99
- ],
100
- "text/plain": [
101
- "<IPython.core.display.HTML object>"
102
- ]
103
- },
104
- "metadata": {},
105
- "output_type": "display_data"
106
- },
107
- {
108
- "data": {
109
- "text/plain": [
110
- "'degC'"
111
- ]
112
- },
113
- "execution_count": 9,
114
- "metadata": {},
115
- "output_type": "execute_result"
116
- }
117
- ],
118
- "source": []
119
- },
120
67
  {
121
68
  "cell_type": "code",
122
69
  "execution_count": 10,
@@ -1130,7 +1077,7 @@
1130
1077
  "kernelspec": {
1131
1078
  "display_name": "sdba",
1132
1079
  "language": "python",
1133
- "name": "sdba"
1080
+ "name": "python3"
1134
1081
  },
1135
1082
  "language_info": {
1136
1083
  "codemirror_mode": {
@@ -9,8 +9,6 @@ copyright: "Copyright &copy; 2024 - 2024 Kaushik Muduchuru"
9
9
  theme:
10
10
  palette:
11
11
  - scheme: default
12
- # primary: blue
13
- # accent: indigo
14
12
  toggle:
15
13
  icon: material/toggle-switch-off-outline
16
14
  name: Switch to dark mode
@@ -23,31 +21,32 @@ theme:
23
21
  name: material
24
22
  icon:
25
23
  repo: fontawesome/brands/github
26
- # logo: assets/logo.png
27
- # favicon: assets/favicon.png
24
+ custom_dir: "docs/overrides"
25
+ font:
26
+ text: Google Sans
27
+ code: Regular
28
28
  features:
29
29
  - navigation.instant
30
30
  - navigation.tracking
31
31
  - navigation.top
32
32
  - search.highlight
33
33
  - search.share
34
- custom_dir: "docs/overrides"
35
- font:
36
- text: Google Sans
37
- code: Regular
38
34
 
39
35
  plugins:
40
36
  - search
41
- - mkdocstrings
37
+ - mkdocstrings:
38
+ handlers:
39
+ python:
40
+ options:
41
+ show_root_heading: true
42
42
  - git-revision-date
43
43
  - git-revision-date-localized:
44
44
  enable_creation_date: true
45
45
  type: timeago
46
- # - pdf-export
47
46
  - mkdocs-jupyter:
48
- include_source: True
49
- ignore_h1_titles: True
50
- execute: True
47
+ include_source: true
48
+ ignore_h1_titles: true
49
+ execute: false
51
50
  allow_errors: false
52
51
  ignore: ["conf.py"]
53
52
  execute_ignore: ["*ignore.ipynb"]
@@ -66,11 +65,6 @@ markdown_extensions:
66
65
  - toc:
67
66
  permalink: true
68
67
 
69
- # extra:
70
- # analytics:
71
- # provider: google
72
- # property: UA-XXXXXXXXX-X
73
-
74
68
  nav:
75
69
  - Home: index.md
76
70
  - Installation: installation.md
@@ -80,7 +74,9 @@ nav:
80
74
  - Changelog: changelog.md
81
75
  - Report Issues: https://github.com/Kaushikreddym/climdata/issues
82
76
  - Examples:
83
- - examples/intro.ipynb
77
+ - Intro Notebook: examples/intro.ipynb
78
+ - Downloader Notebook: examples/run_downloader.ipynb
84
79
  - API Reference:
85
- - climdata module: climdata.md
86
- - common module: common.md
80
+ - climdata package: climdata # points to top-level package, not climdata.climdata
81
+ - utils module: climdata.utils
82
+ - datasets module: climdata.datasets
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "climdata"
3
- version = "0.0.3"
3
+ version = "0.0.5"
4
4
  dynamic = [
5
5
  "dependencies",
6
6
  ]
@@ -52,7 +52,7 @@ universal = true
52
52
 
53
53
 
54
54
  [tool.bumpversion]
55
- current_version = "0.0.3"
55
+ current_version = "0.0.5"
56
56
  commit = true
57
57
  tag = true
58
58
 
@@ -17,6 +17,8 @@ pymannkendall
17
17
  tqdm
18
18
  zarr
19
19
  ipyleaflet
20
+ wetterdienst
21
+ pint-pandas
20
22
 
21
23
  # Workflow + config
22
24
  hydra-core
@@ -46,3 +48,7 @@ optuna
46
48
 
47
49
  # Dev tools
48
50
  gitpython
51
+ beautifulsoup4
52
+ google-auth
53
+ google-api-python-client
54
+ ipdb
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env python
2
+
3
+ import unittest
4
+ import climdata
5
+
6
+ class TestClimdata(unittest.TestCase):
7
+ def test_version(self):
8
+ self.assertIsNotNone(climdata.__version__)
9
+
@@ -1,34 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- push:
5
- tags:
6
- - "v*" # trigger when pushing tags like v0.1.0
7
-
8
- jobs:
9
- release:
10
- runs-on: ubuntu-latest
11
-
12
- steps:
13
- - uses: actions/checkout@v4
14
- with:
15
- fetch-depth: 0
16
-
17
- - name: Set up Python
18
- uses: actions/setup-python@v5
19
- with:
20
- python-version: "3.11"
21
-
22
- - name: Install build dependencies
23
- run: |
24
- python -m pip install --upgrade pip
25
- pip install build twine
26
-
27
- - name: Build package
28
- run: python -m build
29
-
30
- - name: Publish to PyPI
31
- uses: pypa/gh-action-pypi-publish@release/v1
32
- with:
33
- user: __token__
34
- password: ${{ secrets.PYPI_API_TOKEN }}
@@ -1,20 +0,0 @@
1
- beautifulsoup4==4.13.5
2
- earthengine_api==1.5.19
3
- geemap==0.35.3
4
- geopandas==1.0.1
5
- google_api_python_client==2.172.0
6
- hydra-core==1.3.2
7
- ipdb==0.13.13
8
- numpy==2.3.2
9
- omegaconf==2.3.0
10
- pandas==2.3.2
11
- Pint==0.24.4
12
- Pint_Pandas==0.7.1
13
- protobuf==6.32.0
14
- PyYAML==6.0.2
15
- PyYAML==6.0.2
16
- Requests==2.32.5
17
- scipy==1.16.1
18
- tqdm==4.67.1
19
- wetterdienst==0.111.0
20
- xarray==2025.4.0
@@ -1,4 +0,0 @@
1
-
2
- # climdata module
3
-
4
- ::: climdata.climdata
@@ -1,3 +0,0 @@
1
- # common module
2
-
3
- ::: climdata.common