bec-widgets 2.3.0__py3-none-any.whl → 2.4.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. .github/ISSUE_TEMPLATE/bug_report.md +26 -0
  2. .github/ISSUE_TEMPLATE/feature_request.md +48 -0
  3. .github/workflows/check_pr.yml +28 -0
  4. .github/workflows/ci.yml +36 -0
  5. .github/workflows/end2end-conda.yml +48 -0
  6. .github/workflows/formatter.yml +61 -0
  7. .github/workflows/generate-cli-check.yml +49 -0
  8. .github/workflows/pytest-matrix.yml +48 -0
  9. .github/workflows/pytest.yml +64 -0
  10. .github/workflows/semantic_release.yml +103 -0
  11. CHANGELOG.md +1713 -1546
  12. LICENSE +1 -1
  13. PKG-INFO +2 -1
  14. README.md +11 -0
  15. bec_widgets/cli/client.py +11 -0
  16. bec_widgets/tests/utils.py +3 -3
  17. bec_widgets/utils/entry_validator.py +13 -3
  18. bec_widgets/utils/side_panel.py +65 -39
  19. bec_widgets/utils/toolbar.py +79 -0
  20. bec_widgets/widgets/containers/layout_manager/layout_manager.py +34 -1
  21. bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +1 -1
  22. bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +27 -31
  23. bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +1 -1
  24. bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +1 -1
  25. bec_widgets/widgets/editors/dict_backed_table.py +7 -0
  26. bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +1 -0
  27. bec_widgets/widgets/editors/web_console/register_web_console.py +15 -0
  28. bec_widgets/widgets/editors/web_console/web_console.py +230 -0
  29. bec_widgets/widgets/editors/web_console/web_console.pyproject +1 -0
  30. bec_widgets/widgets/editors/web_console/web_console_plugin.py +54 -0
  31. bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +11 -46
  32. bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
  33. bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +58 -0
  34. bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +1 -0
  35. bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +56 -0
  36. bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +17 -0
  37. {bec_widgets-2.3.0.dist-info → bec_widgets-2.4.3.dist-info}/METADATA +2 -1
  38. {bec_widgets-2.3.0.dist-info → bec_widgets-2.4.3.dist-info}/RECORD +42 -23
  39. {bec_widgets-2.3.0.dist-info → bec_widgets-2.4.3.dist-info}/licenses/LICENSE +1 -1
  40. pyproject.toml +17 -5
  41. {bec_widgets-2.3.0.dist-info → bec_widgets-2.4.3.dist-info}/WHEEL +0 -0
  42. {bec_widgets-2.3.0.dist-info → bec_widgets-2.4.3.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ ## Bug report
11
+
12
+ ## Summary
13
+
14
+ [Provide a brief description of the bug.]
15
+
16
+ ## Expected Behavior vs Actual Behavior
17
+
18
+ [Describe what you expected to happen and what actually happened.]
19
+
20
+ ## Steps to Reproduce
21
+
22
+ [Outline the steps that lead to the bug's occurrence. Be specific and provide a clear sequence of actions.]
23
+
24
+ ## Related Issues
25
+
26
+ [Paste links to any related issues or feature requests.]
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ ## Feature Summary
11
+
12
+ [Provide a brief and clear summary of the new feature you are requesting]
13
+
14
+ ## Problem Description
15
+
16
+ [Explain the problem or need that this feature aims to address. Be specific about the issues or gaps in the current functionality]
17
+
18
+ ## Use Case
19
+
20
+ [Describe a real-world scenario or use case where this feature would be beneficial. Explain how it would improve the user experience or workflow]
21
+
22
+ ## Proposed Solution
23
+
24
+ [If you have a specific solution in mind, describe it here. Explain how it would work and how it would address the problem described above]
25
+
26
+ ## Benefits
27
+
28
+ [Explain the benefits and advantages of implementing this feature. Highlight how it adds value to the product or improves user satisfaction]
29
+
30
+ ## Alternatives Considered
31
+
32
+ [If you've considered alternative solutions or workarounds, mention them here. Explain why the proposed feature is the preferred option]
33
+
34
+ ## Impact on Existing Functionality
35
+
36
+ [Discuss how the new feature might impact or interact with existing features. Address any potential conflicts or dependencies]
37
+
38
+ ## Priority
39
+
40
+ [Assign a priority level to the feature request based on its importance. Use a scale such as Low, Medium, High]
41
+
42
+ ## Attachments
43
+
44
+ [Include any relevant attachments, such as sketches, diagrams, or references that can help the development team understand your feature request better]
45
+
46
+ ## Additional Information
47
+
48
+ [Provide any additional information that might be relevant to the feature request, such as user feedback, market trends, or similar features in other products]
@@ -0,0 +1,28 @@
1
+ name: Check PR status for branch
2
+ on:
3
+ workflow_call:
4
+ outputs:
5
+ branch-pr:
6
+ description: The PR number if the branch is in one
7
+ value: ${{ jobs.pr.outputs.branch-pr }}
8
+
9
+ jobs:
10
+ pr:
11
+ runs-on: "ubuntu-latest"
12
+ outputs:
13
+ branch-pr: ${{ steps.script.outputs.result }}
14
+ steps:
15
+ - uses: actions/github-script@v7
16
+ id: script
17
+ if: github.event_name == 'push' && github.event.ref_type != 'tag'
18
+ with:
19
+ script: |
20
+ const prs = await github.rest.pulls.list({
21
+ owner: context.repo.owner,
22
+ repo: context.repo.repo,
23
+ head: context.repo.owner + ':${{ github.ref_name }}'
24
+ })
25
+ if (prs.data.length) {
26
+ console.log(`::notice ::Skipping CI on branch push as it is already run in PR #${prs.data[0]["number"]}`)
27
+ return prs.data[0]["number"]
28
+ }
@@ -0,0 +1,36 @@
1
+ name: Full CI
2
+ on: [push, pull_request]
3
+
4
+ permissions:
5
+ pull-requests: write
6
+
7
+ jobs:
8
+ check_pr_status:
9
+ uses: ./.github/workflows/check_pr.yml
10
+
11
+ formatter:
12
+ needs: check_pr_status
13
+ if: needs.check_pr_status.outputs.branch-pr == ''
14
+ uses: ./.github/workflows/formatter.yml
15
+
16
+ unit-test:
17
+ needs: [check_pr_status, formatter]
18
+ if: needs.check_pr_status.outputs.branch-pr == ''
19
+ uses: ./.github/workflows/pytest.yml
20
+ secrets:
21
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
22
+
23
+ unit-test-matrix:
24
+ needs: [check_pr_status, formatter]
25
+ if: needs.check_pr_status.outputs.branch-pr == ''
26
+ uses: ./.github/workflows/pytest-matrix.yml
27
+
28
+ generate-cli-test:
29
+ needs: [check_pr_status, formatter]
30
+ if: needs.check_pr_status.outputs.branch-pr == ''
31
+ uses: ./.github/workflows/generate-cli-check.yml
32
+
33
+ end2end-test:
34
+ needs: [check_pr_status, formatter]
35
+ if: needs.check_pr_status.outputs.branch-pr == ''
36
+ uses: ./.github/workflows/end2end-conda.yml
@@ -0,0 +1,48 @@
1
+ name: Run Pytest with Coverage
2
+ on: [workflow_call]
3
+
4
+ jobs:
5
+ pytest:
6
+ runs-on: ubuntu-latest
7
+ defaults:
8
+ run:
9
+ shell: bash -el {0}
10
+
11
+ env:
12
+ CHILD_PIPELINE_BRANCH: main # Set the branch you want for ophyd_devices
13
+ BEC_CORE_BRANCH: main # Set the branch you want for bec
14
+ OPHYD_DEVICES_BRANCH: main # Set the branch you want for ophyd_devices
15
+ PROJECT_PATH: ${{ github.repository }}
16
+ QTWEBENGINE_DISABLE_SANDBOX: 1
17
+ QT_QPA_PLATFORM: "offscreen"
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Conda
23
+ uses: conda-incubator/setup-miniconda@v3
24
+ with:
25
+ auto-update-conda: true
26
+ auto-activate-base: true
27
+ python-version: '3.11'
28
+
29
+ - name: Install dependencies
30
+ run: |
31
+ sudo apt-get update
32
+ sudo apt-get install -y libgl1 libegl1 x11-utils libxkbcommon-x11-0 libdbus-1-3 xvfb
33
+ sudo apt-get -y install libnss3 libxdamage1 libasound2t64 libatomic1 libxcursor1
34
+
35
+ - name: Conda install and run pytest
36
+ run: |
37
+ echo -e "\033[35;1m Using branch $BEC_CORE_BRANCH of BEC CORE \033[0;m";
38
+ git clone --branch $BEC_CORE_BRANCH https://github.com/bec-project/bec.git
39
+ echo -e "\033[35;1m Using branch $OPHYD_DEVICES_BRANCH of OPHYD_DEVICES \033[0;m";
40
+ git clone --branch $OPHYD_DEVICES_BRANCH https://github.com/bec-project/ophyd_devices.git
41
+ export OHPYD_DEVICES_PATH=$PWD/ophyd_devices
42
+ cd ./bec
43
+ conda create -q -n test-environment python=3.11
44
+ source ./bin/install_bec_dev.sh -t
45
+ cd ../
46
+ pip install -e ./ophyd_devices
47
+ pip install -e .[dev,pyside6]
48
+ pytest -v --files-path ./ --start-servers --random-order ./tests/end-2-end
@@ -0,0 +1,61 @@
1
+ name: Formatter and Pylint jobs
2
+ on: [workflow_call]
3
+ jobs:
4
+
5
+ Formatter:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - name: Check out repository code
9
+ uses: actions/checkout@v4
10
+ - name: Set up Python
11
+ uses: actions/setup-python@v5
12
+ with:
13
+ python-version: '3.13'
14
+
15
+ - name: Run black and isort
16
+ run: |
17
+ pip install black isort
18
+ pip install -e .[dev]
19
+ black --check --diff --color .
20
+ isort --check --diff ./
21
+ Pylint:
22
+ runs-on: ubuntu-latest
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+
27
+ - name: Set up Python
28
+ uses: actions/setup-python@v5
29
+ with:
30
+ python-version: '3.13'
31
+
32
+ - name: Install dependencies
33
+ run: |
34
+ python -m pip install --upgrade pip
35
+ pip install pylint pylint-exit anybadge
36
+
37
+ - name: Run Pylint
38
+ run: |
39
+ mkdir -p ./pylint
40
+ set +e
41
+ pylint ./${{ github.event.repository.name }} --output-format=text > ./pylint/pylint.log
42
+ pylint-exit $?
43
+ set -e
44
+
45
+ - name: Extract Pylint Score
46
+ id: score
47
+ run: |
48
+ SCORE=$(sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' ./pylint/pylint.log)
49
+ echo "score=$SCORE" >> $GITHUB_OUTPUT
50
+
51
+ - name: Create Badge
52
+ run: |
53
+ anybadge --label=Pylint --file=./pylint/pylint.svg --value="${{ steps.score.outputs.score }}" 2=red 4=orange 8=yellow 10=green
54
+
55
+ - name: Upload Artifacts
56
+ uses: actions/upload-artifact@v4
57
+ with:
58
+ name: pylint-artifacts
59
+ path: |
60
+ # ./pylint/pylint.log # not sure why this isn't working
61
+ ./pylint/pylint.svg
@@ -0,0 +1,49 @@
1
+ name: Run bw-generate-cli
2
+ on: [workflow_call]
3
+
4
+ jobs:
5
+ pytest:
6
+ runs-on: ubuntu-latest
7
+ defaults:
8
+ run:
9
+ shell: bash -el {0}
10
+
11
+ env:
12
+ CHILD_PIPELINE_BRANCH: main # Set the branch you want for ophyd_devices
13
+ BEC_CORE_BRANCH: main # Set the branch you want for bec
14
+ OPHYD_DEVICES_BRANCH: main # Set the branch you want for ophyd_devices
15
+ PROJECT_PATH: ${{ github.repository }}
16
+ QTWEBENGINE_DISABLE_SANDBOX: 1
17
+ QT_QPA_PLATFORM: "offscreen"
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.11"
26
+
27
+ - name: Install os dependencies
28
+ run: |
29
+ sudo apt-get update
30
+ sudo apt-get install -y libgl1 libegl1 x11-utils libxkbcommon-x11-0 libdbus-1-3 xvfb
31
+ sudo apt-get -y install libnss3 libxdamage1 libasound2t64 libatomic1 libxcursor1
32
+
33
+ - name: Clone and install dependencies
34
+ run: |
35
+ echo -e "\033[35;1m Using branch $BEC_CORE_BRANCH of BEC CORE \033[0;m";
36
+ git clone --branch $BEC_CORE_BRANCH https://github.com/bec-project/bec.git
37
+ echo -e "\033[35;1m Using branch $OPHYD_DEVICES_BRANCH of OPHYD_DEVICES \033[0;m";
38
+ git clone --branch $OPHYD_DEVICES_BRANCH https://github.com/bec-project/ophyd_devices.git
39
+ export OHPYD_DEVICES_PATH=$PWD/ophyd_devices
40
+ pip install -e ./ophyd_devices
41
+ pip install -e ./bec/bec_lib[dev]
42
+ pip install -e ./bec/bec_ipython_client
43
+ pip install -e .[dev,pyside6]
44
+
45
+ - name: Run bw-generate-cli
46
+ run: |
47
+ bw-generate-cli --target bec_widgets
48
+ git diff --exit-code
49
+
@@ -0,0 +1,48 @@
1
+ name: Run Pytest with different Python versions
2
+ on: [workflow_call]
3
+
4
+ jobs:
5
+ pytest-matrix:
6
+ runs-on: ubuntu-latest
7
+ strategy:
8
+ matrix:
9
+ python-version: ["3.10", "3.11", "3.12"]
10
+
11
+ env:
12
+ CHILD_PIPELINE_BRANCH: main # Set the branch you want for ophyd_devices
13
+ BEC_CORE_BRANCH: main # Set the branch you want for bec
14
+ OPHYD_DEVICES_BRANCH: main # Set the branch you want for ophyd_devices
15
+ PROJECT_PATH: ${{ github.repository }}
16
+ QTWEBENGINE_DISABLE_SANDBOX: 1
17
+ QT_QPA_PLATFORM: "offscreen"
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+
27
+ - name: Install dependencies
28
+ run: |
29
+ sudo apt-get update
30
+ sudo apt-get install -y libgl1 libegl1 x11-utils libxkbcommon-x11-0 libdbus-1-3 xvfb
31
+ sudo apt-get -y install libnss3 libxdamage1 libasound2t64 libatomic1 libxcursor1
32
+
33
+ - name: Clone and install dependencies
34
+ run: |
35
+ echo -e "\033[35;1m Using branch $BEC_CORE_BRANCH of BEC CORE \033[0;m";
36
+ git clone --branch $BEC_CORE_BRANCH https://github.com/bec-project/bec.git
37
+ echo -e "\033[35;1m Using branch $OPHYD_DEVICES_BRANCH of OPHYD_DEVICES \033[0;m";
38
+ git clone --branch $OPHYD_DEVICES_BRANCH https://github.com/bec-project/ophyd_devices.git
39
+ export OHPYD_DEVICES_PATH=$PWD/ophyd_devices
40
+ pip install -e ./ophyd_devices
41
+ pip install -e ./bec/bec_lib[dev]
42
+ pip install -e ./bec/bec_ipython_client
43
+ pip install -e .[dev,pyside6]
44
+
45
+ - name: Run Pytest
46
+ run: |
47
+ pip install pytest pytest-random-order
48
+ pytest -v --maxfail=2 --junitxml=report.xml --random-order ./tests/unit_tests
@@ -0,0 +1,64 @@
1
+ name: Run Pytest with Coverage
2
+ on:
3
+ workflow_call:
4
+ inputs:
5
+ pr_number:
6
+ description: 'Pull request number'
7
+ required: false
8
+ type: number
9
+ secrets:
10
+ CODECOV_TOKEN:
11
+ required: true
12
+
13
+
14
+
15
+ permissions:
16
+ pull-requests: write
17
+
18
+ jobs:
19
+ pytest:
20
+ runs-on: ubuntu-latest
21
+
22
+ env:
23
+ CHILD_PIPELINE_BRANCH: main # Set the branch you want for ophyd_devices
24
+ BEC_CORE_BRANCH: main # Set the branch you want for bec
25
+ OPHYD_DEVICES_BRANCH: main # Set the branch you want for ophyd_devices
26
+ PROJECT_PATH: ${{ github.repository }}
27
+ QTWEBENGINE_DISABLE_SANDBOX: 1
28
+ QT_QPA_PLATFORM: "offscreen"
29
+
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+
33
+ - name: Set up Python
34
+ uses: actions/setup-python@v5
35
+ with:
36
+ python-version: '3.11'
37
+
38
+ - name: Install dependencies
39
+ run: |
40
+ sudo apt-get update
41
+ sudo apt-get install -y libgl1 libegl1 x11-utils libxkbcommon-x11-0 libdbus-1-3 xvfb
42
+ sudo apt-get -y install libnss3 libxdamage1 libasound2t64 libatomic1 libxcursor1
43
+
44
+ - name: Clone and install dependencies
45
+ run: |
46
+ echo -e "\033[35;1m Using branch $BEC_CORE_BRANCH of BEC CORE \033[0;m";
47
+ git clone --branch $BEC_CORE_BRANCH https://github.com/bec-project/bec.git
48
+ echo -e "\033[35;1m Using branch $OPHYD_DEVICES_BRANCH of OPHYD_DEVICES \033[0;m";
49
+ git clone --branch $OPHYD_DEVICES_BRANCH https://github.com/bec-project/ophyd_devices.git
50
+ export OHPYD_DEVICES_PATH=$PWD/ophyd_devices
51
+ pip install -e ./ophyd_devices
52
+ pip install -e ./bec/bec_lib[dev]
53
+ pip install -e ./bec/bec_ipython_client
54
+ pip install -e .[dev,pyside6]
55
+
56
+ - name: Run Pytest with Coverage
57
+ id: coverage
58
+ run: pytest --random-order --cov=bec_widgets --cov-config=pyproject.toml --cov-branch --cov-report=xml --no-cov-on-fail tests/unit_tests/
59
+
60
+ - name: Upload coverage to Codecov
61
+ uses: codecov/codecov-action@v5
62
+ with:
63
+ token: ${{ secrets.CODECOV_TOKEN }}
64
+ slug: bec-project/bec_widgets
@@ -0,0 +1,103 @@
1
+ name: Continuous Delivery
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ # default: least privileged permissions across all jobs
9
+ permissions:
10
+ contents: read
11
+
12
+
13
+
14
+ jobs:
15
+ release:
16
+ runs-on: ubuntu-latest
17
+ concurrency:
18
+ group: ${{ github.workflow }}-release-${{ github.ref_name }}
19
+ cancel-in-progress: false
20
+
21
+ env:
22
+ CHILD_PIPELINE_BRANCH: main # Set the branch you want for ophyd_devices
23
+ BEC_CORE_BRANCH: main # Set the branch you want for bec
24
+ OPHYD_DEVICES_BRANCH: main # Set the branch you want for ophyd_devices
25
+ PROJECT_PATH: ${{ github.repository }}
26
+ QTWEBENGINE_DISABLE_SANDBOX: 1
27
+ QT_QPA_PLATFORM: "offscreen"
28
+
29
+ permissions:
30
+ contents: write
31
+
32
+ steps:
33
+ # Note: We checkout the repository at the branch that triggered the workflow
34
+ # with the entire history to ensure to match PSR's release branch detection
35
+ # and history evaluation.
36
+ # However, we forcefully reset the branch to the workflow sha because it is
37
+ # possible that the branch was updated while the workflow was running. This
38
+ # prevents accidentally releasing un-evaluated changes.
39
+ - name: Setup | Checkout Repository on Release Branch
40
+ uses: actions/checkout@v4
41
+ with:
42
+ ref: ${{ github.ref_name }}
43
+ fetch-depth: 0
44
+ ssh-key: ${{ secrets.CI_DEPLOY_SSH_KEY }}
45
+ ssh-known-hosts: ${{ secrets.CI_DEPLOY_SSH_KNOWN_HOSTS }}
46
+
47
+ - name: Set up Python
48
+ uses: actions/setup-python@v5
49
+ with:
50
+ python-version: '3.11'
51
+
52
+ - name: Setup | Force release branch to be at workflow sha
53
+ run: |
54
+ git reset --hard ${{ github.sha }}
55
+ - name: Evaluate | Verify upstream has NOT changed
56
+ # Last chance to abort before causing an error as another PR/push was applied to
57
+ # the upstream branch while this workflow was running. This is important
58
+ # because we are committing a version change (--commit). You may omit this step
59
+ # if you have 'commit: false' in your configuration.
60
+ #
61
+ # You may consider moving this to a repo script and call it from this step instead
62
+ # of writing it in-line.
63
+ shell: bash
64
+ run: |
65
+ set +o pipefail
66
+
67
+ UPSTREAM_BRANCH_NAME="$(git status -sb | head -n 1 | cut -d' ' -f2 | grep -E '\.{3}' | cut -d'.' -f4)"
68
+ printf '%s\n' "Upstream branch name: $UPSTREAM_BRANCH_NAME"
69
+
70
+ set -o pipefail
71
+
72
+ if [ -z "$UPSTREAM_BRANCH_NAME" ]; then
73
+ printf >&2 '%s\n' "::error::Unable to determine upstream branch name!"
74
+ exit 1
75
+ fi
76
+
77
+ git fetch "${UPSTREAM_BRANCH_NAME%%/*}"
78
+
79
+ if ! UPSTREAM_SHA="$(git rev-parse "$UPSTREAM_BRANCH_NAME")"; then
80
+ printf >&2 '%s\n' "::error::Unable to determine upstream branch sha!"
81
+ exit 1
82
+ fi
83
+
84
+ HEAD_SHA="$(git rev-parse HEAD)"
85
+
86
+ if [ "$HEAD_SHA" != "$UPSTREAM_SHA" ]; then
87
+ printf >&2 '%s\n' "[HEAD SHA] $HEAD_SHA != $UPSTREAM_SHA [UPSTREAM SHA]"
88
+ printf >&2 '%s\n' "::error::Upstream has changed, aborting release..."
89
+ exit 1
90
+ fi
91
+
92
+ printf '%s\n' "Verified upstream branch has not changed, continuing with release..."
93
+
94
+ - name: Semantic Version Release
95
+ id: release
96
+ env:
97
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
98
+ run: |
99
+ pip install python-semantic-release==9.* wheel build twine
100
+ semantic-release -vv version
101
+ if [ ! -d dist ]; then echo No release will be made; exit 0; fi
102
+ twine upload dist/* -u __token__ -p ${{ secrets.CI_PYPI_TOKEN }} --skip-existing
103
+ semantic-release publish