weatherdb 1.1.0__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.
- docker/Dockerfile +30 -0
- docker/docker-compose.yaml +58 -0
- docker/docker-compose_test.yaml +24 -0
- docker/start-docker-test.sh +6 -0
- docs/requirements.txt +10 -0
- docs/source/Changelog.md +2 -0
- docs/source/License.rst +7 -0
- docs/source/Methode.md +161 -0
- docs/source/_static/custom.css +8 -0
- docs/source/_static/favicon.ico +0 -0
- docs/source/_static/logo.png +0 -0
- docs/source/api/api.rst +15 -0
- docs/source/api/cli.rst +8 -0
- docs/source/api/weatherDB.broker.rst +10 -0
- docs/source/api/weatherDB.config.rst +7 -0
- docs/source/api/weatherDB.db.rst +23 -0
- docs/source/api/weatherDB.rst +22 -0
- docs/source/api/weatherDB.station.rst +56 -0
- docs/source/api/weatherDB.stations.rst +46 -0
- docs/source/api/weatherDB.utils.rst +22 -0
- docs/source/conf.py +137 -0
- docs/source/index.rst +33 -0
- docs/source/setup/Configuration.md +127 -0
- docs/source/setup/Hosting.md +9 -0
- docs/source/setup/Install.md +49 -0
- docs/source/setup/Quickstart.md +183 -0
- docs/source/setup/setup.rst +12 -0
- weatherdb/__init__.py +24 -0
- weatherdb/_version.py +1 -0
- weatherdb/alembic/README.md +8 -0
- weatherdb/alembic/alembic.ini +80 -0
- weatherdb/alembic/config.py +9 -0
- weatherdb/alembic/env.py +100 -0
- weatherdb/alembic/script.py.mako +26 -0
- weatherdb/alembic/versions/V1.0.0_initial_database_creation.py +898 -0
- weatherdb/alembic/versions/V1.0.2_more_charachters_for_settings+term_station_ma_raster.py +88 -0
- weatherdb/alembic/versions/V1.0.5_fix-ma-raster-values.py +152 -0
- weatherdb/alembic/versions/V1.0.6_update-views.py +22 -0
- weatherdb/broker.py +667 -0
- weatherdb/cli.py +214 -0
- weatherdb/config/ConfigParser.py +663 -0
- weatherdb/config/__init__.py +5 -0
- weatherdb/config/config_default.ini +162 -0
- weatherdb/db/__init__.py +3 -0
- weatherdb/db/connections.py +374 -0
- weatherdb/db/fixtures/RichterParameters.json +34 -0
- weatherdb/db/models.py +402 -0
- weatherdb/db/queries/get_quotient.py +155 -0
- weatherdb/db/views.py +165 -0
- weatherdb/station/GroupStation.py +710 -0
- weatherdb/station/StationBases.py +3108 -0
- weatherdb/station/StationET.py +111 -0
- weatherdb/station/StationP.py +807 -0
- weatherdb/station/StationPD.py +98 -0
- weatherdb/station/StationT.py +164 -0
- weatherdb/station/__init__.py +13 -0
- weatherdb/station/constants.py +21 -0
- weatherdb/stations/GroupStations.py +519 -0
- weatherdb/stations/StationsBase.py +1021 -0
- weatherdb/stations/StationsBaseTET.py +30 -0
- weatherdb/stations/StationsET.py +17 -0
- weatherdb/stations/StationsP.py +128 -0
- weatherdb/stations/StationsPD.py +24 -0
- weatherdb/stations/StationsT.py +21 -0
- weatherdb/stations/__init__.py +11 -0
- weatherdb/utils/TimestampPeriod.py +369 -0
- weatherdb/utils/__init__.py +3 -0
- weatherdb/utils/dwd.py +350 -0
- weatherdb/utils/geometry.py +69 -0
- weatherdb/utils/get_data.py +285 -0
- weatherdb/utils/logging.py +126 -0
- weatherdb-1.1.0.dist-info/LICENSE +674 -0
- weatherdb-1.1.0.dist-info/METADATA +765 -0
- weatherdb-1.1.0.dist-info/RECORD +77 -0
- weatherdb-1.1.0.dist-info/WHEEL +5 -0
- weatherdb-1.1.0.dist-info/entry_points.txt +2 -0
- weatherdb-1.1.0.dist-info/top_level.txt +3 -0
@@ -0,0 +1,88 @@
|
|
1
|
+
"""more characters for settings and term column in station_ma_raster
|
2
|
+
|
3
|
+
Revision ID: V1.0.2
|
4
|
+
Revises: V1.0.0
|
5
|
+
Create Date: 2024-11-06 14:33:30.129005
|
6
|
+
|
7
|
+
"""
|
8
|
+
from typing import Sequence, Union
|
9
|
+
|
10
|
+
from alembic import op
|
11
|
+
import sqlalchemy as sa
|
12
|
+
|
13
|
+
|
14
|
+
# revision identifiers, used by Alembic.
|
15
|
+
revision: str = 'V1.0.2'
|
16
|
+
down_revision: Union[str, None] = 'V1.0.0'
|
17
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
18
|
+
depends_on: Union[str, Sequence[str], None] = None
|
19
|
+
|
20
|
+
|
21
|
+
def upgrade() -> None:
|
22
|
+
op.alter_column('settings', 'value',
|
23
|
+
existing_type=sa.VARCHAR(length=20),
|
24
|
+
type_=sa.String(length=60),
|
25
|
+
existing_comment='The value of the setting',
|
26
|
+
existing_nullable=False)
|
27
|
+
|
28
|
+
op.execute(sa.text("DROP VIEW IF EXISTS station_ma_quotient_view CASCADE;"))
|
29
|
+
op.drop_constraint("station_ma_raster_pkey", "station_ma_raster")
|
30
|
+
op.add_column(
|
31
|
+
'station_ma_raster',
|
32
|
+
sa.Column('term',
|
33
|
+
sa.VARCHAR(length=4),
|
34
|
+
nullable=False,
|
35
|
+
server_default='year',
|
36
|
+
comment="The term of the raster. e.g. 'year', 'wihy', 'suhy'"))
|
37
|
+
op.alter_column('station_ma_raster', 'value',
|
38
|
+
existing_type=sa.INTEGER(),
|
39
|
+
comment='The value of the raster for the station in the database unit.',
|
40
|
+
existing_comment='The value of the raster for the station.',
|
41
|
+
existing_nullable=False)
|
42
|
+
op.execute(sa.text(
|
43
|
+
"""
|
44
|
+
UPDATE public."station_ma_raster"
|
45
|
+
SET
|
46
|
+
term= split_part("parameter", '_', 2),
|
47
|
+
parameter= split_part("parameter", '_', 1)
|
48
|
+
WHERE parameter LIKE '%\\_%';
|
49
|
+
"""))
|
50
|
+
op.alter_column(
|
51
|
+
'station_ma_raster', 'term',
|
52
|
+
existing_server_default="fill", server_default=None)
|
53
|
+
op.alter_column('station_ma_raster', 'parameter',
|
54
|
+
existing_type=sa.VARCHAR(length=7),
|
55
|
+
type_=sa.VARCHAR(length=3),
|
56
|
+
comment="The parameter of the raster. e.g. 'p', 't', 'et'",
|
57
|
+
existing_comment="The parameter of the raster. e.g. 'p_wihj', 'p_sohj', 'p_year', 't_year', 'et_year'",
|
58
|
+
existing_nullable=False)
|
59
|
+
op.create_primary_key("station_ma_raster_pkey", "station_ma_raster", ["station_id", "parameter", "raster_key", "term"])
|
60
|
+
|
61
|
+
def downgrade() -> None:
|
62
|
+
op.alter_column('settings', 'value',
|
63
|
+
existing_type=sa.String(length=60),
|
64
|
+
type_=sa.VARCHAR(length=20),
|
65
|
+
existing_comment='The value of the setting',
|
66
|
+
existing_nullable=False)
|
67
|
+
|
68
|
+
op.execute(sa.text("DROP VIEW IF EXISTS station_ma_timeseries_quotient_view CASCADE;"))
|
69
|
+
op.drop_constraint("station_ma_raster_pkey", "station_ma_raster")
|
70
|
+
op.alter_column('station_ma_raster', 'parameter',
|
71
|
+
existing_type=sa.VARCHAR(length=3),
|
72
|
+
type_=sa.VARCHAR(length=7),
|
73
|
+
comment="The parameter of the raster. e.g. 'p_wihj', 'p_sohj', 'p_year', 't_year', 'et_year'",
|
74
|
+
existing_comment="The parameter of the raster. e.g. 'p', 't', 'et'",
|
75
|
+
existing_nullable=False)
|
76
|
+
op.alter_column('station_ma_raster', 'value',
|
77
|
+
existing_type=sa.INTEGER(),
|
78
|
+
comment='The value of the raster for the station.',
|
79
|
+
existing_comment='The value of the raster for the station in the database unit.',
|
80
|
+
existing_nullable=False)
|
81
|
+
op.execute(sa.text(
|
82
|
+
"""
|
83
|
+
UPDATE public."station_ma_raster"
|
84
|
+
SET "parameter" = "parameter"||'_'||"term"
|
85
|
+
WHERE parameter NOT LIKE '%\\_%';
|
86
|
+
"""))
|
87
|
+
op.drop_column('station_ma_raster', 'term')
|
88
|
+
op.create_primary_key("station_ma_raster_pkey", "station_ma_raster", ["station_id", "raster_key", "parameter"])
|
@@ -0,0 +1,152 @@
|
|
1
|
+
"""Remove station_ma_raster values because they were faulty.
|
2
|
+
rename droped to dropped
|
3
|
+
|
4
|
+
Revision ID: V1.0.5
|
5
|
+
Revises: V1.0.2
|
6
|
+
Create Date: 2024-12-06 14:33:30.129005
|
7
|
+
|
8
|
+
"""
|
9
|
+
from typing import Sequence, Union
|
10
|
+
|
11
|
+
from alembic import op
|
12
|
+
import sqlalchemy as sa
|
13
|
+
|
14
|
+
|
15
|
+
# revision identifiers, used by Alembic.
|
16
|
+
revision: str = 'V1.0.5'
|
17
|
+
down_revision: Union[str, None] = 'V1.0.2'
|
18
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
19
|
+
depends_on: Union[str, Sequence[str], None] = None
|
20
|
+
|
21
|
+
|
22
|
+
def upgrade() -> None:
|
23
|
+
op.execute(sa.text(
|
24
|
+
"""
|
25
|
+
DELETE FROM station_ma_raster
|
26
|
+
WHERE True;
|
27
|
+
"""))
|
28
|
+
|
29
|
+
op.rename_table('droped_stations', 'dropped_stations')
|
30
|
+
op.alter_column('dropped_stations', 'station_id',
|
31
|
+
existing_type=sa.INTEGER(),
|
32
|
+
comment='The station id that got dropped',
|
33
|
+
existing_comment='The station id that got droped',
|
34
|
+
existing_nullable=False)
|
35
|
+
op.alter_column('dropped_stations', 'parameter',
|
36
|
+
existing_type=sa.VARCHAR(length=3),
|
37
|
+
comment='The parameter (p,t,et,p_d) of the station that got dropped',
|
38
|
+
existing_comment='The parameter (n,t,et,p_d) of the station that got droped',
|
39
|
+
existing_nullable=False)
|
40
|
+
op.alter_column('dropped_stations', 'why',
|
41
|
+
existing_type=sa.TEXT(),
|
42
|
+
comment='The reason why the station got dropped',
|
43
|
+
existing_comment='The reason why the station got droped',
|
44
|
+
existing_nullable=False)
|
45
|
+
op.alter_column('dropped_stations', 'timestamp',
|
46
|
+
existing_type=sa.TIMESTAMP(),
|
47
|
+
comment='The timestamp when the station got dropped',
|
48
|
+
existing_comment='The timestamp when the station got droped',
|
49
|
+
existing_nullable=False,
|
50
|
+
existing_server_default=sa.text('now()'))
|
51
|
+
op.create_table_comment(
|
52
|
+
'dropped_stations',
|
53
|
+
'This table is there to save the station ids that got dropped, so they wont GET recreated',
|
54
|
+
existing_comment='This table is there to save the station ids that got droped, so they wont GET recreated',
|
55
|
+
schema=None
|
56
|
+
)
|
57
|
+
|
58
|
+
op.alter_column('parameter_variables', 'parameter',
|
59
|
+
existing_type=sa.VARCHAR(length=3),
|
60
|
+
comment='The parameter for which the variables are valid. e.g. p/p_d/t/et.',
|
61
|
+
existing_comment='The parameter for which the variables are valid. e.g. n/p_d/t/et.',
|
62
|
+
existing_nullable=False)
|
63
|
+
|
64
|
+
op.alter_column('raw_files', 'parameter',
|
65
|
+
existing_type=sa.VARCHAR(length=3),
|
66
|
+
comment='The parameter that got downloaded for this file. e.g. t, et, p_d, p',
|
67
|
+
existing_comment='The parameter that got downloaded for this file. e.g. t, et, p_d, n',
|
68
|
+
existing_nullable=False)
|
69
|
+
|
70
|
+
op.alter_column('meta_et', 'qc_droped',
|
71
|
+
new_column_name='qc_dropped',
|
72
|
+
existing_type=sa.Float(),
|
73
|
+
nullable=True,
|
74
|
+
comment='The percentage of dropped values during the quality check')
|
75
|
+
op.alter_column('meta_p', 'qc_droped',
|
76
|
+
new_column_name='qc_dropped',
|
77
|
+
existing_type=sa.Float(),
|
78
|
+
nullable=True,
|
79
|
+
comment='The percentage of dropped values during the quality check')
|
80
|
+
op.alter_column('meta_t', 'qc_droped',
|
81
|
+
new_column_name='qc_dropped',
|
82
|
+
existing_type=sa.Float(),
|
83
|
+
nullable=True,
|
84
|
+
comment='The percentage of dropped values during the quality check')
|
85
|
+
|
86
|
+
op.execute(sa.text("DROP VIEW IF EXISTS station_ma_timeseries_quotient_view CASCADE;"))
|
87
|
+
|
88
|
+
def downgrade() -> None:
|
89
|
+
op.execute(sa.text(
|
90
|
+
"""
|
91
|
+
DELETE FROM station_ma_raster
|
92
|
+
WHERE True;
|
93
|
+
"""))
|
94
|
+
|
95
|
+
op.alter_column('raw_files', 'parameter',
|
96
|
+
existing_type=sa.VARCHAR(length=3),
|
97
|
+
comment='The parameter that got downloaded for this file. e.g. t, et, p_d, n',
|
98
|
+
existing_comment='The parameter that got downloaded for this file. e.g. t, et, p_d, p',
|
99
|
+
existing_nullable=False)
|
100
|
+
|
101
|
+
op.alter_column('parameter_variables', 'parameter',
|
102
|
+
existing_type=sa.VARCHAR(length=3),
|
103
|
+
comment='The parameter for which the variables are valid. e.g. n/p_d/t/et.',
|
104
|
+
existing_comment='The parameter for which the variables are valid. e.g. p/p_d/t/et.',
|
105
|
+
existing_nullable=False)
|
106
|
+
|
107
|
+
op.create_table_comment(
|
108
|
+
'dropped_stations',
|
109
|
+
'This table is there to save the station ids that got droped, so they wont GET recreated',
|
110
|
+
existing_comment='This table is there to save the station ids that got dropped, so they wont GET recreated',
|
111
|
+
schema=None
|
112
|
+
)
|
113
|
+
op.alter_column('dropped_stations', 'timestamp',
|
114
|
+
existing_type=sa.TIMESTAMP(),
|
115
|
+
comment='The timestamp when the station got droped',
|
116
|
+
existing_comment='The timestamp when the station got dropped',
|
117
|
+
existing_nullable=False,
|
118
|
+
existing_server_default=sa.text('now()'))
|
119
|
+
op.alter_column('dropped_stations', 'why',
|
120
|
+
existing_type=sa.TEXT(),
|
121
|
+
comment='The reason why the station got droped',
|
122
|
+
existing_comment='The reason why the station got dropped',
|
123
|
+
existing_nullable=False)
|
124
|
+
op.alter_column('dropped_stations', 'parameter',
|
125
|
+
existing_type=sa.VARCHAR(length=3),
|
126
|
+
comment='The parameter (n,t,et,p_d) of the station that got droped',
|
127
|
+
existing_comment='The parameter (p,t,et,p_d) of the station that got dropped',
|
128
|
+
existing_nullable=False)
|
129
|
+
op.alter_column('dropped_stations', 'station_id',
|
130
|
+
existing_type=sa.INTEGER(),
|
131
|
+
comment='The station id that got droped',
|
132
|
+
existing_comment='The station id that got dropped',
|
133
|
+
existing_nullable=False)
|
134
|
+
op.rename_table('dropped_stations', 'droped_stations')
|
135
|
+
|
136
|
+
op.alter_column('meta_t', 'qc_dropped',
|
137
|
+
new_column_name='qc_droped',
|
138
|
+
existing_type=sa.Float(),
|
139
|
+
nullable=True,
|
140
|
+
comment='The percentage of dropped values during the quality check')
|
141
|
+
op.alter_column('meta_p', 'qc_dropped',
|
142
|
+
new_column_name='qc_droped',
|
143
|
+
existing_type=sa.Float(),
|
144
|
+
nullable=True,
|
145
|
+
comment='The percentage of dropped values during the quality check')
|
146
|
+
op.alter_column('meta_et', 'qc_dropped',
|
147
|
+
new_column_name='qc_droped',
|
148
|
+
existing_type=sa.Float(),
|
149
|
+
nullable=True,
|
150
|
+
comment='The percentage of dropped values during the quality check')
|
151
|
+
|
152
|
+
op.execute(sa.text("DROP VIEW IF EXISTS station_ma_timeseries_raster_quotient_view CASCADE;"))
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"""Rebew the views
|
2
|
+
|
3
|
+
Revision ID: V1.0.6
|
4
|
+
Revises: V1.0.5
|
5
|
+
Create Date: 2024-12-06 14:33:30.129005
|
6
|
+
|
7
|
+
"""
|
8
|
+
from typing import Sequence, Union
|
9
|
+
|
10
|
+
|
11
|
+
# revision identifiers, used by Alembic.
|
12
|
+
revision: str = 'V1.0.6'
|
13
|
+
down_revision: Union[str, None] = 'V1.0.5'
|
14
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
15
|
+
depends_on: Union[str, Sequence[str], None] = None
|
16
|
+
|
17
|
+
|
18
|
+
def upgrade() -> None:
|
19
|
+
pass
|
20
|
+
|
21
|
+
def downgrade() -> None:
|
22
|
+
pass
|