weatherdb 1.2.3__py3-none-any.whl → 1.2.5__py3-none-any.whl
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.
- weatherdb/_version.py +1 -1
- weatherdb/cli.py +57 -8
- weatherdb/config/ConfigParser.py +1 -1
- weatherdb/station/GroupStation.py +54 -23
- weatherdb/station/StationBases.py +3 -1
- weatherdb/station/StationT.py +1 -0
- weatherdb/stations/GroupStations.py +33 -13
- {weatherdb-1.2.3.dist-info → weatherdb-1.2.5.dist-info}/METADATA +3 -2
- {weatherdb-1.2.3.dist-info → weatherdb-1.2.5.dist-info}/RECORD +13 -13
- {weatherdb-1.2.3.dist-info → weatherdb-1.2.5.dist-info}/WHEEL +1 -1
- {weatherdb-1.2.3.dist-info → weatherdb-1.2.5.dist-info}/entry_points.txt +0 -0
- {weatherdb-1.2.3.dist-info → weatherdb-1.2.5.dist-info/licenses}/LICENSE +0 -0
- {weatherdb-1.2.3.dist-info → weatherdb-1.2.5.dist-info}/top_level.txt +0 -0
weatherdb/_version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "1.2.
|
1
|
+
__version__ = "1.2.5"
|
weatherdb/cli.py
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
weatherdb/config/ConfigParser.py
CHANGED
@@ -357,7 +357,7 @@ class ConfigParser(configparser.ConfigParser):
|
|
357
357
|
user_config_file = "ask"
|
358
358
|
|
359
359
|
# ask for the user config file
|
360
|
-
if user_config_file == "
|
360
|
+
if user_config_file.lower().strip()[0] == "a":
|
361
361
|
try:
|
362
362
|
from tkinter import Tk
|
363
363
|
from tkinter import filedialog
|
@@ -344,8 +344,13 @@ class GroupStation(object):
|
|
344
344
|
def get_name(self):
|
345
345
|
return self.station_parts[0].get_name()
|
346
346
|
|
347
|
-
def create_roger_ts(self,
|
348
|
-
|
347
|
+
def create_roger_ts(self,
|
348
|
+
dir,
|
349
|
+
period=(None, None),
|
350
|
+
kind="best",
|
351
|
+
r_r0=1,
|
352
|
+
add_t_min=False,
|
353
|
+
add_t_max=False,
|
349
354
|
do_toolbox_format=False,
|
350
355
|
**kwargs):
|
351
356
|
"""Create the timeserie files for roger as csv.
|
@@ -394,10 +399,15 @@ class GroupStation(object):
|
|
394
399
|
"""
|
395
400
|
if do_toolbox_format:
|
396
401
|
return self.create_ts(
|
397
|
-
dir=dir,
|
398
|
-
|
402
|
+
dir=dir,
|
403
|
+
period=period,
|
404
|
+
kinds=kind,
|
405
|
+
agg_to="10 min",
|
406
|
+
r_r0=r_r0,
|
407
|
+
split_date=True,
|
399
408
|
nas_allowed=False,
|
400
|
-
add_t_min=add_t_min,
|
409
|
+
add_t_min=add_t_min,
|
410
|
+
add_t_max=add_t_max,
|
401
411
|
file_names={"P":"PREC.txt", "T":"TA.txt", "ET":"PET.txt"},
|
402
412
|
col_names={"P":"PREC", "ET":"PET",
|
403
413
|
"T":"TA", "T_min":"TA_min", "T_max":"TA_max",
|
@@ -408,18 +418,34 @@ class GroupStation(object):
|
|
408
418
|
**kwargs)
|
409
419
|
else:
|
410
420
|
return self.create_ts(
|
411
|
-
dir=dir,
|
412
|
-
|
421
|
+
dir=dir,
|
422
|
+
period=period,
|
423
|
+
kinds=kind,
|
424
|
+
agg_to="10 min",
|
425
|
+
r_r0=r_r0,
|
426
|
+
split_date=True,
|
413
427
|
nas_allowed=False,
|
414
|
-
|
428
|
+
file_names={"P":"N_{id:0>5}.txt"},
|
429
|
+
col_names={"P":"N"},
|
430
|
+
add_t_min=add_t_min,
|
431
|
+
add_t_max=add_t_max,
|
415
432
|
**kwargs)
|
416
433
|
|
417
|
-
def create_ts(self,
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
434
|
+
def create_ts(self,
|
435
|
+
dir,
|
436
|
+
period=(None, None),
|
437
|
+
kinds="best",
|
438
|
+
paras="all",
|
439
|
+
agg_to="10 min",
|
440
|
+
r_r0=None,
|
441
|
+
split_date=False,
|
442
|
+
nas_allowed=True,
|
443
|
+
add_na_share=False,
|
444
|
+
add_t_min=False,
|
445
|
+
add_t_max=False,
|
446
|
+
add_meta=True,
|
447
|
+
file_names={},
|
448
|
+
col_names={},
|
423
449
|
keep_date_parts=False,
|
424
450
|
**kwargs):
|
425
451
|
"""Create the timeserie files as csv.
|
@@ -485,6 +511,7 @@ class GroupStation(object):
|
|
485
511
|
file_names : dict, optional
|
486
512
|
A dictionary with the file names for the different parameters.
|
487
513
|
e.g.{"P":"PREC.txt", "T":"TA.txt", "ET":"ET.txt"}
|
514
|
+
Additionally, the station ID ("{id}" as int) and period ({period} as TimestampPeriod) are available as placeholders.
|
488
515
|
If an empty dictionary is given, then the standard names are used.
|
489
516
|
The default is {}.
|
490
517
|
col_names : dict, optional
|
@@ -536,19 +563,22 @@ class GroupStation(object):
|
|
536
563
|
del kwargs["_skip_period_check"]
|
537
564
|
|
538
565
|
# prepare loop
|
539
|
-
name_suffix = "_{
|
566
|
+
name_suffix = "_{id:0>5}.txt".format(id=self.id)
|
540
567
|
x, y = self.get_geom().coords.xy
|
541
|
-
name = self.get_name() + " (ID: {
|
568
|
+
name = self.get_name() + " (ID: {id})".format(id=self.id)
|
542
569
|
do_zip = isinstance(dir, zipfile.ZipFile)
|
543
570
|
|
544
571
|
for para in paras:
|
545
572
|
# get the timeserie
|
546
573
|
df = self.get_df(
|
547
|
-
period=period,
|
548
|
-
|
574
|
+
period=period,
|
575
|
+
kinds=kinds,
|
576
|
+
paras=[para],
|
577
|
+
agg_to=agg_to,
|
549
578
|
nas_allowed=nas_allowed,
|
550
579
|
add_na_share=add_na_share,
|
551
|
-
add_t_min=add_t_min,
|
580
|
+
add_t_min=add_t_min,
|
581
|
+
add_t_max=add_t_max,
|
552
582
|
_skip_period_check=True,
|
553
583
|
**kwargs)
|
554
584
|
|
@@ -573,8 +603,7 @@ class GroupStation(object):
|
|
573
603
|
# check for NAs
|
574
604
|
filled_cols = [col for col in df.columns if "filled_by" in col]
|
575
605
|
if not nas_allowed and df.drop(filled_cols, axis=1).isna().sum().sum() > 0:
|
576
|
-
warnings.warn("There were NAs in the
|
577
|
-
stid=self.id))
|
606
|
+
warnings.warn(f"There were NAs in the timeseries for Station {self.id}.")
|
578
607
|
|
579
608
|
# special operations for et
|
580
609
|
if para == "et" and r_r0 is not None:
|
@@ -609,9 +638,11 @@ class GroupStation(object):
|
|
609
638
|
|
610
639
|
# get file name
|
611
640
|
if para.upper() in file_names:
|
612
|
-
file_name = file_names[para.upper()]
|
641
|
+
file_name = file_names[para.upper()]\
|
642
|
+
.format(id=self.id, period=period)
|
613
643
|
elif para in file_names:
|
614
|
-
file_name = file_names[para]
|
644
|
+
file_name = file_names[para]\
|
645
|
+
.format(id=self.id, period=period)
|
615
646
|
else:
|
616
647
|
file_name = para.upper() + name_suffix
|
617
648
|
|
@@ -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
|
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
|
weatherdb/station/StationT.py
CHANGED
@@ -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)),
|
@@ -293,10 +293,17 @@ class GroupStations(object):
|
|
293
293
|
|
294
294
|
return stations
|
295
295
|
|
296
|
-
def create_ts(self, dir,
|
297
|
-
|
298
|
-
|
299
|
-
|
296
|
+
def create_ts(self, dir,
|
297
|
+
period=(None, None),
|
298
|
+
kinds="best",
|
299
|
+
stids="all",
|
300
|
+
agg_to="10 min",
|
301
|
+
r_r0=None,
|
302
|
+
split_date=False,
|
303
|
+
nas_allowed=True,
|
304
|
+
add_na_share=False,
|
305
|
+
add_t_min=False,
|
306
|
+
add_t_max=False,
|
300
307
|
**kwargs):
|
301
308
|
"""Download and create the weather tables as csv files.
|
302
309
|
|
@@ -393,7 +400,6 @@ class GroupStations(object):
|
|
393
400
|
add_na_share=add_na_share,
|
394
401
|
add_t_min=add_t_min,
|
395
402
|
add_t_max=add_t_max,
|
396
|
-
_skip_period_check=True,
|
397
403
|
**kwargs)
|
398
404
|
pbar.variables["last_station"] = stat.id
|
399
405
|
pbar.update(pbar.value + 1)
|
@@ -498,10 +504,16 @@ class GroupStations(object):
|
|
498
504
|
"""
|
499
505
|
if do_toolbox_format:
|
500
506
|
return self.create_ts(
|
501
|
-
dir=dir,
|
502
|
-
|
503
|
-
|
504
|
-
|
507
|
+
dir=dir,
|
508
|
+
period=period,
|
509
|
+
kinds=kind,
|
510
|
+
agg_to="10 min",
|
511
|
+
r_r0=r_r0,
|
512
|
+
stids=stids,
|
513
|
+
split_date=True,
|
514
|
+
nas_allowed=False,
|
515
|
+
add_t_min=add_t_min,
|
516
|
+
add_t_max=add_t_max,
|
505
517
|
file_names={"P":"PREC.txt", "T":"TA.txt", "ET":"PET.txt"},
|
506
518
|
col_names={"P":"PREC", "ET":"PET",
|
507
519
|
"T":"TA", "T_min":"TA_min", "T_max":"TA_max",
|
@@ -512,8 +524,16 @@ class GroupStations(object):
|
|
512
524
|
**kwargs)
|
513
525
|
else:
|
514
526
|
return self.create_ts(
|
515
|
-
dir=dir,
|
516
|
-
|
517
|
-
|
518
|
-
|
527
|
+
dir=dir,
|
528
|
+
period=period,
|
529
|
+
kinds=kind,
|
530
|
+
agg_to="10 min",
|
531
|
+
r_r0=r_r0,
|
532
|
+
stids=stids,
|
533
|
+
split_date=True,
|
534
|
+
nas_allowed=False,
|
535
|
+
file_names={"P": "N_{id:0>5}.txt"},
|
536
|
+
col_names={"P":"N"},
|
537
|
+
add_t_min=add_t_min,
|
538
|
+
add_t_max=add_t_max,
|
519
539
|
**kwargs)
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: weatherdb
|
3
|
-
Version: 1.2.
|
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
|
@@ -714,6 +714,7 @@ Requires-Dist: setuptools_scm
|
|
714
714
|
Provides-Extra: optionals
|
715
715
|
Requires-Dist: coloredlogs; extra == "optionals"
|
716
716
|
Requires-Dist: colorama; extra == "optionals"
|
717
|
+
Dynamic: license-file
|
717
718
|
|
718
719
|
# WeatherDB - module
|
719
720
|
|
@@ -44,9 +44,9 @@ tests/test-data/regionalisation/DWD-grid_ma_1991_2020_DGM25_clipped.tif,sha256=8
|
|
44
44
|
tests/test-data/regionalisation/HYRAS_ma_1991_2020_DGM25_clipped.tif,sha256=HiSmi715dUpryQ1WSLSXR7GmGPHzK0rl6WOOrwjRwXw,2116377
|
45
45
|
tests/test-data/regionalisation/README.md,sha256=equFOPJVaESGKIK1ZPVEJHY4TEqkW3NpJOFQzjsBy7M,151
|
46
46
|
weatherdb/__init__.py,sha256=2BzziScTYzA65WS6nhtCRZOWSLfwHTCwvZdeyuHw79U,846
|
47
|
-
weatherdb/_version.py,sha256=
|
47
|
+
weatherdb/_version.py,sha256=mVbto7ql37Z5qaxZdvFimhabXBR9vUiM-sBD79-zjmQ,21
|
48
48
|
weatherdb/broker.py,sha256=qJaKVwo1zcTLKmP-sF_DMod6_7jVsdHEoiKEMvsPx9A,24842
|
49
|
-
weatherdb/cli.py,sha256=
|
49
|
+
weatherdb/cli.py,sha256=RnN_aiKbOOVkBXPn9weKqoL6OPJNXdpLWKsIM9T0NrM,13635
|
50
50
|
weatherdb/alembic/README.md,sha256=6hq24TPr8z3nqJCaqrmj6__kLikVG66kLGqfC_aFPWQ,440
|
51
51
|
weatherdb/alembic/alembic.ini,sha256=Mc3-qkQfA42ApX9douZT77g1pWE9gn4oMVJEDoebmdQ,3087
|
52
52
|
weatherdb/alembic/config.py,sha256=Q4aolMUUT7f6VmbY0uz_dWBtKkj3KgTUs_xOY_Gbzjw,264
|
@@ -56,7 +56,7 @@ weatherdb/alembic/versions/V1.0.0_initial_database_creation.py,sha256=Ztj21xNdJc
|
|
56
56
|
weatherdb/alembic/versions/V1.0.2_more_charachters_for_settings+term_station_ma_raster.py,sha256=jrnBpgUxjaBt1oUFJb0PeTZ4L5hEDh9K8ncF33cLdQE,3738
|
57
57
|
weatherdb/alembic/versions/V1.0.5_fix-ma-raster-values.py,sha256=EvJ_JLLJKUN5YXwWZdS1FHK2oHjhIlayvjtJuoK3eCI,6957
|
58
58
|
weatherdb/alembic/versions/V1.0.6_update-views.py,sha256=ZA7cK5yeAqivFG2V8O7mvyKSkGRlphVOs0qKpBYgYKE,420
|
59
|
-
weatherdb/config/ConfigParser.py,sha256
|
59
|
+
weatherdb/config/ConfigParser.py,sha256=7qKAo_8ykLo_1e5zOTVcevHDC2pOGkAeeMadIUVbAYM,28420
|
60
60
|
weatherdb/config/__init__.py,sha256=JBNlYPT43JnO8XMI8HTtg2hyA7C_JnMdtWmJ2vAtNZ8,85
|
61
61
|
weatherdb/config/config_default.ini,sha256=5DQzOqOJ9EVRAu9IA_EO4c8aqnuUvTmocwidOhLLXbY,7884
|
62
62
|
weatherdb/db/__init__.py,sha256=g6F66XR6UPz41kPtSRc1qvDoOEZ5OawYxYtYXCgZ06s,76
|
@@ -65,15 +65,15 @@ weatherdb/db/models.py,sha256=6Oor07T1sAD6qEtoxwEcpmY1SkLVVONChXIIcTjbUk4,15242
|
|
65
65
|
weatherdb/db/views.py,sha256=DxY_IIonmiiRM-IhQrUMLwj12gIg6Q30rQAmR3wP3BE,6359
|
66
66
|
weatherdb/db/fixtures/RichterParameters.json,sha256=CKxrB5FBX_BRKqxegXNyNtn9DUKmgibUtdvHoE8E5JI,836
|
67
67
|
weatherdb/db/queries/get_quotient.py,sha256=9wVFmXE8tk8igGj-Xk5uSI0eiF_PQ9d-yRq7RJpvMAA,6787
|
68
|
-
weatherdb/station/GroupStation.py,sha256=
|
69
|
-
weatherdb/station/StationBases.py,sha256=
|
68
|
+
weatherdb/station/GroupStation.py,sha256=ikVsAMXlhJY8I991mJ3IBCLPW9AH5Hd7QLnDUDawM3U,31066
|
69
|
+
weatherdb/station/StationBases.py,sha256=wR8PsVGf3IyxU8lADcjwe07AuhdmsJBSW_OeMplDKC0,130447
|
70
70
|
weatherdb/station/StationET.py,sha256=hM6K8fCLC6mOLaE4cN92LHOyPGP01ifO6l2qO77I_bA,3621
|
71
71
|
weatherdb/station/StationP.py,sha256=w_0l5cw8zTACIbmVFV4cdPwxuyP2Cnv97dnNrMElBDE,32691
|
72
72
|
weatherdb/station/StationPD.py,sha256=Bcg_uQTgIQPffsMGhNEwKAXhYs1Ii4VeB75afdFG-Kk,3367
|
73
|
-
weatherdb/station/StationT.py,sha256
|
73
|
+
weatherdb/station/StationT.py,sha256=uatVrNie891Ht4uuZ5zMb-INMrXuoLk48-dYP4smzO0,6111
|
74
74
|
weatherdb/station/__init__.py,sha256=v1sPfmhhLRMOr5DJ2c5BLIFY7GWkP5iMLA5vtZm-osg,591
|
75
75
|
weatherdb/station/constants.py,sha256=vtdhgcK8A2cJaknT6qI8w5tAh_Hb5i2SvxxtHZOPyVc,511
|
76
|
-
weatherdb/stations/GroupStations.py,sha256=
|
76
|
+
weatherdb/stations/GroupStations.py,sha256=Q-0sZ4skZgE-2hwE2QKmwDz_8_U4xWb2hYsKv5RvR1E,21927
|
77
77
|
weatherdb/stations/StationsBase.py,sha256=M7VyWJgUmIygJ2rByQy0Zz6RKsaDVT8-iaXzhPTa_b4,42991
|
78
78
|
weatherdb/stations/StationsBaseTET.py,sha256=CuE5gXAF4eS4bHorI-sUqksm0jdj9SzAiOHtc4vv7aA,1032
|
79
79
|
weatherdb/stations/StationsET.py,sha256=OjyEaEK0nPJ9txRfUbHfW9bEEx5HAISWmnk5F4GBs7I,433
|
@@ -87,9 +87,9 @@ weatherdb/utils/dwd.py,sha256=amEVVPLzXTSScBP5VAK35dBxuiy-Ua4hHyKnDGxD_4Q,12394
|
|
87
87
|
weatherdb/utils/geometry.py,sha256=Od-RDAW1MASVAsGBXpHti9osbVJDqUbumSKBSJPbQqc,1823
|
88
88
|
weatherdb/utils/get_data.py,sha256=62wV37fuzGhC2fLSCL7JyyMd3BAiRiimIhV95-mEROU,17294
|
89
89
|
weatherdb/utils/logging.py,sha256=iaWnzCdBYxFmzWgLq9a6VAeBMdwy-rnt2d9PSAQq4lA,4242
|
90
|
-
weatherdb-1.2.
|
91
|
-
weatherdb-1.2.
|
92
|
-
weatherdb-1.2.
|
93
|
-
weatherdb-1.2.
|
94
|
-
weatherdb-1.2.
|
95
|
-
weatherdb-1.2.
|
90
|
+
weatherdb-1.2.5.dist-info/licenses/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
|
91
|
+
weatherdb-1.2.5.dist-info/METADATA,sha256=fgnO1_o_ONvVUqZf94vmh4HgT3avg67MVV4B5H7YEZ0,44308
|
92
|
+
weatherdb-1.2.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
93
|
+
weatherdb-1.2.5.dist-info/entry_points.txt,sha256=kJemTd9Cm_QWPZt03KUWhpn1aB0-l_5ce6Ms3EoS_NM,55
|
94
|
+
weatherdb-1.2.5.dist-info/top_level.txt,sha256=kLlRbXLn0GHvMWmciWRyvm0-FYEy56F6d0fGwfle9-g,28
|
95
|
+
weatherdb-1.2.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|