4343 fail-fast : false
4444
4545 steps :
46- - uses : actions/checkout@v7
46+ - uses : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
47+ with :
48+ persist-credentials : false
4749 - name : Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
48- uses : actions/setup-python@v6
50+ uses : actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
4951 with :
5052 python-version : ${{ matrix.python-version }}
5153 cache : pip
6769 shard-index : [0, 1, 2, 3]
6870 fail-fast : false
6971 steps :
70- - uses : actions/checkout@v7
71- - uses : actions/setup-python@v6
72+ - uses : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
73+ with :
74+ persist-credentials : false
75+ - uses : actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
7276 with :
7377 python-version : " 3.13"
7478 cache : pip
@@ -82,19 +86,24 @@ jobs:
8286 run : |
8387 PACKAGES=$(python tests/get_stubtest_system_requirements.py)
8488
89+ # System package names contain no whitespace or glob characters, so word splitting is intentional.
90+ # shellcheck disable=SC2086
8591 if [ "${{ runner.os }}" = "Linux" ]; then
8692 if [ -n "$PACKAGES" ]; then
87- printf "Installing APT packages:\n $(echo $PACKAGES | sed 's/ /\n /g')\n"
93+ printf 'Installing APT packages:\n'
94+ printf ' %s\n' $PACKAGES
8895 sudo apt-get update -q && sudo apt-get install -qy $PACKAGES
8996 fi
9097 else
9198 if [ "${{ runner.os }}" = "macOS" ] && [ -n "$PACKAGES" ]; then
92- printf "Installing Homebrew packages:\n $(echo $PACKAGES | sed 's/ /\n /g')\n"
99+ printf 'Installing Homebrew packages:\n'
100+ printf ' %s\n' $PACKAGES
93101 brew install -q $PACKAGES
94102 fi
95103
96104 if [ "${{ runner.os }}" = "Windows" ] && [ -n "$PACKAGES" ]; then
97- printf "Installing Chocolatey packages:\n $(echo $PACKAGES | sed 's/ /\n /g')\n"
105+ printf 'Installing Chocolatey packages:\n'
106+ printf ' %s\n' $PACKAGES
98107 choco install -y $PACKAGES
99108 fi
100109 fi
@@ -115,15 +124,17 @@ jobs:
115124 runs-on : ubuntu-latest
116125 steps :
117126 - name : Checkout typeshed
118- uses : actions/checkout@v7
127+ uses : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
119128 with :
120129 path : typeshed
130+ persist-credentials : false
121131 - name : Checkout stub_uploader
122- uses : actions/checkout@v7
132+ uses : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
123133 with :
124134 repository : typeshed-internal/stub_uploader
125135 path : stub_uploader
126- - uses : astral-sh/setup-uv@v8.2.0
136+ persist-credentials : false
137+ - uses : astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
127138 with :
128139 version-file : " typeshed/requirements-tests.txt"
129140 - name : Run tests
@@ -141,7 +152,7 @@ jobs:
141152 permissions :
142153 issues : write
143154 steps :
144- - uses : actions/github-script@v9
155+ - uses : actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
145156 with :
146157 github-token : ${{ secrets.GITHUB_TOKEN }}
147158 script : |
0 commit comments