artesian-sdk 4.3.0__tar.gz → 4.3.1__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-4.3.1/.github/workflows/python-tests.yml +586 -0
- artesian_sdk-4.3.1/.github/workflows/validate_branch.sh +24 -0
- artesian_sdk-4.3.1/.github/workflows/validate_tag.sh +41 -0
- artesian_sdk-4.3.1/CODEOWNERS +5 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/PKG-INFO +1 -1
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/GMEPublicOfferQuery.py +5 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/Market.py +4 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/Status.py +1 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/_version.py +3 -3
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/artesian_sdk.egg-info/PKG-INFO +1 -1
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/artesian_sdk.egg-info/SOURCES.txt +2 -1
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/artesian_sdk.egg-info/scm_file_list.json +99 -98
- artesian_sdk-4.3.1/src/artesian_sdk.egg-info/scm_version.json +8 -0
- artesian_sdk-4.3.0/.github/workflows/dependency-review.yaml +0 -17
- artesian_sdk-4.3.0/.github/workflows/python-tests.yml +0 -102
- artesian_sdk-4.3.0/CODEOWNERS +0 -1
- artesian_sdk-4.3.0/src/artesian_sdk.egg-info/scm_version.json +0 -8
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/.flake8 +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/.github/dependabot.yml +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/.gitignore +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/.vscode/extensions.json +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/.vscode/launch.json +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/.vscode/settings.json +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/CONTRIBUTING.md +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/LICENSE +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/README.md +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/pyproject.toml +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/renovate.json +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestActual.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestAuction.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestBidAsk.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestDerivedCfg.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestDerivedCfgTransform.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestDerivedTransformQueryValidation.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestGMEOffers.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestMarketDataService.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestMas.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestSearchFacet.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestVersioned.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndDeleteActual.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndDeleteAuction.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndDeleteBidAsk.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndDeleteMas.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndDeleteVersioned.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndQueryActual.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndQueryAuction.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndQueryBidAsk.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/samples/TestWriteDataAndQueryMas.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/setup.cfg +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/.gitignore +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/ArtesianConfig.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/ArtesianPolicyConfig.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Exceptions.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/ExtractionRangeConfig.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/GMEPublicOfferQueryParameters.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/GMEPublicOfferService.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/BaType.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/GenerationType.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/Purpose.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/Scope.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/UnitType.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/Zone.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/_Enum/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Granularity.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/CommonUnitOfMeasure.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/MarketDataService.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/ArtesianMetadataFacet.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/ArtesianSearchResults.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/CheckConversionResult.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/CurveRangeEntity.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/DeleteData.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/DerivedCfg.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/DerivedTransformQueryValidation.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/DerivedTransformQueryValidationResponse.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/MarketDataEntityInput.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/MarketDataEntityOutput.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/MarketDataIdentifier.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/PagedResult.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/TimeSerieData.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/UnitOfMeasure.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/UpsertData.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Dto/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Enum/AggregationRule.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Enum/ArtesianMetadataFacetType.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Enum/DerivedAlgorithm.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Enum/MarketDataType.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Enum/UpsertMode.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/_Enum/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/MarketData/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/ActualQuery.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/AuctionQuery.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/BidAskQuery.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/DefaultPartitionStrategy.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/MasQuery.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/QueryService.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/RelativeInterval.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/VersionedQuery.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_Query.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/ActualQueryParameters.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/AuctionQueryParameters.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/BidAskQueryParameters.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/ExtractionRangeConfig.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/ExtractionRangeType.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/MasQueryParameters.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/MostRecentSelectionConfig.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/QueryParameters.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/VersionSelectionConfig.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/VersionSelectionType.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/VersionedQueryParameters.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/VersionsRangeSelectionConfig.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/_QueryParameters/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/Query/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/_ClientsExecutor/ArtesianJsonSerializer.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/_ClientsExecutor/Client.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/_ClientsExecutor/RequestExecutor.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/_ClientsExecutor/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/artesian_sdk.egg-info/dependency_links.txt +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/artesian_sdk.egg-info/requires.txt +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/artesian_sdk.egg-info/top_level.txt +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestActual.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestBidAsk.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestClientErrorHandling.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestGMEPO.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestMarketDataDeleteData.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestMarketDataService.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestMarketDataUpsertData.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestMas.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/TestVersioned.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/__init__.py +0 -0
- {artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/tests/helpers.py +0 -0
|
@@ -0,0 +1,586 @@
|
|
|
1
|
+
name: "Artesian SDK Python"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
tags:
|
|
7
|
+
- "v[0-9]*.[0-9]*.[0-9]*"
|
|
8
|
+
pull_request:
|
|
9
|
+
branches: [master]
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
id-token: write
|
|
14
|
+
contents: write
|
|
15
|
+
statuses: write
|
|
16
|
+
checks: write
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
# ---------------------------------------------------------------------------
|
|
20
|
+
# Pyright
|
|
21
|
+
# ---------------------------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
pyright:
|
|
24
|
+
name: pyright
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
|
|
27
|
+
permissions:
|
|
28
|
+
contents: read
|
|
29
|
+
checks: write
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- name: Checkout
|
|
33
|
+
uses: actions/checkout@v7
|
|
34
|
+
with:
|
|
35
|
+
fetch-depth: 0
|
|
36
|
+
|
|
37
|
+
- name: Set up Python 3.11
|
|
38
|
+
uses: actions/setup-python@v7
|
|
39
|
+
with:
|
|
40
|
+
python-version: "3.11"
|
|
41
|
+
|
|
42
|
+
- name: Install dependencies
|
|
43
|
+
shell: bash
|
|
44
|
+
run: |
|
|
45
|
+
python -m pip install --upgrade pip
|
|
46
|
+
|
|
47
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION="0.0.0"
|
|
48
|
+
|
|
49
|
+
echo "SETUPTOOLS_SCM_PRETEND_VERSION=$SETUPTOOLS_SCM_PRETEND_VERSION"
|
|
50
|
+
|
|
51
|
+
pip install --no-build-isolation -e ".[dev]"
|
|
52
|
+
|
|
53
|
+
- name: Run Pyright
|
|
54
|
+
uses: jordemort/action-pyright@v1
|
|
55
|
+
with:
|
|
56
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
57
|
+
reporter: github-check
|
|
58
|
+
lib:
|
|
59
|
+
level: warning
|
|
60
|
+
filter_mode: file
|
|
61
|
+
|
|
62
|
+
# ---------------------------------------------------------------------------
|
|
63
|
+
# Build / Test
|
|
64
|
+
# ---------------------------------------------------------------------------
|
|
65
|
+
|
|
66
|
+
build:
|
|
67
|
+
name: "build"
|
|
68
|
+
runs-on: ${{ matrix.os }}
|
|
69
|
+
|
|
70
|
+
permissions:
|
|
71
|
+
contents: read
|
|
72
|
+
|
|
73
|
+
strategy:
|
|
74
|
+
matrix:
|
|
75
|
+
python-version: ["3.8", "3.9", "3.10", "3.11"]
|
|
76
|
+
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
|
|
77
|
+
|
|
78
|
+
steps:
|
|
79
|
+
- name: "Checkout"
|
|
80
|
+
uses: actions/checkout@v7
|
|
81
|
+
with:
|
|
82
|
+
fetch-depth: 0
|
|
83
|
+
|
|
84
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
85
|
+
uses: actions/setup-python@v7
|
|
86
|
+
with:
|
|
87
|
+
python-version: ${{ matrix.python-version }}
|
|
88
|
+
|
|
89
|
+
- name: Install dependencies
|
|
90
|
+
shell: bash
|
|
91
|
+
run: |
|
|
92
|
+
python -m pip install --upgrade pip
|
|
93
|
+
|
|
94
|
+
TAG="${GITHUB_REF_NAME}"
|
|
95
|
+
|
|
96
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION="0.0.0"
|
|
97
|
+
|
|
98
|
+
if [[ "$TAG" =~ ^v([0-9]+\.[0-9]+\.[0-9]+)a([0-9]+)\.([0-9]+)$ ]]; then
|
|
99
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION="${BASH_REMATCH[1]}a${BASH_REMATCH[2]}.post${BASH_REMATCH[3]}"
|
|
100
|
+
elif [[ "$TAG" =~ ^v([0-9]+\.[0-9]+\.[0-9]+)b([0-9]+)$ ]]; then
|
|
101
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION="${BASH_REMATCH[1]}b${BASH_REMATCH[2]}"
|
|
102
|
+
elif [[ "$TAG" =~ ^v([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
|
|
103
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION="${BASH_REMATCH[1]}"
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
echo "SETUPTOOLS_SCM_PRETEND_VERSION=${SETUPTOOLS_SCM_PRETEND_VERSION}"
|
|
107
|
+
|
|
108
|
+
pip install -e ".[dev]"
|
|
109
|
+
|
|
110
|
+
- name: Run flake8
|
|
111
|
+
run: |
|
|
112
|
+
flake8 .
|
|
113
|
+
|
|
114
|
+
- name: Test Pytest
|
|
115
|
+
run: |
|
|
116
|
+
pytest --junitxml=junit/test-results-${{ matrix.python-version }}-${{ matrix.os }}.xml
|
|
117
|
+
|
|
118
|
+
- name: Upload pytest test results
|
|
119
|
+
uses: actions/upload-artifact@v7
|
|
120
|
+
if: always()
|
|
121
|
+
with:
|
|
122
|
+
name: test-results-build-${{ matrix.python-version }}-${{ matrix.os }}
|
|
123
|
+
path: junit/test-results-${{ matrix.python-version }}-${{ matrix.os }}.xml
|
|
124
|
+
|
|
125
|
+
- name: Upload build coverage
|
|
126
|
+
uses: actions/upload-artifact@v7
|
|
127
|
+
if: always()
|
|
128
|
+
with:
|
|
129
|
+
name: coverage-build-${{ matrix.python-version }}-${{ matrix.os }}
|
|
130
|
+
path: coverage.xml
|
|
131
|
+
|
|
132
|
+
# ---------------------------------------------------------------------------
|
|
133
|
+
# Test Report
|
|
134
|
+
#
|
|
135
|
+
# Consolidates test results from all jobs (build and publish-preview)
|
|
136
|
+
# into a single report.
|
|
137
|
+
# ---------------------------------------------------------------------------
|
|
138
|
+
|
|
139
|
+
test-report:
|
|
140
|
+
name: "Test Report"
|
|
141
|
+
runs-on: ubuntu-latest
|
|
142
|
+
needs:
|
|
143
|
+
- build
|
|
144
|
+
- publish-preview
|
|
145
|
+
|
|
146
|
+
if: always()
|
|
147
|
+
|
|
148
|
+
permissions:
|
|
149
|
+
contents: read
|
|
150
|
+
checks: write
|
|
151
|
+
|
|
152
|
+
steps:
|
|
153
|
+
- name: "Checkout"
|
|
154
|
+
uses: actions/checkout@v7
|
|
155
|
+
|
|
156
|
+
- name: "Download test result artifacts"
|
|
157
|
+
uses: actions/download-artifact@v8
|
|
158
|
+
if: always()
|
|
159
|
+
with:
|
|
160
|
+
pattern: test-results-*
|
|
161
|
+
path: test-results
|
|
162
|
+
merge-multiple: true
|
|
163
|
+
|
|
164
|
+
- name: "Test Report"
|
|
165
|
+
uses: dorny/test-reporter@v3
|
|
166
|
+
if: always()
|
|
167
|
+
with:
|
|
168
|
+
name: Python Tests
|
|
169
|
+
path: "test-results/**/*.xml"
|
|
170
|
+
reporter: java-junit
|
|
171
|
+
fail-on-error: "true"
|
|
172
|
+
use-actions-summary: "false"
|
|
173
|
+
|
|
174
|
+
# ---------------------------------------------------------------------------
|
|
175
|
+
# Code Coverage
|
|
176
|
+
#
|
|
177
|
+
# Coverage from all Python/OS combinations and the PR preview merged state
|
|
178
|
+
# is merged into a single report.
|
|
179
|
+
# ---------------------------------------------------------------------------
|
|
180
|
+
|
|
181
|
+
coverage-report:
|
|
182
|
+
name: "Code Coverage"
|
|
183
|
+
runs-on: ubuntu-latest
|
|
184
|
+
needs:
|
|
185
|
+
- build
|
|
186
|
+
- publish-preview
|
|
187
|
+
|
|
188
|
+
if: always()
|
|
189
|
+
|
|
190
|
+
permissions:
|
|
191
|
+
contents: read
|
|
192
|
+
checks: write
|
|
193
|
+
|
|
194
|
+
steps:
|
|
195
|
+
- name: "Download coverage artifacts"
|
|
196
|
+
uses: actions/download-artifact@v8
|
|
197
|
+
if: always()
|
|
198
|
+
with:
|
|
199
|
+
pattern: coverage-*
|
|
200
|
+
path: coverage
|
|
201
|
+
|
|
202
|
+
- name: "Install dotnet"
|
|
203
|
+
uses: actions/setup-dotnet@v6
|
|
204
|
+
with:
|
|
205
|
+
dotnet-version: 10.x
|
|
206
|
+
|
|
207
|
+
- name: "Install reportgenerator"
|
|
208
|
+
shell: bash
|
|
209
|
+
run: dotnet tool install -g dotnet-reportgenerator-globaltool
|
|
210
|
+
|
|
211
|
+
- name: "Create code coverage report"
|
|
212
|
+
shell: bash
|
|
213
|
+
run: |
|
|
214
|
+
export PATH="$PATH:$HOME/.dotnet/tools"
|
|
215
|
+
reportgenerator \
|
|
216
|
+
-reports:"coverage/**/*.xml" \
|
|
217
|
+
-targetdir:CodeCoverage \
|
|
218
|
+
-reporttypes:'MarkdownSummaryGithub;Cobertura'
|
|
219
|
+
|
|
220
|
+
- name: "Write to Job Summary"
|
|
221
|
+
if: always()
|
|
222
|
+
run: cat CodeCoverage/SummaryGithub.md >> "$GITHUB_STEP_SUMMARY"
|
|
223
|
+
|
|
224
|
+
# ---------------------------------------------------------------------------
|
|
225
|
+
# Publish Stable
|
|
226
|
+
#
|
|
227
|
+
# Tag:
|
|
228
|
+
# v4.3.0
|
|
229
|
+
#
|
|
230
|
+
# Python package version:
|
|
231
|
+
# 4.3.0
|
|
232
|
+
#
|
|
233
|
+
# Must originate from:
|
|
234
|
+
# master
|
|
235
|
+
# ---------------------------------------------------------------------------
|
|
236
|
+
|
|
237
|
+
publish-stable:
|
|
238
|
+
name: "Publish Stable"
|
|
239
|
+
runs-on: ubuntu-latest
|
|
240
|
+
needs:
|
|
241
|
+
- pyright
|
|
242
|
+
- build
|
|
243
|
+
|
|
244
|
+
if: >
|
|
245
|
+
github.event_name == 'push' &&
|
|
246
|
+
startsWith(github.ref, 'refs/tags/v') &&
|
|
247
|
+
!contains(github.ref_name, 'a') &&
|
|
248
|
+
!contains(github.ref_name, 'b')
|
|
249
|
+
|
|
250
|
+
steps:
|
|
251
|
+
- name: "Checkout"
|
|
252
|
+
uses: actions/checkout@v7
|
|
253
|
+
with:
|
|
254
|
+
fetch-depth: 0
|
|
255
|
+
|
|
256
|
+
- name: "Validate GA release tag"
|
|
257
|
+
shell: bash
|
|
258
|
+
run: bash .github/workflows/validate_tag.sh "$GITHUB_REF_NAME" ga
|
|
259
|
+
|
|
260
|
+
- name: "Validate release commit is contained in master"
|
|
261
|
+
shell: bash
|
|
262
|
+
run: bash .github/workflows/validate_branch.sh "master"
|
|
263
|
+
|
|
264
|
+
- name: "Set up Python 3.11"
|
|
265
|
+
uses: actions/setup-python@v7
|
|
266
|
+
with:
|
|
267
|
+
python-version: "3.11"
|
|
268
|
+
|
|
269
|
+
- name: "Install dependencies"
|
|
270
|
+
shell: bash
|
|
271
|
+
run: |
|
|
272
|
+
python -m pip install --upgrade pip
|
|
273
|
+
python -m pip install build
|
|
274
|
+
|
|
275
|
+
- name: "Build package"
|
|
276
|
+
shell: bash
|
|
277
|
+
run: |
|
|
278
|
+
echo "Building GA package: ${GITHUB_REF_NAME#v}"
|
|
279
|
+
python -m build
|
|
280
|
+
|
|
281
|
+
- name: "Publish package"
|
|
282
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
283
|
+
with:
|
|
284
|
+
user: __token__
|
|
285
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
286
|
+
|
|
287
|
+
# ---------------------------------------------------------------------------
|
|
288
|
+
# Publish Beta
|
|
289
|
+
#
|
|
290
|
+
# Tag:
|
|
291
|
+
# v4.3.0b1
|
|
292
|
+
# v4.3.0b2
|
|
293
|
+
#
|
|
294
|
+
# Python package version:
|
|
295
|
+
# 4.3.0b1
|
|
296
|
+
# 4.3.0b2
|
|
297
|
+
#
|
|
298
|
+
# Must originate from:
|
|
299
|
+
# develop-beta
|
|
300
|
+
#
|
|
301
|
+
# Beta version MUST be the next minor version after
|
|
302
|
+
# the latest GA version on master.
|
|
303
|
+
#
|
|
304
|
+
# Example:
|
|
305
|
+
#
|
|
306
|
+
# master = v4.2.0
|
|
307
|
+
# develop-beta = v4.3.0b1
|
|
308
|
+
#
|
|
309
|
+
# ---------------------------------------------------------------------------
|
|
310
|
+
|
|
311
|
+
publish-beta:
|
|
312
|
+
name: "Publish Beta"
|
|
313
|
+
runs-on: ubuntu-latest
|
|
314
|
+
needs:
|
|
315
|
+
- pyright
|
|
316
|
+
- build
|
|
317
|
+
|
|
318
|
+
if: >
|
|
319
|
+
github.event_name == 'push' &&
|
|
320
|
+
startsWith(github.ref, 'refs/tags/v') &&
|
|
321
|
+
contains(github.ref_name, 'b')
|
|
322
|
+
|
|
323
|
+
steps:
|
|
324
|
+
- name: "Checkout"
|
|
325
|
+
uses: actions/checkout@v7
|
|
326
|
+
with:
|
|
327
|
+
fetch-depth: 0
|
|
328
|
+
|
|
329
|
+
- name: "Validate Beta release tag"
|
|
330
|
+
shell: bash
|
|
331
|
+
run: bash .github/workflows/validate_tag.sh "$GITHUB_REF_NAME" beta
|
|
332
|
+
|
|
333
|
+
- name: "Validate release commit is contained in develop-beta"
|
|
334
|
+
shell: bash
|
|
335
|
+
run: bash .github/workflows/validate_branch.sh "develop-beta"
|
|
336
|
+
|
|
337
|
+
- name: "Validate next minor version"
|
|
338
|
+
shell: bash
|
|
339
|
+
run: |
|
|
340
|
+
TAG="${GITHUB_REF_NAME}"
|
|
341
|
+
|
|
342
|
+
git fetch origin master --tags
|
|
343
|
+
|
|
344
|
+
MASTER_VERSION=$(
|
|
345
|
+
git tag --merged origin/master --sort=-version:refname |
|
|
346
|
+
grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' |
|
|
347
|
+
head -n 1 |
|
|
348
|
+
sed 's/^v//'
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
BETA_VERSION=$(echo "$TAG" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+)b[0-9]+$/\1/')
|
|
352
|
+
|
|
353
|
+
echo "Master GA version: $MASTER_VERSION"
|
|
354
|
+
echo "Beta version: $BETA_VERSION"
|
|
355
|
+
|
|
356
|
+
if [[ -z "$MASTER_VERSION" ]]; then
|
|
357
|
+
echo "::error::Could not determine the latest GA version on master."
|
|
358
|
+
exit 1
|
|
359
|
+
fi
|
|
360
|
+
|
|
361
|
+
MASTER_MAJOR=$(echo "$MASTER_VERSION" | cut -d. -f1)
|
|
362
|
+
MASTER_MINOR=$(echo "$MASTER_VERSION" | cut -d. -f2)
|
|
363
|
+
|
|
364
|
+
BETA_MAJOR=$(echo "$BETA_VERSION" | cut -d. -f1)
|
|
365
|
+
BETA_MINOR=$(echo "$BETA_VERSION" | cut -d. -f2)
|
|
366
|
+
|
|
367
|
+
EXPECTED_MAJOR="$MASTER_MAJOR"
|
|
368
|
+
EXPECTED_MINOR="$((MASTER_MINOR + 1))"
|
|
369
|
+
|
|
370
|
+
if [[ "$BETA_MAJOR" != "$EXPECTED_MAJOR" ||
|
|
371
|
+
"$BETA_MINOR" != "$EXPECTED_MINOR" ]]; then
|
|
372
|
+
echo "::error::Beta version $BETA_VERSION is not the next minor version after master GA $MASTER_VERSION."
|
|
373
|
+
echo "::error::Expected: ${EXPECTED_MAJOR}.${EXPECTED_MINOR}.0bN"
|
|
374
|
+
exit 1
|
|
375
|
+
fi
|
|
376
|
+
|
|
377
|
+
echo "Beta version $BETA_VERSION is the next minor version after master GA $MASTER_VERSION."
|
|
378
|
+
|
|
379
|
+
- name: "Set up Python 3.11"
|
|
380
|
+
uses: actions/setup-python@v7
|
|
381
|
+
with:
|
|
382
|
+
python-version: "3.11"
|
|
383
|
+
|
|
384
|
+
- name: "Install dependencies"
|
|
385
|
+
shell: bash
|
|
386
|
+
run: |
|
|
387
|
+
python -m pip install --upgrade pip
|
|
388
|
+
python -m pip install build
|
|
389
|
+
|
|
390
|
+
- name: "Build package"
|
|
391
|
+
shell: bash
|
|
392
|
+
run: |
|
|
393
|
+
TAG="${GITHUB_REF_NAME}"
|
|
394
|
+
|
|
395
|
+
if [[ "$TAG" =~ ^v([0-9]+\.[0-9]+\.[0-9]+)b([0-9]+)$ ]]; then
|
|
396
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION="${BASH_REMATCH[1]}b${BASH_REMATCH[2]}"
|
|
397
|
+
fi
|
|
398
|
+
|
|
399
|
+
echo "SETUPTOOLS_SCM_PRETEND_VERSION=${SETUPTOOLS_SCM_PRETEND_VERSION}"
|
|
400
|
+
|
|
401
|
+
python -m build
|
|
402
|
+
|
|
403
|
+
- name: "Publish package"
|
|
404
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
405
|
+
with:
|
|
406
|
+
user: __token__
|
|
407
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
408
|
+
|
|
409
|
+
# ---------------------------------------------------------------------------
|
|
410
|
+
# Publish PR Preview
|
|
411
|
+
#
|
|
412
|
+
# Tag:
|
|
413
|
+
# v4.3.0a69.1
|
|
414
|
+
# v4.3.0a69.2
|
|
415
|
+
#
|
|
416
|
+
# Python package version:
|
|
417
|
+
# 4.3.0a69.post1
|
|
418
|
+
# 4.3.0a69.post2
|
|
419
|
+
#
|
|
420
|
+
# Where:
|
|
421
|
+
# 4.3.0 = latest GA version on master
|
|
422
|
+
# 69 = PR number
|
|
423
|
+
# 1 / 2 = preview iteration
|
|
424
|
+
#
|
|
425
|
+
# The PR Preview version MUST match the latest GA version on master.
|
|
426
|
+
# The PR must be based on the current master.
|
|
427
|
+
# ---------------------------------------------------------------------------
|
|
428
|
+
|
|
429
|
+
publish-preview:
|
|
430
|
+
name: "Publish PR Preview"
|
|
431
|
+
runs-on: ubuntu-latest
|
|
432
|
+
|
|
433
|
+
permissions:
|
|
434
|
+
contents: read
|
|
435
|
+
checks: write
|
|
436
|
+
|
|
437
|
+
needs:
|
|
438
|
+
- pyright
|
|
439
|
+
- build
|
|
440
|
+
|
|
441
|
+
if: >
|
|
442
|
+
github.event_name == 'push' &&
|
|
443
|
+
startsWith(github.ref, 'refs/tags/v') &&
|
|
444
|
+
contains(github.ref_name, 'a')
|
|
445
|
+
|
|
446
|
+
steps:
|
|
447
|
+
- name: "Extract PR number"
|
|
448
|
+
id: pr
|
|
449
|
+
shell: bash
|
|
450
|
+
run: |
|
|
451
|
+
TAG="${GITHUB_REF_NAME}"
|
|
452
|
+
|
|
453
|
+
if [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+a([0-9]+)\.([0-9]+)$ ]]; then
|
|
454
|
+
echo "::error::Invalid PR preview tag: $TAG"
|
|
455
|
+
exit 1
|
|
456
|
+
fi
|
|
457
|
+
|
|
458
|
+
PR_NUMBER="${BASH_REMATCH[1]}"
|
|
459
|
+
ITERATION="${BASH_REMATCH[2]}"
|
|
460
|
+
|
|
461
|
+
echo "number=$PR_NUMBER" >> "$GITHUB_OUTPUT"
|
|
462
|
+
echo "iteration=$ITERATION" >> "$GITHUB_OUTPUT"
|
|
463
|
+
|
|
464
|
+
echo "PR number: $PR_NUMBER"
|
|
465
|
+
echo "Iteration: $ITERATION"
|
|
466
|
+
|
|
467
|
+
- name: "Checkout merged PR head"
|
|
468
|
+
uses: actions/checkout@v7
|
|
469
|
+
with:
|
|
470
|
+
ref: refs/pull/${{ steps.pr.outputs.number }}/merge
|
|
471
|
+
fetch-depth: 0
|
|
472
|
+
|
|
473
|
+
- name: "Validate PR Preview tag"
|
|
474
|
+
shell: bash
|
|
475
|
+
run: bash .github/workflows/validate_tag.sh "$GITHUB_REF_NAME" preview
|
|
476
|
+
|
|
477
|
+
- name: "Validate PR is based on current master"
|
|
478
|
+
shell: bash
|
|
479
|
+
run: |
|
|
480
|
+
git fetch origin master
|
|
481
|
+
|
|
482
|
+
CURRENT_MASTER=$(git rev-parse origin/master)
|
|
483
|
+
MERGE_PARENT=$(git rev-parse HEAD^1)
|
|
484
|
+
|
|
485
|
+
echo "Current master: $CURRENT_MASTER"
|
|
486
|
+
echo "Merge parent: $MERGE_PARENT"
|
|
487
|
+
|
|
488
|
+
if [[ "$MERGE_PARENT" != "$CURRENT_MASTER" ]]; then
|
|
489
|
+
echo "::error::PR Preview is not based on the current master."
|
|
490
|
+
exit 1
|
|
491
|
+
fi
|
|
492
|
+
|
|
493
|
+
echo "PR Preview is based on master."
|
|
494
|
+
|
|
495
|
+
- name: "Validate preview version"
|
|
496
|
+
shell: bash
|
|
497
|
+
run: |
|
|
498
|
+
TAG="${GITHUB_REF_NAME}"
|
|
499
|
+
|
|
500
|
+
git fetch origin master --tags
|
|
501
|
+
|
|
502
|
+
MASTER_VERSION=$(
|
|
503
|
+
git tag --merged origin/master --sort=-version:refname |
|
|
504
|
+
grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' |
|
|
505
|
+
head -n 1 |
|
|
506
|
+
sed 's/^v//'
|
|
507
|
+
)
|
|
508
|
+
|
|
509
|
+
PREVIEW_VERSION=$(echo "$TAG" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+)a[0-9]+\.[0-9]+$/\1/')
|
|
510
|
+
|
|
511
|
+
echo "Master GA version: $MASTER_VERSION"
|
|
512
|
+
echo "Preview version: $PREVIEW_VERSION"
|
|
513
|
+
|
|
514
|
+
if [[ -z "$MASTER_VERSION" ]]; then
|
|
515
|
+
echo "::error::Could not determine the latest GA version on master."
|
|
516
|
+
exit 1
|
|
517
|
+
fi
|
|
518
|
+
|
|
519
|
+
if [[ "$PREVIEW_VERSION" != "$MASTER_VERSION" ]]; then
|
|
520
|
+
echo "::error::PR Preview version $PREVIEW_VERSION does not match current master GA version $MASTER_VERSION."
|
|
521
|
+
exit 1
|
|
522
|
+
fi
|
|
523
|
+
|
|
524
|
+
echo "PR Preview version matches current master GA version: $MASTER_VERSION"
|
|
525
|
+
|
|
526
|
+
- name: "Set up Python 3.11"
|
|
527
|
+
uses: actions/setup-python@v7
|
|
528
|
+
with:
|
|
529
|
+
python-version: "3.11"
|
|
530
|
+
|
|
531
|
+
- name: "Install dependencies"
|
|
532
|
+
shell: bash
|
|
533
|
+
run: |
|
|
534
|
+
python -m pip install --upgrade pip
|
|
535
|
+
|
|
536
|
+
TAG="${GITHUB_REF_NAME}"
|
|
537
|
+
|
|
538
|
+
if [[ "$TAG" =~ ^v([0-9]+\.[0-9]+\.[0-9]+)a([0-9]+)\.([0-9]+)$ ]]; then
|
|
539
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION="${BASH_REMATCH[1]}a${BASH_REMATCH[2]}.post${BASH_REMATCH[3]}"
|
|
540
|
+
fi
|
|
541
|
+
|
|
542
|
+
echo "SETUPTOOLS_SCM_PRETEND_VERSION=${SETUPTOOLS_SCM_PRETEND_VERSION:-not-set}"
|
|
543
|
+
|
|
544
|
+
pip install -e ".[dev]"
|
|
545
|
+
python -m pip install build
|
|
546
|
+
|
|
547
|
+
- name: "Run flake8"
|
|
548
|
+
run: |
|
|
549
|
+
flake8 .
|
|
550
|
+
|
|
551
|
+
- name: "Test Pytest"
|
|
552
|
+
run: |
|
|
553
|
+
pytest --junitxml=junit/test-results-preview.xml
|
|
554
|
+
|
|
555
|
+
- name: "Upload pytest test results"
|
|
556
|
+
uses: actions/upload-artifact@v7
|
|
557
|
+
if: always()
|
|
558
|
+
with:
|
|
559
|
+
name: test-results-preview
|
|
560
|
+
path: junit/test-results-preview.xml
|
|
561
|
+
|
|
562
|
+
- name: "Upload preview coverage"
|
|
563
|
+
uses: actions/upload-artifact@v7
|
|
564
|
+
if: always()
|
|
565
|
+
with:
|
|
566
|
+
name: coverage-preview
|
|
567
|
+
path: coverage.xml
|
|
568
|
+
|
|
569
|
+
- name: "Build package"
|
|
570
|
+
shell: bash
|
|
571
|
+
run: |
|
|
572
|
+
TAG="${GITHUB_REF_NAME}"
|
|
573
|
+
|
|
574
|
+
if [[ "$TAG" =~ ^v([0-9]+\.[0-9]+\.[0-9]+)a([0-9]+)\.([0-9]+)$ ]]; then
|
|
575
|
+
export SETUPTOOLS_SCM_PRETEND_VERSION="${BASH_REMATCH[1]}a${BASH_REMATCH[2]}.post${BASH_REMATCH[3]}"
|
|
576
|
+
fi
|
|
577
|
+
|
|
578
|
+
echo "SETUPTOOLS_SCM_PRETEND_VERSION=${SETUPTOOLS_SCM_PRETEND_VERSION}"
|
|
579
|
+
|
|
580
|
+
python -m build
|
|
581
|
+
|
|
582
|
+
- name: "Publish package"
|
|
583
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
584
|
+
with:
|
|
585
|
+
user: __token__
|
|
586
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
if [[ $# -ne 1 ]]; then
|
|
6
|
+
echo "::error::Usage: $0 <expected-branch>"
|
|
7
|
+
exit 2
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
EXPECTED_BRANCH="$1"
|
|
11
|
+
|
|
12
|
+
git fetch origin "$EXPECTED_BRANCH"
|
|
13
|
+
|
|
14
|
+
COMMIT_SHA="$GITHUB_SHA"
|
|
15
|
+
if [[ "${GITHUB_REF:-}" == refs/tags/* ]]; then
|
|
16
|
+
COMMIT_SHA="$(git rev-parse "${GITHUB_REF}^{commit}")"
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
if ! git merge-base --is-ancestor "$COMMIT_SHA" "origin/$EXPECTED_BRANCH"; then
|
|
20
|
+
echo "::error::Release tag does not point to a commit contained in $EXPECTED_BRANCH."
|
|
21
|
+
exit 1
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
echo "Release commit is contained in $EXPECTED_BRANCH."
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
if [[ $# -ne 2 ]]; then
|
|
6
|
+
echo "::error::Usage: $0 <tag> <ga|beta|preview>"
|
|
7
|
+
exit 2
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
TAG="$1"
|
|
11
|
+
TYPE="$2"
|
|
12
|
+
|
|
13
|
+
case "$TYPE" in
|
|
14
|
+
ga)
|
|
15
|
+
PATTERN='^v[0-9]+\.[0-9]+\.[0-9]+$'
|
|
16
|
+
EXPECTED='vX.Y.Z'
|
|
17
|
+
;;
|
|
18
|
+
|
|
19
|
+
beta)
|
|
20
|
+
PATTERN='^v[0-9]+\.[0-9]+\.[0-9]+b[0-9]+$'
|
|
21
|
+
EXPECTED='vX.Y.ZbN'
|
|
22
|
+
;;
|
|
23
|
+
|
|
24
|
+
preview)
|
|
25
|
+
PATTERN='^v[0-9]+\.[0-9]+\.[0-9]+a[0-9]+\.[0-9]+$'
|
|
26
|
+
EXPECTED='vX.Y.Za{PR_NUMBER}.{ITERATION}'
|
|
27
|
+
;;
|
|
28
|
+
|
|
29
|
+
*)
|
|
30
|
+
echo "::error::Unknown tag type: $TYPE"
|
|
31
|
+
exit 1
|
|
32
|
+
;;
|
|
33
|
+
esac
|
|
34
|
+
|
|
35
|
+
if [[ ! "$TAG" =~ $PATTERN ]]; then
|
|
36
|
+
echo "::error::Invalid $TYPE release tag: $TAG"
|
|
37
|
+
echo "Expected format: $EXPECTED"
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
echo "Valid $TYPE release tag: $TAG"
|
{artesian_sdk-4.3.0 → artesian_sdk-4.3.1}/src/Artesian/GMEPublicOffers/GMEPublicOfferQuery.py
RENAMED
|
@@ -344,6 +344,10 @@ class GMEPublicOfferQuery:
|
|
|
344
344
|
Market.MIA3: "MIA3",
|
|
345
345
|
Market.MRR: "MRR",
|
|
346
346
|
Market.AFRR: "AFRR",
|
|
347
|
+
Market.GMP_ASTA: "GMP_ASTA",
|
|
348
|
+
Market.GMP_Cont: "GMP_Cont",
|
|
349
|
+
Market.MI_Cont: "MI_Cont",
|
|
350
|
+
Market.MGS: "MGS",
|
|
347
351
|
}
|
|
348
352
|
vr = switcher.get(market, "DefMarket")
|
|
349
353
|
if vr == "DefMarket":
|
|
@@ -372,6 +376,7 @@ class GMEPublicOfferQuery:
|
|
|
372
376
|
Status.SUB: "SUB",
|
|
373
377
|
Status.COM: "COM",
|
|
374
378
|
Status.PCOM: "PCOM",
|
|
379
|
+
Status.DIS: "DIS",
|
|
375
380
|
}
|
|
376
381
|
vr = switcher.get(status, "DefStatus")
|
|
377
382
|
if vr == "DefStatus":
|