artesian-sdk 3.1.2.dev19__tar.gz → 3.1.3__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.
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/.github/workflows/python-tests.yml +8 -0
- artesian-sdk-3.1.3/.vscode/extensions.json +10 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/.vscode/settings.json +1 -3
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/PKG-INFO +1 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/pyproject.toml +8 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Exceptions.py +1 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/GMEPublicOfferQuery.py +18 -25
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/MarketDataService.py +1 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/ArtesianMetadataFacet.py +1 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/DefaultPartitionStrategy.py +9 -4
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_Query.py +1 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/QueryParameters.py +1 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/_ClientsExecutor/ArtesianJsonSerializer.py +1 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/_version.py +2 -2
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/artesian_sdk.egg-info/PKG-INFO +1 -1
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/artesian_sdk.egg-info/SOURCES.txt +1 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/TestGMEPO.py +37 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/helpers.py +19 -2
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/.flake8 +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/.github/dependabot.yml +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/.github/workflows/dependency-review.yaml +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/.gitignore +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/.vscode/launch.json +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/CONTRIBUTING.md +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/LICENSE +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/README.md +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestActual.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestAuction.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestBidAsk.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestGMEOffers.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestMarketDataService.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestMas.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestSearchFacet.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestVersioned.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestWriteDataAndQueryActual.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestWriteDataAndQueryAuction.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestWriteDataAndQueryBidAsk.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/samples/TestWriteDataAndQueryMas.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/setup.cfg +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/.gitignore +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/ArtesianConfig.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/ArtesianPolicyConfig.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/ExtractionRangeConfig.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/GMEPublicOfferQueryParameters.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/GMEPublicOfferService.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/BaType.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/GenerationType.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/Market.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/Purpose.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/Scope.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/Status.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/UnitType.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/Zone.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Granularity.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/ArtesianSearchResults.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/CurveRangeEntity.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/MarketDataEntityInput.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/MarketDataEntityOutput.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/MarketDataIdentifier.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/PagedResult.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/UpsertData.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Enum/AggregationRule.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Enum/ArtesianMetadataFacetType.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Enum/MarketDataType.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Enum/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/ActualQuery.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/AuctionQuery.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/BidAskQuery.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/MasQuery.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/QueryService.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/RelativeInterval.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/VersionedQuery.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/ActualQueryParameters.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/AuctionQueryParameters.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/BidAskQueryParameters.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/ExtractionRangeConfig.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/ExtractionRangeType.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/MasQueryParameters.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/MostRecentSelectionConfig.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/VersionSelectionConfig.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/VersionSelectionType.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/VersionedQueryParameters.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/VersionsRangeSelectionConfig.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/_ClientsExecutor/Client.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/_ClientsExecutor/RequestExecutor.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/_ClientsExecutor/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/__init__.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/artesian_sdk.egg-info/dependency_links.txt +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/artesian_sdk.egg-info/requires.txt +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/artesian_sdk.egg-info/top_level.txt +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/TestActual.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/TestBidAsk.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/TestClientErrorHandling.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/TestMarketDataService.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/TestMarketDataUpsertData.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/TestMas.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/TestVersioned.py +0 -0
- {artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/tests/__init__.py +0 -0
|
@@ -36,6 +36,14 @@ jobs:
|
|
|
36
36
|
run: |
|
|
37
37
|
flake8 .
|
|
38
38
|
|
|
39
|
+
- uses: jordemort/action-pyright@v1
|
|
40
|
+
with:
|
|
41
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
42
|
+
reporter: github-check
|
|
43
|
+
lib:
|
|
44
|
+
level: warning
|
|
45
|
+
filter_mode: file
|
|
46
|
+
|
|
39
47
|
- name: Test Pytest
|
|
40
48
|
run: |
|
|
41
49
|
pytest --junitxml=junit/test-results-${{ matrix.python-version }}.xml
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
"python.testing.pytestEnabled": true,
|
|
3
3
|
"python.testing.unittestEnabled": false,
|
|
4
4
|
"editor.fontSize": 16,
|
|
5
|
-
"python.formatting.provider": "none",
|
|
6
|
-
"python.linting.flake8Enabled": true,
|
|
7
5
|
"editor.formatOnPaste": true,
|
|
8
6
|
"editor.formatOnSave": true,
|
|
9
7
|
"[python]": {
|
|
10
8
|
"editor.defaultFormatter": "ms-python.black-formatter"
|
|
11
9
|
}
|
|
12
|
-
}
|
|
10
|
+
}
|
|
@@ -155,4 +155,11 @@ python_files = "Test*.py"
|
|
|
155
155
|
testpaths = [
|
|
156
156
|
"tests"
|
|
157
157
|
]
|
|
158
|
-
addopts = "--doctest-modules --junitxml=junit/test-results.xml --cov=src --cov-report=xml --cov-report=html"
|
|
158
|
+
addopts = "--doctest-modules --junitxml=junit/test-results.xml --cov=src --cov-report=xml --cov-report=html"
|
|
159
|
+
|
|
160
|
+
[tool.pyright]
|
|
161
|
+
include = ["src"]
|
|
162
|
+
exclude = [
|
|
163
|
+
"**/node_modules",
|
|
164
|
+
"**/__pycache__"
|
|
165
|
+
]
|
|
@@ -125,7 +125,7 @@ class ArtesianSdkOptimisticConcurrencyException(ArtesianSdkRemoteException):
|
|
|
125
125
|
"""
|
|
126
126
|
|
|
127
127
|
def __init__(
|
|
128
|
-
self:
|
|
128
|
+
self: ArtesianSdkOptimisticConcurrencyException,
|
|
129
129
|
method: str,
|
|
130
130
|
url: str,
|
|
131
131
|
statusCode: int,
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/GMEPublicOfferQuery.py
RENAMED
|
@@ -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
|
-
|
|
213
|
-
return self._exec(
|
|
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
|
-
|
|
223
|
-
return await self._execAsync(
|
|
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
|
-
|
|
285
|
-
|
|
286
|
-
return urls
|
|
282
|
+
return url
|
|
287
283
|
|
|
288
284
|
def __getScope(self: GMEPublicOfferQuery, scope: Scope) -> str:
|
|
289
285
|
switcher = {
|
|
@@ -352,14 +348,19 @@ class GMEPublicOfferQuery:
|
|
|
352
348
|
raise Exception("Not supported Market")
|
|
353
349
|
return vr
|
|
354
350
|
|
|
355
|
-
def __getPurpose(self: GMEPublicOfferQuery, purpose: Purpose) -> str:
|
|
351
|
+
def __getPurpose(self: GMEPublicOfferQuery, purpose: Purpose | None) -> str:
|
|
352
|
+
if purpose is None:
|
|
353
|
+
raise Exception("Not supported Purpose")
|
|
356
354
|
switcher = {Purpose.BID: "BID", Purpose.OFF: "OFF"}
|
|
357
355
|
vr = switcher.get(purpose, "Defpurp")
|
|
358
356
|
if vr == "Defpurp":
|
|
359
357
|
raise Exception("Not supported Purpose")
|
|
360
358
|
return vr
|
|
361
359
|
|
|
362
|
-
def __getStatus(self: GMEPublicOfferQuery, status: Status) -> str:
|
|
360
|
+
def __getStatus(self: GMEPublicOfferQuery, status: Status | None) -> str:
|
|
361
|
+
if status is None:
|
|
362
|
+
raise Exception("Not supported Status")
|
|
363
|
+
|
|
363
364
|
switcher = {
|
|
364
365
|
Status.ACC: "ACC",
|
|
365
366
|
Status.INC: "INC",
|
|
@@ -433,27 +434,19 @@ class GMEPublicOfferQuery:
|
|
|
433
434
|
subPath = f"{self.__toUrlParam(queryParamaters.extractionRangeConfig.date)}"
|
|
434
435
|
return subPath
|
|
435
436
|
|
|
436
|
-
def
|
|
437
|
-
subPath = f"{parse.quote_plus(status)}"
|
|
438
|
-
return subPath
|
|
439
|
-
|
|
440
|
-
def _buildExtractionPurpose(self: GMEPublicOfferQuery, purpose: Purpose) -> str:
|
|
441
|
-
subPath = f"{parse.quote_plus(purpose)}"
|
|
442
|
-
return subPath
|
|
443
|
-
|
|
444
|
-
def _exec(self: GMEPublicOfferQuery, urls: List[str]) -> list:
|
|
437
|
+
def _exec(self: GMEPublicOfferQuery, url: str) -> Any:
|
|
445
438
|
loop = get_event_loop()
|
|
446
|
-
rr = loop.run_until_complete(self._execAsync(
|
|
439
|
+
rr = loop.run_until_complete(self._execAsync(url))
|
|
447
440
|
return rr
|
|
448
441
|
|
|
449
|
-
async def _execAsync(self: GMEPublicOfferQuery,
|
|
442
|
+
async def _execAsync(self: GMEPublicOfferQuery, url: str) -> Any:
|
|
450
443
|
with self.__client as c:
|
|
451
444
|
res = await asyncio.gather(
|
|
452
|
-
*[self.__executor.exec(c.exec, "GET",
|
|
445
|
+
*[self.__executor.exec(c.exec, "GET", url, None)]
|
|
453
446
|
)
|
|
454
|
-
return
|
|
447
|
+
return res[0]
|
|
455
448
|
|
|
456
|
-
def __toUrlParam(self: GMEPublicOfferQuery, date: str) -> str:
|
|
449
|
+
def __toUrlParam(self: GMEPublicOfferQuery, date: str | None) -> str:
|
|
457
450
|
return f"{date}"
|
|
458
451
|
|
|
459
452
|
def _validateQuery(self: GMEPublicOfferQuery) -> None:
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/MarketDataService.py
RENAMED
|
@@ -118,7 +118,7 @@ class MarketDataService:
|
|
|
118
118
|
self: MarketDataService,
|
|
119
119
|
page: int,
|
|
120
120
|
pageSize: int,
|
|
121
|
-
searchText: str = None,
|
|
121
|
+
searchText: str | None = None,
|
|
122
122
|
filters: Optional[Dict[str, List[str]]] = None,
|
|
123
123
|
sorts: Optional[List[str]] = None,
|
|
124
124
|
doNotLoadAdditionalInfo: bool = False,
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/DefaultPartitionStrategy.py
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
import copy
|
|
3
|
-
from typing import List
|
|
3
|
+
from typing import List, TypeVar
|
|
4
|
+
|
|
5
|
+
from ._QueryParameters.QueryParameters import _QueryParameters
|
|
4
6
|
from ._QueryParameters.ActualQueryParameters import ActualQueryParameters
|
|
5
7
|
from ._QueryParameters.VersionedQueryParameters import VersionedQueryParameters
|
|
6
8
|
from ._QueryParameters.AuctionQueryParameters import AuctionQueryParameters
|
|
@@ -8,6 +10,9 @@ from ._QueryParameters.MasQueryParameters import MasQueryParameters
|
|
|
8
10
|
from ._QueryParameters.BidAskQueryParameters import BidAskQueryParameters
|
|
9
11
|
|
|
10
12
|
|
|
13
|
+
T = TypeVar("T", bound=_QueryParameters)
|
|
14
|
+
|
|
15
|
+
|
|
11
16
|
class DefaultPartitionStrategy:
|
|
12
17
|
"""Class for the default strategy to partition Query Parameters."""
|
|
13
18
|
|
|
@@ -89,9 +94,9 @@ class DefaultPartitionStrategy:
|
|
|
89
94
|
return self._tsPartitionStrategy(bidAskQueryParameters)
|
|
90
95
|
|
|
91
96
|
def _tsPartitionStrategy(
|
|
92
|
-
self: DefaultPartitionStrategy, Parameters: List[
|
|
93
|
-
) -> List[
|
|
94
|
-
res: List[
|
|
97
|
+
self: DefaultPartitionStrategy, Parameters: List[T]
|
|
98
|
+
) -> List[T]:
|
|
99
|
+
res: List[T] = []
|
|
95
100
|
for param in Parameters:
|
|
96
101
|
if param.ids is None:
|
|
97
102
|
res.append(param)
|
|
@@ -172,7 +172,7 @@ class _Query:
|
|
|
172
172
|
)
|
|
173
173
|
return list(itertools.chain(*res))
|
|
174
174
|
|
|
175
|
-
def __toUrlParam(self: _Query, start: str, end: str) -> str:
|
|
175
|
+
def __toUrlParam(self: _Query, start: str | None, end: str | None) -> str:
|
|
176
176
|
return f"{start}/{end}"
|
|
177
177
|
|
|
178
178
|
def _validateQuery(self: _Query) -> None:
|
|
@@ -40,7 +40,7 @@ class _FillCustomTimeserieStrategy(_FillStrategy):
|
|
|
40
40
|
return f"fillerK=CustomValue&fillerDV={self.val}"
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
def toQueryParams(vals: List[List[str]]) -> str:
|
|
43
|
+
def toQueryParams(vals: List[List[str | float | int | None]]) -> str:
|
|
44
44
|
filtered = filter(lambda x: x[1], vals)
|
|
45
45
|
stringVals = map(lambda x: [x[0], str(x[1])], filtered)
|
|
46
46
|
joinedEqual = map(lambda x: "=".join(x), stringVals)
|
|
@@ -57,7 +57,7 @@ def __artesianDictDeserializer(
|
|
|
57
57
|
obj: list, cls: type, *args: Any, **kwargs: Any
|
|
58
58
|
) -> object:
|
|
59
59
|
key, value = get_args(cls)
|
|
60
|
-
result: Dict[key, value] = {
|
|
60
|
+
result: Dict[key, value] = { # type: ignore
|
|
61
61
|
jsons.load(item["Key"], key, *args, **kwargs): jsons.load(
|
|
62
62
|
item["Value"], value, *args, **kwargs
|
|
63
63
|
)
|
|
@@ -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.
|
|
16
|
-
__version_tuple__ = version_tuple = (3, 1,
|
|
15
|
+
__version__ = version = '3.1.3'
|
|
16
|
+
__version_tuple__ = version_tuple = (3, 1, 3)
|
|
@@ -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]).
|
|
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,
|
|
54
|
+
func(self, QsPO(mock))
|
|
38
55
|
|
|
39
56
|
return wrapper
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/BaType.py
RENAMED
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/GenerationType.py
RENAMED
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/Market.py
RENAMED
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/Purpose.py
RENAMED
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/Status.py
RENAMED
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/UnitType.py
RENAMED
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/GMEPublicOffers/_Enum/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/CurveRangeEntity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Dto/MarketDataIdentifier.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Enum/AggregationRule.py
RENAMED
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/MarketData/_Enum/MarketDataType.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/Query/_QueryParameters/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/Artesian/_ClientsExecutor/RequestExecutor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{artesian-sdk-3.1.2.dev19 → artesian-sdk-3.1.3}/src/artesian_sdk.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|