artesian-sdk 3.1.3.dev5__tar.gz → 3.1.4.dev10__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.3.dev5 → artesian_sdk-3.1.4.dev10}/.github/workflows/python-tests.yml +8 -0
- artesian_sdk-3.1.4.dev10/.vscode/extensions.json +10 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/.vscode/settings.json +1 -3
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/PKG-INFO +142 -21
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/README.md +141 -20
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/pyproject.toml +8 -1
- artesian_sdk-3.1.4.dev10/samples/TestWriteDataAndDeleteActual.py +70 -0
- artesian_sdk-3.1.4.dev10/samples/TestWriteDataAndDeleteAuction.py +82 -0
- artesian_sdk-3.1.4.dev10/samples/TestWriteDataAndDeleteBidAsk.py +82 -0
- artesian_sdk-3.1.4.dev10/samples/TestWriteDataAndDeleteMas.py +82 -0
- artesian_sdk-3.1.4.dev10/samples/TestWriteDataAndDeleteVersioned.py +77 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Exceptions.py +1 -1
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/GMEPublicOfferQuery.py +8 -11
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/Market.py +1 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/MarketDataService.py +12 -1
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/ArtesianMetadataFacet.py +1 -1
- artesian_sdk-3.1.4.dev10/src/Artesian/MarketData/_Dto/DeleteData.py +34 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/__init__.py +2 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/__init__.py +2 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/DefaultPartitionStrategy.py +9 -4
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_Query.py +1 -1
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/QueryParameters.py +1 -1
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/_ClientsExecutor/ArtesianJsonSerializer.py +1 -1
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/_version.py +2 -2
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/artesian_sdk.egg-info/PKG-INFO +142 -21
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/artesian_sdk.egg-info/SOURCES.txt +8 -0
- artesian_sdk-3.1.4.dev10/tests/TestMarketDataDeleteData.py +118 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/.flake8 +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/.github/dependabot.yml +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/.github/workflows/dependency-review.yaml +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/.gitignore +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/.vscode/launch.json +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/CONTRIBUTING.md +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/LICENSE +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestActual.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestAuction.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestBidAsk.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestGMEOffers.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestMarketDataService.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestMas.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestSearchFacet.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestVersioned.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestWriteDataAndQueryActual.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestWriteDataAndQueryAuction.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestWriteDataAndQueryBidAsk.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/samples/TestWriteDataAndQueryMas.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/setup.cfg +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/.gitignore +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/ArtesianConfig.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/ArtesianPolicyConfig.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/ExtractionRangeConfig.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/GMEPublicOfferQueryParameters.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/GMEPublicOfferService.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/BaType.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/GenerationType.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/Purpose.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/Scope.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/Status.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/UnitType.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/Zone.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/_Enum/__init__.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/GMEPublicOffers/__init__.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Granularity.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/ArtesianSearchResults.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/CurveRangeEntity.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/MarketDataEntityInput.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/MarketDataEntityOutput.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/MarketDataIdentifier.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/PagedResult.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Dto/UpsertData.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Enum/AggregationRule.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Enum/ArtesianMetadataFacetType.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Enum/MarketDataType.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/MarketData/_Enum/__init__.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/ActualQuery.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/AuctionQuery.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/BidAskQuery.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/MasQuery.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/QueryService.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/RelativeInterval.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/VersionedQuery.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/ActualQueryParameters.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/AuctionQueryParameters.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/BidAskQueryParameters.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/ExtractionRangeConfig.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/ExtractionRangeType.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/MasQueryParameters.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/MostRecentSelectionConfig.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/VersionSelectionConfig.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/VersionSelectionType.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/VersionedQueryParameters.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/VersionsRangeSelectionConfig.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/_QueryParameters/__init__.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/Query/__init__.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/_ClientsExecutor/Client.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/_ClientsExecutor/RequestExecutor.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/_ClientsExecutor/__init__.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/Artesian/__init__.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/artesian_sdk.egg-info/dependency_links.txt +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/artesian_sdk.egg-info/requires.txt +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/src/artesian_sdk.egg-info/top_level.txt +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/TestActual.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/TestBidAsk.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/TestClientErrorHandling.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/TestGMEPO.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/TestMarketDataService.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/TestMarketDataUpsertData.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/TestMas.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/TestVersioned.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/__init__.py +0 -0
- {artesian-sdk-3.1.3.dev5 → artesian_sdk-3.1.4.dev10}/tests/helpers.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
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: artesian-sdk
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.4.dev10
|
|
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>
|
|
@@ -419,6 +419,48 @@ Latest Value to propagate the latest value, not older than a certain threshold e
|
|
|
419
419
|
.withFillLatestValue("P5D", "True")
|
|
420
420
|
```
|
|
421
421
|
|
|
422
|
+
### Query written Versions or Products
|
|
423
|
+
|
|
424
|
+
Using MarketDataService is possible to query all the Versions and all the Products curves which has been written in a MarketData.
|
|
425
|
+
|
|
426
|
+
```Python
|
|
427
|
+
from Artesian.MarketData import MarketDataService
|
|
428
|
+
|
|
429
|
+
mds = MarketDataService(cfg)
|
|
430
|
+
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
To list MarketData curves
|
|
434
|
+
|
|
435
|
+
```Python
|
|
436
|
+
page = 1
|
|
437
|
+
pageSize = 100
|
|
438
|
+
res = mds.readCurveRange(100042422, page, pageSize, versionFrom="2016-12-20" , versionTo="2019-03-12")
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Search the MarketData collection with faceted results
|
|
442
|
+
|
|
443
|
+
Using MarketDataService is possible to query and search the MarketData collection with faceted results. Supports paging, filtering and free text.
|
|
444
|
+
|
|
445
|
+
```Python
|
|
446
|
+
from Artesian.MarketData import MarketDataService
|
|
447
|
+
|
|
448
|
+
mds = MarketDataService(cfg)
|
|
449
|
+
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
To list MarketData curves
|
|
453
|
+
|
|
454
|
+
```Python
|
|
455
|
+
page = 1
|
|
456
|
+
pageSize = 100
|
|
457
|
+
searchText = "Riconsegnato_"
|
|
458
|
+
filters = {"ProviderName": ["SNAM", "France"]}
|
|
459
|
+
sorts=["MarketDataId asc"]
|
|
460
|
+
doNotLoadAdditionalInfo=True
|
|
461
|
+
res = mds.searchFacet(page, pageSize, searchText, filters, sorts, doNotLoadAdditionalInfo)
|
|
462
|
+
```
|
|
463
|
+
|
|
422
464
|
## GME Public Offer
|
|
423
465
|
|
|
424
466
|
Artesian support Query over GME Public Offers which comes in a custom and dedicated format.
|
|
@@ -799,6 +841,11 @@ auctionRows = MarketData.UpsertData(MarketData.MarketDataIdentifier('PROVIDER',
|
|
|
799
841
|
|
|
800
842
|
```
|
|
801
843
|
|
|
844
|
+
|
|
845
|
+
## Delete Data in Artesian
|
|
846
|
+
|
|
847
|
+
Using the MarketDataService is possible to delete MarketData and its curves.
|
|
848
|
+
|
|
802
849
|
### Delete MarketData in Artesian
|
|
803
850
|
|
|
804
851
|
Using the MarketDataService is possible to delete MarketData and its curves.
|
|
@@ -815,46 +862,120 @@ mkservice.deleteMarketData(100042422)
|
|
|
815
862
|
|
|
816
863
|
```
|
|
817
864
|
|
|
818
|
-
|
|
865
|
+
Depending on the Type of the MarketData, the DeletData should be composed as per example below.
|
|
819
866
|
|
|
820
|
-
|
|
867
|
+
### Delete Data in an Actual Time Series
|
|
821
868
|
|
|
822
869
|
```Python
|
|
823
|
-
from Artesian
|
|
870
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
871
|
+
from Artesian.MarketData import AggregationRule
|
|
872
|
+
from datetime import datetime
|
|
873
|
+
from dateutil import tz
|
|
824
874
|
|
|
825
|
-
|
|
875
|
+
cfg = ArtesianConfg()
|
|
826
876
|
|
|
877
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
878
|
+
|
|
879
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
880
|
+
deleteData = MarketData.DeleteData(
|
|
881
|
+
ID=mkdid,
|
|
882
|
+
timezone='CET',
|
|
883
|
+
rangeStart=datetime(2020, 1, 1, 6),
|
|
884
|
+
rangeEnd=datetime(2020, 1, 1, 18),
|
|
885
|
+
)
|
|
886
|
+
|
|
887
|
+
mkdservice.deleteData(deleteData)
|
|
827
888
|
```
|
|
828
889
|
|
|
829
|
-
|
|
890
|
+
### Delete Data in an Versioned Time Series
|
|
830
891
|
|
|
831
892
|
```Python
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
893
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
894
|
+
from Artesian.MarketData import AggregationRule
|
|
895
|
+
from datetime import datetime
|
|
896
|
+
from dateutil import tz
|
|
897
|
+
|
|
898
|
+
cfg = ArtesianConfg()
|
|
899
|
+
|
|
900
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
901
|
+
|
|
902
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
903
|
+
deleteData = MarketData.DeleteData(
|
|
904
|
+
ID=mkdid,
|
|
905
|
+
timezone='CET',
|
|
906
|
+
rangeStart=datetime(2020, 1, 1, 0),
|
|
907
|
+
rangeEnd=datetime(2020, 1, 7, 0),
|
|
908
|
+
version=datetime(2020, 1, 1, 0)
|
|
909
|
+
)
|
|
910
|
+
|
|
911
|
+
mkdservice.deleteData(deleteData)
|
|
835
912
|
```
|
|
836
913
|
|
|
837
|
-
###
|
|
914
|
+
### Delte Data in a Market Assessment Time Series
|
|
838
915
|
|
|
839
|
-
|
|
916
|
+
```Python
|
|
917
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
918
|
+
from datetime import datetime
|
|
919
|
+
from dateutil import tz
|
|
920
|
+
|
|
921
|
+
cfg = ArtesianConfg()
|
|
922
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
923
|
+
|
|
924
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
925
|
+
deleteData = MarketData.DeleteData(
|
|
926
|
+
ID= mkdid,
|
|
927
|
+
timezone='CET',
|
|
928
|
+
rangeStart=datetime(2020, 1, 1, 0),
|
|
929
|
+
rangeEnd=datetime(2020, 1, 3, 0),
|
|
930
|
+
product=["Feb-20"]
|
|
931
|
+
)
|
|
932
|
+
|
|
933
|
+
mkdservice.deleteData(deleteData)
|
|
934
|
+
```
|
|
935
|
+
|
|
936
|
+
### Delte Data in a Bid Ask Time Series
|
|
840
937
|
|
|
841
938
|
```Python
|
|
842
|
-
from Artesian
|
|
939
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
940
|
+
from datetime import datetime
|
|
941
|
+
from dateutil import tz
|
|
843
942
|
|
|
844
|
-
|
|
943
|
+
cfg = ArtesianConfg()
|
|
944
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
945
|
+
|
|
946
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
947
|
+
deleteData = MarketData.DeleteData(
|
|
948
|
+
ID= mkdid,
|
|
949
|
+
timezone='CET',
|
|
950
|
+
rangeStart=datetime(2020, 1, 1, 0),
|
|
951
|
+
rangeEnd=datetime(2020, 1, 3, 0),
|
|
952
|
+
product=["Feb-20"]
|
|
953
|
+
)
|
|
845
954
|
|
|
955
|
+
mkdservice.deleteData(deleteData)
|
|
846
956
|
```
|
|
847
957
|
|
|
848
|
-
|
|
958
|
+
### Delete Data in an Auction Time Series
|
|
849
959
|
|
|
850
960
|
```Python
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
961
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
962
|
+
from Artesian.MarketData import AggregationRule
|
|
963
|
+
from datetime import datetime
|
|
964
|
+
from dateutil import tz
|
|
965
|
+
|
|
966
|
+
cfg = ArtesianConfg()
|
|
967
|
+
|
|
968
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
969
|
+
|
|
970
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
971
|
+
deleteData = MarketData.DeleteData(
|
|
972
|
+
ID=mkdid,
|
|
973
|
+
timezone='CET',
|
|
974
|
+
rangeStart=datetime(2020, 1, 1, 6),
|
|
975
|
+
rangeEnd=datetime(2020, 1, 1, 18),
|
|
976
|
+
)
|
|
977
|
+
|
|
978
|
+
mkdservice.deleteData(deleteData)
|
|
858
979
|
```
|
|
859
980
|
|
|
860
981
|
## Jupyter Support
|
|
@@ -365,6 +365,48 @@ Latest Value to propagate the latest value, not older than a certain threshold e
|
|
|
365
365
|
.withFillLatestValue("P5D", "True")
|
|
366
366
|
```
|
|
367
367
|
|
|
368
|
+
### Query written Versions or Products
|
|
369
|
+
|
|
370
|
+
Using MarketDataService is possible to query all the Versions and all the Products curves which has been written in a MarketData.
|
|
371
|
+
|
|
372
|
+
```Python
|
|
373
|
+
from Artesian.MarketData import MarketDataService
|
|
374
|
+
|
|
375
|
+
mds = MarketDataService(cfg)
|
|
376
|
+
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
To list MarketData curves
|
|
380
|
+
|
|
381
|
+
```Python
|
|
382
|
+
page = 1
|
|
383
|
+
pageSize = 100
|
|
384
|
+
res = mds.readCurveRange(100042422, page, pageSize, versionFrom="2016-12-20" , versionTo="2019-03-12")
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Search the MarketData collection with faceted results
|
|
388
|
+
|
|
389
|
+
Using MarketDataService is possible to query and search the MarketData collection with faceted results. Supports paging, filtering and free text.
|
|
390
|
+
|
|
391
|
+
```Python
|
|
392
|
+
from Artesian.MarketData import MarketDataService
|
|
393
|
+
|
|
394
|
+
mds = MarketDataService(cfg)
|
|
395
|
+
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
To list MarketData curves
|
|
399
|
+
|
|
400
|
+
```Python
|
|
401
|
+
page = 1
|
|
402
|
+
pageSize = 100
|
|
403
|
+
searchText = "Riconsegnato_"
|
|
404
|
+
filters = {"ProviderName": ["SNAM", "France"]}
|
|
405
|
+
sorts=["MarketDataId asc"]
|
|
406
|
+
doNotLoadAdditionalInfo=True
|
|
407
|
+
res = mds.searchFacet(page, pageSize, searchText, filters, sorts, doNotLoadAdditionalInfo)
|
|
408
|
+
```
|
|
409
|
+
|
|
368
410
|
## GME Public Offer
|
|
369
411
|
|
|
370
412
|
Artesian support Query over GME Public Offers which comes in a custom and dedicated format.
|
|
@@ -745,6 +787,11 @@ auctionRows = MarketData.UpsertData(MarketData.MarketDataIdentifier('PROVIDER',
|
|
|
745
787
|
|
|
746
788
|
```
|
|
747
789
|
|
|
790
|
+
|
|
791
|
+
## Delete Data in Artesian
|
|
792
|
+
|
|
793
|
+
Using the MarketDataService is possible to delete MarketData and its curves.
|
|
794
|
+
|
|
748
795
|
### Delete MarketData in Artesian
|
|
749
796
|
|
|
750
797
|
Using the MarketDataService is possible to delete MarketData and its curves.
|
|
@@ -761,46 +808,120 @@ mkservice.deleteMarketData(100042422)
|
|
|
761
808
|
|
|
762
809
|
```
|
|
763
810
|
|
|
764
|
-
|
|
811
|
+
Depending on the Type of the MarketData, the DeletData should be composed as per example below.
|
|
765
812
|
|
|
766
|
-
|
|
813
|
+
### Delete Data in an Actual Time Series
|
|
767
814
|
|
|
768
815
|
```Python
|
|
769
|
-
from Artesian
|
|
816
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
817
|
+
from Artesian.MarketData import AggregationRule
|
|
818
|
+
from datetime import datetime
|
|
819
|
+
from dateutil import tz
|
|
770
820
|
|
|
771
|
-
|
|
821
|
+
cfg = ArtesianConfg()
|
|
772
822
|
|
|
823
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
824
|
+
|
|
825
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
826
|
+
deleteData = MarketData.DeleteData(
|
|
827
|
+
ID=mkdid,
|
|
828
|
+
timezone='CET',
|
|
829
|
+
rangeStart=datetime(2020, 1, 1, 6),
|
|
830
|
+
rangeEnd=datetime(2020, 1, 1, 18),
|
|
831
|
+
)
|
|
832
|
+
|
|
833
|
+
mkdservice.deleteData(deleteData)
|
|
773
834
|
```
|
|
774
835
|
|
|
775
|
-
|
|
836
|
+
### Delete Data in an Versioned Time Series
|
|
776
837
|
|
|
777
838
|
```Python
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
839
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
840
|
+
from Artesian.MarketData import AggregationRule
|
|
841
|
+
from datetime import datetime
|
|
842
|
+
from dateutil import tz
|
|
843
|
+
|
|
844
|
+
cfg = ArtesianConfg()
|
|
845
|
+
|
|
846
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
847
|
+
|
|
848
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
849
|
+
deleteData = MarketData.DeleteData(
|
|
850
|
+
ID=mkdid,
|
|
851
|
+
timezone='CET',
|
|
852
|
+
rangeStart=datetime(2020, 1, 1, 0),
|
|
853
|
+
rangeEnd=datetime(2020, 1, 7, 0),
|
|
854
|
+
version=datetime(2020, 1, 1, 0)
|
|
855
|
+
)
|
|
856
|
+
|
|
857
|
+
mkdservice.deleteData(deleteData)
|
|
781
858
|
```
|
|
782
859
|
|
|
783
|
-
###
|
|
860
|
+
### Delte Data in a Market Assessment Time Series
|
|
784
861
|
|
|
785
|
-
|
|
862
|
+
```Python
|
|
863
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
864
|
+
from datetime import datetime
|
|
865
|
+
from dateutil import tz
|
|
866
|
+
|
|
867
|
+
cfg = ArtesianConfg()
|
|
868
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
869
|
+
|
|
870
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
871
|
+
deleteData = MarketData.DeleteData(
|
|
872
|
+
ID= mkdid,
|
|
873
|
+
timezone='CET',
|
|
874
|
+
rangeStart=datetime(2020, 1, 1, 0),
|
|
875
|
+
rangeEnd=datetime(2020, 1, 3, 0),
|
|
876
|
+
product=["Feb-20"]
|
|
877
|
+
)
|
|
878
|
+
|
|
879
|
+
mkdservice.deleteData(deleteData)
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
### Delte Data in a Bid Ask Time Series
|
|
786
883
|
|
|
787
884
|
```Python
|
|
788
|
-
from Artesian
|
|
885
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
886
|
+
from datetime import datetime
|
|
887
|
+
from dateutil import tz
|
|
789
888
|
|
|
790
|
-
|
|
889
|
+
cfg = ArtesianConfg()
|
|
890
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
891
|
+
|
|
892
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
893
|
+
deleteData = MarketData.DeleteData(
|
|
894
|
+
ID= mkdid,
|
|
895
|
+
timezone='CET',
|
|
896
|
+
rangeStart=datetime(2020, 1, 1, 0),
|
|
897
|
+
rangeEnd=datetime(2020, 1, 3, 0),
|
|
898
|
+
product=["Feb-20"]
|
|
899
|
+
)
|
|
791
900
|
|
|
901
|
+
mkdservice.deleteData(deleteData)
|
|
792
902
|
```
|
|
793
903
|
|
|
794
|
-
|
|
904
|
+
### Delete Data in an Auction Time Series
|
|
795
905
|
|
|
796
906
|
```Python
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
907
|
+
from Artesian import ArtesianConfig, Granularity, MarketData
|
|
908
|
+
from Artesian.MarketData import AggregationRule
|
|
909
|
+
from datetime import datetime
|
|
910
|
+
from dateutil import tz
|
|
911
|
+
|
|
912
|
+
cfg = ArtesianConfg()
|
|
913
|
+
|
|
914
|
+
mkservice = MarketData.MarketDataService(cfg)
|
|
915
|
+
|
|
916
|
+
mkdid = MarketData.MarketDataIdentifier('PROVIDER', 'MARKETDATANAME')
|
|
917
|
+
deleteData = MarketData.DeleteData(
|
|
918
|
+
ID=mkdid,
|
|
919
|
+
timezone='CET',
|
|
920
|
+
rangeStart=datetime(2020, 1, 1, 6),
|
|
921
|
+
rangeEnd=datetime(2020, 1, 1, 18),
|
|
922
|
+
)
|
|
923
|
+
|
|
924
|
+
mkdservice.deleteData(deleteData)
|
|
804
925
|
```
|
|
805
926
|
|
|
806
927
|
## Jupyter Support
|
|
@@ -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
|
+
]
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
import Artesian
|
|
3
|
+
from Artesian import Query
|
|
4
|
+
from Artesian.Granularity import Granularity
|
|
5
|
+
from Artesian.MarketData._Enum.MarketDataType import MarketDataType
|
|
6
|
+
|
|
7
|
+
cfg = Artesian.ArtesianConfig("https://arkive.artesian.cloud/tenantName/", "APIKey")
|
|
8
|
+
mkdservice = Artesian.MarketData.MarketDataService(cfg)
|
|
9
|
+
|
|
10
|
+
actual = Artesian.MarketData.MarketDataEntityInput(
|
|
11
|
+
"PythonSDK",
|
|
12
|
+
"TestActualWriteAndDelete",
|
|
13
|
+
Granularity.Hour,
|
|
14
|
+
MarketDataType.ActualTimeSerie,
|
|
15
|
+
"CET",
|
|
16
|
+
tags={"TestSDKPython": ["PythonValue2"]},
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
registered = mkdservice.readMarketDataRegistryByName(
|
|
20
|
+
actual.providerName, actual.marketDataName
|
|
21
|
+
)
|
|
22
|
+
if registered is None:
|
|
23
|
+
registered = mkdservice.registerMarketData(actual)
|
|
24
|
+
|
|
25
|
+
data = Artesian.MarketData.UpsertData(
|
|
26
|
+
Artesian.MarketData.MarketDataIdentifier(
|
|
27
|
+
actual.providerName, actual.marketDataName
|
|
28
|
+
),
|
|
29
|
+
"UTC",
|
|
30
|
+
rows={datetime(2020, 1, 1, h): 42.0 + h / 24.0 for h in range(0, 23)},
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
mkdservice.upsertData(data)
|
|
34
|
+
|
|
35
|
+
query = Query.QueryService(cfg)
|
|
36
|
+
|
|
37
|
+
res = (
|
|
38
|
+
query.createActual()
|
|
39
|
+
.forMarketData([registered.marketDataId])
|
|
40
|
+
.inAbsoluteDateRange("2020-01-01", "2020-01-02")
|
|
41
|
+
.inTimeZone("CET")
|
|
42
|
+
.inGranularity(Granularity.Hour)
|
|
43
|
+
.execute()
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
print(res)
|
|
47
|
+
|
|
48
|
+
#Delete data between 2020-01-01 06:00 and 2020-01-01 18:00
|
|
49
|
+
deleteData = Artesian.MarketData.DeleteData(
|
|
50
|
+
ID=Artesian.MarketData.MarketDataIdentifier(registered.providerName, registered.marketDataName),
|
|
51
|
+
timezone="CET",
|
|
52
|
+
rangeStart=datetime(2020, 1, 1, 6),
|
|
53
|
+
rangeEnd=datetime(2020, 1, 1, 18),
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
mkdservice.deleteData(deleteData)
|
|
57
|
+
|
|
58
|
+
res = (
|
|
59
|
+
query.createActual()
|
|
60
|
+
.forMarketData([registered.marketDataId])
|
|
61
|
+
.inAbsoluteDateRange("2020-01-01", "2020-01-02")
|
|
62
|
+
.inTimeZone("CET")
|
|
63
|
+
.inGranularity(Granularity.Hour)
|
|
64
|
+
.execute()
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
print(res)
|
|
68
|
+
|
|
69
|
+
#Delete the curve completely
|
|
70
|
+
mkdservice.deleteMarketData(registered.marketDataId)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
import Artesian
|
|
3
|
+
from Artesian import Query
|
|
4
|
+
from dateutil import tz
|
|
5
|
+
from Artesian import MarketData
|
|
6
|
+
from Artesian.Granularity import Granularity
|
|
7
|
+
|
|
8
|
+
cfg = Artesian.ArtesianConfig("https://arkive.artesian.cloud/tenantName/", "APIKey")
|
|
9
|
+
mkdservice = Artesian.MarketData.MarketDataService(cfg)
|
|
10
|
+
|
|
11
|
+
auction = Artesian.MarketData.MarketDataEntityInput(
|
|
12
|
+
"PythonSDK",
|
|
13
|
+
"TestAuctionWriteAndDelete",
|
|
14
|
+
Granularity.Hour,
|
|
15
|
+
MarketData.MarketDataType.Auction,
|
|
16
|
+
"CET",
|
|
17
|
+
tags={"TestSDKPython": ["PythonValue2"]},
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
registered = mkdservice.readMarketDataRegistryByName(
|
|
21
|
+
auction.providerName, auction.marketDataName
|
|
22
|
+
)
|
|
23
|
+
if registered is None:
|
|
24
|
+
registered = mkdservice.registerMarketData(auction)
|
|
25
|
+
|
|
26
|
+
auctionRowData={datetime(2020, 1, 1, h): MarketData.AuctionBids(
|
|
27
|
+
datetime(2020, 1, 1),
|
|
28
|
+
bid=[
|
|
29
|
+
MarketData.AuctionBidValue(11.0, 12.0),
|
|
30
|
+
MarketData.AuctionBidValue(13.0, 14.0),
|
|
31
|
+
],
|
|
32
|
+
offer=[
|
|
33
|
+
MarketData.AuctionBidValue(21.0, 22.0),
|
|
34
|
+
MarketData.AuctionBidValue(23.0, 24.0),
|
|
35
|
+
],
|
|
36
|
+
) for h in range(0, 23)}
|
|
37
|
+
|
|
38
|
+
auctionRows = MarketData.UpsertData(
|
|
39
|
+
Artesian.MarketData.MarketDataIdentifier(
|
|
40
|
+
auction.providerName, auction.marketDataName
|
|
41
|
+
),
|
|
42
|
+
"UTC",
|
|
43
|
+
auctionRows=auctionRowData,
|
|
44
|
+
downloadedAt=datetime(2020, 1, 3).replace(tzinfo=tz.UTC),
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
mkdservice.upsertData(auctionRows)
|
|
48
|
+
|
|
49
|
+
query = Query.QueryService(cfg)
|
|
50
|
+
|
|
51
|
+
res = (
|
|
52
|
+
query.createAuction()
|
|
53
|
+
.forMarketData([registered.marketDataId])
|
|
54
|
+
.inAbsoluteDateRange("2020-01-01", "2020-01-02")
|
|
55
|
+
.inTimeZone("CET")
|
|
56
|
+
.execute()
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
print(res)
|
|
60
|
+
|
|
61
|
+
#Delete data between 2020-01-01 06:00 and 2020-01-01 18:00
|
|
62
|
+
deleteData = Artesian.MarketData.DeleteData(
|
|
63
|
+
ID=Artesian.MarketData.MarketDataIdentifier(registered.providerName, registered.marketDataName),
|
|
64
|
+
timezone="CET",
|
|
65
|
+
rangeStart=datetime(2020, 1, 1, 6),
|
|
66
|
+
rangeEnd=datetime(2020, 1, 1, 18),
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
mkdservice.deleteData(deleteData)
|
|
70
|
+
|
|
71
|
+
res = (
|
|
72
|
+
query.createAuction()
|
|
73
|
+
.forMarketData([registered.marketDataId])
|
|
74
|
+
.inAbsoluteDateRange("2020-01-01", "2020-01-02")
|
|
75
|
+
.inTimeZone("CET")
|
|
76
|
+
.execute()
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
print(res)
|
|
80
|
+
|
|
81
|
+
#Delete the curve completely
|
|
82
|
+
mkdservice.deleteMarketData(registered.marketDataId)
|