gazpar2haws 0.3.0b23__py3-none-any.whl → 0.3.0b24__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
gazpar2haws/date_array.py CHANGED
@@ -11,6 +11,7 @@ from pydantic import BaseModel, ConfigDict, model_validator
11
11
  class DateArray(BaseModel): # pylint: disable=too-few-public-methods
12
12
  model_config = ConfigDict(arbitrary_types_allowed=True)
13
13
 
14
+ name: Optional[str] = None
14
15
  start_date: dt.date
15
16
  end_date: dt.date
16
17
  array: Optional[np.ndarray] = None
@@ -39,7 +40,7 @@ class DateArray(BaseModel): # pylint: disable=too-few-public-methods
39
40
  if self.array is None:
40
41
  raise ValueError("Array is not initialized")
41
42
 
42
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
43
+ result = DateArray(name=f"cumsum_{self.name}", start_date=self.start_date, end_date=self.end_date)
43
44
  result.array = np.cumsum(self.array)
44
45
  return result
45
46
 
@@ -77,7 +78,10 @@ class DateArray(BaseModel): # pylint: disable=too-few-public-methods
77
78
  f"Date slice [{start_date}:{end_date}] is out of range [{self.start_date}:{self.end_date}]"
78
79
  )
79
80
  return DateArray(
80
- start_date=start_date, end_date=end_date + timedelta(-1), array=self.array[start_index:end_index]
81
+ name=self.name,
82
+ start_date=start_date,
83
+ end_date=end_date + timedelta(-1),
84
+ array=self.array[start_index:end_index],
81
85
  )
82
86
  raise TypeError("Key must be a date or a slice of dates")
83
87
 
@@ -110,8 +114,6 @@ class DateArray(BaseModel): # pylint: disable=too-few-public-methods
110
114
  raise ValueError(
111
115
  f"Date slice [{start_date}:{end_date}] is out of range [{self.start_date}:{self.end_date}]"
112
116
  )
113
- self.start_date = start_date
114
- self.end_date = end_date + timedelta(-1)
115
117
  if isinstance(value, float):
116
118
  self.array[start_index:end_index] = value
117
119
  elif isinstance(value, DateArray):
@@ -156,15 +158,15 @@ class DateArray(BaseModel): # pylint: disable=too-few-public-methods
156
158
  raise ValueError("Array is not initialized")
157
159
 
158
160
  if isinstance(other, (int, float)):
159
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
161
+ result = DateArray(name=self.name, start_date=self.start_date, end_date=self.end_date)
160
162
  result.array = self.array + other
161
163
  return result
162
164
  if isinstance(other, DateArray):
163
165
  if other.array is None:
164
166
  raise ValueError("Array is not initialized")
165
167
  if not self.is_aligned_with(other):
166
- raise ValueError("Date arrays are not aligned")
167
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
168
+ raise ValueError(f"Date arrays {self} and {other} are not aligned")
169
+ result = DateArray(name=self.name, start_date=self.start_date, end_date=self.end_date)
168
170
  result.array = self.array + other.array # pylint: disable=protected-access
169
171
  return result
170
172
 
@@ -183,15 +185,15 @@ class DateArray(BaseModel): # pylint: disable=too-few-public-methods
183
185
  raise ValueError("Array is not initialized")
184
186
 
185
187
  if isinstance(other, (int, float)):
186
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
188
+ result = DateArray(name=self.name, start_date=self.start_date, end_date=self.end_date)
187
189
  result.array = self.array - other
188
190
  return result
189
191
  if isinstance(other, DateArray):
190
192
  if other.array is None:
191
193
  raise ValueError("Array is not initialized")
192
194
  if not self.is_aligned_with(other):
193
- raise ValueError("Date arrays are not aligned")
194
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
195
+ raise ValueError(f"Date arrays {self} and {other} are not aligned")
196
+ result = DateArray(name=self.name, start_date=self.start_date, end_date=self.end_date)
195
197
  result.array = self.array - other.array # pylint: disable=protected-access
196
198
  return result
197
199
 
@@ -210,15 +212,15 @@ class DateArray(BaseModel): # pylint: disable=too-few-public-methods
210
212
  raise ValueError("Array is not initialized")
211
213
 
212
214
  if isinstance(other, (int, float)):
213
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
215
+ result = DateArray(name=self.name, start_date=self.start_date, end_date=self.end_date)
214
216
  result.array = self.array * other
215
217
  return result
216
218
  if isinstance(other, DateArray):
217
219
  if other.array is None:
218
220
  raise ValueError("Array is not initialized")
219
221
  if not self.is_aligned_with(other):
220
- raise ValueError("Date arrays are not aligned")
221
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
222
+ raise ValueError(f"Date arrays {self} and {other} are not aligned")
223
+ result = DateArray(name=self.name, start_date=self.start_date, end_date=self.end_date)
222
224
  result.array = self.array * other.array # pylint: disable=protected-access
223
225
  return result
224
226
 
@@ -237,21 +239,21 @@ class DateArray(BaseModel): # pylint: disable=too-few-public-methods
237
239
  raise ValueError("Array is not initialized")
238
240
 
239
241
  if isinstance(other, (int, float)):
240
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
242
+ result = DateArray(name=self.name, start_date=self.start_date, end_date=self.end_date)
241
243
  result.array = self.array / other
242
244
  return result
243
245
  if isinstance(other, DateArray):
244
246
  if other.array is None:
245
247
  raise ValueError("Array is not initialized")
246
248
  if not self.is_aligned_with(other):
247
- raise ValueError("Date arrays are not aligned")
248
- result = DateArray(start_date=self.start_date, end_date=self.end_date)
249
+ raise ValueError(f"Date arrays {self} and {other} are not aligned")
250
+ result = DateArray(name=self.name, start_date=self.start_date, end_date=self.end_date)
249
251
  result.array = self.array / other.array # pylint: disable=protected-access
250
252
  return result
251
253
 
252
254
  raise TypeError("Other must be a date array or a number")
253
255
 
254
256
  # ----------------------------------
255
- def __repr__(self) -> str:
257
+ def __str__(self) -> str:
256
258
 
257
- return f"DateArray(start_date={self.start_date}, end_date={self.end_date}, array={self.array})"
259
+ return f"DateArray(name={self.name}, start_date={self.start_date}, end_date={self.end_date}, array={self.array}, slots={(self.end_date - self.start_date).days + 1}, length={len(self)})"
gazpar2haws/gazpar.py CHANGED
@@ -260,7 +260,7 @@ class Gazpar:
260
260
  # Fill the quantity array.
261
261
  if reading[property_name] is not None:
262
262
  if res is None:
263
- res = DateArray(start_date=start_date, end_date=end_date)
263
+ res = DateArray(name=property_name, start_date=start_date, end_date=end_date)
264
264
  res[reading_date] = reading[property_name]
265
265
 
266
266
  return res
gazpar2haws/model.py CHANGED
@@ -104,13 +104,14 @@ class Value(Period):
104
104
 
105
105
  # ----------------------------------
106
106
  class ValueArray(Period):
107
+ name: Optional[str] = None
107
108
  value_array: Optional[DateArray] = None
108
109
 
109
110
  @model_validator(mode="after")
110
111
  def set_value_array(self):
111
112
  if self.value_array is None:
112
113
  self.value_array = DateArray(
113
- start_date=self.start_date, end_date=self.end_date
114
+ name=self.name, start_date=self.start_date, end_date=self.end_date
114
115
  ) # pylint: disable=attribute-defined-outside-init
115
116
  return self
116
117
 
gazpar2haws/pricer.py CHANGED
@@ -105,6 +105,7 @@ class Pricer:
105
105
  )
106
106
  else:
107
107
  subscription_price_array = SubscriptionPriceArray(
108
+ name="subscription_prices",
108
109
  start_date=start_date,
109
110
  end_date=end_date,
110
111
  value_unit=price_unit,
@@ -121,6 +122,7 @@ class Pricer:
121
122
  )
122
123
  else:
123
124
  transport_price_array = TransportPriceArray(
125
+ name="transport_prices",
124
126
  start_date=start_date,
125
127
  end_date=end_date,
126
128
  value_unit=price_unit,
@@ -137,6 +139,7 @@ class Pricer:
137
139
  )
138
140
  else:
139
141
  energy_taxes_price_array = EnergyTaxesPriceArray(
142
+ name="energy_taxes",
140
143
  start_date=start_date,
141
144
  end_date=end_date,
142
145
  value_unit=price_unit,
@@ -144,6 +147,7 @@ class Pricer:
144
147
  )
145
148
 
146
149
  res = CostArray(
150
+ name="costs",
147
151
  start_date=start_date,
148
152
  end_date=end_date,
149
153
  value_unit=price_unit,
@@ -167,7 +171,7 @@ class Pricer:
167
171
  res = dict[str, VatRateArray]()
168
172
  vat_rate_by_id = dict[str, list[VatRate]]()
169
173
  for vat_rate in vat_rates:
170
- res[vat_rate.id] = VatRateArray(id=vat_rate.id, start_date=start_date, end_date=end_date)
174
+ res[vat_rate.id] = VatRateArray(name="vats", id=vat_rate.id, start_date=start_date, end_date=end_date)
171
175
  if vat_rate.id not in vat_rate_by_id:
172
176
  vat_rate_by_id[vat_rate.id] = list[VatRate]()
173
177
  vat_rate_by_id[vat_rate.id].append(vat_rate)
@@ -193,6 +197,7 @@ class Pricer:
193
197
  first_consumption_price = consumption_prices[0]
194
198
 
195
199
  res = ConsumptionPriceArray(
200
+ name="consumption_prices",
196
201
  start_date=start_date,
197
202
  end_date=end_date,
198
203
  value_unit=first_consumption_price.value_unit,
@@ -220,6 +225,7 @@ class Pricer:
220
225
  first_subscription_price = subscription_prices[0]
221
226
 
222
227
  res = SubscriptionPriceArray(
228
+ name="subscription_prices",
223
229
  start_date=start_date,
224
230
  end_date=end_date,
225
231
  value_unit=first_subscription_price.value_unit,
@@ -247,6 +253,7 @@ class Pricer:
247
253
  first_transport_price = transport_prices[0]
248
254
 
249
255
  res = TransportPriceArray(
256
+ name="transport_prices",
250
257
  start_date=start_date,
251
258
  end_date=end_date,
252
259
  value_unit=first_transport_price.value_unit,
@@ -274,6 +281,7 @@ class Pricer:
274
281
  first_energy_taxes_price = energy_taxes_prices[0]
275
282
 
276
283
  res = EnergyTaxesPriceArray(
284
+ name="energy_taxes",
277
285
  start_date=start_date,
278
286
  end_date=end_date,
279
287
  value_unit=first_energy_taxes_price.value_unit,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: gazpar2haws
3
- Version: 0.3.0b23
3
+ Version: 0.3.0b24
4
4
  Summary: Gazpar2HAWS is a gateway that reads data history from the GrDF (French gas provider) meter and send it to Home Assistant using WebSocket interface
5
5
  License: MIT License
6
6
 
@@ -3,13 +3,13 @@ gazpar2haws/__main__.py,sha256=wD28dqa3weiz5cj9--hgLLN7FnW0eeA9ZmlIvriKXNk,3125
3
3
  gazpar2haws/bridge.py,sha256=VEl22xt2Szgk_FVrxSvZNxp3T5Q2JXc9ulfrunHHkmo,3685
4
4
  gazpar2haws/config_utils.py,sha256=yT2G-naMA2Vst6bQdm1bD2oVsPTU3Q_RuukCs-dZ6Ak,2280
5
5
  gazpar2haws/configuration.py,sha256=24q8FUBMS1vpqU6RYAv5Au179HbiBk1CZIEMiBGuXq0,722
6
- gazpar2haws/date_array.py,sha256=RxvK_ZQxaeYCg4kg088_lMh5b1WDBa4wXPPqSIUDS2E,9779
7
- gazpar2haws/gazpar.py,sha256=n3KugBo31_0nwql-QAiU9BHdDyIks139E3ENblgVNME,14224
6
+ gazpar2haws/date_array.py,sha256=q3xTX-KS2KOtFSB042OJVerZFtS-Jw9Iin5RHKnobPs,10108
7
+ gazpar2haws/gazpar.py,sha256=yNLjQvef39CRMXIRpvPf_i1fErW7nyiEeTY-Y-fQX1M,14244
8
8
  gazpar2haws/haws.py,sha256=1ELdompdACNf5XkpjCN6Bdiw7stPfzar3x8OjoBmhxQ,7969
9
- gazpar2haws/model.py,sha256=-1yhLNNcEvEtW67GMVLZ4lcXw6Lk75kWvrdjoVgjKCw,7055
10
- gazpar2haws/pricer.py,sha256=PcjRTBhOECzJCJ0mrIgS5agGf8N3O2u0mLVky-cbvhk,22124
9
+ gazpar2haws/model.py,sha256=rn6gP8z5OVCQO3BZsExD68BaOExumiCv36wuPyOvS5M,7103
10
+ gazpar2haws/pricer.py,sha256=7xlLlPU6pXQcOnyaeoR_UEQOwuPwUG_V17FvPgSxzmM,22434
11
11
  gazpar2haws/version.py,sha256=9Iq5Jm63Ev7QquCjhDqa9_KAgHdKl9FJHynq8M6JNrY,83
12
- gazpar2haws-0.3.0b23.dist-info/LICENSE,sha256=ajApZPyhVx8AU9wN7DXeRGhoWFqY2ylBZUa5GRhTmok,1073
13
- gazpar2haws-0.3.0b23.dist-info/METADATA,sha256=dni71JJ4X-nNqWrRhDWA1zdBXA98IZIBUGxokOc2iYg,17406
14
- gazpar2haws-0.3.0b23.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
15
- gazpar2haws-0.3.0b23.dist-info/RECORD,,
12
+ gazpar2haws-0.3.0b24.dist-info/LICENSE,sha256=ajApZPyhVx8AU9wN7DXeRGhoWFqY2ylBZUa5GRhTmok,1073
13
+ gazpar2haws-0.3.0b24.dist-info/METADATA,sha256=6M20J0acDl6wMhU_Q3g1XmqFujsU-zqAtZccodMVXhE,17406
14
+ gazpar2haws-0.3.0b24.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
15
+ gazpar2haws-0.3.0b24.dist-info/RECORD,,