From f54e943a5108f1c27a76e98db018f7638758992b Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Fri, 17 Oct 2025 15:51:17 +0200 Subject: [PATCH 01/21] Chore: Removed branching action from versio branch, new vesions should always be branched off main. --- .github/workflows/branchOffCadenzaVersion.yml | 76 ------------------- 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/branchOffCadenzaVersion.yml diff --git a/.github/workflows/branchOffCadenzaVersion.yml b/.github/workflows/branchOffCadenzaVersion.yml deleted file mode 100644 index 28e8d8d..0000000 --- a/.github/workflows/branchOffCadenzaVersion.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Branch off Cadenza Version - -on: - workflow_dispatch: - inputs: - cadenza-version: - type: string - required: true - description: | - Next Cadenza Main Version - (e.g. '10.4' for setting the main branch up for development against Cadenza 10.4. This would make 10.4.0-dev the new main branch version.) - - -jobs: - release: - runs-on: ubuntu-latest - - steps: - - name: Validate version input - if: "${{ github.event.inputs.cadenza-version != '' }}" - run: | - if ! [[ '${{ github.event.inputs.cadenza-version }}' =~ ^[0-9]+\.[0-9]+$ ]]; then - echo "Cadenza Version must be specified in the format x.x (e.g. 10.4). Was '${{ github.event.inputs.cadenza-version }}'." >&2 - exit 1 - fi - - - uses: actions/create-github-app-token@v1 - id: app-token - with: - app-id: ${{ vars.DISY_RELEASE_APP_ID }} - private-key: ${{ secrets.DISY_RELEASE_APP_SECRET }} - - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ steps.app-token.outputs.token }} - - - name: Set up Python - uses: actions/setup-python@v3 - with: - python-version: ${{ vars.PYTHON_VERSION }} - - # poetry is needed for building and for poetry-bumpversion for version management - - name: Install poetry - run: | - pipx install poetry - poetry self add poetry-bumpversion - - - # Needed for creating the tag - - name: Configure Git - run: | - git config --global user.email "github-actions[bot]@users.noreply.github.com" - git config --global user.name "github-actions[bot]" - - - name: Determine branch name - run: echo "BRANCH_NAME=v$(poetry version patch --dry-run -s | cut -d. -f1,2).x" >> $GITHUB_ENV - - - name: Create branch for current version - run: git branch ${{ env.BRANCH_NAME }} main - - - name: Bump package version of main - run: | - poetry version ${{ github.event.inputs.cadenza-version }}.0-dev - echo "NEW_VERSION=$(poetry version -s)" >> $GITHUB_ENV - - - name: Commit and tag changes - run: | - git add "pyproject.toml" - git commit -m "chore: branch off main as ${{ env.BRANCH_NAME }} and bump main version to ${{ env.NEW_VERSION }}" - - - name: Push changes - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: git push -u origin ${{ env.BRANCH_NAME }} && git push origin && git push --tags From ee38483662274ae663c03664cd23f0fd2eddd24d Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Fri, 17 Oct 2025 16:28:54 +0200 Subject: [PATCH 02/21] Fix: Fixed command in Release workflow, commmented out some changes for testing. --- .github/workflows/release.yml | 113 +++++++++++++++++++--------------- 1 file changed, 62 insertions(+), 51 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cec17be..ad675fd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,18 @@ name: Release on: - workflow_dispatch + workflow_dispatch: + inputs: + deployment-env: + type: choice + description: 'Deployment environment' + required: true + options: + - test.pypi.org + - pypi.org + default: 'test.pypi.org' + + jobs: release: @@ -50,8 +61,9 @@ jobs: - name: Prepare package version (e.g. 1.2.3-dev => 1.2.3) run: | - echo "RELEASE_VERSION=$(poetry version patch --dry-run -s)" >> $GITHUB_ENV + echo "RELEASE_VERSION=$(poetry version patch --dry-run -s | head -n 1)" >> $GITHUB_ENV + # TODO should this only be done on the main branch? Or how? - name: Set release tag to 'latest' run: | echo "RELEASE_TAG=latest" >> $GITHUB_ENV @@ -64,65 +76,64 @@ jobs: # either push to test.pypi.org or pypi.org depending on user input - name: Publish package distributions to Test (!) PyPI - # if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" + if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: https://test.pypi.org/legacy/ + - name: Publish package distributions to PyPI + if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" + uses: pypa/gh-action-pypi-publish@release/v1 - #- name: Publish package distributions to PyPI - # if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" - # uses: pypa/gh-action-pypi-publish@release/v1 - - - # Update changelog unreleased section with new version - - name: Update changelog - uses: superfaceai/release-changelog-action@v2 - with: - path-to-changelog: CHANGELOG.md - version: ${{ env.RELEASE_VERSION }} - operation: release - - - name: Commit and tag changes - run: | - git add "pyproject.toml" - git add "CHANGELOG.md" - git commit -m "chore: release ${{ env.RELEASE_VERSION }}" - git tag ${{ env.RELEASE_VERSION }} - - - name: Push changes - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: git push origin && git push --tags - - - id: get-changelog - name: Get version changelog - uses: superfaceai/release-changelog-action@v2 - with: - path-to-changelog: CHANGELOG.md - version: ${{ env.RELEASE_VERSION }} - operation: read - - - name: Update GitHub release documentation - uses: softprops/action-gh-release@v1 - with: - tag_name: ${{ env.RELEASE_VERSION }} - body: ${{ steps.get-changelog.outputs.changelog }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # # TODO should chaneglog only be updated when not pushing to test.pypi? + # # Update changelog unreleased section with new version + # - name: Update changelog + # uses: superfaceai/release-changelog-action@v2 + # with: + # path-to-changelog: CHANGELOG.md + # version: ${{ env.RELEASE_VERSION }} + # operation: release + # + # - name: Commit and tag changes + # run: | + # git add "pyproject.toml" + # git add "CHANGELOG.md" + # git commit -m "Chore: release ${{ env.RELEASE_VERSION }}" + # git tag ${{ env.RELEASE_VERSION }} + # + # - name: Push changes + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # run: git push origin && git push --tags + # + # - id: get-changelog + # name: Get version changelog + # uses: superfaceai/release-changelog-action@v2 + # with: + # path-to-changelog: CHANGELOG.md + # version: ${{ env.RELEASE_VERSION }} + # operation: read + # + # - name: Update GitHub release documentation + # uses: softprops/action-gh-release@v1 + # with: + # tag_name: ${{ env.RELEASE_VERSION }} + # body: ${{ steps.get-changelog.outputs.changelog }} + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Bump package version to new dev version (e.g. 1.2.3 => 1.2.4-dev) run: | poetry version --dry-run "$(poetry version patch --dry-run -s)-dev" DEV_VERSION=$(poetry version -s) && echo "DEV_VERSION=$DEV_VERSION" >> $GITHUB_ENV # Determine DEV_VERSION - - name: Commit version bump - run: | - git add "pyproject.toml" - git commit -m "chore: bump up version to ${{ env.DEV_VERSION }}" + #- name: Commit version bump + # run: | + # git add "pyproject.toml" + # git commit -m "Chore: bump up version to ${{ env.DEV_VERSION }}" - - name: Push changes - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: git push origin + #- name: Push changes + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # run: git push origin From 3c0f713d0d747acc2ee1016265e515ec9b1e4561 Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Fri, 17 Oct 2025 16:30:59 +0200 Subject: [PATCH 03/21] Fix: Fixed wrong indentation in Release workflow, commmented out some changes for testing. --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ad675fd..bbbe6b2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -76,7 +76,7 @@ jobs: # either push to test.pypi.org or pypi.org depending on user input - name: Publish package distributions to Test (!) PyPI - if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" + if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: https://test.pypi.org/legacy/ From 500f080ac65164ac35c870364bf33382f6e75929 Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Fri, 17 Oct 2025 16:44:27 +0200 Subject: [PATCH 04/21] Fix: Fixed poetry command pipe to env, commmented out some changes for testing. --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bbbe6b2..86beb7f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -124,7 +124,7 @@ jobs: - name: Bump package version to new dev version (e.g. 1.2.3 => 1.2.4-dev) run: | - poetry version --dry-run "$(poetry version patch --dry-run -s)-dev" + poetry version --dry-run "$(poetry version patch --dry-run -s | head -n 1)-dev" DEV_VERSION=$(poetry version -s) && echo "DEV_VERSION=$DEV_VERSION" >> $GITHUB_ENV # Determine DEV_VERSION #- name: Commit version bump From d44c62873fc0613e1cd323cf3eb77ce39f8634ae Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Fri, 17 Oct 2025 16:49:16 +0200 Subject: [PATCH 05/21] Fix: Removed dry-run option from poetry command, commmented out some changes for testing. --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 86beb7f..f9f232f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: - name: Prepare package version (e.g. 1.2.3-dev => 1.2.3) run: | - echo "RELEASE_VERSION=$(poetry version patch --dry-run -s | head -n 1)" >> $GITHUB_ENV + echo "RELEASE_VERSION=$(poetry version patch -s | head -n 1)" >> $GITHUB_ENV # TODO should this only be done on the main branch? Or how? - name: Set release tag to 'latest' From 7474080551767689bb1370d5cfd07f8a791306b4 Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Sat, 18 Oct 2025 13:53:20 +0200 Subject: [PATCH 06/21] Docs: Added changelog entry regarding the new versioning scheme. --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0828c01..03d4f2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,13 @@ # Changelog All notable changes to this project will be documented in this file. -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Unreleased +### Changed +- The version scheme on cadenzaanalytics is now based on the Cadenza main version (starting with Cadenza 10.3). New versions have the format x.x.y, where x.x is the Cadenza main version and y a functional change or bugfix. + ## 0.1.26 - 2025-03-11 - Support multipart/form-data that is parsed as files and not as forms From e6d40f50027d0f145a67e0280a55620fddfc780b Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Sat, 18 Oct 2025 13:55:11 +0200 Subject: [PATCH 07/21] Docs: Removed semantic versioning from README.md and broke up long lines into a line per sentence. --- README.md | 59 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index a02986b..71b4665 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Cadenza Analytics Python -**cadenzaanalytics** is the official package for fast and easy creation of [disy Cadenza](https://www.disy.net/en/products/disy-cadenza/) analytics extensions with Python. It enables the extension of disy Cadenza for advanced analytics purposes with the usage of python code. +**cadenzaanalytics** is the official package for fast and easy creation of [disy Cadenza](https://www.disy.net/en/products/disy-cadenza/) analytics extensions with Python. +It enables the extension of disy Cadenza for advanced analytics purposes with the usage of python code. -Currently, this package is in **beta status**: it can be used for testing, but there -may be breaking changes before a full release. +Currently, this package is in **beta status**: it can be used for testing, but there may be breaking changes before a full release. Find the docs at https://disyinformationssysteme.github.io/cadenza-analytics-python @@ -17,55 +17,74 @@ Find the docs at https://disyinformationssysteme.github.io/cadenza-analytics-pyt ## Example: -Example extension can be found in [examples](examples). +Example extensions can be found in [examples](https://github.com/DisyInformationssysteme/cadenza-analytics-python/tree/main/examples). -To test a example extension, clone this repository, install the dependencies, navigate to the folder, e.g. `examples/calculation/extension`. Run the example file in your python environment e.g.: +To test an example extension, clone this repository, install the dependencies, navigate to the folder, e.g. `examples/calculation/extension`. +Run the example file in your python environment e.g.: ``` python example_extensions.py ``` -A development server will be started on localhost `http://127.0.0.1:5005`. The analytics extension can now be registered and used in disy Cadenza. +A development server will be started on localhost `http://127.0.0.1:5005`. +The analytics extension can now be registered and used in disy Cadenza. It is not recommended to use the development server in a production environment. ## Development of Cadenza Analytics Python ### Development Environment -Development is possible via most common IDEs such as Visual Studio Code or PyCharm. Make sure to mark the `src` directory as "Sources Root" to make sure cross imports from the `examples` directory work as expected and that imports within `cadenzaanalytics` can get resolved by the IDE. +Development is possible via most common IDEs such as Visual Studio Code or PyCharm. +Make sure to mark the `src` directory as "Sources Root" to make sure cross imports from the `examples` directory work as expected and that imports within `cadenzaanalytics` can get resolved by the IDE. ### Python version We aim to support older python versions and dependencies, but best experience and most features will be available for newer versions, currently this is Python `9.12`. + ### Versioning -Versioning of `cadenzaanalytics` will happen via [poetry-bumpversion](https://github.com/monim67/poetry-bumpversion). On release, this will bump the version depending on the chosen release type. -The project uses semantic versioning with a major, minor and patch version. +Versioning of `cadenzaanalytics` will happen via [poetry-bumpversion](https://github.com/monim67/poetry-bumpversion). +On release, this will bump the version depending on the chosen release type. ### Documentation On release, all "Unreleased" changes in the [Changelog](CHANGELOG.md) will be automatically tagged with the released version. So make sure to add relevant changelog notes for every change you make and follow the style described in the changelog file. +Also, on a release, documentation for all version branches will be generated using `pdoc` and uploaded to this repositories githubpages at https://disyinformationssysteme.github.io/cadenza-analytics-python + ### Pylint -[Pylint](https://github.com/pylint-dev/pylint) is used for making sure that `cadenzaanalytics` follows some common styles. If necessary some rules can be disabled globally in the [.pylintrc](.pylintrc) file or in the corresponding python file. There is a GitHub workflow to validate this. For some IDEs like PyCharm there are also plugins for Pylint so that linting can happen within the IDE and errors in the pipeline can be avoided. +[Pylint](https://github.com/pylint-dev/pylint) is used for making sure that `cadenzaanalytics` follows some common styles. +If necessary some rules can be disabled globally in the [.pylintrc](.pylintrc) file or in the corresponding python file. +There is a GitHub workflow to validate this. +For some IDEs like PyCharm there are also plugins for Pylint so that linting can happen within the IDE and errors in the pipeline can be avoided. + ### Releasing: Make sure to check the following - Does the [Changelog](CHANGELOG.md) contain all relevant information? - Are all relevant workflows green? -- Do you want to make a test release to https://test.pypi.org? This is helpful to test `cadenzaanalytics` with existing extensions. To get the latest version immediately it might be good to disable caches, e.g. via `pip install --upgrade cadenzaanalytics --extra-index-url https://test.pypi.org/simple --no-cache-dir`. For a first installation in a new (virtual) environment, you can use `pip install cadenzaanalytics --extra-index-url https://test.pypi.org/simple` -- To make a non-test release, choose the pypi.org deployment environment in the release dialog. +- Do you want to make a test release to https://test.pypi.org? +This is helpful to test `cadenzaanalytics` with existing extensions. +To get the latest version immediately it might be good to disable caches, e.g. via `pip install --upgrade cadenzaanalytics --extra-index-url https://test.pypi.org/simple --no-cache-dir`. +For a first installation in a new (virtual) environment, you can use `pip install cadenzaanalytics --extra-index-url https://test.pypi.org/simple` +- In test releases, CI changes to the repository (bumping the version, updating the changelog, etc.) are _not_ pushed. +- To make a non-test release, choose the `pypi.org` deployment environment in the release dialog. ### Dockerized Example Extension -To run the example (and your production application) in a docker container you will need to define the wsgi server that will run the flask app. -The provided Dockerfile in the examples uses gunicorn with some example options, for more details consult the [documentation](https://docs.gunicorn.org/en/latest/settings.html). Important is that gunicorn has access to a function creating or providing the flask app object, which for `cadenzanalytics` is the `CadenzaAnalyticsExtensionService`. -The requirements file can use test releases when adding `--extra-index-url https://test.pypi.org/simple` in the first line. It can (re)define versions of its own or transient dependencies, but most importantly needs the `cadenzaanalytics` dependency. +To run the example (and your production application) in a docker container you will need to define the wsgi server that will run the flask app. +The provided Dockerfile in the examples uses gunicorn with some example options, for more details consult the [documentation](https://docs.gunicorn.org/en/latest/settings.html). +Important is that gunicorn has access to a function creating or providing the flask app object, which for `cadenzanalytics` is the `CadenzaAnalyticsExtensionService`. +The requirements file can use test releases when adding `--extra-index-url https://test.pypi.org/simple` in the first line. +It can (re)define versions of its own or transient dependencies, but most importantly needs the `cadenzaanalytics` dependency. ```commandline cd /examples/calculation docker build . -t cadenza-analytics-example docker image list -docker run -p 8080:8080 YOUR_CREATED_IMAGE_ID +docker run -p 8080:8080 YOUR_CREATED_IMAGE_ID ``` + ### Technical notes The release process uses PyPi's [trusted publishing](https://docs.pypi.org/trusted-publishers/), so is based on -OIDC id token and uses no API token from PyPi. The relevant permission `id-token: write` must be given to the release-job. +OIDC id token and uses no API token from PyPi. +The relevant permission `id-token: write` must be given to the release-job. -The test environment test.pypi.org makes no guarantee on availability of the package or even on the account. So it might be necessary to recreate an account at some point in time. +The test environment test.pypi.org makes no guarantee on availability of the package or even on the account. +So it might be necessary to recreate an account at some point in time. To test and play around with poetry-bumpversion locally, you can use it as follows, see documentation of [poetry](https://python-poetry.org/docs/#installing-with-pipx) and [poetry-bumpversion](https://pypi.org/project/poetry-bumpversion/) ```commandline @@ -74,5 +93,9 @@ pipx run poetry self add poetry-bumpversion pipx run poetry version minor -s ``` +The documentation build workflow runs on a separate branch `githubpages` for all version branches. +In order to enable cross-branch triggering of this workflow, a valid PAT with read content and read/write workflows permissions needs to be stored in the secret `WORKFLOW_TRIGGER_TOKEN`. +An alternative is to manually trigger the workflow. + ## License: [License](LICENSE.md) From 5a29c3daff7909f375cb5940bc85df3abc46e851 Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Sat, 18 Oct 2025 13:56:24 +0200 Subject: [PATCH 08/21] Feat: Updated release workflow, re-enabled changelog and version update, disabled pushing for test releases. --- .github/workflows/release.yml | 100 +++++++++++++++++----------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f9f232f..cbcd755 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,8 +12,6 @@ on: - pypi.org default: 'test.pypi.org' - - jobs: release: runs-on: ubuntu-latest @@ -63,12 +61,11 @@ jobs: run: | echo "RELEASE_VERSION=$(poetry version patch -s | head -n 1)" >> $GITHUB_ENV - # TODO should this only be done on the main branch? Or how? + # TODO should this only be done on the main branch? Or how? Is this env var even used? - name: Set release tag to 'latest' run: | echo "RELEASE_TAG=latest" >> $GITHUB_ENV - # Create a dist/wheel for the bumped version now after "poetry version" has run - name: Build run: | @@ -85,55 +82,58 @@ jobs: if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" uses: pypa/gh-action-pypi-publish@release/v1 - # # TODO should chaneglog only be updated when not pushing to test.pypi? - # # Update changelog unreleased section with new version - # - name: Update changelog - # uses: superfaceai/release-changelog-action@v2 - # with: - # path-to-changelog: CHANGELOG.md - # version: ${{ env.RELEASE_VERSION }} - # operation: release - # - # - name: Commit and tag changes - # run: | - # git add "pyproject.toml" - # git add "CHANGELOG.md" - # git commit -m "Chore: release ${{ env.RELEASE_VERSION }}" - # git tag ${{ env.RELEASE_VERSION }} - # - # - name: Push changes - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # run: git push origin && git push --tags - # - # - id: get-changelog - # name: Get version changelog - # uses: superfaceai/release-changelog-action@v2 - # with: - # path-to-changelog: CHANGELOG.md - # version: ${{ env.RELEASE_VERSION }} - # operation: read - # - # - name: Update GitHub release documentation - # uses: softprops/action-gh-release@v1 - # with: - # tag_name: ${{ env.RELEASE_VERSION }} - # body: ${{ steps.get-changelog.outputs.changelog }} - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Update changelog + uses: superfaceai/release-changelog-action@v2 + with: + path-to-changelog: CHANGELOG.md + version: ${{ env.RELEASE_VERSION }} + operation: release + + - name: Commit and tag changes (push happens later) + run: | + git add "pyproject.toml" + git add "CHANGELOG.md" + git commit -m "Chore: release ${{ env.RELEASE_VERSION }}" + git tag ${{ env.RELEASE_VERSION }} + + # TODO why push here already? Should suffice to push in the very end? + # only push changes if not a test release + - name: Push changes + if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: git push origin && git push --tags + + - id: get-changelog + name: Get version changelog + uses: superfaceai/release-changelog-action@v2 + with: + path-to-changelog: CHANGELOG.md + version: ${{ env.RELEASE_VERSION }} + operation: read + + - name: Update GitHub release documentation + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ env.RELEASE_VERSION }} + body: ${{ steps.get-changelog.outputs.changelog }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Bump package version to new dev version (e.g. 1.2.3 => 1.2.4-dev) run: | - poetry version --dry-run "$(poetry version patch --dry-run -s | head -n 1)-dev" + poetry version --dry-run "$(poetry version patch -s | head -n 1)-dev" DEV_VERSION=$(poetry version -s) && echo "DEV_VERSION=$DEV_VERSION" >> $GITHUB_ENV # Determine DEV_VERSION - #- name: Commit version bump - # run: | - # git add "pyproject.toml" - # git commit -m "Chore: bump up version to ${{ env.DEV_VERSION }}" - - #- name: Push changes - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # run: git push origin + - name: Commit version bump (push happens later) + run: | + git add "pyproject.toml" + git commit -m "Chore: bump up version to ${{ env.DEV_VERSION }}" + + # only push changes if not a test release + - name: Push changes + if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: git push origin From 546aae0064392d00051fd59502ced305ee8da433 Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Sat, 18 Oct 2025 14:10:40 +0200 Subject: [PATCH 09/21] Fix: Added dry-run version bump when test releasing so that no version conflicts occur when pushing to PyPI. --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cbcd755..43b1b95 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -57,7 +57,13 @@ jobs: git config --global user.email "github-actions[bot]@users.noreply.github.com" git config --global user.name "github-actions[bot]" + - name: Prepare package version (e.g. 1.2.3-dev => 1.2.3) DRY-RUN FOR TESTING (!) + if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" + run: | + echo "RELEASE_VERSION=$(poetry version patch --dry-run -s | head -n 1)" >> $GITHUB_ENV + - name: Prepare package version (e.g. 1.2.3-dev => 1.2.3) + if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" run: | echo "RELEASE_VERSION=$(poetry version patch -s | head -n 1)" >> $GITHUB_ENV From 080c88dbdfe0209bd96adca1416f3f9d0e5607bf Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Tue, 28 Oct 2025 01:06:43 +0100 Subject: [PATCH 10/21] Feat: Updated release workflow with poetry prerelase version numbering for test releases. --- .github/workflows/release.yml | 42 +++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 43b1b95..9e55845 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -57,28 +57,24 @@ jobs: git config --global user.email "github-actions[bot]@users.noreply.github.com" git config --global user.name "github-actions[bot]" - - name: Prepare package version (e.g. 1.2.3-dev => 1.2.3) DRY-RUN FOR TESTING (!) + # either bump release or pre-release version, depending on user input + - name: Prepare package version (e.g. 1.2.3.dev => 1.2.3a0, 1.2.3a0.dev => 1.2.3a0) FOR TEST (!) pre-release if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" run: | - echo "RELEASE_VERSION=$(poetry version patch --dry-run -s | head -n 1)" >> $GITHUB_ENV + echo "RELEASE_VERSION=$(poetry version prerelease -s | head -n 1)" >> $GITHUB_ENV - - name: Prepare package version (e.g. 1.2.3-dev => 1.2.3) + - name: Prepare package version (e.g. 1.2.3.dev => 1.2.3, 1.2.3a0.dev => 1.2.3) for release if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" run: | echo "RELEASE_VERSION=$(poetry version patch -s | head -n 1)" >> $GITHUB_ENV - # TODO should this only be done on the main branch? Or how? Is this env var even used? - - name: Set release tag to 'latest' - run: | - echo "RELEASE_TAG=latest" >> $GITHUB_ENV - # Create a dist/wheel for the bumped version now after "poetry version" has run - name: Build run: | poetry build - # either push to test.pypi.org or pypi.org depending on user input - - name: Publish package distributions to Test (!) PyPI + # either push to test.pypi.org or pypi.org, depending on user input + - name: Publish package distributions TO TEST (!) PyPI if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" uses: pypa/gh-action-pypi-publish@release/v1 with: @@ -88,29 +84,37 @@ jobs: if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" uses: pypa/gh-action-pypi-publish@release/v1 - - name: Update changelog + - name: Update changelog, only for proper release + if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" uses: superfaceai/release-changelog-action@v2 with: path-to-changelog: CHANGELOG.md version: ${{ env.RELEASE_VERSION }} operation: release - - name: Commit and tag changes (push happens later) + - name: Commit and tag changes without changelog FOR TEST (!) prerelease + if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" + run: | + git add "pyproject.toml" + git commit -m "Chore: pre-release ${{ env.RELEASE_VERSION }}" + git tag ${{ env.RELEASE_VERSION }} + + - name: Commit and tag changes + if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" run: | git add "pyproject.toml" git add "CHANGELOG.md" git commit -m "Chore: release ${{ env.RELEASE_VERSION }}" git tag ${{ env.RELEASE_VERSION }} - # TODO why push here already? Should suffice to push in the very end? - # only push changes if not a test release - name: Push changes - if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: git push origin && git push --tags + # TODO only for full release? What does this action do exactly? - id: get-changelog + if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" name: Get version changelog uses: superfaceai/release-changelog-action@v2 with: @@ -118,7 +122,9 @@ jobs: version: ${{ env.RELEASE_VERSION }} operation: read + # TODO this should only happen when releasing to PyPI, right? - name: Update GitHub release documentation + if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" uses: softprops/action-gh-release@v1 with: tag_name: ${{ env.RELEASE_VERSION }} @@ -126,9 +132,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Bump package version to new dev version (e.g. 1.2.3 => 1.2.4-dev) + - name: Bump package version to new prerelease dev version (e.g. 1.2.3 => 1.2.4a0.dev, 1.2.3a0 => 1.2.3a1.dev) run: | - poetry version --dry-run "$(poetry version patch -s | head -n 1)-dev" + poetry version "$(poetry version prerelease --dry-run -s | head -n 1).dev" DEV_VERSION=$(poetry version -s) && echo "DEV_VERSION=$DEV_VERSION" >> $GITHUB_ENV # Determine DEV_VERSION - name: Commit version bump (push happens later) @@ -136,9 +142,7 @@ jobs: git add "pyproject.toml" git commit -m "Chore: bump up version to ${{ env.DEV_VERSION }}" - # only push changes if not a test release - name: Push changes - if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: git push origin From c26de43f520c0d3ce47c7d8fbbcc55be4ed2b30a Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Tue, 28 Oct 2025 01:07:25 +0100 Subject: [PATCH 11/21] Chore: Updated version in pyproject.toml to prelease 10.3 version. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5e54cf8..ea5c3dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ "Daniel Dittmar ", "Matthias Budde " ] -version="10.3.0-dev" +version="10.3.0a0.dev" description = "Official Python Package for creation of disy Cadenza analytics extensions" readme = "README.md" license = "Apache-2.0" From 51dc3f8de320d0e8c47ead829533182864a0e3f4 Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Tue, 28 Oct 2025 01:21:20 +0100 Subject: [PATCH 12/21] Docs: Split developer part off public facing README and into DEVELOPMENT.md, so it does not appear in PyPI. --- DEVELOPMENT.md | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 70 +------------------------------------------------- 2 files changed, 70 insertions(+), 69 deletions(-) create mode 100644 DEVELOPMENT.md diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..c849586 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,69 @@ +# Development of Cadenza Analytics Python + +## Development Environment +Development is possible via most common IDEs such as Visual Studio Code or PyCharm. +Make sure to mark the `src` directory as "Sources Root" to make sure cross imports from the `examples` directory work as expected and that imports within `cadenzaanalytics` can get resolved by the IDE. + +## Python version +We aim to support older python versions and dependencies, but best experience and most features will be available for newer versions, currently this is Python `9.12`. + +## Versioning +Versioning of `cadenzaanalytics` will happen via [poetry-bumpversion](https://github.com/monim67/poetry-bumpversion). +On release, this will bump the version depending on the chosen release type. +For test releases, a prerelease (alpha) version is used (e.g. `10.3.0a0`). + +## Documentation +On a proper release (i.e. not a test release), all "Unreleased" changes in the [Changelog](CHANGELOG.md) will be automatically tagged with the released version. +So make sure to add relevant changelog notes for every change you make and follow the style described in the changelog file. + +Also, on a release, documentation for all version branches will be generated using `pdoc` and uploaded to this repositories githubpages at https://disyinformationssysteme.github.io/cadenza-analytics-python. +This documentation workflow can also be triggered manually on the dedicated branch `githubpages`. + +## Pylint +[Pylint](https://github.com/pylint-dev/pylint) is used for making sure that `cadenzaanalytics` follows some common styles. +If necessary some rules can be disabled globally in the [.pylintrc](.pylintrc) file or in the corresponding python file. +There is a GitHub workflow to validate this. +For some IDEs like PyCharm there are also plugins for Pylint so that linting can happen within the IDE and errors in the pipeline can be avoided. + +## Releasing: +Make sure to check the following +- Does the [Changelog](CHANGELOG.md) contain all relevant information? +- Are all relevant workflows green? +- Do you want to make a test release to https://test.pypi.org? +This is helpful to test `cadenzaanalytics` with existing extensions. +To get the latest version immediately it might be good to disable caches, e.g. via `pip install --upgrade cadenzaanalytics --extra-index-url https://test.pypi.org/simple --no-cache-dir`. +For a first installation in a new (virtual) environment, you can use `pip install cadenzaanalytics --extra-index-url https://test.pypi.org/simple` +- In test releases, CI changes to the repository (bumping the version, updating the changelog, etc.) are _not_ pushed. +- To make a non-test release, choose the `pypi.org` deployment environment in the release dialog. + +## Dockerized Example Extension +To run the example (and your production application) in a docker container you will need to define the wsgi server that will run the flask app. +The provided Dockerfile in the examples uses gunicorn with some example options, for more details consult the [documentation](https://docs.gunicorn.org/en/latest/settings.html). +Important is that gunicorn has access to a function creating or providing the flask app object, which for `cadenzanalytics` is the `CadenzaAnalyticsExtensionService`. +The requirements file can use test releases when adding `--extra-index-url https://test.pypi.org/simple` in the first line. +It can (re)define versions of its own or transient dependencies, but most importantly needs the `cadenzaanalytics` dependency. +```commandline +cd /examples/calculation +docker build . -t cadenza-analytics-example +docker image list +docker run -p 8080:8080 YOUR_CREATED_IMAGE_ID +``` + +## Technical notes +The release process uses PyPi's [trusted publishing](https://docs.pypi.org/trusted-publishers/), so is based on +OIDC id token and uses no API token from PyPi. +The relevant permission `id-token: write` must be given to the release-job. + +The test environment test.pypi.org makes no guarantee on availability of the package or even on the account. +So it might be necessary to recreate an account at some point in time. + +To test and play around with poetry-bumpversion locally, you can use it as follows, see documentation of [poetry](https://python-poetry.org/docs/#installing-with-pipx) and [poetry-bumpversion](https://pypi.org/project/poetry-bumpversion/) +```commandline +pipx install poetry +pipx run poetry self add poetry-bumpversion +pipx run poetry version minor -s +``` + +The documentation build workflow runs on a separate branch `githubpages` for all version branches. +In order to enable cross-branch triggering of this workflow, a valid PAT with read content and read/write workflows permissions needs to be stored in the secret `WORKFLOW_TRIGGER_TOKEN`. +An alternative is to manually trigger the workflow. diff --git a/README.md b/README.md index 71b4665..2aec098 100644 --- a/README.md +++ b/README.md @@ -29,73 +29,5 @@ The analytics extension can now be registered and used in disy Cadenza. It is not recommended to use the development server in a production environment. -## Development of Cadenza Analytics Python - -### Development Environment -Development is possible via most common IDEs such as Visual Studio Code or PyCharm. -Make sure to mark the `src` directory as "Sources Root" to make sure cross imports from the `examples` directory work as expected and that imports within `cadenzaanalytics` can get resolved by the IDE. - -### Python version -We aim to support older python versions and dependencies, but best experience and most features will be available for newer versions, currently this is Python `9.12`. - -### Versioning -Versioning of `cadenzaanalytics` will happen via [poetry-bumpversion](https://github.com/monim67/poetry-bumpversion). -On release, this will bump the version depending on the chosen release type. - -### Documentation -On release, all "Unreleased" changes in the [Changelog](CHANGELOG.md) will be automatically tagged with the released version. -So make sure to add relevant changelog notes for every change you make and follow the style described in the changelog file. - -Also, on a release, documentation for all version branches will be generated using `pdoc` and uploaded to this repositories githubpages at https://disyinformationssysteme.github.io/cadenza-analytics-python - -### Pylint -[Pylint](https://github.com/pylint-dev/pylint) is used for making sure that `cadenzaanalytics` follows some common styles. -If necessary some rules can be disabled globally in the [.pylintrc](.pylintrc) file or in the corresponding python file. -There is a GitHub workflow to validate this. -For some IDEs like PyCharm there are also plugins for Pylint so that linting can happen within the IDE and errors in the pipeline can be avoided. - -### Releasing: -Make sure to check the following -- Does the [Changelog](CHANGELOG.md) contain all relevant information? -- Are all relevant workflows green? -- Do you want to make a test release to https://test.pypi.org? -This is helpful to test `cadenzaanalytics` with existing extensions. -To get the latest version immediately it might be good to disable caches, e.g. via `pip install --upgrade cadenzaanalytics --extra-index-url https://test.pypi.org/simple --no-cache-dir`. -For a first installation in a new (virtual) environment, you can use `pip install cadenzaanalytics --extra-index-url https://test.pypi.org/simple` -- In test releases, CI changes to the repository (bumping the version, updating the changelog, etc.) are _not_ pushed. -- To make a non-test release, choose the `pypi.org` deployment environment in the release dialog. - -### Dockerized Example Extension -To run the example (and your production application) in a docker container you will need to define the wsgi server that will run the flask app. -The provided Dockerfile in the examples uses gunicorn with some example options, for more details consult the [documentation](https://docs.gunicorn.org/en/latest/settings.html). -Important is that gunicorn has access to a function creating or providing the flask app object, which for `cadenzanalytics` is the `CadenzaAnalyticsExtensionService`. -The requirements file can use test releases when adding `--extra-index-url https://test.pypi.org/simple` in the first line. -It can (re)define versions of its own or transient dependencies, but most importantly needs the `cadenzaanalytics` dependency. -```commandline -cd /examples/calculation -docker build . -t cadenza-analytics-example -docker image list -docker run -p 8080:8080 YOUR_CREATED_IMAGE_ID -``` - -### Technical notes -The release process uses PyPi's [trusted publishing](https://docs.pypi.org/trusted-publishers/), so is based on -OIDC id token and uses no API token from PyPi. -The relevant permission `id-token: write` must be given to the release-job. - -The test environment test.pypi.org makes no guarantee on availability of the package or even on the account. -So it might be necessary to recreate an account at some point in time. - -To test and play around with poetry-bumpversion locally, you can use it as follows, see documentation of [poetry](https://python-poetry.org/docs/#installing-with-pipx) and [poetry-bumpversion](https://pypi.org/project/poetry-bumpversion/) -```commandline -pipx install poetry -pipx run poetry self add poetry-bumpversion -pipx run poetry version minor -s -``` - -The documentation build workflow runs on a separate branch `githubpages` for all version branches. -In order to enable cross-branch triggering of this workflow, a valid PAT with read content and read/write workflows permissions needs to be stored in the secret `WORKFLOW_TRIGGER_TOKEN`. -An alternative is to manually trigger the workflow. - ## License: -[License](LICENSE.md) +[License](https://github.com/DisyInformationssysteme/cadenza-analytics-python/tree/main/LICENSE.md) From 53d91c4475772a2ff40192d604899a5dec997aff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 28 Oct 2025 00:26:29 +0000 Subject: [PATCH 13/21] Chore: pre-release 10.3.0a1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ea5c3dd..941cee2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ "Daniel Dittmar ", "Matthias Budde " ] -version="10.3.0a0.dev" +version="10.3.0a1" description = "Official Python Package for creation of disy Cadenza analytics extensions" readme = "README.md" license = "Apache-2.0" From 5bfa1313f0721a76b779f50db72a9b58296fed84 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 28 Oct 2025 00:26:31 +0000 Subject: [PATCH 14/21] Chore: bump up version to 10.3.0a2.dev --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 941cee2..6408a85 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ "Daniel Dittmar ", "Matthias Budde " ] -version="10.3.0a1" +version="10.3.0a2.dev" description = "Official Python Package for creation of disy Cadenza analytics extensions" readme = "README.md" license = "Apache-2.0" From ef69ed4bdc57455597513eccf8829bcf46d694e8 Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Tue, 28 Oct 2025 01:37:21 +0100 Subject: [PATCH 15/21] Fix: Fixed prerelease version bump, skipped 1 version before. --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9e55845..fac80c8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: - name: Prepare package version (e.g. 1.2.3.dev => 1.2.3a0, 1.2.3a0.dev => 1.2.3a0) FOR TEST (!) pre-release if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" run: | - echo "RELEASE_VERSION=$(poetry version prerelease -s | head -n 1)" >> $GITHUB_ENV + echo "RELEASE_VERSION=$(poetry version prepatch -s | head -n 1)" >> $GITHUB_ENV - name: Prepare package version (e.g. 1.2.3.dev => 1.2.3, 1.2.3a0.dev => 1.2.3) for release if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" From 1fece3be067c2b48af8ba3a7507c8edd69dc723f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 28 Oct 2025 00:40:23 +0000 Subject: [PATCH 16/21] Chore: pre-release 10.3.0a0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6408a85..8fd8eab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ "Daniel Dittmar ", "Matthias Budde " ] -version="10.3.0a2.dev" +version="10.3.0a0" description = "Official Python Package for creation of disy Cadenza analytics extensions" readme = "README.md" license = "Apache-2.0" From 30448d1ad7d55dfb2bb44180ff0c4c07e07fd8c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 28 Oct 2025 00:40:25 +0000 Subject: [PATCH 17/21] Chore: bump up version to 10.3.0a1.dev --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8fd8eab..04b23b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ "Daniel Dittmar ", "Matthias Budde " ] -version="10.3.0a0" +version="10.3.0a1.dev" description = "Official Python Package for creation of disy Cadenza analytics extensions" readme = "README.md" license = "Apache-2.0" From 600f651fa21f193c9f7776074e64cb51ec8d24aa Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Tue, 28 Oct 2025 01:57:07 +0100 Subject: [PATCH 18/21] Fix: Fixed prerelease version bump, reset to a0 version before. --- .github/workflows/release.yml | 4 ++-- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fac80c8..bc6dd74 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,10 +58,10 @@ jobs: git config --global user.name "github-actions[bot]" # either bump release or pre-release version, depending on user input - - name: Prepare package version (e.g. 1.2.3.dev => 1.2.3a0, 1.2.3a0.dev => 1.2.3a0) FOR TEST (!) pre-release + - name: Prepare package version (e.g. 1.2.3a0.dev => 1.2.3a0) FOR TEST (!) pre-release if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" run: | - echo "RELEASE_VERSION=$(poetry version prepatch -s | head -n 1)" >> $GITHUB_ENV + echo "RELEASE_VERSION=$(poetry version -s | head -n 1 | sed 's/\.dev//')" >> $GITHUB_ENV - name: Prepare package version (e.g. 1.2.3.dev => 1.2.3, 1.2.3a0.dev => 1.2.3) for release if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" diff --git a/pyproject.toml b/pyproject.toml index 04b23b2..6408a85 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ "Daniel Dittmar ", "Matthias Budde " ] -version="10.3.0a1.dev" +version="10.3.0a2.dev" description = "Official Python Package for creation of disy Cadenza analytics extensions" readme = "README.md" license = "Apache-2.0" From 6c0e6c8cff03696ecc01ef78b999764c66358ec7 Mon Sep 17 00:00:00 2001 From: Matthias Budde Date: Tue, 28 Oct 2025 02:04:08 +0100 Subject: [PATCH 19/21] Fix: Fixed prerelease version bump, did not change properly before. --- .github/workflows/release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bc6dd74..c8500ef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,8 @@ jobs: - name: Prepare package version (e.g. 1.2.3a0.dev => 1.2.3a0) FOR TEST (!) pre-release if: "${{ github.event.inputs.deployment-env == 'test.pypi.org' }}" run: | - echo "RELEASE_VERSION=$(poetry version -s | head -n 1 | sed 's/\.dev//')" >> $GITHUB_ENV + poetry version "$(poetry version -s | head -n 1 | sed 's/\.dev$//')" + RELEASE_VERSION=$(poetry version -s) && echo "RELEASE_VERSION=$RELEASE_VERSION" >> $GITHUB_ENV - name: Prepare package version (e.g. 1.2.3.dev => 1.2.3, 1.2.3a0.dev => 1.2.3) for release if: "${{ github.event.inputs.deployment-env == 'pypi.org' }}" From c73e9510424a9582dcfdae2a29b016e57b64f004 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 28 Oct 2025 01:05:22 +0000 Subject: [PATCH 20/21] Chore: pre-release 10.3.0a2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6408a85..59d38d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ "Daniel Dittmar ", "Matthias Budde " ] -version="10.3.0a2.dev" +version="10.3.0a2" description = "Official Python Package for creation of disy Cadenza analytics extensions" readme = "README.md" license = "Apache-2.0" From 75e65ac545adea0019fdbf1858657c2ef213bee8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 28 Oct 2025 01:05:25 +0000 Subject: [PATCH 21/21] Chore: bump up version to 10.3.0a3.dev --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 59d38d4..5ef823d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ "Daniel Dittmar ", "Matthias Budde " ] -version="10.3.0a2" +version="10.3.0a3.dev" description = "Official Python Package for creation of disy Cadenza analytics extensions" readme = "README.md" license = "Apache-2.0"