3232 # Without it, GitHub auto-expands EVERY field of the object-typed
3333 # `shard` matrix entry — including `shard.paths` — into a
3434 # >100-character truncated string like
35- # `test (3.13 , core, tests/core/models tests/core/graph ...`.
35+ # `test (3.14 , core, tests/core/models tests/core/graph ...`.
3636 # That diverges from the short custom status emitted by
3737 # multi-trigger-setup, forcing branch protection to pick one event
3838 # type's names and break the others.
5454 max-parallel : 10
5555 fail-fast : false
5656 matrix :
57- python_version : ['3.11', '3.13 ']
57+ python_version : ['3.11', '3.14 ']
5858 # tests/perf is run by perf-test.yml on a separate cadence.
5959 # tests/applications and tests/lammps are run by integration-test.yml
6060 # and test_lammps_gpu respectively. Both shards below intentionally
6969
7070 steps :
7171 - name : Checkout code
72- uses : actions/checkout@v6
72+ uses : actions/checkout@v7
7373 with :
7474 ref : ${{ env.HEAD_SHA }}
75+ # Required since actions/checkout began refusing fork PR code in
76+ # workflow_run jobs. Safe here: fork PRs from all external
77+ # contributors require maintainer approval before this trusted,
78+ # secret-holding run can execute (repo Actions setting).
79+ # See https://gh.io/securely-using-pull_request_target
80+ allow-unsafe-pr-checkout : true
7581 # Optional: get full history if needed
7682 fetch-depth : 0
7783
8692 python-version : ${{ matrix.python_version }}
8793
8894 - name : Cache pip
89- uses : actions/cache@v5
95+ uses : actions/cache@v6
9096 with :
9197 path : ~/.cache/pip
9298 key : ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
@@ -106,7 +112,7 @@ jobs:
106112 -r tests/requirements.txt # pin test packages
107113
108114 - name : Install torchsim (Python 3.12+)
109- if : ${{ matrix.python_version == '3.12' || matrix.python_version == '3.13' }}
115+ if : ${{ matrix.python_version == '3.12' || matrix.python_version == '3.13' || matrix.python_version == '3.14' }}
110116 run : |
111117 pip install packages/fairchem-core[torchsim]
112118
@@ -139,16 +145,16 @@ jobs:
139145 run : |
140146 pytest -m "serial and not gpu" ${{ matrix.shard.paths }} -vv --ignore=tests/demo/ocpapi/tests/integration/ --exclude-models=uma-s-1p1,uma-s-1p2 --cov-report=xml --cov=fairchem --cov-append --junitxml=junit-serial-${{ matrix.shard.name }}.xml -o junit_family=legacy -c ./packages/fairchem-core/pyproject.toml --suppress-no-test-exit-code
141147
142- - if : ${{ matrix.python_version == '3.13 ' }}
148+ - if : ${{ matrix.python_version == '3.14 ' }}
143149 name : codecov-coverage
144- uses : codecov/codecov-action@v6
150+ uses : codecov/codecov-action@v7
145151 with :
146152 fail_ci_if_error : false
147153 files : ./coverage.xml
148154 token : ${{ secrets.CODECOV_TOKEN }}
149155 verbose : true
150156
151- - if : ${{ matrix.python_version == '3.13 ' }}
157+ - if : ${{ matrix.python_version == '3.14 ' }}
152158 name : codecov-test-results
153159 uses : codecov/test-results-action@v1
154160 with :
@@ -174,15 +180,18 @@ jobs:
174180 strategy :
175181 fail-fast : false
176182 matrix :
177- python_version : ['3.13 ']
183+ python_version : ['3.14 ']
178184 sweep_model : [uma-s-1p1, uma-s-1p2]
179185 shard : *cpu_shards
180186
181187 steps :
182188 - name : Checkout code
183- uses : actions/checkout@v6
189+ uses : actions/checkout@v7
184190 with :
185191 ref : ${{ env.HEAD_SHA }}
192+ # See the checkout step in the `test` job for why this is set
193+ # and why it is safe (external-contributor approval gate).
194+ allow-unsafe-pr-checkout : true
186195 fetch-depth : 0
187196
188197 - name : Setup
@@ -196,7 +205,7 @@ jobs:
196205 python-version : ${{ matrix.python_version }}
197206
198207 - name : Cache pip
199- uses : actions/cache@v5
208+ uses : actions/cache@v6
200209 with :
201210 path : ~/.cache/pip
202211 key : ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
@@ -216,7 +225,7 @@ jobs:
216225 -r tests/requirements.txt # pin test packages
217226
218227 - name : Install torchsim (Python 3.12+)
219- if : ${{ matrix.python_version == '3.12' || matrix.python_version == '3.13' }}
228+ if : ${{ matrix.python_version == '3.12' || matrix.python_version == '3.13' || matrix.python_version == '3.14' }}
220229 run : |
221230 pip install packages/fairchem-core[torchsim]
222231
@@ -276,7 +285,7 @@ jobs:
276285 strategy :
277286 fail-fast : false
278287 matrix :
279- python_version : ['3.13 ']
288+ python_version : ['3.14 ']
280289 # YAML anchor: shard list is reused by test_gpu_sweep below.
281290 # Do not reorder jobs (the alias must follow the anchor textually).
282291 shard : &gpu_shards
@@ -287,9 +296,15 @@ jobs:
287296
288297 steps :
289298 - name : Checkout code
290- uses : actions/checkout@v6
299+ uses : actions/checkout@v7
291300 with :
292301 ref : ${{ env.HEAD_SHA }}
302+ # Required since actions/checkout began refusing fork PR code in
303+ # workflow_run jobs. Safe here: fork PRs from all external
304+ # contributors require maintainer approval before this trusted,
305+ # secret-holding run can execute (repo Actions setting).
306+ # See https://gh.io/securely-using-pull_request_target
307+ allow-unsafe-pr-checkout : true
293308 # Optional: get full history if needed
294309 fetch-depth : 0
295310
@@ -312,7 +327,7 @@ jobs:
312327 -r tests/requirements.txt # pin test packages
313328
314329 - name : Install torchsim (Python 3.12+)
315- if : ${{ matrix.python_version == '3.12' || matrix.python_version == '3.13' }}
330+ if : ${{ matrix.python_version == '3.12' || matrix.python_version == '3.13' || matrix.python_version == '3.14' }}
316331 run : |
317332 pip install packages/fairchem-core[torchsim]
318333
@@ -360,15 +375,18 @@ jobs:
360375 strategy :
361376 fail-fast : false
362377 matrix :
363- python_version : ['3.13 ']
378+ python_version : ['3.14 ']
364379 sweep_model : [uma-s-1p1, uma-s-1p2]
365380 shard : *gpu_shards
366381
367382 steps :
368383 - name : Checkout code
369- uses : actions/checkout@v6
384+ uses : actions/checkout@v7
370385 with :
371386 ref : ${{ env.HEAD_SHA }}
387+ # See the checkout step in the `test` job for why this is set
388+ # and why it is safe (external-contributor approval gate).
389+ allow-unsafe-pr-checkout : true
372390 fetch-depth : 0
373391
374392 - name : Setup
@@ -390,7 +408,7 @@ jobs:
390408 -r tests/requirements.txt # pin test packages
391409
392410 - name : Install torchsim (Python 3.12+)
393- if : ${{ matrix.python_version == '3.12' || matrix.python_version == '3.13' }}
411+ if : ${{ matrix.python_version == '3.12' || matrix.python_version == '3.13' || matrix.python_version == '3.14' }}
394412 run : |
395413 pip install packages/fairchem-core[torchsim]
396414
@@ -432,20 +450,26 @@ jobs:
432450 strategy :
433451 max-parallel : 1
434452 matrix :
435- python_version : ['3.13 ']
453+ python_version : ['3.14 ']
436454
437455 steps :
438- - uses : actions/checkout@v6
456+ - uses : actions/checkout@v7
439457 - uses : mamba-org/setup-micromamba@v3
440458 with :
441459 generate-run-shell : true # This is the default behavior
442460 environment-name : test_env # Specifies a new environment to be created
443- create-args : python=3.13 # Specifies packages to install into the new environment
461+ create-args : python=3.14 # Specifies packages to install into the new environment
444462
445463 - name : Checkout code
446- uses : actions/checkout@v6
464+ uses : actions/checkout@v7
447465 with :
448466 ref : ${{ env.HEAD_SHA }}
467+ # Required since actions/checkout began refusing fork PR code in
468+ # workflow_run jobs. Safe here: fork PRs from all external
469+ # contributors require maintainer approval before this trusted,
470+ # secret-holding run can execute (repo Actions setting).
471+ # See https://gh.io/securely-using-pull_request_target
472+ allow-unsafe-pr-checkout : true
449473 # Optional: get full history if needed
450474 fetch-depth : 0
451475
0 commit comments