artesian-sdk 3.1.2.dev19__tar.gz → 3.1.3.dev5__tar.gz

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 (103) hide show
  1. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/PKG-INFO +1 -1
  2. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/GMEPublicOfferQuery.py +10 -14
  3. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/_version.py +2 -2
  4. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/artesian_sdk.egg-info/PKG-INFO +1 -1
  5. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/TestGMEPO.py +37 -0
  6. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/helpers.py +19 -2
  7. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/.flake8 +0 -0
  8. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/.github/dependabot.yml +0 -0
  9. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/.github/workflows/dependency-review.yaml +0 -0
  10. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/.github/workflows/python-tests.yml +0 -0
  11. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/.gitignore +0 -0
  12. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/.vscode/launch.json +0 -0
  13. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/.vscode/settings.json +0 -0
  14. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/CONTRIBUTING.md +0 -0
  15. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/LICENSE +0 -0
  16. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/README.md +0 -0
  17. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/pyproject.toml +0 -0
  18. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestActual.py +0 -0
  19. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestAuction.py +0 -0
  20. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestBidAsk.py +0 -0
  21. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestGMEOffers.py +0 -0
  22. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestMarketDataService.py +0 -0
  23. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestMas.py +0 -0
  24. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestSearchFacet.py +0 -0
  25. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestVersioned.py +0 -0
  26. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestWriteDataAndQueryActual.py +0 -0
  27. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestWriteDataAndQueryAuction.py +0 -0
  28. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestWriteDataAndQueryBidAsk.py +0 -0
  29. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/samples/TestWriteDataAndQueryMas.py +0 -0
  30. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/setup.cfg +0 -0
  31. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/.gitignore +0 -0
  32. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/ArtesianConfig.py +0 -0
  33. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/ArtesianPolicyConfig.py +0 -0
  34. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Exceptions.py +0 -0
  35. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/ExtractionRangeConfig.py +0 -0
  36. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/GMEPublicOfferQueryParameters.py +0 -0
  37. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/GMEPublicOfferService.py +0 -0
  38. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/BaType.py +0 -0
  39. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/GenerationType.py +0 -0
  40. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/Market.py +0 -0
  41. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/Purpose.py +0 -0
  42. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/Scope.py +0 -0
  43. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/Status.py +0 -0
  44. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/UnitType.py +0 -0
  45. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/Zone.py +0 -0
  46. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/_Enum/__init__.py +0 -0
  47. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/GMEPublicOffers/__init__.py +0 -0
  48. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Granularity.py +0 -0
  49. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/MarketDataService.py +0 -0
  50. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/ArtesianMetadataFacet.py +0 -0
  51. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/ArtesianSearchResults.py +0 -0
  52. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/CurveRangeEntity.py +0 -0
  53. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/MarketDataEntityInput.py +0 -0
  54. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/MarketDataEntityOutput.py +0 -0
  55. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/MarketDataIdentifier.py +0 -0
  56. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/PagedResult.py +0 -0
  57. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/UpsertData.py +0 -0
  58. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Dto/__init__.py +0 -0
  59. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Enum/AggregationRule.py +0 -0
  60. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Enum/ArtesianMetadataFacetType.py +0 -0
  61. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Enum/MarketDataType.py +0 -0
  62. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/_Enum/__init__.py +0 -0
  63. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/MarketData/__init__.py +0 -0
  64. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/ActualQuery.py +0 -0
  65. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/AuctionQuery.py +0 -0
  66. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/BidAskQuery.py +0 -0
  67. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/DefaultPartitionStrategy.py +0 -0
  68. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/MasQuery.py +0 -0
  69. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/QueryService.py +0 -0
  70. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/RelativeInterval.py +0 -0
  71. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/VersionedQuery.py +0 -0
  72. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_Query.py +0 -0
  73. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/ActualQueryParameters.py +0 -0
  74. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/AuctionQueryParameters.py +0 -0
  75. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/BidAskQueryParameters.py +0 -0
  76. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/ExtractionRangeConfig.py +0 -0
  77. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/ExtractionRangeType.py +0 -0
  78. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/MasQueryParameters.py +0 -0
  79. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/MostRecentSelectionConfig.py +0 -0
  80. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/QueryParameters.py +0 -0
  81. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/VersionSelectionConfig.py +0 -0
  82. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/VersionSelectionType.py +0 -0
  83. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/VersionedQueryParameters.py +0 -0
  84. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/VersionsRangeSelectionConfig.py +0 -0
  85. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/_QueryParameters/__init__.py +0 -0
  86. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/Query/__init__.py +0 -0
  87. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/_ClientsExecutor/ArtesianJsonSerializer.py +0 -0
  88. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/_ClientsExecutor/Client.py +0 -0
  89. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/_ClientsExecutor/RequestExecutor.py +0 -0
  90. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/_ClientsExecutor/__init__.py +0 -0
  91. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/Artesian/__init__.py +0 -0
  92. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/artesian_sdk.egg-info/SOURCES.txt +0 -0
  93. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/artesian_sdk.egg-info/dependency_links.txt +0 -0
  94. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/artesian_sdk.egg-info/requires.txt +0 -0
  95. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/src/artesian_sdk.egg-info/top_level.txt +0 -0
  96. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/TestActual.py +0 -0
  97. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/TestBidAsk.py +0 -0
  98. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/TestClientErrorHandling.py +0 -0
  99. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/TestMarketDataService.py +0 -0
  100. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/TestMarketDataUpsertData.py +0 -0
  101. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/TestMas.py +0 -0
  102. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/TestVersioned.py +0 -0
  103. {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3.dev5}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: artesian-sdk
3
- Version: 3.1.2.dev19
3
+ Version: 3.1.3.dev5
4
4
  Summary: Library provides read access to the Artesian API
5
5
  Author-email: ARK Lab <arklab@ark-energy.eu>
6
6
  Maintainer-email: ARK Lab <arklab@ark-energy.eu>
@@ -15,7 +15,6 @@ from ._Enum.UnitType import UnitType
15
15
  from ._Enum.Zone import Zone
16
16
  import asyncio
17
17
  from urllib import parse
18
- import itertools
19
18
 
20
19
 
21
20
  class GMEPublicOfferQuery:
@@ -209,8 +208,8 @@ class GMEPublicOfferQuery:
209
208
  Returns:
210
209
  list of GMEPublicOffers.
211
210
  """
212
- urls = self.__buildRequest()
213
- return self._exec(urls)
211
+ url = self.__buildRequest()
212
+ return self._exec(url)
214
213
 
215
214
  async def executeAsync(self: GMEPublicOfferQuery) -> Any:
216
215
  """
@@ -219,13 +218,12 @@ class GMEPublicOfferQuery:
219
218
  Returns:
220
219
  Enumerable of TimeSerieRow Actual.
221
220
  """
222
- urls = self.__buildRequest()
223
- return await self._execAsync(urls)
221
+ url = self.__buildRequest()
222
+ return await self._execAsync(url)
224
223
 
225
224
  def __buildRequest(self: GMEPublicOfferQuery) -> str:
226
225
  self._validateQuery()
227
226
  qp = self._queryParameters
228
- urls = []
229
227
 
230
228
  url = "/{0}/{1}/{2}/{3}?_=1".format(
231
229
  self.__routePrefix,
@@ -281,9 +279,7 @@ class GMEPublicOfferQuery:
281
279
  enc = parse.quote_plus(baType)
282
280
  url = url + "&baType=" + enc
283
281
 
284
- urls.append(url)
285
-
286
- return urls
282
+ return url
287
283
 
288
284
  def __getScope(self: GMEPublicOfferQuery, scope: Scope) -> str:
289
285
  switcher = {
@@ -441,17 +437,17 @@ class GMEPublicOfferQuery:
441
437
  subPath = f"{parse.quote_plus(purpose)}"
442
438
  return subPath
443
439
 
444
- def _exec(self: GMEPublicOfferQuery, urls: List[str]) -> list:
440
+ def _exec(self: GMEPublicOfferQuery, url: str) -> Any:
445
441
  loop = get_event_loop()
446
- rr = loop.run_until_complete(self._execAsync(urls))
442
+ rr = loop.run_until_complete(self._execAsync(url))
447
443
  return rr
448
444
 
449
- async def _execAsync(self: GMEPublicOfferQuery, urls: List[str]) -> list:
445
+ async def _execAsync(self: GMEPublicOfferQuery, url: str) -> Any:
450
446
  with self.__client as c:
451
447
  res = await asyncio.gather(
452
- *[self.__executor.exec(c.exec, "GET", i, None) for i in urls]
448
+ *[self.__executor.exec(c.exec, "GET", url, None)]
453
449
  )
454
- return list(itertools.chain(*res))
450
+ return res[0]
455
451
 
456
452
  def __toUrlParam(self: GMEPublicOfferQuery, date: str) -> str:
457
453
  return f"{date}"
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.1.2.dev19'
16
- __version_tuple__ = version_tuple = (3, 1, 2, 'dev19')
15
+ __version__ = version = '3.1.3.dev5'
16
+ __version_tuple__ = version_tuple = (3, 1, 3, 'dev5')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: artesian-sdk
3
- Version: 3.1.2.dev19
3
+ Version: 3.1.3.dev5
4
4
  Summary: Library provides read access to the Artesian API
5
5
  Author-email: ARK Lab <arklab@ark-energy.eu>
6
6
  Maintainer-email: ARK Lab <arklab@ark-energy.eu>
@@ -9,6 +9,8 @@ from Artesian.GMEPublicOffers import (
9
9
  from . import helpers
10
10
  import unittest
11
11
  from urllib.parse import unquote
12
+ from Artesian._ClientsExecutor.ArtesianJsonSerializer import artesianJsonSerialize
13
+ import responses
12
14
 
13
15
  cfg = ArtesianConfig("https://arkive.artesian.cloud/tenantName/", "APIKey")
14
16
 
@@ -16,6 +18,20 @@ qs = GMEPublicOfferService(cfg)
16
18
 
17
19
 
18
20
  class TestGMEPO(unittest.TestCase):
21
+
22
+ def setUp(self) -> None:
23
+ self.__baseurl = "https://arkive.artesian.cloud/tenantName//"
24
+ self.__sampleOutput = dict(
25
+ Page=1,
26
+ PageSize=10,
27
+ Count=0,
28
+ IsCountPartial=False,
29
+ Data=[[]],
30
+ )
31
+ self.__serializedOutput = artesianJsonSerialize(self.__sampleOutput)
32
+
33
+ return super().setUp()
34
+
19
35
  @helpers.TrackGMEPORequests
20
36
  def test_Market(self, requests):
21
37
  url = (
@@ -87,3 +103,24 @@ class TestGMEPO(unittest.TestCase):
87
103
  query = requests.getQs()
88
104
  self.assertEqual(query["page"], "1")
89
105
  self.assertEqual(query["pageSize"], "100")
106
+
107
+ def test_checkreturnedPayload(self):
108
+ with responses.RequestsMock() as rsps:
109
+ rsps.add(
110
+ "GET",
111
+ self.__baseurl
112
+ + "gmepublicoffer/v2.0/extract/2024-01-21/BID/ACC?_=1&page=1&pageSize=10",
113
+ json=self.__sampleOutput,
114
+ status=200,
115
+ )
116
+
117
+ output = (
118
+ qs.createQuery()
119
+ .forDate("2024-01-21")
120
+ .forStatus(Status.ACC)
121
+ .forPurpose(Purpose.BID)
122
+ .withPagination(1, 10)
123
+ .execute()
124
+ )
125
+
126
+ self.assertEqual(output, self.__sampleOutput)
@@ -15,7 +15,7 @@ class Qs:
15
15
  return dict(
16
16
  map(
17
17
  lambda x: x.split("="),
18
- unquote(self._mock.call_args.args[0][0]).split("?")[1].split("&"),
18
+ unquote(urlparse(self._mock.call_args.args[0][0]).query).split("&"),
19
19
  )
20
20
  )
21
21
 
@@ -23,6 +23,23 @@ class Qs:
23
23
  return urlparse(self._mock.call_args.args[0][0]).path
24
24
 
25
25
 
26
+ class QsPO:
27
+
28
+ def __init__(self: QsPO, mock: Mock) -> None:
29
+ self._mock = mock
30
+
31
+ def getQs(self: QsPO) -> Dict[str, str]:
32
+ return dict(
33
+ map(
34
+ lambda x: x.split("="),
35
+ unquote(urlparse(self._mock.call_args.args[0]).query).split("&"),
36
+ )
37
+ )
38
+
39
+ def getPath(self: Qs) -> str:
40
+ return urlparse(self._mock.call_args.args[0]).path
41
+
42
+
26
43
  def TrackRequests(func: Callable) -> Callable[[Any, Qs], None]:
27
44
  @patch.object(_Query._Query, "_exec")
28
45
  def wrapper(self: Any, mock: Mock) -> None:
@@ -34,6 +51,6 @@ def TrackRequests(func: Callable) -> Callable[[Any, Qs], None]:
34
51
  def TrackGMEPORequests(func: Callable) -> Callable[[Any, Qs], None]:
35
52
  @patch.object(_GMEPO.GMEPublicOfferQuery, "_exec")
36
53
  def wrapper(self: Any, mock: Mock) -> None:
37
- func(self, Qs(mock))
54
+ func(self, QsPO(mock))
38
55
 
39
56
  return wrapper