Commit 7ec48682 authored by Pierre Smeyers's avatar Pierre Smeyers
Browse files

Merge branch 'fix/uv_modernize' into 'master'

feat: upgrade UV integration

See merge request to-be-continuous/python!154
parents 05554a58 23fe43e0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -446,7 +446,7 @@ This job is **disabled by default** and allows to perform a complete release of
The Python template supports three packaging systems:

* [Poetry](https://python-poetry.org/): uses Poetry-specific [version](https://python-poetry.org/docs/cli/#version), [build](https://python-poetry.org/docs/cli/#build) and [publish](https://python-poetry.org/docs/cli/#publish) commands.
* [uv](https://docs.astral.sh/uv/): uses [bump-my-version](https://github.com/callowayproject/bump-my-version) as version management, [build](https://docs.astral.sh/uv/guides/publish/#building-your-package) as package builder and [publish](https://docs.astral.sh/uv/guides/publish/) to publish.
* [uv](https://docs.astral.sh/uv/): uses [version](https://docs.astral.sh/uv/reference/cli/#uv-version) if uv >= v0.7.0 (or fallback to [bump-my-version](https://github.com/callowayproject/bump-my-version)) as version management, [build](https://docs.astral.sh/uv/guides/publish/#building-your-package) as package builder and [publish](https://docs.astral.sh/uv/guides/publish/) to publish.
* [hatch](https://hatch.pypa.io/latest/): uses [bump-my-version](https://github.com/callowayproject/bump-my-version) as version management, [build](https://hatch.pypa.io/latest/build/) as package builder and [publish](https://hatch.pypa.io/latest/publish/) to publish.
* [Setuptools](https://setuptools.pypa.io/): uses [bump-my-version](https://github.com/callowayproject/bump-my-version) as version management, [build](https://pypa-build.readthedocs.io/) as package builder and [Twine](https://twine.readthedocs.io/) to publish.

+30 −22
Original line number Diff line number Diff line
@@ -926,23 +926,36 @@ variables:
    elif [[ "$PYTHON_BUILD_SYSTEM" =~ ^uv ]]
    then
      maybe_install_build_system
      if uv self version 2>/dev/null 1>&2 
      then
        if [[ -z "$py_next_version" ]]
        then
          py_cur_version=$(uv version --short)
          log_info "[uv version] increase \\e[1;94m${PYTHON_RELEASE_NEXT}\\e[0m (from current \\e[1;94m${py_cur_version}\\e[0m)"
          uv version ${TRACE+--verbose} --bump "$PYTHON_RELEASE_NEXT"
          py_next_version=$(uv version --short)

        else
          log_info "[uv version] change version \\e[1;94m${py_cur_version}\\e[0m → \\e[1;94m${py_next_version}\\e[0m"
          uv version ${TRACE+--verbose} "$py_next_version"
        fi
      else
        # fallback for uv versions without 'uv version' for bumping support
        if [[ -z "$py_next_version" ]]
        then
        # quick version waiting for uv to manage bump
        # related uv MR https://github.com/astral-sh/uv/pull/7248#issuecomment-2395465334 
          mkdir -p -m 777 tbc_tmp
          uvx --from toml-cli toml get --toml-path pyproject.toml project.version > tbc_tmp/version.txt
          py_cur_version=$(cat tbc_tmp/version.txt)

        py_release_part="$PYTHON_RELEASE_NEXT"
        log_info "[bump-my-version] increase \\e[1;94m${py_release_part}\\e[0m (from current \\e[1;94m${py_cur_version}\\e[0m)"
        uvx bump-my-version bump ${TRACE+--verbose} --current-version "$py_cur_version" "$py_release_part" tbc_tmp/version.txt
          log_info "[bump-my-version] increase \\e[1;94m${PYTHON_RELEASE_NEXT}\\e[0m (from current \\e[1;94m${py_cur_version}\\e[0m)"
          uvx bump-my-version bump ${TRACE+--verbose} --current-version "$py_cur_version" "$PYTHON_RELEASE_NEXT" tbc_tmp/version.txt
          py_next_version=$(cat tbc_tmp/version.txt)
          rm -fr tbc_tmp/version.txt
        fi

      log_info "[uv] change version \\e[1;94m${py_cur_version}\\e[0m → \\e[1;94m${py_next_version}\\e[0m"
        log_info "[toml-cli] change version \\e[1;94m${py_cur_version}\\e[0m → \\e[1;94m${py_next_version}\\e[0m"
        uvx --from toml-cli toml set --toml-path pyproject.toml project.version "$py_next_version"
      fi

      # Git commit and tag
      git add pyproject.toml
@@ -970,7 +983,7 @@ variables:
      if [[ "$py_next_version" ]]
      then
        # explicit release version (semantic-release)
        log_info "[bumpversion] change version \\e[1;94m${py_cur_version}\\e[0m → \\e[1;94m${py_next_version}\\e[0m"
        log_info "[bump-my-version] change version \\e[1;94m${py_cur_version}\\e[0m → \\e[1;94m${py_next_version}\\e[0m"
        # create cfg in case it doesn't exist - will be updated by bumpversion
        if [[ ! "$py_cur_version" && ! -f ".bumpversion.cfg" && ! -f ".bumpversion.toml" && ! -f "pyproject.toml" && ! -f "setup.cfg" ]]
        then
@@ -1387,14 +1400,9 @@ py-trivy:
      fi
    - |
      case "$PYTHON_BUILD_SYSTEM" in
        poetry*|pipenv*)
        poetry*|pipenv*|uv*)
          log_info "$PYTHON_BUILD_SYSTEM build system (\\e[32muse lock file\\e[0m)"
          cp poetry.lock Pipfile.lock ./reports 2>/dev/null || true
          ;;
        uv*)
          log_info "$PYTHON_BUILD_SYSTEM build system used (\\e[32mmust generate pinned requirements.txt from uv.lock\\e[0m)"
          maybe_install_build_system
          uv export > ./reports/requirements.txt
          cp poetry.lock Pipfile.lock uv.lock ./reports 2>/dev/null || true
          ;;
        hatch*)
          log_info "$PYTHON_BUILD_SYSTEM build system used (\\e[32mmust generate pinned requirements.txt\\e[0m)"