openenergyid 0.1.19__py2.py3-none-any.whl → 0.1.20__py2.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.

Potentially problematic release.


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

openenergyid/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """Open Energy ID Python SDK."""
2
2
 
3
- __version__ = "0.1.19"
3
+ __version__ = "0.1.20"
4
4
 
5
5
  from .enums import Granularity
6
6
  from .models import TimeDataFrame, TimeSeries
@@ -1,9 +1,10 @@
1
1
  """Dynamic Tariff Analysis module."""
2
2
 
3
- from .main import calculate_dyntar_columns
3
+ from .main import calculate_dyntar_columns, summarize_result
4
4
  from .models import (
5
5
  DynamicTariffAnalysisInput,
6
6
  DynamicTariffAnalysisOutput,
7
+ DynamicTariffAnalysisOutputSummary,
7
8
  OutputColumns,
8
9
  RequiredColumns,
9
10
  )
@@ -12,6 +13,8 @@ __all__ = [
12
13
  "calculate_dyntar_columns",
13
14
  "DynamicTariffAnalysisInput",
14
15
  "DynamicTariffAnalysisOutput",
16
+ "DynamicTariffAnalysisOutputSummary",
15
17
  "OutputColumns",
16
18
  "RequiredColumns",
19
+ "summarize_result",
17
20
  ]
@@ -1,5 +1,7 @@
1
1
  """Constants for the dyntar analysis."""
2
2
 
3
+ from enum import Enum
4
+
3
5
  ELECTRICITY_DELIVERED_SMR3 = "electricity_delivered_smr3"
4
6
  ELECTRICITY_EXPORTED_SMR3 = "electricity_exported_smr3"
5
7
  ELECTRICITY_DELIVERED_SMR2 = "electricity_delivered_smr2"
@@ -20,3 +22,10 @@ HEATMAP_TOTAL = "heatmap_total"
20
22
  HEATMAP_DELIVERED_DESCRIPTION = "heatmap_delivered_description"
21
23
  HEATMAP_EXPORTED_DESCRIPTION = "heatmap_exported_description"
22
24
  HEATMAP_TOTAL_DESCRIPTION = "heatmap_total_description"
25
+
26
+
27
+ class Register(Enum):
28
+ """Register for dynamic tariff analysis."""
29
+
30
+ DELIVERY = "delivery"
31
+ EXPORT = "export"
@@ -1,6 +1,6 @@
1
1
  """Main module of the DynTar package."""
2
2
 
3
- import numpy as np
3
+ from typing import cast
4
4
  import pandas as pd
5
5
 
6
6
  from openenergyid.const import (
@@ -29,6 +29,7 @@ from .const import (
29
29
  HEATMAP_DELIVERED_DESCRIPTION,
30
30
  HEATMAP_EXPORTED_DESCRIPTION,
31
31
  HEATMAP_TOTAL_DESCRIPTION,
32
+ Register,
32
33
  )
33
34
 
34
35
 
@@ -40,15 +41,28 @@ def weigh_by_monthly_profile(df: pd.DataFrame, series_name, profile_name) -> pd.
40
41
  )
41
42
 
42
43
 
43
- def extend_dataframe_with_smr2(df: pd.DataFrame, inplace: bool = False) -> pd.DataFrame | None:
44
+ def extend_dataframe_with_smr2(
45
+ df: pd.DataFrame,
46
+ inplace: bool = False,
47
+ registers: list[Register] | None = None,
48
+ ) -> pd.DataFrame | None:
44
49
  """Extend a DataFrame with the SMR2 columns."""
45
50
  if not inplace:
46
51
  result_df = df.copy()
47
52
  else:
48
53
  result_df = df
49
54
 
50
- result_df[ELECTRICITY_DELIVERED_SMR2] = weigh_by_monthly_profile(df, ELECTRICITY_DELIVERED, RLP)
51
- result_df[ELECTRICITY_EXPORTED_SMR2] = weigh_by_monthly_profile(df, ELECTRICITY_EXPORTED, SPP)
55
+ if registers is None:
56
+ registers = [Register.DELIVERY, Register.EXPORT]
57
+
58
+ if Register.DELIVERY in registers:
59
+ result_df[ELECTRICITY_DELIVERED_SMR2] = weigh_by_monthly_profile(
60
+ df, ELECTRICITY_DELIVERED, RLP
61
+ )
62
+ if Register.EXPORT in registers:
63
+ result_df[ELECTRICITY_EXPORTED_SMR2] = weigh_by_monthly_profile(
64
+ df, ELECTRICITY_EXPORTED, SPP
65
+ )
52
66
 
53
67
  result_df.rename(
54
68
  columns={
@@ -56,6 +70,7 @@ def extend_dataframe_with_smr2(df: pd.DataFrame, inplace: bool = False) -> pd.Da
56
70
  ELECTRICITY_EXPORTED: ELECTRICITY_EXPORTED_SMR3,
57
71
  },
58
72
  inplace=True,
73
+ errors="ignore",
59
74
  )
60
75
 
61
76
  if not inplace:
@@ -63,26 +78,33 @@ def extend_dataframe_with_smr2(df: pd.DataFrame, inplace: bool = False) -> pd.Da
63
78
  return None
64
79
 
65
80
 
66
- def extend_dataframe_with_costs(df: pd.DataFrame, inplace: bool = False) -> pd.DataFrame | None:
81
+ def extend_dataframe_with_costs(
82
+ df: pd.DataFrame, inplace: bool = False, registers: list[Register] | None = None
83
+ ) -> pd.DataFrame | None:
67
84
  """Extend a DataFrame with the cost columns."""
68
85
  if not inplace:
69
86
  result_df = df.copy()
70
87
  else:
71
88
  result_df = df
72
89
 
73
- result_df[COST_ELECTRICITY_DELIVERED_SMR2] = (
74
- df[ELECTRICITY_DELIVERED_SMR2] * df[PRICE_ELECTRICITY_DELIVERED]
75
- )
76
- result_df[COST_ELECTRICITY_EXPORTED_SMR2] = (
77
- df[ELECTRICITY_EXPORTED_SMR2] * df[PRICE_ELECTRICITY_EXPORTED] * -1
78
- )
90
+ if registers is None:
91
+ registers = [Register.DELIVERY, Register.EXPORT]
79
92
 
80
- result_df[COST_ELECTRICITY_DELIVERED_SMR3] = (
81
- df[ELECTRICITY_DELIVERED_SMR3] * df[PRICE_ELECTRICITY_DELIVERED]
82
- )
83
- result_df[COST_ELECTRICITY_EXPORTED_SMR3] = (
84
- df[ELECTRICITY_EXPORTED_SMR3] * df[PRICE_ELECTRICITY_EXPORTED] * -1
85
- )
93
+ if Register.DELIVERY in registers:
94
+ result_df[COST_ELECTRICITY_DELIVERED_SMR2] = (
95
+ df[ELECTRICITY_DELIVERED_SMR2] * df[PRICE_ELECTRICITY_DELIVERED]
96
+ )
97
+ result_df[COST_ELECTRICITY_DELIVERED_SMR3] = (
98
+ df[ELECTRICITY_DELIVERED_SMR3] * df[PRICE_ELECTRICITY_DELIVERED]
99
+ )
100
+
101
+ if Register.EXPORT in registers:
102
+ result_df[COST_ELECTRICITY_EXPORTED_SMR2] = (
103
+ df[ELECTRICITY_EXPORTED_SMR2] * df[PRICE_ELECTRICITY_EXPORTED] * -1
104
+ )
105
+ result_df[COST_ELECTRICITY_EXPORTED_SMR3] = (
106
+ df[ELECTRICITY_EXPORTED_SMR3] * df[PRICE_ELECTRICITY_EXPORTED] * -1
107
+ )
86
108
 
87
109
  if not inplace:
88
110
  return result_df
@@ -90,63 +112,70 @@ def extend_dataframe_with_costs(df: pd.DataFrame, inplace: bool = False) -> pd.D
90
112
 
91
113
 
92
114
  def extend_dataframe_with_weighted_prices(
93
- df: pd.DataFrame, inplace: bool = False
115
+ df: pd.DataFrame, inplace: bool = False, registers: list[Register] | None = None
94
116
  ) -> pd.DataFrame | None:
95
117
  """Extend a DataFrame with the weighted price columns."""
96
118
  if not inplace:
97
119
  df = df.copy()
98
120
 
99
- rlp_weighted_price_delivered = (df[PRICE_ELECTRICITY_DELIVERED] * df[RLP]).resample(
100
- "MS"
101
- ).sum() / df[RLP].resample("MS").sum()
102
- df[RLP_WEIGHTED_PRICE_DELIVERED] = rlp_weighted_price_delivered.reindex_like(
103
- df[RLP], method="ffill"
104
- )
105
- spp_weighted_price_exported = (df[PRICE_ELECTRICITY_EXPORTED] * df[SPP]).resample(
106
- "MS"
107
- ).sum() / df[SPP].resample("MS").sum()
108
- df[SPP_WEIGHTED_PRICE_EXPORTED] = spp_weighted_price_exported.reindex_like(
109
- df[SPP], method="ffill"
110
- )
121
+ if registers is None:
122
+ registers = [Register.DELIVERY, Register.EXPORT]
123
+
124
+ if Register.DELIVERY in registers:
125
+ rlp_weighted_price_delivered = (df[PRICE_ELECTRICITY_DELIVERED] * df[RLP]).resample(
126
+ "MS"
127
+ ).sum() / df[RLP].resample("MS").sum()
128
+ df[RLP_WEIGHTED_PRICE_DELIVERED] = rlp_weighted_price_delivered.reindex_like(
129
+ df[RLP], method="ffill"
130
+ )
131
+
132
+ if Register.EXPORT in registers:
133
+ spp_weighted_price_exported = (df[PRICE_ELECTRICITY_EXPORTED] * df[SPP]).resample(
134
+ "MS"
135
+ ).sum() / df[SPP].resample("MS").sum()
136
+ df[SPP_WEIGHTED_PRICE_EXPORTED] = spp_weighted_price_exported.reindex_like(
137
+ df[SPP], method="ffill"
138
+ )
111
139
 
112
140
  if not inplace:
113
141
  return df
114
142
  return None
115
143
 
116
144
 
117
- def extend_dataframe_with_heatmap(df: pd.DataFrame, inplace: bool = False) -> pd.DataFrame | None:
145
+ def extend_dataframe_with_heatmap(
146
+ df: pd.DataFrame, inplace: bool = False, registers: list[Register] | None = None
147
+ ) -> pd.DataFrame | None:
118
148
  """Extend a DataFrame with the heatmap columns."""
119
149
  if not inplace:
120
150
  df = df.copy()
121
151
 
122
- normalized_energy_delta_delivered = (
123
- df[ELECTRICITY_DELIVERED_SMR2] - df[ELECTRICITY_DELIVERED_SMR3]
124
- ) / df[ELECTRICITY_DELIVERED_SMR2]
125
- normalized_price_delta_delivered = (
126
- df[RLP_WEIGHTED_PRICE_DELIVERED] - df[PRICE_ELECTRICITY_DELIVERED]
127
- ) / df[RLP_WEIGHTED_PRICE_DELIVERED]
128
- heatmap_score_delivered = normalized_energy_delta_delivered * normalized_price_delta_delivered
129
-
130
- normalized_energy_delta_exported = (
131
- df[ELECTRICITY_EXPORTED_SMR2] - df[ELECTRICITY_EXPORTED_SMR3]
132
- ) / df[ELECTRICITY_EXPORTED_SMR2]
133
- normalized_energy_delta_exported = normalized_energy_delta_exported.replace(
134
- [np.inf, -np.inf], np.nan
135
- )
136
- normalized_price_delta_exported = (
137
- df[SPP_WEIGHTED_PRICE_EXPORTED] - df[PRICE_ELECTRICITY_EXPORTED]
138
- ) / df[SPP_WEIGHTED_PRICE_EXPORTED]
139
- heatmap_score_exported = normalized_energy_delta_exported * normalized_price_delta_exported
140
-
141
- heatmap_score_delivered.fillna(0, inplace=True)
142
- heatmap_score_exported.fillna(0, inplace=True)
143
-
144
- # Invert scores so that positive values indicate a positive impact
145
- heatmap_score_delivered = -heatmap_score_delivered
146
- heatmap_score_combined = heatmap_score_delivered + heatmap_score_exported
147
-
148
- df[HEATMAP_DELIVERED] = heatmap_score_delivered
149
- df[HEATMAP_EXPORTED] = heatmap_score_exported
152
+ if registers is None:
153
+ registers = [Register.DELIVERY, Register.EXPORT]
154
+
155
+ if Register.DELIVERY in registers:
156
+ energy_delta_delivered = df[ELECTRICITY_DELIVERED_SMR2] - df[ELECTRICITY_DELIVERED_SMR3]
157
+ price_delta_delivered = df[RLP_WEIGHTED_PRICE_DELIVERED] - df[PRICE_ELECTRICITY_DELIVERED]
158
+ heatmap_score_delivered = energy_delta_delivered * price_delta_delivered
159
+ heatmap_score_delivered.fillna(0, inplace=True)
160
+ # Invert score so that positive values indicate a positive impact
161
+ heatmap_score_delivered = -heatmap_score_delivered
162
+ df[HEATMAP_DELIVERED] = heatmap_score_delivered
163
+
164
+ if Register.EXPORT in registers:
165
+ energy_delta_exported = df[ELECTRICITY_EXPORTED_SMR2] - df[ELECTRICITY_EXPORTED_SMR3]
166
+ price_delta_exported = df[SPP_WEIGHTED_PRICE_EXPORTED] - df[PRICE_ELECTRICITY_EXPORTED]
167
+ heatmap_score_exported = energy_delta_exported * price_delta_exported
168
+ heatmap_score_exported.fillna(0, inplace=True)
169
+ df[HEATMAP_EXPORTED] = heatmap_score_exported
170
+
171
+ if Register.DELIVERY in registers and Register.EXPORT in registers:
172
+ heatmap_score_delivered = cast(pd.Series, df[HEATMAP_DELIVERED])
173
+ heatmap_score_exported = cast(pd.Series, df[HEATMAP_EXPORTED])
174
+ heatmap_score_combined = heatmap_score_delivered + heatmap_score_exported
175
+ elif Register.DELIVERY in registers:
176
+ heatmap_score_combined = heatmap_score_delivered
177
+ else:
178
+ heatmap_score_combined = heatmap_score_exported
150
179
  df[HEATMAP_TOTAL] = heatmap_score_combined
151
180
 
152
181
  if not inplace:
@@ -194,56 +223,90 @@ def map_total_description(
194
223
 
195
224
 
196
225
  def extend_dataframe_with_heatmap_description(
197
- df: pd.DataFrame, inplace: bool = False
226
+ df: pd.DataFrame, inplace: bool = False, registers: list[Register] | None = None
198
227
  ) -> pd.DataFrame | None:
199
228
  """Extend a DataFrame with the heatmap description columns."""
200
229
  if not inplace:
201
230
  df = df.copy()
202
231
 
203
- df[HEATMAP_DELIVERED_DESCRIPTION] = list(
204
- map(
205
- map_delivery_description,
206
- df[PRICE_ELECTRICITY_DELIVERED],
207
- df[RLP_WEIGHTED_PRICE_DELIVERED],
208
- df[ELECTRICITY_DELIVERED_SMR3],
209
- df[ELECTRICITY_DELIVERED_SMR2],
232
+ if registers is None:
233
+ registers = [Register.DELIVERY, Register.EXPORT]
234
+
235
+ if Register.DELIVERY in registers:
236
+ df[HEATMAP_DELIVERED_DESCRIPTION] = list(
237
+ map(
238
+ map_delivery_description,
239
+ df[PRICE_ELECTRICITY_DELIVERED],
240
+ df[RLP_WEIGHTED_PRICE_DELIVERED],
241
+ df[ELECTRICITY_DELIVERED_SMR3],
242
+ df[ELECTRICITY_DELIVERED_SMR2],
243
+ )
210
244
  )
211
- )
212
- df[HEATMAP_EXPORTED_DESCRIPTION] = list(
213
- map(
214
- map_export_description,
215
- df[PRICE_ELECTRICITY_EXPORTED],
216
- df[SPP_WEIGHTED_PRICE_EXPORTED],
217
- df[ELECTRICITY_EXPORTED_SMR3],
218
- df[ELECTRICITY_EXPORTED_SMR2],
245
+
246
+ if Register.EXPORT in registers:
247
+ df[HEATMAP_EXPORTED_DESCRIPTION] = list(
248
+ map(
249
+ map_export_description,
250
+ df[PRICE_ELECTRICITY_EXPORTED],
251
+ df[SPP_WEIGHTED_PRICE_EXPORTED],
252
+ df[ELECTRICITY_EXPORTED_SMR3],
253
+ df[ELECTRICITY_EXPORTED_SMR2],
254
+ )
219
255
  )
220
- )
221
256
 
222
- df[HEATMAP_TOTAL_DESCRIPTION] = list(
223
- map(
224
- map_total_description,
225
- df[HEATMAP_DELIVERED].abs(),
226
- df[HEATMAP_EXPORTED].abs(),
227
- df[HEATMAP_DELIVERED_DESCRIPTION],
228
- df[HEATMAP_EXPORTED_DESCRIPTION],
257
+ if Register.DELIVERY in registers and Register.EXPORT in registers:
258
+ df[HEATMAP_TOTAL_DESCRIPTION] = list(
259
+ map(
260
+ map_total_description,
261
+ df[HEATMAP_DELIVERED].abs(),
262
+ df[HEATMAP_EXPORTED].abs(),
263
+ df[HEATMAP_DELIVERED_DESCRIPTION],
264
+ df[HEATMAP_EXPORTED_DESCRIPTION],
265
+ )
229
266
  )
230
- )
267
+ elif Register.DELIVERY in registers:
268
+ df[HEATMAP_TOTAL_DESCRIPTION] = df[HEATMAP_DELIVERED_DESCRIPTION]
269
+ else:
270
+ df[HEATMAP_TOTAL_DESCRIPTION] = df[HEATMAP_EXPORTED_DESCRIPTION]
231
271
 
232
272
  if not inplace:
233
273
  return df
234
274
 
235
275
 
236
- def calculate_dyntar_columns(df: pd.DataFrame, inplace: bool = False) -> pd.DataFrame | None:
276
+ def calculate_dyntar_columns(
277
+ df: pd.DataFrame,
278
+ inplace: bool = False,
279
+ registers: list[Register] | None = None,
280
+ ) -> pd.DataFrame | None:
237
281
  """Calculate all columns required for the dynamic tariff analysis."""
238
282
  if not inplace:
239
283
  df = df.copy()
240
284
 
241
- extend_dataframe_with_smr2(df, inplace=True)
242
- extend_dataframe_with_costs(df, inplace=True)
243
- extend_dataframe_with_weighted_prices(df, inplace=True)
244
- extend_dataframe_with_heatmap(df, inplace=True)
245
- extend_dataframe_with_heatmap_description(df, inplace=True)
285
+ if registers is None:
286
+ registers = [Register.DELIVERY, Register.EXPORT]
287
+
288
+ extend_dataframe_with_smr2(df, inplace=True, registers=registers)
289
+ extend_dataframe_with_costs(df, inplace=True, registers=registers)
290
+ extend_dataframe_with_weighted_prices(df, inplace=True, registers=registers)
291
+ extend_dataframe_with_heatmap(df, inplace=True, registers=registers)
292
+ extend_dataframe_with_heatmap_description(df, inplace=True, registers=registers)
246
293
 
247
294
  if not inplace:
248
295
  return df
249
296
  return None
297
+
298
+
299
+ def summarize_result(df: pd.DataFrame) -> pd.Series:
300
+ """Summarize the dynamic tariff analysis result."""
301
+ summary = df.filter(like="cost").sum()
302
+
303
+ abs_smr2 = summary.filter(like="smr2").abs().sum()
304
+
305
+ summary["cost_electricity_total_smr2"] = summary.filter(like="smr2").sum()
306
+ summary["cost_electricity_total_smr3"] = summary.filter(like="smr3").sum()
307
+
308
+ summary["ratio"] = (
309
+ summary["cost_electricity_total_smr3"] - summary["cost_electricity_total_smr2"]
310
+ ) / abs_smr2
311
+
312
+ return summary
@@ -1,9 +1,10 @@
1
1
  """Models for dynamic tariff analysis."""
2
2
 
3
3
  from typing import Literal
4
- from pydantic import Field, conlist, confloat
4
+ from pydantic import Field, conlist, confloat, BaseModel
5
5
 
6
6
  from openenergyid.models import TimeDataFrame
7
+ from .const import Register
7
8
 
8
9
 
9
10
  RequiredColumns = Literal[
@@ -43,18 +44,53 @@ class DynamicTariffAnalysisInput(TimeDataFrame):
43
44
  """Input frame for dynamic tariff analysis."""
44
45
 
45
46
  columns: list[RequiredColumns] = Field(
46
- min_length=len(RequiredColumns.__args__),
47
+ min_length=3,
47
48
  max_length=len(RequiredColumns.__args__),
48
49
  examples=[RequiredColumns.__args__],
49
50
  )
50
51
  data: list[
51
52
  conlist(
52
53
  item_type=confloat(allow_inf_nan=True),
53
- min_length=len(RequiredColumns.__args__),
54
+ min_length=3,
54
55
  max_length=len(RequiredColumns.__args__),
55
56
  ) # type: ignore
56
57
  ] = Field(examples=[[0.0] * len(RequiredColumns.__args__)])
57
58
 
59
+ @property
60
+ def registers(self) -> list[Register]:
61
+ """Check which registers are present in the input data."""
62
+ registers = []
63
+ columns = list(self.columns)
64
+ # if "electricity_delivered", "price_electricity_delivered" and "RLP" are present
65
+ if all(
66
+ column in columns
67
+ for column in [
68
+ "electricity_delivered",
69
+ "price_electricity_delivered",
70
+ "RLP",
71
+ ]
72
+ ):
73
+ registers.append(Register.DELIVERY)
74
+ # if "electricity_exported", "price_electricity_exported" and "SPP" are present
75
+ if all(
76
+ column in columns
77
+ for column in ["electricity_exported", "price_electricity_exported", "SPP"]
78
+ ):
79
+ registers.append(Register.EXPORT)
80
+ return registers
81
+
82
+
83
+ class DynamicTariffAnalysisOutputSummary(BaseModel):
84
+ """Summary of the dynamic tariff analysis output."""
85
+
86
+ cost_electricity_delivered_smr2: float | None = None
87
+ cost_electricity_delivered_smr3: float | None = None
88
+ cost_electricity_exported_smr2: float | None = None
89
+ cost_electricity_exported_smr3: float | None = None
90
+ cost_electricity_total_smr2: float | None = None
91
+ cost_electricity_total_smr3: float | None = None
92
+ ratio: float | None = None
93
+
58
94
 
59
95
  class DynamicTariffAnalysisOutput(TimeDataFrame):
60
96
  """Output frame for dynamic tariff analysis."""
@@ -71,3 +107,4 @@ class DynamicTariffAnalysisOutput(TimeDataFrame):
71
107
  max_length=len(OutputColumns.__args__),
72
108
  ) # type: ignore
73
109
  ] = Field(examples=[[0.0] * len(OutputColumns.__args__)])
110
+ summary: DynamicTariffAnalysisOutputSummary | None = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openenergyid
3
- Version: 0.1.19
3
+ Version: 0.1.20
4
4
  Summary: Open Source Python library for energy analytics and simulations
5
5
  Project-URL: Homepage, https://energyid.eu
6
6
  Project-URL: Repository, https://github.com/EnergieID/OpenEnergyID
@@ -1,14 +1,14 @@
1
- openenergyid/__init__.py,sha256=Rw7W-OZewpvJwVPQ0xjjsiXdeT-QpbmEmBER7arAMYo,193
1
+ openenergyid/__init__.py,sha256=XVOYN9RAdcNJV1DaB0k2pD_zyPnk2aF6D5Tk4HFt4TU,193
2
2
  openenergyid/const.py,sha256=D-xUnUyVuLmphClkePgxpFP6z0RDhw_6m7rX0BHBgrw,823
3
3
  openenergyid/enums.py,sha256=jdw4CB1gkisx0re_SesrTEyh_T-UxYp6uieE7iYlHdA,357
4
4
  openenergyid/models.py,sha256=CO6VdthCOQ9hNXqVSan_4IOBpiQvOix-ea3U6TR7Vgc,4343
5
5
  openenergyid/capacity/__init__.py,sha256=1En96HlPV8kd1hOJO9RjRbXNInp5ZSkmjsjp0jfZlcQ,221
6
6
  openenergyid/capacity/main.py,sha256=G6_EtXs1k_W-fxS33pFrCNKajuH81skdI32zp5RX9bI,3674
7
7
  openenergyid/capacity/models.py,sha256=qi0IFyF_QOVleSzN8g0U2Fzqcc9ZDfNKt8oteFLY6Q0,832
8
- openenergyid/dyntar/__init__.py,sha256=iQXQXrEQOiVNeeF6LRmUf3oOhKlGjMNF7o4T04IWTGA,371
9
- openenergyid/dyntar/const.py,sha256=17qL0-S0SImsqrDEDrGS2GLyJYcJRw6GmmcTiML7tR0,956
10
- openenergyid/dyntar/main.py,sha256=yRPamC5dHwpiDj07RM2iVKk3gZk8a81zKSjOsjewACo,8247
11
- openenergyid/dyntar/models.py,sha256=FZq7HI1F-3nVeHwPkuB38-8u32JzdvsZaCzrhirFD2g,2094
8
+ openenergyid/dyntar/__init__.py,sha256=lUrk7ktS7yAqiafRHFoBE0RvFSI9mzDoO37diwLHuBg,495
9
+ openenergyid/dyntar/const.py,sha256=eJJV9VfpHlS9vWV47DWQkS3ICIXWhDmG4cU-ofbZJ3Q,1100
10
+ openenergyid/dyntar/main.py,sha256=i8EkayRicnMhG66cyrxGwUumFx3UGe7KDSImfFqmK04,10638
11
+ openenergyid/dyntar/models.py,sha256=lI4IjdAFallhsCqbw-EbBPbmk0g2MACgZnmMtTX7Pq0,3452
12
12
  openenergyid/energysharing/__init__.py,sha256=A4JfrUYf-hBCzhUm0qL1GGlNMvpO8OwXJo80dJxFIvw,274
13
13
  openenergyid/energysharing/const.py,sha256=X2zEPtTlsmZ66w6RmLS_h8NmdzObAEi5N6-0yrLN5V4,219
14
14
  openenergyid/energysharing/data_formatting.py,sha256=Kwuhyn6ao_8Brdm9frlA6VzYOqimNYZsRbYwNXnE7yc,2583
@@ -19,7 +19,7 @@ openenergyid/mvlr/helpers.py,sha256=Uzbfrj3IpH26wA206KOl0hNucKE-n9guJNC_EROBVKA,
19
19
  openenergyid/mvlr/main.py,sha256=cn7jZ98cHn2eh-0zG9q8Pad0Ft_FuI-u3a-eeHeF8jA,1304
20
20
  openenergyid/mvlr/models.py,sha256=XvkViOLlYqi0ffgF3AD4Jvk3yL05gsoKdKgBAsGJ7L4,8581
21
21
  openenergyid/mvlr/mvlr.py,sha256=F7WvWnZQtqUmK1vsguemsn9n8pDDk3tQ1weOlv-bo0c,18626
22
- openenergyid-0.1.19.dist-info/METADATA,sha256=q8cD0GQr7JDOoStIRDI8r5z-9gvgt4dkuh98vBDWJBw,2477
23
- openenergyid-0.1.19.dist-info/WHEEL,sha256=fl6v0VwpzfGBVsGtkAkhILUlJxROXbA3HvRL6Fe3140,105
24
- openenergyid-0.1.19.dist-info/licenses/LICENSE,sha256=NgRdcNHwyXVCXZ8sJwoTp0DCowThJ9LWWl4xhbV1IUY,1074
25
- openenergyid-0.1.19.dist-info/RECORD,,
22
+ openenergyid-0.1.20.dist-info/METADATA,sha256=UJ-vbPX22VRhTyEtFnf0XzxrQa-U2LbdocBPcUFucuo,2477
23
+ openenergyid-0.1.20.dist-info/WHEEL,sha256=fl6v0VwpzfGBVsGtkAkhILUlJxROXbA3HvRL6Fe3140,105
24
+ openenergyid-0.1.20.dist-info/licenses/LICENSE,sha256=NgRdcNHwyXVCXZ8sJwoTp0DCowThJ9LWWl4xhbV1IUY,1074
25
+ openenergyid-0.1.20.dist-info/RECORD,,