Skip to content

Commit 2ccd4ef

Browse files
committed
Make python package managers available on PATH
1 parent af0cbc3 commit 2ccd4ef

2 files changed

Lines changed: 68 additions & 0 deletions

File tree

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: "Setup Python Package Managers"
2+
description: "Make python package managers available on PATH"
3+
4+
inputs:
5+
package-managers:
6+
description: "Space-separated package managers: uv, poetry, pixi and/or conda"
7+
required: false
8+
default: ""
9+
10+
runs:
11+
using: "composite"
12+
steps:
13+
# '--python python' resolves a version that supports the python under test
14+
- name: Install uv
15+
if: contains(inputs.package-managers, 'uv')
16+
shell: bash
17+
run: pipx install --python python uv
18+
19+
- name: Install poetry
20+
if: contains(inputs.package-managers, 'poetry')
21+
shell: bash
22+
run: pipx install --python python poetry
23+
24+
- name: Add pipx executables to PATH
25+
if: contains(inputs.package-managers, 'uv') || contains(inputs.package-managers, 'poetry')
26+
shell: bash
27+
run: pipx environment --value PIPX_BIN_DIR >> "$GITHUB_PATH"
28+
29+
- name: Install pixi
30+
if: contains(inputs.package-managers, 'pixi')
31+
shell: bash
32+
run: |
33+
set -e
34+
if [ "$RUNNER_OS" == "Windows" ]; then
35+
powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex"
36+
else
37+
curl -fsSL https://pixi.sh/install.sh | bash
38+
fi
39+
echo "$HOME/.pixi/bin" >> "$GITHUB_PATH"
40+
41+
- name: Enable conda
42+
if: contains(inputs.package-managers, 'conda')
43+
shell: bash
44+
run: |
45+
set -e
46+
if [ "$RUNNER_OS" == "Windows" ]; then
47+
echo "$CONDA/Scripts" >> "$GITHUB_PATH"
48+
else
49+
# Conda writes its package cache inside the pre-installed distribution
50+
sudo chown -R "$USER" "$CONDA"
51+
echo "$CONDA/bin" >> "$GITHUB_PATH"
52+
fi
53+
54+
- name: Check package managers
55+
if: inputs.package-managers != ''
56+
shell: bash
57+
run: |
58+
for manager in ${{ inputs.package-managers }}; do
59+
echo "$manager: $(command -v "$manager" || echo 'NOT FOUND')"
60+
done

.github/workflows/python-tests.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ on:
5151
required: false
5252
type: string
5353
default: ""
54+
package-managers:
55+
required: false
56+
type: string
57+
default: ""
5458
secrets:
5559
codecov_token:
5660
required: false
@@ -66,6 +70,10 @@ jobs:
6670
install-extras: ${{ inputs.install-extras }}
6771
pre-install: ${{ inputs.pre-install }}
6872

73+
- uses: ewoks-kit/.github/.github/actions/setup-package-managers@main
74+
with:
75+
package-managers: ${{ inputs.package-managers }}
76+
6977
- name: Install Qt runtime libraries
7078
if: startsWith(inputs.os, 'ubuntu') && (inputs.qt-api != '')
7179
run: |

0 commit comments

Comments
 (0)