artesian-sdk 4.3.1.dev2__py3-none-any.whl → 5.0.0.dev2__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.
Files changed (56) hide show
  1. Artesian/Exceptions.py +17 -29
  2. Artesian/GMEPublicOffers/ExtractionRangeConfig.py +1 -2
  3. Artesian/GMEPublicOffers/GMEPublicOfferQuery.py +59 -86
  4. Artesian/GMEPublicOffers/GMEPublicOfferQueryParameters.py +15 -15
  5. Artesian/GMEPublicOffers/GMEPublicOfferService.py +4 -5
  6. Artesian/GMEPublicOffers/_Enum/Market.py +4 -0
  7. Artesian/GMEPublicOffers/_Enum/Status.py +1 -0
  8. Artesian/GMEPublicOffers/__init__.py +13 -13
  9. Artesian/MarketData/MarketDataService.py +72 -130
  10. Artesian/MarketData/_Dto/ArtesianMetadataFacet.py +5 -5
  11. Artesian/MarketData/_Dto/ArtesianSearchResults.py +4 -4
  12. Artesian/MarketData/_Dto/CheckConversionResult.py +2 -3
  13. Artesian/MarketData/_Dto/CurveRangeEntity.py +6 -6
  14. Artesian/MarketData/_Dto/DeleteData.py +5 -5
  15. Artesian/MarketData/_Dto/DerivedCfg.py +3 -3
  16. Artesian/MarketData/_Dto/DerivedTransformQueryValidation.py +2 -3
  17. Artesian/MarketData/_Dto/DerivedTransformQueryValidationResponse.py +3 -3
  18. Artesian/MarketData/_Dto/MarketDataEntityInput.py +19 -30
  19. Artesian/MarketData/_Dto/MarketDataEntityOutput.py +9 -16
  20. Artesian/MarketData/_Dto/PagedResult.py +3 -4
  21. Artesian/MarketData/_Dto/TimeSerieData.py +5 -4
  22. Artesian/MarketData/_Dto/UnitOfMeasure.py +1 -2
  23. Artesian/MarketData/_Dto/UpsertData.py +28 -26
  24. Artesian/MarketData/_Dto/__init__.py +29 -29
  25. Artesian/MarketData/_Enum/__init__.py +9 -9
  26. Artesian/MarketData/__init__.py +38 -39
  27. Artesian/Query/ActualQuery.py +28 -41
  28. Artesian/Query/AuctionQuery.py +14 -18
  29. Artesian/Query/BidAskQuery.py +18 -20
  30. Artesian/Query/DefaultPartitionStrategy.py +17 -19
  31. Artesian/Query/MasQuery.py +19 -22
  32. Artesian/Query/QueryService.py +9 -10
  33. Artesian/Query/VersionedQuery.py +45 -89
  34. Artesian/Query/_Query.py +40 -40
  35. Artesian/Query/_QueryParameters/ActualQueryParameters.py +15 -17
  36. Artesian/Query/_QueryParameters/AuctionQueryParameters.py +8 -10
  37. Artesian/Query/_QueryParameters/BidAskQueryParameters.py +9 -11
  38. Artesian/Query/_QueryParameters/ExtractionRangeConfig.py +7 -7
  39. Artesian/Query/_QueryParameters/MasQueryParameters.py +9 -11
  40. Artesian/Query/_QueryParameters/MostRecentSelectionConfig.py +10 -11
  41. Artesian/Query/_QueryParameters/QueryParameters.py +28 -33
  42. Artesian/Query/_QueryParameters/VersionSelectionConfig.py +3 -3
  43. Artesian/Query/_QueryParameters/VersionedQueryParameters.py +17 -19
  44. Artesian/Query/_QueryParameters/VersionsRangeSelectionConfig.py +5 -6
  45. Artesian/Query/__init__.py +11 -11
  46. Artesian/_ClientsExecutor/ArtesianJsonSerializer.py +211 -121
  47. Artesian/_ClientsExecutor/Client.py +34 -36
  48. Artesian/_ClientsExecutor/RequestExecutor.py +96 -115
  49. Artesian/__init__.py +15 -17
  50. Artesian/_version.py +2 -2
  51. {artesian_sdk-4.3.1.dev2.dist-info → artesian_sdk-5.0.0.dev2.dist-info}/METADATA +10 -17
  52. artesian_sdk-5.0.0.dev2.dist-info/RECORD +78 -0
  53. {artesian_sdk-4.3.1.dev2.dist-info → artesian_sdk-5.0.0.dev2.dist-info}/WHEEL +1 -1
  54. artesian_sdk-4.3.1.dev2.dist-info/RECORD +0 -78
  55. {artesian_sdk-4.3.1.dev2.dist-info → artesian_sdk-5.0.0.dev2.dist-info}/licenses/LICENSE +0 -0
  56. {artesian_sdk-4.3.1.dev2.dist-info → artesian_sdk-5.0.0.dev2.dist-info}/top_level.txt +0 -0
Artesian/Exceptions.py CHANGED
@@ -1,5 +1,4 @@
1
1
  from __future__ import annotations
2
- from typing import Optional
3
2
 
4
3
 
5
4
  class ArtesianSdkException(Exception):
@@ -32,8 +31,8 @@ class ArtesianSdkRemoteException(ArtesianSdkException):
32
31
  method: str,
33
32
  url: str,
34
33
  statusCode: int,
35
- problemDetails: Optional[dict] = None,
36
- errorText: Optional[str] = None,
34
+ problemDetails: dict | None = None,
35
+ errorText: str | None = None,
37
36
  ) -> None:
38
37
  """
39
38
  Inits the Artesian Sdk Remote Exception.
@@ -61,10 +60,7 @@ class ArtesianSdkRemoteException(ArtesianSdkException):
61
60
  detail = errorText
62
61
 
63
62
  params = {"method": method, "url": url, "statusCode": statusCode}
64
- message = (
65
- "Failed REST call to Artesian. "
66
- + "{method} {url} returned {statusCode}.".format(**params)
67
- )
63
+ message = "Failed REST call to Artesian. " + "{method} {url} returned {statusCode}.".format(**params)
68
64
  if detail is not None:
69
65
  message = message + " " + detail
70
66
 
@@ -83,11 +79,11 @@ class ArtesianSdkRemoteException(ArtesianSdkException):
83
79
  return self._statusCode
84
80
 
85
81
  @property
86
- def problemDetails(self: ArtesianSdkRemoteException) -> Optional[dict]:
82
+ def problemDetails(self: ArtesianSdkRemoteException) -> dict | None:
87
83
  return self._problemDetails
88
84
 
89
85
  @property
90
- def errorText(self: ArtesianSdkRemoteException) -> Optional[str]:
86
+ def errorText(self: ArtesianSdkRemoteException) -> str | None:
91
87
  return self._errorText
92
88
 
93
89
 
@@ -101,8 +97,8 @@ class ArtesianSdkValidationException(ArtesianSdkRemoteException):
101
97
  method: str,
102
98
  url: str,
103
99
  statusCode: int,
104
- problemDetails: Optional[dict] = None,
105
- errorText: Optional[str] = None,
100
+ problemDetails: dict | None = None,
101
+ errorText: str | None = None,
106
102
  ) -> None:
107
103
  """
108
104
  Inits the Artesian Sdk Validation Exception.
@@ -114,9 +110,7 @@ class ArtesianSdkValidationException(ArtesianSdkRemoteException):
114
110
  problemDetails: the returned problemDetails object (if any)
115
111
  errorText: the response as text if problem details are not provided
116
112
  """
117
- ArtesianSdkRemoteException.__init__(
118
- self, method, url, statusCode, problemDetails, errorText
119
- )
113
+ ArtesianSdkRemoteException.__init__(self, method, url, statusCode, problemDetails, errorText)
120
114
 
121
115
 
122
116
  class ArtesianSdkOptimisticConcurrencyException(ArtesianSdkRemoteException):
@@ -129,8 +123,8 @@ class ArtesianSdkOptimisticConcurrencyException(ArtesianSdkRemoteException):
129
123
  method: str,
130
124
  url: str,
131
125
  statusCode: int,
132
- problemDetails: Optional[dict] = None,
133
- errorText: Optional[str] = None,
126
+ problemDetails: dict | None = None,
127
+ errorText: str | None = None,
134
128
  ) -> None:
135
129
  """
136
130
  Inits the Artesian Sdk Optimistic Concurrency Exception.
@@ -142,9 +136,7 @@ class ArtesianSdkOptimisticConcurrencyException(ArtesianSdkRemoteException):
142
136
  problemDetails: the returned problemDetails object (if any)
143
137
  errorText: the response as text if problem details are not provided
144
138
  """
145
- ArtesianSdkRemoteException.__init__(
146
- self, method, url, statusCode, problemDetails, errorText
147
- )
139
+ ArtesianSdkRemoteException.__init__(self, method, url, statusCode, problemDetails, errorText)
148
140
 
149
141
 
150
142
  class ArtesianSdkForbiddenException(ArtesianSdkRemoteException):
@@ -157,8 +149,8 @@ class ArtesianSdkForbiddenException(ArtesianSdkRemoteException):
157
149
  method: str,
158
150
  url: str,
159
151
  statusCode: int,
160
- problemDetails: Optional[dict] = None,
161
- errorText: Optional[str] = None,
152
+ problemDetails: dict | None = None,
153
+ errorText: str | None = None,
162
154
  ) -> None:
163
155
  """
164
156
  Inits the Artesian Sdk Forbidden Exception.
@@ -170,9 +162,7 @@ class ArtesianSdkForbiddenException(ArtesianSdkRemoteException):
170
162
  problemDetails: the returned problemDetails object (if any)
171
163
  errorText: the response as text if problem details are not provided
172
164
  """
173
- ArtesianSdkRemoteException.__init__(
174
- self, method, url, statusCode, problemDetails, errorText
175
- )
165
+ ArtesianSdkRemoteException.__init__(self, method, url, statusCode, problemDetails, errorText)
176
166
 
177
167
 
178
168
  class ArtesianSdkServerException(ArtesianSdkRemoteException):
@@ -185,8 +175,8 @@ class ArtesianSdkServerException(ArtesianSdkRemoteException):
185
175
  method: str,
186
176
  url: str,
187
177
  statusCode: int,
188
- problemDetails: Optional[dict] = None,
189
- errorText: Optional[str] = None,
178
+ problemDetails: dict | None = None,
179
+ errorText: str | None = None,
190
180
  ) -> None:
191
181
  """
192
182
  Inits the Artesian Sdk Server Exception.
@@ -198,9 +188,7 @@ class ArtesianSdkServerException(ArtesianSdkRemoteException):
198
188
  problemDetails: the returned problemDetails object (if any)
199
189
  errorText: the response as text if problem details are not provided
200
190
  """
201
- ArtesianSdkRemoteException.__init__(
202
- self, method, url, statusCode, problemDetails, errorText
203
- )
191
+ ArtesianSdkRemoteException.__init__(self, method, url, statusCode, problemDetails, errorText)
204
192
 
205
193
 
206
194
  class ArtesianSdkRequestException(ArtesianSdkException):
@@ -1,5 +1,4 @@
1
1
  from __future__ import annotations
2
- from typing import Optional
3
2
 
4
3
 
5
4
  class ExtractionRangeConfig:
@@ -10,6 +9,6 @@ class ExtractionRangeConfig:
10
9
  date: Date for the Extraction Range configuration in (ISO) format
11
10
  """
12
11
 
13
- def __init__(self: ExtractionRangeConfig, date: Optional[str] = None) -> None:
12
+ def __init__(self: ExtractionRangeConfig, date: str | None = None) -> None:
14
13
  """Inits the Extraction Range Configuration."""
15
14
  self.date = date
@@ -1,10 +1,14 @@
1
1
  from __future__ import annotations
2
- from typing import Any, List
3
- from Artesian._ClientsExecutor.RequestExecutor import _RequestExecutor
2
+
3
+ import asyncio
4
+ from urllib import parse
5
+
4
6
  from Artesian._ClientsExecutor.Client import _Client
7
+ from Artesian._ClientsExecutor.RequestExecutor import _RequestExecutor
5
8
  from Artesian.GMEPublicOffers.GMEPublicOfferQueryParameters import (
6
9
  _GMEPublicOfferQueryParameters,
7
10
  )
11
+
8
12
  from ._Enum.BaType import BaType
9
13
  from ._Enum.GenerationType import GenerationType
10
14
  from ._Enum.Market import Market
@@ -13,16 +17,12 @@ from ._Enum.Scope import Scope
13
17
  from ._Enum.Status import Status
14
18
  from ._Enum.UnitType import UnitType
15
19
  from ._Enum.Zone import Zone
16
- import asyncio
17
- from urllib import parse
18
20
 
19
21
 
20
22
  class GMEPublicOfferQuery:
21
23
  __routePrefix = "extract"
22
24
 
23
- def __init__(
24
- self: GMEPublicOfferQuery, client: _Client, requestExecutor: _RequestExecutor
25
- ) -> None:
25
+ def __init__(self: GMEPublicOfferQuery, client: _Client, requestExecutor: _RequestExecutor) -> None:
26
26
  """Inits _GME Public Offer Query"""
27
27
 
28
28
  queryParameters = _GMEPublicOfferQueryParameters()
@@ -30,9 +30,7 @@ class GMEPublicOfferQuery:
30
30
  self.__client = client
31
31
  self.__executor = requestExecutor
32
32
 
33
- def withPagination(
34
- self: GMEPublicOfferQuery, pagenumber: int, pagesize: int
35
- ) -> GMEPublicOfferQuery:
33
+ def withPagination(self: GMEPublicOfferQuery, pagenumber: int, pagesize: int) -> GMEPublicOfferQuery:
36
34
  """
37
35
  Set the request pagination.
38
36
 
@@ -48,7 +46,7 @@ class GMEPublicOfferQuery:
48
46
  self._queryParameters.pageSize = pagesize
49
47
  return self
50
48
 
51
- def forScope(self: GMEPublicOfferQuery, scope: List[Scope]) -> GMEPublicOfferQuery:
49
+ def forScope(self: GMEPublicOfferQuery, scope: list[Scope]) -> GMEPublicOfferQuery:
52
50
  """
53
51
  Set the scopes to be queried.
54
52
 
@@ -74,9 +72,7 @@ class GMEPublicOfferQuery:
74
72
  self._queryParameters.status = status
75
73
  return self
76
74
 
77
- def forUnitType(
78
- self: GMEPublicOfferQuery, unitType: List[UnitType]
79
- ) -> GMEPublicOfferQuery:
75
+ def forUnitType(self: GMEPublicOfferQuery, unitType: list[UnitType]) -> GMEPublicOfferQuery:
80
76
  """
81
77
  Set the unit types to be queried.
82
78
 
@@ -102,7 +98,7 @@ class GMEPublicOfferQuery:
102
98
  self._queryParameters.extractionRangeConfig.date = date
103
99
  return self
104
100
 
105
- def forUnit(self: GMEPublicOfferQuery, unit: List[str]) -> GMEPublicOfferQuery:
101
+ def forUnit(self: GMEPublicOfferQuery, unit: list[str]) -> GMEPublicOfferQuery:
106
102
  """
107
103
  Set the units to be queried.
108
104
 
@@ -115,9 +111,7 @@ class GMEPublicOfferQuery:
115
111
  self._queryParameters.unit = unit
116
112
  return self
117
113
 
118
- def forOperators(
119
- self: GMEPublicOfferQuery, operators: List[str]
120
- ) -> GMEPublicOfferQuery:
114
+ def forOperators(self: GMEPublicOfferQuery, operators: list[str]) -> GMEPublicOfferQuery:
121
115
  """
122
116
  Set the operators to be queried.
123
117
 
@@ -130,7 +124,7 @@ class GMEPublicOfferQuery:
130
124
  self._queryParameters.operators = operators
131
125
  return self
132
126
 
133
- def forZone(self: GMEPublicOfferQuery, zone: List[Zone]) -> GMEPublicOfferQuery:
127
+ def forZone(self: GMEPublicOfferQuery, zone: list[Zone]) -> GMEPublicOfferQuery:
134
128
  """
135
129
  Set the zones to be queried.
136
130
 
@@ -143,9 +137,7 @@ class GMEPublicOfferQuery:
143
137
  self._queryParameters.zone = zone
144
138
  return self
145
139
 
146
- def forMarket(
147
- self: GMEPublicOfferQuery, market: List[Market]
148
- ) -> GMEPublicOfferQuery:
140
+ def forMarket(self: GMEPublicOfferQuery, market: list[Market]) -> GMEPublicOfferQuery:
149
141
  """
150
142
  Set the markets to be queried.
151
143
 
@@ -171,9 +163,7 @@ class GMEPublicOfferQuery:
171
163
  self._queryParameters.purpose = purpose
172
164
  return self
173
165
 
174
- def forBAType(
175
- self: GMEPublicOfferQuery, baType: List[BaType]
176
- ) -> GMEPublicOfferQuery:
166
+ def forBAType(self: GMEPublicOfferQuery, baType: list[BaType]) -> GMEPublicOfferQuery:
177
167
  """
178
168
  Set the BATypes to be queried.
179
169
 
@@ -186,9 +176,7 @@ class GMEPublicOfferQuery:
186
176
  self._queryParameters.baType = baType
187
177
  return self
188
178
 
189
- def forGenerationType(
190
- self: GMEPublicOfferQuery, generationType: List[GenerationType]
191
- ) -> GMEPublicOfferQuery:
179
+ def forGenerationType(self: GMEPublicOfferQuery, generationType: list[GenerationType]) -> GMEPublicOfferQuery:
192
180
  """
193
181
  Set the generation types to be queried.
194
182
 
@@ -201,7 +189,7 @@ class GMEPublicOfferQuery:
201
189
  self._queryParameters.generationType = generationType
202
190
  return self
203
191
 
204
- def execute(self: GMEPublicOfferQuery) -> Any:
192
+ def execute(self: GMEPublicOfferQuery) -> object:
205
193
  """
206
194
  Execute GME Public Offer Query.
207
195
 
@@ -211,7 +199,7 @@ class GMEPublicOfferQuery:
211
199
  url = self.__buildRequest()
212
200
  return self._exec(url)
213
201
 
214
- async def executeAsync(self: GMEPublicOfferQuery) -> Any:
202
+ async def executeAsync(self: GMEPublicOfferQuery) -> object:
215
203
  """
216
204
  Execute GME Public Offer Query.
217
205
 
@@ -225,57 +213,50 @@ class GMEPublicOfferQuery:
225
213
  self._validateQuery()
226
214
  qp = self._queryParameters
227
215
 
228
- url = "/{0}/{1}/{2}/{3}?_=1".format(
229
- self.__routePrefix,
230
- self._buildExtractionRangeRoute(qp),
231
- self.__getPurpose(qp.purpose),
232
- self.__getStatus(qp.status),
233
- )
216
+ url = f"/{self.__routePrefix}/{self._buildExtractionRangeRoute(qp)}/{self.__getPurpose(qp.purpose)}/{self.__getStatus(qp.status)}?_=1"
234
217
 
235
- if not (qp.page is None):
218
+ if qp.page is not None:
236
219
  url = url + "&page=" + str(qp.page)
237
- if not (qp.pageSize is None):
220
+ if qp.pageSize is not None:
238
221
  url = url + "&pageSize=" + str(qp.pageSize)
239
- if not (qp.scope is None):
222
+ if qp.scope is not None:
240
223
  sep = ","
241
- scope = sep.join(map(lambda x: self.__getScope(x), qp.scope))
224
+ scope = sep.join(map(self.__getScope, qp.scope))
242
225
  enc = parse.quote_plus(scope)
243
226
  url = url + "&scope=" + enc
244
- if not (qp.unitType is None):
227
+ if qp.unitType is not None:
245
228
  sep = ","
246
- unitType = sep.join(map(lambda x: self.__getUnitType(x), qp.unitType))
229
+ unitType = sep.join(map(self.__getUnitType, qp.unitType))
247
230
  enc = parse.quote_plus(unitType)
248
231
  url = url + "&unitType=" + enc
249
- if not (qp.unit is None):
232
+ if qp.unit is not None:
250
233
  sep = ","
251
234
  unit = sep.join(map(str, qp.unit))
252
235
  enc = parse.quote_plus(unit)
253
236
  url = url + "&unit=" + enc
254
- if not (qp.generationType is None):
237
+ if qp.generationType is not None:
255
238
  sep = ","
256
- generationType = sep.join(
257
- map(lambda x: self.__getGenerationType(x), qp.generationType)
258
- )
239
+ generationType = sep.join(map(self.__getGenerationType, qp.generationType))
259
240
  enc = parse.quote_plus(generationType)
260
241
  url = url + "&generationType=" + enc
261
- if not (qp.operators is None):
242
+ if qp.operators is not None:
262
243
  sep = ","
263
244
  operators = sep.join(map(str, qp.operators))
264
245
  enc = parse.quote_plus(operators)
265
246
  url = url + "&operators=" + enc
266
- if not (qp.zone is None):
247
+ if qp.zone is not None:
267
248
  sep = ","
268
- zone = sep.join(map(lambda x: self.__getZone(x), qp.zone))
249
+ zone = sep.join(map(self.__getZone, qp.zone))
269
250
  enc = parse.quote_plus(zone)
270
251
  url = url + "&zone=" + enc
271
- if not (qp.market is None):
252
+ if qp.market is not None:
272
253
  sep = ","
273
- market = sep.join(map(lambda x: self.__getMarket(x), qp.market))
254
+ market = sep.join(map(self.__getMarket, qp.market))
274
255
  enc = parse.quote_plus(market)
275
256
  url = url + "&market=" + enc
276
- if not (qp.baType is None):
257
+ if qp.baType is not None:
277
258
  sep = ","
278
- baType = sep.join(map(lambda x: self.__getBaType(x), qp.baType))
259
+ baType = sep.join(map(self.__getBaType, qp.baType))
279
260
  enc = parse.quote_plus(baType)
280
261
  url = url + "&baType=" + enc
281
262
 
@@ -294,12 +275,10 @@ class GMEPublicOfferQuery:
294
275
  }
295
276
  vr = switcher.get(scope, "DefScope")
296
277
  if vr == "DefScope":
297
- raise Exception("Not supported Scope")
278
+ raise ValueError("Not supported Scope")
298
279
  return vr
299
280
 
300
- def __getGenerationType(
301
- self: GMEPublicOfferQuery, generationType: GenerationType
302
- ) -> str:
281
+ def __getGenerationType(self: GMEPublicOfferQuery, generationType: GenerationType) -> str:
303
282
  switcher = {
304
283
  GenerationType.AUTOGENERATION: "AUTOGENERATION",
305
284
  GenerationType.BIOMASS: "BIOMASS",
@@ -316,7 +295,7 @@ class GMEPublicOfferQuery:
316
295
  }
317
296
  vr = switcher.get(generationType, "DefGen")
318
297
  if vr == "DefGen":
319
- raise Exception("Not supported GeneratioType")
298
+ raise ValueError("Not supported GeneratioType")
320
299
  return vr
321
300
 
322
301
  def __getMarket(self: GMEPublicOfferQuery, market: Market) -> str:
@@ -344,24 +323,28 @@ class GMEPublicOfferQuery:
344
323
  Market.MIA3: "MIA3",
345
324
  Market.MRR: "MRR",
346
325
  Market.AFRR: "AFRR",
326
+ Market.GMP_ASTA: "GMP_ASTA",
327
+ Market.GMP_Cont: "GMP_Cont",
328
+ Market.MI_Cont: "MI_Cont",
329
+ Market.MGS: "MGS",
347
330
  }
348
331
  vr = switcher.get(market, "DefMarket")
349
332
  if vr == "DefMarket":
350
- raise Exception("Not supported Market")
333
+ raise ValueError("Not supported Market")
351
334
  return vr
352
335
 
353
336
  def __getPurpose(self: GMEPublicOfferQuery, purpose: Purpose | None) -> str:
354
337
  if purpose is None:
355
- raise Exception("Not supported Purpose")
338
+ raise ValueError("Not supported Purpose")
356
339
  switcher = {Purpose.BID: "BID", Purpose.OFF: "OFF"}
357
340
  vr = switcher.get(purpose, "Defpurp")
358
341
  if vr == "Defpurp":
359
- raise Exception("Not supported Purpose")
342
+ raise ValueError("Not supported Purpose")
360
343
  return vr
361
344
 
362
345
  def __getStatus(self: GMEPublicOfferQuery, status: Status | None) -> str:
363
346
  if status is None:
364
- raise Exception("Not supported Status")
347
+ raise ValueError("Not supported Status")
365
348
 
366
349
  switcher = {
367
350
  Status.ACC: "ACC",
@@ -372,10 +355,11 @@ class GMEPublicOfferQuery:
372
355
  Status.SUB: "SUB",
373
356
  Status.COM: "COM",
374
357
  Status.PCOM: "PCOM",
358
+ Status.DIS: "DIS",
375
359
  }
376
360
  vr = switcher.get(status, "DefStatus")
377
361
  if vr == "DefStatus":
378
- raise Exception("Not supported Status")
362
+ raise ValueError("Not supported Status")
379
363
  return vr
380
364
 
381
365
  def __getUnitType(self: GMEPublicOfferQuery, unitType: UnitType) -> str:
@@ -389,7 +373,7 @@ class GMEPublicOfferQuery:
389
373
  }
390
374
  vr = switcher.get(unitType, "DefunitType")
391
375
  if vr == "DefunitType":
392
- raise Exception("Not supported Unit Type")
376
+ raise ValueError("Not supported Unit Type")
393
377
  return vr
394
378
 
395
379
  def __getBaType(self: GMEPublicOfferQuery, baType: BaType) -> str:
@@ -401,7 +385,7 @@ class GMEPublicOfferQuery:
401
385
  }
402
386
  vr = switcher.get(baType, "DefbaType")
403
387
  if vr == "DefbaType":
404
- raise Exception("Not supported BaType")
388
+ raise ValueError("Not supported BaType")
405
389
  return vr
406
390
 
407
391
  def __getZone(self: GMEPublicOfferQuery, zone: Zone) -> str:
@@ -434,25 +418,21 @@ class GMEPublicOfferQuery:
434
418
  }
435
419
  vr = switcher.get(zone, "DefZone")
436
420
  if vr == "DefZone":
437
- raise Exception("Not supported Zone")
421
+ raise ValueError("Not supported Zone")
438
422
  return vr
439
423
 
440
- def _buildExtractionRangeRoute(
441
- self: GMEPublicOfferQuery, queryParamaters: _GMEPublicOfferQueryParameters
442
- ) -> str:
424
+ def _buildExtractionRangeRoute(self: GMEPublicOfferQuery, queryParamaters: _GMEPublicOfferQueryParameters) -> str:
443
425
  subPath = f"{self.__toUrlParam(queryParamaters.extractionRangeConfig.date)}"
444
426
  return subPath
445
427
 
446
- def _exec(self: GMEPublicOfferQuery, url: str) -> Any:
428
+ def _exec(self: GMEPublicOfferQuery, url: str) -> object:
447
429
  loop = get_event_loop()
448
430
  rr = loop.run_until_complete(self._execAsync(url))
449
431
  return rr
450
432
 
451
- async def _execAsync(self: GMEPublicOfferQuery, url: str) -> Any:
433
+ async def _execAsync(self: GMEPublicOfferQuery, url: str) -> object:
452
434
  with self.__client as c:
453
- res = await asyncio.gather(
454
- *[self.__executor.exec(c.exec, "GET", url, None)]
455
- )
435
+ res = await asyncio.gather(*[self.__executor.exec(c.exec, "GET", url, None)])
456
436
  return res[0]
457
437
 
458
438
  def __toUrlParam(self: GMEPublicOfferQuery, date: str | None) -> str:
@@ -460,20 +440,13 @@ class GMEPublicOfferQuery:
460
440
 
461
441
  def _validateQuery(self: GMEPublicOfferQuery) -> None:
462
442
  if self._queryParameters.purpose is None:
463
- raise Exception(
464
- "Extraction Purpose must be provided. Use .forScope()"
465
- + " argument takes a scope type"
466
- )
443
+ raise ValueError("Extraction Purpose must be provided. Use .forPurpose(); argument takes a purpose type")
467
444
  if self._queryParameters.extractionRangeConfig.date is None:
468
- raise Exception(
469
- "Extraction Date must be provided. Use .forDate() argument"
470
- + " takes a string formatted as YYYY-MM-DD"
445
+ raise ValueError(
446
+ "Extraction Date must be provided. Use .forDate() argument" + " takes a string formatted as YYYY-MM-DD"
471
447
  )
472
448
  if self._queryParameters.status is None:
473
- raise Exception(
474
- "Extraction Status must be provided. Use .forStatus() "
475
- + "argument takes a status type"
476
- )
449
+ raise ValueError("Extraction Status must be provided. Use .forStatus() " + "argument takes a status type")
477
450
 
478
451
 
479
452
  def get_event_loop() -> asyncio.AbstractEventLoop:
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
- from typing import List, Optional
3
- from .ExtractionRangeConfig import ExtractionRangeConfig
2
+
4
3
  from ._Enum.BaType import BaType
5
4
  from ._Enum.GenerationType import GenerationType
6
5
  from ._Enum.Market import Market
@@ -9,6 +8,7 @@ from ._Enum.Scope import Scope
9
8
  from ._Enum.Status import Status
10
9
  from ._Enum.UnitType import UnitType
11
10
  from ._Enum.Zone import Zone
11
+ from .ExtractionRangeConfig import ExtractionRangeConfig
12
12
 
13
13
 
14
14
  class _GMEPublicOfferQueryParameters:
@@ -32,19 +32,19 @@ class _GMEPublicOfferQueryParameters:
32
32
 
33
33
  def __init__(
34
34
  self: _GMEPublicOfferQueryParameters,
35
- page: Optional[int] = None,
36
- pageSize: Optional[int] = None,
37
- extractionRangeConfig: Optional[ExtractionRangeConfig] = None,
38
- scope: Optional[List[Scope]] = None,
39
- status: Optional[Status] = None,
40
- unitType: Optional[List[UnitType]] = None,
41
- generationType: Optional[List[GenerationType]] = None,
42
- operators: Optional[List[str]] = None,
43
- unit: Optional[List[str]] = None,
44
- zone: Optional[List[Zone]] = None,
45
- market: Optional[List[Market]] = None,
46
- purpose: Optional[Purpose] = None,
47
- baType: Optional[List[BaType]] = None,
35
+ page: int | None = None,
36
+ pageSize: int | None = None,
37
+ extractionRangeConfig: ExtractionRangeConfig | None = None,
38
+ scope: list[Scope] | None = None,
39
+ status: Status | None = None,
40
+ unitType: list[UnitType] | None = None,
41
+ generationType: list[GenerationType] | None = None,
42
+ operators: list[str] | None = None,
43
+ unit: list[str] | None = None,
44
+ zone: list[Zone] | None = None,
45
+ market: list[Market] | None = None,
46
+ purpose: Purpose | None = None,
47
+ baType: list[BaType] | None = None,
48
48
  ) -> None:
49
49
  """
50
50
  Inits the GME Public Offer Query Parameters with optional overrides.
@@ -1,8 +1,9 @@
1
1
  from __future__ import annotations
2
+
3
+ from Artesian._ClientsExecutor.Client import _Client
4
+ from Artesian._ClientsExecutor.RequestExecutor import _RequestExecutor
2
5
  from Artesian.ArtesianConfig import ArtesianConfig
3
6
  from Artesian.ArtesianPolicyConfig import ArtesianPolicyConfig
4
- from Artesian._ClientsExecutor.RequestExecutor import _RequestExecutor
5
- from Artesian._ClientsExecutor.Client import _Client
6
7
 
7
8
  from .GMEPublicOfferQuery import GMEPublicOfferQuery
8
9
 
@@ -27,9 +28,7 @@ class GMEPublicOfferService:
27
28
  """
28
29
  self.__config = artesianConfig
29
30
  self.__policy = ArtesianPolicyConfig()
30
- self.__queryBaseurl = (
31
- self.__config.baseUrl + "/" + self.__offerstype + "/" + self.__version
32
- )
31
+ self.__queryBaseurl = self.__config.baseUrl + "/" + self.__offerstype + "/" + self.__version
33
32
  self.__executor = _RequestExecutor(self.__policy)
34
33
  self.__client = _Client(self.__queryBaseurl, self.__config.apiKey)
35
34
 
@@ -25,3 +25,7 @@ class Market(Enum):
25
25
  MIXBID = 70
26
26
  AFRR = 100
27
27
  AFRE = 200
28
+ GMP_ASTA = 230
29
+ GMP_Cont = 234
30
+ MI_Cont = 235
31
+ MGS = 240
@@ -11,3 +11,4 @@ class Status(Enum):
11
11
  COM = 7
12
12
  PCOM = 8
13
13
  PREJ = 9
14
+ DIS = 10
@@ -1,23 +1,23 @@
1
1
  from ._Enum.BaType import BaType
2
- from ._Enum.Scope import Scope
3
2
  from ._Enum.GenerationType import GenerationType
4
3
  from ._Enum.Market import Market
5
4
  from ._Enum.Purpose import Purpose
5
+ from ._Enum.Scope import Scope
6
6
  from ._Enum.Status import Status
7
7
  from ._Enum.UnitType import UnitType
8
8
  from ._Enum.Zone import Zone
9
- from .GMEPublicOfferService import GMEPublicOfferService
10
9
  from .GMEPublicOfferQuery import GMEPublicOfferQuery
10
+ from .GMEPublicOfferService import GMEPublicOfferService
11
11
 
12
12
  __all__ = [
13
- GMEPublicOfferService.__name__,
14
- GMEPublicOfferQuery.__name__,
15
- BaType.__name__,
16
- Scope.__name__,
17
- GenerationType.__name__,
18
- Market.__name__,
19
- Purpose.__name__,
20
- Status.__name__,
21
- UnitType.__name__,
22
- Zone.__name__,
23
- ] # type: ignore
13
+ "BaType",
14
+ "GMEPublicOfferQuery",
15
+ "GMEPublicOfferService",
16
+ "GenerationType",
17
+ "Market",
18
+ "Purpose",
19
+ "Scope",
20
+ "Status",
21
+ "UnitType",
22
+ "Zone",
23
+ ]