weatherdb 1.2.4__tar.gz → 1.2.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.
Files changed (112) hide show
  1. {weatherdb-1.2.4 → weatherdb-1.2.5}/.gitlab-ci.yml +10 -3
  2. {weatherdb-1.2.4 → weatherdb-1.2.5}/CHANGES.md +5 -0
  3. {weatherdb-1.2.4 → weatherdb-1.2.5}/PKG-INFO +1 -1
  4. weatherdb-1.2.5/weatherdb/_version.py +1 -0
  5. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/cli.py +57 -8
  6. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/station/StationBases.py +3 -1
  7. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/station/StationT.py +1 -0
  8. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb.egg-info/PKG-INFO +1 -1
  9. {weatherdb-1.2.4 → weatherdb-1.2.5}/zenodo.json +4 -4
  10. weatherdb-1.2.4/weatherdb/_version.py +0 -1
  11. {weatherdb-1.2.4 → weatherdb-1.2.5}/.dockerignore +0 -0
  12. {weatherdb-1.2.4 → weatherdb-1.2.5}/.github/workflows/cleanup-cache.yml +0 -0
  13. {weatherdb-1.2.4 → weatherdb-1.2.5}/.github/workflows/python-publish.yml +0 -0
  14. {weatherdb-1.2.4 → weatherdb-1.2.5}/.github/workflows/python-test.yml +0 -0
  15. {weatherdb-1.2.4 → weatherdb-1.2.5}/.gitignore +0 -0
  16. {weatherdb-1.2.4 → weatherdb-1.2.5}/.gitlab/merge_request_templates/new_version.md +0 -0
  17. {weatherdb-1.2.4 → weatherdb-1.2.5}/.readthedocs.yaml +0 -0
  18. {weatherdb-1.2.4 → weatherdb-1.2.5}/LICENSE +0 -0
  19. {weatherdb-1.2.4 → weatherdb-1.2.5}/MANIFEST.in +0 -0
  20. {weatherdb-1.2.4 → weatherdb-1.2.5}/README.md +0 -0
  21. {weatherdb-1.2.4 → weatherdb-1.2.5}/docker/Dockerfile +0 -0
  22. {weatherdb-1.2.4 → weatherdb-1.2.5}/docker/docker-compose.yaml +0 -0
  23. {weatherdb-1.2.4 → weatherdb-1.2.5}/docker/docker-compose_test.yaml +0 -0
  24. {weatherdb-1.2.4 → weatherdb-1.2.5}/docker/start-docker-test.sh +0 -0
  25. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/requirements.txt +0 -0
  26. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/Changelog.md +0 -0
  27. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/License.rst +0 -0
  28. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/Methode.md +0 -0
  29. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/_static/custom.css +0 -0
  30. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/_static/favicon.ico +0 -0
  31. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/_static/logo.png +0 -0
  32. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/api.rst +0 -0
  33. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/cli.rst +0 -0
  34. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.broker.rst +0 -0
  35. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.config.rst +0 -0
  36. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.db.rst +0 -0
  37. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.rst +0 -0
  38. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.station.GroupStation.rst +0 -0
  39. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.station.StationBases.rst +0 -0
  40. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.station.StationET.rst +0 -0
  41. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.station.StationP.rst +0 -0
  42. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.station.StationPD.rst +0 -0
  43. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.station.StationT.rst +0 -0
  44. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.station.rst +0 -0
  45. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.stations.StationsBase.rst +0 -0
  46. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.stations.StationsET.rst +0 -0
  47. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.stations.StationsP.rst +0 -0
  48. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.stations.StationsPD.rst +0 -0
  49. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.stations.StationsT.rst +0 -0
  50. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.stations.rst +0 -0
  51. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/api/weatherdb.utils.rst +0 -0
  52. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/conf.py +0 -0
  53. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/index.rst +0 -0
  54. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/setup/Configuration.md +0 -0
  55. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/setup/Hosting.md +0 -0
  56. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/setup/Install.md +0 -0
  57. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/setup/Quickstart.md +0 -0
  58. {weatherdb-1.2.4 → weatherdb-1.2.5}/docs/source/setup/setup.rst +0 -0
  59. {weatherdb-1.2.4 → weatherdb-1.2.5}/pyproject.toml +0 -0
  60. {weatherdb-1.2.4 → weatherdb-1.2.5}/setup.cfg +0 -0
  61. {weatherdb-1.2.4 → weatherdb-1.2.5}/tests/test-data/DEM/COP-DEM_GLO-30-DGED__2023_1_clipped.tif +0 -0
  62. {weatherdb-1.2.4 → weatherdb-1.2.5}/tests/test-data/DEM/README.md +0 -0
  63. {weatherdb-1.2.4 → weatherdb-1.2.5}/tests/test-data/DEM/eula_F.pdf +0 -0
  64. {weatherdb-1.2.4 → weatherdb-1.2.5}/tests/test-data/regionalisation/DWD-grid_ma_1991_2020_DGM25_clipped.tif +0 -0
  65. {weatherdb-1.2.4 → weatherdb-1.2.5}/tests/test-data/regionalisation/HYRAS_ma_1991_2020_DGM25_clipped.tif +0 -0
  66. {weatherdb-1.2.4 → weatherdb-1.2.5}/tests/test-data/regionalisation/README.md +0 -0
  67. {weatherdb-1.2.4 → weatherdb-1.2.5}/tests/test-data/test-data-config.ini +0 -0
  68. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/__init__.py +0 -0
  69. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/README.md +0 -0
  70. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/alembic.ini +0 -0
  71. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/config.py +0 -0
  72. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/env.py +0 -0
  73. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/script.py.mako +0 -0
  74. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/versions/V1.0.0_initial_database_creation.py +0 -0
  75. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/versions/V1.0.2_more_charachters_for_settings+term_station_ma_raster.py +0 -0
  76. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/versions/V1.0.5_fix-ma-raster-values.py +0 -0
  77. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/alembic/versions/V1.0.6_update-views.py +0 -0
  78. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/broker.py +0 -0
  79. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/config/ConfigParser.py +0 -0
  80. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/config/__init__.py +0 -0
  81. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/config/config_default.ini +0 -0
  82. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/db/__init__.py +0 -0
  83. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/db/connections.py +0 -0
  84. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/db/fixtures/RichterParameters.json +0 -0
  85. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/db/models.py +0 -0
  86. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/db/queries/get_quotient.py +0 -0
  87. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/db/views.py +0 -0
  88. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/station/GroupStation.py +0 -0
  89. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/station/StationET.py +0 -0
  90. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/station/StationP.py +0 -0
  91. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/station/StationPD.py +0 -0
  92. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/station/__init__.py +0 -0
  93. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/station/constants.py +0 -0
  94. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/stations/GroupStations.py +0 -0
  95. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/stations/StationsBase.py +0 -0
  96. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/stations/StationsBaseTET.py +0 -0
  97. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/stations/StationsET.py +0 -0
  98. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/stations/StationsP.py +0 -0
  99. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/stations/StationsPD.py +0 -0
  100. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/stations/StationsT.py +0 -0
  101. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/stations/__init__.py +0 -0
  102. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/utils/TimestampPeriod.py +0 -0
  103. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/utils/__init__.py +0 -0
  104. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/utils/dwd.py +0 -0
  105. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/utils/geometry.py +0 -0
  106. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/utils/get_data.py +0 -0
  107. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb/utils/logging.py +0 -0
  108. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb.egg-info/SOURCES.txt +0 -0
  109. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb.egg-info/dependency_links.txt +0 -0
  110. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb.egg-info/entry_points.txt +0 -0
  111. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb.egg-info/requires.txt +0 -0
  112. {weatherdb-1.2.4 → weatherdb-1.2.5}/weatherdb.egg-info/top_level.txt +0 -0
@@ -12,8 +12,9 @@ workflow:
12
12
  test_single:
13
13
  stage: test_single
14
14
  rules:
15
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
15
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_TAG == null
16
16
  - if: $CI_PIPELINE_SOURCE == "merge_request_event"
17
+ - if: $CI_COMMIT_TAG =~ /^[Vv]*\d+\.\d+\.\d+$/
17
18
  image: "python:$PYTHON_VERSION"
18
19
  services:
19
20
  - name: timescale/timescaledb-ha:pg17
@@ -154,8 +155,13 @@ deploy2zenodo:
154
155
  stage: release
155
156
  rules:
156
157
  - !reference [build, rules]
157
- dependencies:
158
- - release_pypi
158
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
159
+ when: never
160
+ - when: manual
161
+ allow_failure: true
162
+ needs:
163
+ - job: release_pypi
164
+ optional: true
159
165
  variables:
160
166
  DEPLOY2ZENODO_JSON: zenodo.json
161
167
  DEPLOY2ZENODO_ADD_IsNewVersionOf: yes
@@ -164,6 +170,7 @@ deploy2zenodo:
164
170
  - apk add --no-cache curl jq git pandoc
165
171
  # pack
166
172
  - TAG=$(echo $CI_COMMIT_TAG | cut -d "v" -f 2)
173
+ - if [ -z "$TAG" ]; then echo "TAG is empty, exiting"; exit 1; fi
167
174
  - DEPLOY2ZENODO_UPLOAD=v$TAG.zip
168
175
  - git archive --format zip --output "$DEPLOY2ZENODO_UPLOAD" $CI_COMMIT_SHA
169
176
  # prepare zenodo.json
@@ -1,5 +1,10 @@
1
1
  # Change-log
2
2
 
3
+ ## Version 1.2.5
4
+
5
+ - cli updating methods have now additional parameters for stids, period and para to be able to update only a some specific stations
6
+ - fillup: update also Temperature values if the filled_max and filled_min are NULL.
7
+
3
8
  ## Version 1.2.4
4
9
 
5
10
  - added Zenodo upload
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weatherdb
3
- Version: 1.2.4
3
+ Version: 1.2.5
4
4
  Summary: This is a package to work with and to create the Weather Database which handles, checks, fills and corrects DWD Weather Station data.
5
5
  Author-email: Max Schmit <max.schmit@hydrology.uni-freiburg.de>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -0,0 +1 @@
1
+ __version__ = "1.2.5"
@@ -7,6 +7,43 @@ from textwrap import dedent
7
7
  sys.path.insert(0, Path(__file__).resolve().parent.parent.as_posix())
8
8
  import weatherdb
9
9
 
10
+ # Reusable option decorators
11
+ # ---------------------------------------
12
+
13
+ def period_options(f):
14
+ """Add period options only"""
15
+ f = click.option("--period_from", "-f",
16
+ default=None, show_default=True,
17
+ help="The from timestamp of the period to apply the method on. Timestamp should be in the format YYYY-MM-DD.")(f)
18
+ f = click.option("--period_until", "-u",
19
+ default=None, show_default=True,
20
+ help="The until timestamp of the period to apply the method on. Timestamp should be in the format YYYY-MM-DD.")(f)
21
+ return f
22
+
23
+ def stid_option(f):
24
+ """Add station ID options"""
25
+ f = click.option("--stid", "-i",
26
+ default=["all"], show_default=True, multiple=True,
27
+ callback=lambda ctx, param, value: "all" if "all" in value else [int(v) for v in value],
28
+ help="The station IDs to apply the method to. Options are 'all' or a specific station ID. " +
29
+ "You can enter multiple values to add multiple station IDs.")(f)
30
+ return f
31
+
32
+ def para_options(f):
33
+ """Add parameter options"""
34
+ f = click.option("--para", "-p",
35
+ default=["p", "t", "et"], show_default=True, multiple=True,
36
+ help="The parameters to work with. Options are 'p', 't' and 'et'. " +
37
+ "You can enter multiple values to add multiple parameters.")(f)
38
+ return f
39
+
40
+ def common_update_options(f):
41
+ """Add common options for processing commands (para, stid, period)"""
42
+ f = para_options(f)
43
+ f = stid_option(f)
44
+ f = period_options(f)
45
+ return f
46
+
10
47
  # main cli group
11
48
  # ---------------------------------------
12
49
 
@@ -185,31 +222,43 @@ def update_ma_raster():
185
222
 
186
223
 
187
224
  @cli.command(short_help="Update the raw data of the complete database.")
188
- def update_raw():
225
+ @common_update_options
226
+ def update_raw(para, stid, period_from, period_until):
189
227
  click.echo("starting updating the raw data")
190
228
  broker = weatherdb.broker.Broker()
191
- broker.update_raw()
229
+ broker.update_raw(paras=para,
230
+ stids=stid,
231
+ period=(period_from, period_until))
192
232
 
193
233
 
194
234
  @cli.command(short_help="Do the quality check of the complete database.")
195
- def quality_check():
235
+ @common_update_options
236
+ def quality_check(para, stid, period_from, period_until):
196
237
  click.echo("starting quality check")
197
238
  broker = weatherdb.broker.Broker()
198
- broker.quality_check()
239
+ broker.quality_check(paras=para,
240
+ stids=stid,
241
+ period=(period_from, period_until))
199
242
 
200
243
 
201
244
  @cli.command(short_help="Do the filling of the complete database.")
202
- def fillup():
245
+ @common_update_options
246
+ def fillup(para, stid, period_from, period_until):
203
247
  click.echo("starting filling up")
204
248
  broker = weatherdb.broker.Broker()
205
- broker.fillup()
249
+ broker.fillup(paras=para,
250
+ stids=stid,
251
+ period=(period_from, period_until))
206
252
 
207
253
 
208
254
  @cli.command(short_help="Do the richter correction of the complete database.")
209
- def richter_correct():
255
+ @stid_option
256
+ @period_options
257
+ def richter_correct(stid, period_from, period_until):
210
258
  click.echo("starting richter correction")
211
259
  broker = weatherdb.broker.Broker()
212
- broker.richter_correct()
260
+ broker.richter_correct(stids=stid,
261
+ period=(period_from, period_until))
213
262
 
214
263
 
215
264
  # cli admin stuff
@@ -1447,7 +1447,8 @@ class StationBase:
1447
1447
  {sql_format_dict["extra_exec_cols"].format(i=i)}
1448
1448
  filled_by[{i}]=%1$s
1449
1449
  FROM timeseries.%2$I nb
1450
- WHERE nf.filled IS NULL AND nf.nb_mean[{i}] IS NULL {prev_check}
1450
+ WHERE (nf.filled IS NULL {sql_format_dict["extra_fillup_update_where"]})
1451
+ AND nf.nb_mean[{i}] IS NULL {prev_check}
1451
1452
  AND nf.timestamp = nb.timestamp;"""
1452
1453
  prev_check += f" AND nf.nb_mean[{i}] IS NOT NULL AND nf.filled_by[{i}] != %1$s"
1453
1454
 
@@ -1689,6 +1690,7 @@ class StationBase:
1689
1690
  "extra_fillup_where": "",
1690
1691
  "mul_elev_order": "",
1691
1692
  "extra_exec_cols": "",
1693
+ "extra_fillup_update_where": "",
1692
1694
  "extra_after_loop_extra_col": ""}
1693
1695
 
1694
1696
  @db_engine.deco_update_privilege
@@ -135,6 +135,7 @@ class StationT(StationTETBase):
135
135
  ' OR ts."filled_max" IS DISTINCT FROM new."filled_max"',
136
136
  "extra_exec_cols": "nb_max[{i}]=round(nb.raw_max + %3$s, 0)::int,"+
137
137
  "nb_min[{i}]=round(nb.raw_min + %3$s, 0)::int,",
138
+ "extra_fillup_update_where": ' OR nf."filled_min" IS NULL OR nf."filled_max" IS NULL',
138
139
  "extra_after_loop_extra_col": """,
139
140
  filled_min=(SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY v)
140
141
  FROM unnest(nb_min) as T(v)),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weatherdb
3
- Version: 1.2.4
3
+ Version: 1.2.5
4
4
  Summary: This is a package to work with and to create the Weather Database which handles, checks, fills and corrects DWD Weather Station data.
5
5
  Author-email: Max Schmit <max.schmit@hydrology.uni-freiburg.de>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -7,7 +7,7 @@
7
7
  "orcid": "0000-0002-0712-4116"
8
8
  }
9
9
  ],
10
- "contributor":[
10
+ "contributors":[
11
11
  {
12
12
  "name": "Weiler, Markus",
13
13
  "affiliation": "University of Freiburg",
@@ -24,12 +24,12 @@
24
24
  {
25
25
  "relation": "cites",
26
26
  "identifier": "10.5281/zenodo.10066044",
27
- "resource_type": "Dataset"
27
+ "resource_type": "dataset"
28
28
  },
29
29
  {
30
30
  "relation": "requires",
31
31
  "identifier": "https://opendata.dwd.de/climate_environment/CDC/",
32
- "resource_type": "Dataset"
32
+ "resource_type": "dataset"
33
33
  }
34
34
  ],
35
35
  "references": [
@@ -52,6 +52,6 @@
52
52
  {"term": "Meteorology", "identifier": "euroscivoc:281"},
53
53
  {"term": "Meteorology", "identifier": "gemet:concept/5197"}
54
54
  ],
55
- "language": "English"
55
+ "language": "eng"
56
56
  }
57
57
  }
@@ -1 +0,0 @@
1
- __version__ = "1.2.4"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes