gha-utils 4.20.0__tar.gz → 4.21.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gha-utils might be problematic. Click here for more details.

Files changed (23) hide show
  1. {gha_utils-4.20.0 → gha_utils-4.21.0}/PKG-INFO +1 -1
  2. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/__init__.py +1 -1
  3. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/cli.py +3 -3
  4. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/metadata.py +108 -48
  5. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils.egg-info/PKG-INFO +1 -1
  6. {gha_utils-4.20.0 → gha_utils-4.21.0}/pyproject.toml +4 -2
  7. {gha_utils-4.20.0 → gha_utils-4.21.0}/tests/test_metadata.py +54 -36
  8. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/__main__.py +0 -0
  9. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/changelog.py +0 -0
  10. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/mailmap.py +0 -0
  11. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/matrix.py +0 -0
  12. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/py.typed +0 -0
  13. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils/test_plan.py +0 -0
  14. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils.egg-info/SOURCES.txt +0 -0
  15. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils.egg-info/dependency_links.txt +0 -0
  16. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils.egg-info/entry_points.txt +0 -0
  17. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils.egg-info/requires.txt +0 -0
  18. {gha_utils-4.20.0 → gha_utils-4.21.0}/gha_utils.egg-info/top_level.txt +0 -0
  19. {gha_utils-4.20.0 → gha_utils-4.21.0}/readme.md +0 -0
  20. {gha_utils-4.20.0 → gha_utils-4.21.0}/setup.cfg +0 -0
  21. {gha_utils-4.20.0 → gha_utils-4.21.0}/tests/test_changelog.py +0 -0
  22. {gha_utils-4.20.0 → gha_utils-4.21.0}/tests/test_mailmap.py +0 -0
  23. {gha_utils-4.20.0 → gha_utils-4.21.0}/tests/test_matrix.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gha-utils
3
- Version: 4.20.0
3
+ Version: 4.21.0
4
4
  Summary: ⚙️ CLI helpers for GitHub Actions + reuseable workflows
5
5
  Author-email: Kevin Deldycke <kevin@deldycke.com>
6
6
  Project-URL: Homepage, https://github.com/kdeldycke/workflows
@@ -17,4 +17,4 @@
17
17
 
18
18
  from __future__ import annotations
19
19
 
20
- __version__ = "4.20.0"
20
+ __version__ = "4.21.0"
@@ -239,9 +239,9 @@ def changelog(ctx, source, changelog_path):
239
239
  "--create-if-missing/--skip-if-missing",
240
240
  is_flag=True,
241
241
  default=True,
242
- help="Create the destination mailmap file if it is not found. Or skip the update "
243
- "process entirely if if does not already exists in the first place. This option "
244
- f"is ignore if the destination is to print the result to {sys.stdout.name}.",
242
+ help="If not found, either create the missing destination mailmap file, or skip "
243
+ "the update process entirely. This option is ignored if the destination is to print "
244
+ f"the result to {sys.stdout.name}.",
245
245
  )
246
246
  @argument(
247
247
  "destination_mailmap",
@@ -23,9 +23,15 @@ The following variables are `printed to the environment file
23
23
  is_bot=false
24
24
  new_commits=346ce664f055fbd042a25ee0b7e96702e95 6f27db47612aaee06fdf08744b09a9f5f6c2
25
25
  release_commits=6f27db47612aaee06fdf08744b09a9f5f6c2
26
+ mailmap_exists=true
26
27
  gitignore_exists=true
27
28
  python_files=".github/update_mailmap.py" ".github/metadata.py" "setup.py"
29
+ json_files=
30
+ yaml_files="config.yaml" ".github/workflows/lint.yaml" ".github/workflows/test.yaml"
31
+ workflow_files=".github/workflows/lint.yaml" ".github/workflows/test.yaml"
28
32
  doc_files="changelog.md" "readme.md" "docs/license.md"
33
+ markdown_files="changelog.md" "readme.md" "docs/license.md"
34
+ zsh_files=
29
35
  is_python_project=true
30
36
  package_name=click-extra
31
37
  blacken_docs_params=--target-version py37 --target-version py38
@@ -80,14 +86,14 @@ build_targets=[
80
86
  },
81
87
  {
82
88
  "target": "macos-arm64",
83
- "os": "macos-15",
89
+ "os": "macos-26",
84
90
  "platform_id": "macos",
85
91
  "arch": "arm64",
86
92
  "extension": "bin"
87
93
  },
88
94
  {
89
95
  "target": "macos-x64",
90
- "os": "macos-13",
96
+ "os": "macos-15-intel",
91
97
  "platform_id": "macos",
92
98
  "arch": "x64",
93
99
  "extension": "bin"
@@ -111,8 +117,8 @@ nuitka_matrix={
111
117
  "os": [
112
118
  "ubuntu-24.04-arm",
113
119
  "ubuntu-24.04",
114
- "macos-15",
115
- "macos-13",
120
+ "macos-26",
121
+ "macos-15-intel",
116
122
  "windows-11-arm",
117
123
  "windows-2025"
118
124
  ],
@@ -138,14 +144,14 @@ nuitka_matrix={
138
144
  },
139
145
  {
140
146
  "target": "macos-arm64",
141
- "os": "macos-15",
147
+ "os": "macos-26",
142
148
  "platform_id": "macos",
143
149
  "arch": "arm64",
144
150
  "extension": "bin"
145
151
  },
146
152
  {
147
153
  "target": "macos-x64",
148
- "os": "macos-13",
154
+ "os": "macos-15-intel",
149
155
  "platform_id": "macos",
150
156
  "arch": "x64",
151
157
  "extension": "bin"
@@ -206,25 +212,25 @@ nuitka_matrix={
206
212
  "bin_name": "mpm-linux-x64-6f27db4.bin"
207
213
  },
208
214
  {
209
- "os": "macos-15",
215
+ "os": "macos-26",
210
216
  "entry_point": "mpm",
211
217
  "commit": "346ce664f055fbd042a25ee0b7e96702e95",
212
218
  "bin_name": "mpm-macos-arm64-346ce66.bin"
213
219
  },
214
220
  {
215
- "os": "macos-15",
221
+ "os": "macos-26",
216
222
  "entry_point": "mpm",
217
223
  "commit": "6f27db47612aaee06fdf08744b09a9f5f6c2",
218
224
  "bin_name": "mpm-macos-arm64-6f27db4.bin"
219
225
  },
220
226
  {
221
- "os": "macos-13",
227
+ "os": "macos-15-intel",
222
228
  "entry_point": "mpm",
223
229
  "commit": "346ce664f055fbd042a25ee0b7e96702e95",
224
230
  "bin_name": "mpm-macos-x64-346ce66.bin"
225
231
  },
226
232
  {
227
- "os": "macos-13",
233
+ "os": "macos-15-intel",
228
234
  "entry_point": "mpm",
229
235
  "commit": "6f27db47612aaee06fdf08744b09a9f5f6c2",
230
236
  "bin_name": "mpm-macos-x64-6f27db4.bin"
@@ -288,6 +294,7 @@ from extra_platforms import is_github_ci
288
294
  from packaging.specifiers import SpecifierSet
289
295
  from packaging.version import Version
290
296
  from py_walk import get_parser_from_file
297
+ from py_walk.models import Parser
291
298
  from pydriller import Commit, Git, Repository # type: ignore[import-untyped]
292
299
  from pyproject_metadata import ConfigurationError, StandardMetadata
293
300
  from wcmatch.glob import (
@@ -312,6 +319,8 @@ SHORT_SHA_LENGTH = 7
312
319
  depends on the size of the repository.
313
320
  """
314
321
 
322
+ MAILMAP_PATH = Path(".mailmap")
323
+
315
324
  GITIGNORE_PATH = Path(".gitignore")
316
325
 
317
326
  NUITKA_BUILD_TARGETS = {
@@ -328,13 +337,13 @@ NUITKA_BUILD_TARGETS = {
328
337
  "extension": "bin",
329
338
  },
330
339
  "macos-arm64": {
331
- "os": "macos-15",
340
+ "os": "macos-26",
332
341
  "platform_id": "macos",
333
342
  "arch": "arm64",
334
343
  "extension": "bin",
335
344
  },
336
345
  "macos-x64": {
337
- "os": "macos-13",
346
+ "os": "macos-15-intel",
338
347
  "platform_id": "macos",
339
348
  "arch": "x64",
340
349
  "extension": "bin",
@@ -472,6 +481,10 @@ MYPY_VERSION_MIN: Final = (3, 8)
472
481
  """
473
482
 
474
483
 
484
+ # Silence overly verbose debug messages from py-walk logger.
485
+ logging.getLogger("py_walk").setLevel(logging.WARNING)
486
+
487
+
475
488
  class JSONMetadata(json.JSONEncoder):
476
489
  """Custom JSON encoder for metadata serialization."""
477
490
 
@@ -531,10 +544,15 @@ class Metadata:
531
544
  logging.debug(json.dumps(context, indent=4))
532
545
  return context # type:ignore[no-any-return]
533
546
 
534
- def git_stash_count(self, git_repo: Git) -> int:
547
+ @cached_property
548
+ def git(self) -> Git:
549
+ """Return a PyDriller Git object."""
550
+ return Git(".")
551
+
552
+ def git_stash_count(self) -> int:
535
553
  """Returns the number of stashes."""
536
554
  count = int(
537
- git_repo.repo.git.rev_list(
555
+ self.git.repo.git.rev_list(
538
556
  "--walk-reflogs", "--ignore-missing", "--count", "refs/stash"
539
557
  )
540
558
  )
@@ -579,8 +597,7 @@ class Metadata:
579
597
  if not commits:
580
598
  return None
581
599
 
582
- git = Git(".")
583
- current_commit = git.repo.head.commit.hexsha
600
+ current_commit = self.git.repo.head.commit.hexsha
584
601
 
585
602
  # Check if we need to get back in time in the Git log and browse past commits.
586
603
  if len(commits) == 1: # type: ignore[arg-type]
@@ -608,17 +625,17 @@ class Metadata:
608
625
  # Save the initial commit reference and SHA of the repository. The
609
626
  # reference is either the canonical active branch name (i.e. ``main``), or
610
627
  # the commit SHA if the current HEAD commit is detached from a branch.
611
- if git.repo.head.is_detached:
628
+ if self.git.repo.head.is_detached:
612
629
  init_ref = current_commit
613
630
  else:
614
- init_ref = git.repo.active_branch.name
631
+ init_ref = self.git.repo.active_branch.name
615
632
  logging.debug(f"Initial commit reference: {init_ref}")
616
633
 
617
634
  # Try to stash local changes and check if we'll need to unstash them later.
618
- counter_before = self.git_stash_count(git)
635
+ counter_before = self.git_stash_count()
619
636
  logging.debug("Try to stash local changes before our series of checkouts.")
620
- git.repo.git.stash()
621
- counter_after = self.git_stash_count(git)
637
+ self.git.repo.git.stash()
638
+ counter_after = self.git_stash_count()
622
639
  logging.debug(
623
640
  "Stash counter changes after 'git stash' command: "
624
641
  f"{counter_before} -> {counter_after}"
@@ -639,7 +656,7 @@ class Metadata:
639
656
  for commit in commits:
640
657
  if past_commit_lookup:
641
658
  logging.debug(f"Checkout to commit {commit.hash}")
642
- git.checkout(commit.hash)
659
+ self.git.checkout(commit.hash)
643
660
 
644
661
  commit_metadata = {
645
662
  "commit": commit.hash,
@@ -657,10 +674,10 @@ class Metadata:
657
674
  # Restore the repository to its initial state.
658
675
  if past_commit_lookup:
659
676
  logging.debug(f"Restore repository to {init_ref}.")
660
- git.checkout(init_ref)
677
+ self.git.checkout(init_ref)
661
678
  if need_unstash:
662
679
  logging.debug("Unstash local changes that were previously saved.")
663
- git.repo.git.stash("pop")
680
+ self.git.repo.git.stash("pop")
664
681
 
665
682
  return matrix
666
683
 
@@ -788,15 +805,34 @@ class Metadata:
788
805
  if not self.commit_range:
789
806
  return None
790
807
  start, end = self.commit_range
791
- # Remove the last commit, as the commit range is inclusive.
792
- return tuple(
793
- Repository(
794
- ".",
795
- from_commit=start,
796
- to_commit=end,
797
- order="reverse",
798
- ).traverse_commits(),
799
- )[:-1]
808
+
809
+ # Sanity check: make sure the start commit exists in the repository.
810
+ # XXX Even if we skip the start commit later on (because the range is
811
+ # inclusive), we still need to make sure it exists: PyDriller stills needs to
812
+ # find it to be able to traverse the commit history.
813
+ for commit_id in (start, end):
814
+ try:
815
+ _ = self.git.get_commit(commit_id)
816
+ except ValueError:
817
+ logging.error(
818
+ f"Cannot find commit {commit_id} in repository. "
819
+ "Repository was probably not checked out with enough depth. "
820
+ f"Current depth is {self.git.total_commits()}. "
821
+ )
822
+ logging.warning(
823
+ "Skipping metadata extraction of the range of new commits."
824
+ )
825
+ return None
826
+
827
+ commit_list = []
828
+ for index, commit in enumerate(
829
+ Repository(".", from_commit=start, to_commit=end).traverse_commits()
830
+ ):
831
+ # Skip the first commit because the commit range is inclusive.
832
+ if index == 0:
833
+ continue
834
+ commit_list.append(commit)
835
+ return tuple(commit_list)
800
836
 
801
837
  @cached_property
802
838
  def new_commits_matrix(self) -> Matrix | None:
@@ -845,10 +881,27 @@ class Metadata:
845
881
  else None
846
882
  )
847
883
 
884
+ @cached_property
885
+ def mailmap_exists(self) -> bool:
886
+ return MAILMAP_PATH.is_file()
887
+
848
888
  @cached_property
849
889
  def gitignore_exists(self) -> bool:
850
890
  return GITIGNORE_PATH.is_file()
851
891
 
892
+ @cached_property
893
+ def gitignore_parser(self) -> Parser | None:
894
+ """Returns a parser for the ``.gitignore`` file, if it exists."""
895
+ if self.gitignore_exists:
896
+ logging.debug(f"Parse {GITIGNORE_PATH}")
897
+ return get_parser_from_file(GITIGNORE_PATH)
898
+ return None
899
+
900
+ def gitignore_match(self, file_path: Path | str) -> bool:
901
+ if self.gitignore_parser and self.gitignore_parser.match(file_path):
902
+ return True
903
+ return False
904
+
852
905
  def glob_files(self, *patterns: str) -> list[Path]:
853
906
  """Return all file path matching the ``patterns``.
854
907
 
@@ -878,12 +931,6 @@ class Metadata:
878
931
  current_dir = Path.cwd()
879
932
  seen = set()
880
933
 
881
- # If the .gitignore file exists, we parse it to filter out ignored files.
882
- gitignore = None
883
- if self.gitignore_exists:
884
- logging.debug(f"Load {GITIGNORE_PATH} to filter out ignored files.")
885
- gitignore = get_parser_from_file(GITIGNORE_PATH)
886
-
887
934
  for file_path in iglob(
888
935
  patterns,
889
936
  flags=NODIR | GLOBSTAR | DOTGLOB | GLOBTILDE | BRACE | FOLLOW | NEGATE,
@@ -913,7 +960,7 @@ class Metadata:
913
960
  continue
914
961
 
915
962
  # Skip files that are ignored by .gitignore.
916
- if gitignore and gitignore.match(file_path):
963
+ if self.gitignore_match(file_path):
917
964
  logging.debug(f"Skip file matching {GITIGNORE_PATH}: {file_path}")
918
965
  continue
919
966
 
@@ -934,6 +981,16 @@ class Metadata:
934
981
  "!**/package-lock.json",
935
982
  )
936
983
 
984
+ @cached_property
985
+ def yaml_files(self) -> list[Path]:
986
+ """Returns a list of YAML files."""
987
+ return self.glob_files("**/*.{yaml,yml}")
988
+
989
+ @cached_property
990
+ def workflow_files(self) -> list[Path]:
991
+ """Returns a list of GitHub workflow files."""
992
+ return self.glob_files(".github/workflows/**/*.{yaml,yml}")
993
+
937
994
  @cached_property
938
995
  def doc_files(self) -> list[Path]:
939
996
  """Returns a list of doc files."""
@@ -1194,8 +1251,8 @@ class Metadata:
1194
1251
  "os": [
1195
1252
  "ubuntu-24.04-arm",
1196
1253
  "ubuntu-24.04",
1197
- "macos-15",
1198
- "macos-13",
1254
+ "macos-26",
1255
+ "macos-15-intel",
1199
1256
  "windows-11-arm",
1200
1257
  "windows-2025",
1201
1258
  ],
@@ -1223,14 +1280,14 @@ class Metadata:
1223
1280
  },
1224
1281
  {
1225
1282
  "target": "macos-arm64",
1226
- "os": "macos-15",
1283
+ "os": "macos-26",
1227
1284
  "platform_id": "macos",
1228
1285
  "arch": "arm64",
1229
1286
  "extension": "bin",
1230
1287
  },
1231
1288
  {
1232
1289
  "target": "macos-x64",
1233
- "os": "macos-13",
1290
+ "os": "macos-15-intel",
1234
1291
  "platform_id": "macos",
1235
1292
  "arch": "x64",
1236
1293
  "extension": "bin",
@@ -1291,25 +1348,25 @@ class Metadata:
1291
1348
  "bin_name": "mpm-linux-x64-6f27db4.bin",
1292
1349
  },
1293
1350
  {
1294
- "os": "macos-15",
1351
+ "os": "macos-26",
1295
1352
  "entry_point": "mpm",
1296
1353
  "commit": "346ce664f055fbd042a25ee0b7e96702e95",
1297
1354
  "bin_name": "mpm-macos-arm64-346ce66.bin",
1298
1355
  },
1299
1356
  {
1300
- "os": "macos-15",
1357
+ "os": "macos-26",
1301
1358
  "entry_point": "mpm",
1302
1359
  "commit": "6f27db47612aaee06fdf08744b09a9f5f6c2",
1303
1360
  "bin_name": "mpm-macos-arm64-6f27db4.bin",
1304
1361
  },
1305
1362
  {
1306
- "os": "macos-13",
1363
+ "os": "macos-15-intel",
1307
1364
  "entry_point": "mpm",
1308
1365
  "commit": "346ce664f055fbd042a25ee0b7e96702e95",
1309
1366
  "bin_name": "mpm-macos-x64-346ce66.bin",
1310
1367
  },
1311
1368
  {
1312
- "os": "macos-13",
1369
+ "os": "macos-15-intel",
1313
1370
  "entry_point": "mpm",
1314
1371
  "commit": "6f27db47612aaee06fdf08744b09a9f5f6c2",
1315
1372
  "bin_name": "mpm-macos-x64-6f27db4.bin",
@@ -1510,9 +1567,12 @@ class Metadata:
1510
1567
  "is_bot": self.is_bot,
1511
1568
  "new_commits": self.new_commits_hash,
1512
1569
  "release_commits": self.release_commits_hash,
1570
+ "mailmap_exists": self.mailmap_exists,
1513
1571
  "gitignore_exists": self.gitignore_exists,
1514
1572
  "python_files": self.python_files,
1515
1573
  "json_files": self.json_files,
1574
+ "yaml_files": self.yaml_files,
1575
+ "workflow_files": self.workflow_files,
1516
1576
  "doc_files": self.doc_files,
1517
1577
  "markdown_files": self.markdown_files,
1518
1578
  "zsh_files": self.zsh_files,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gha-utils
3
- Version: 4.20.0
3
+ Version: 4.21.0
4
4
  Summary: ⚙️ CLI helpers for GitHub Actions + reuseable workflows
5
5
  Author-email: Kevin Deldycke <kevin@deldycke.com>
6
6
  Project-URL: Homepage, https://github.com/kdeldycke/workflows
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  # Docs: https://packaging.python.org/en/latest/guides/writing-pyproject-toml/
3
3
  name = "gha-utils"
4
- version = "4.20.0"
4
+ version = "4.21.0"
5
5
  # Python versions and their status: https://devguide.python.org/versions/
6
6
  requires-python = ">= 3.11"
7
7
  description = "⚙️ CLI helpers for GitHub Actions + reuseable workflows"
@@ -115,6 +115,8 @@ gha-utils = "gha_utils.__main__:main"
115
115
 
116
116
  [tool.uv]
117
117
  package = true
118
+ # 0.9.0 is the snapshot version we used when we migrated from requirements/uv.txt to pyproject.toml.
119
+ required-version = "~= 0.9.0"
118
120
 
119
121
  [tool.mypy]
120
122
  warn_unused_configs = true
@@ -144,7 +146,7 @@ addopts = [
144
146
  xfail_strict = true
145
147
 
146
148
  [tool.bumpversion]
147
- current_version = "4.20.0"
149
+ current_version = "4.21.0"
148
150
  allow_dirty = true
149
151
  ignore_missing_files = true
150
152
 
@@ -71,6 +71,16 @@ def iter_checks(metadata: Any, expected: Any, context: Any) -> None:
71
71
  assert isinstance(metadata, dict)
72
72
  assert set(metadata) == set(expected)
73
73
  for key, value in expected.items():
74
+ # By convention, keys ending with "_files" are path strings so they need to
75
+ # be adjusted for Windows.
76
+ if key.endswith("_files") and is_windows():
77
+ # Path are stored as a list in JSON format.
78
+ if isinstance(value, list):
79
+ value = [v.replace("/", "\\") for v in value]
80
+ # Path are space-separated and serialized as a string in GitHub format.
81
+ else:
82
+ value = value.replace("/", "\\")
83
+
74
84
  iter_checks(metadata[key], value, metadata)
75
85
 
76
86
  elif isinstance(expected, list):
@@ -90,24 +100,9 @@ expected = {
90
100
  "is_bot": False,
91
101
  "new_commits": None,
92
102
  "release_commits": None,
103
+ "mailmap_exists": True,
93
104
  "gitignore_exists": True,
94
105
  "python_files": [
95
- "gha_utils\\__init__.py",
96
- "gha_utils\\__main__.py",
97
- "gha_utils\\changelog.py",
98
- "gha_utils\\cli.py",
99
- "gha_utils\\mailmap.py",
100
- "gha_utils\\matrix.py",
101
- "gha_utils\\metadata.py",
102
- "gha_utils\\test_plan.py",
103
- "tests\\__init__.py",
104
- "tests\\test_changelog.py",
105
- "tests\\test_mailmap.py",
106
- "tests\\test_matrix.py",
107
- "tests\\test_metadata.py",
108
- ]
109
- if is_windows()
110
- else [
111
106
  "gha_utils/__init__.py",
112
107
  "gha_utils/__main__.py",
113
108
  "gha_utils/changelog.py",
@@ -123,24 +118,47 @@ expected = {
123
118
  "tests/test_metadata.py",
124
119
  ],
125
120
  "json_files": [],
121
+ "yaml_files": [
122
+ ".github/dependabot.yaml",
123
+ ".github/funding.yml",
124
+ ".github/labeller-content-based.yaml",
125
+ ".github/labeller-file-based.yaml",
126
+ ".github/labels-awesome.yaml",
127
+ ".github/labels.yaml",
128
+ ".github/workflows/autofix.yaml",
129
+ ".github/workflows/autolock.yaml",
130
+ ".github/workflows/changelog.yaml",
131
+ ".github/workflows/debug.yaml",
132
+ ".github/workflows/docs.yaml",
133
+ ".github/workflows/label-sponsors.yaml",
134
+ ".github/workflows/labeller-content-based.yaml",
135
+ ".github/workflows/labeller-file-based.yaml",
136
+ ".github/workflows/labels.yaml",
137
+ ".github/workflows/lint.yaml",
138
+ ".github/workflows/release.yaml",
139
+ ".github/workflows/tests.yaml",
140
+ "tests/cli-test-plan.yaml",
141
+ ],
142
+ "workflow_files": [
143
+ ".github/workflows/autofix.yaml",
144
+ ".github/workflows/autolock.yaml",
145
+ ".github/workflows/changelog.yaml",
146
+ ".github/workflows/debug.yaml",
147
+ ".github/workflows/docs.yaml",
148
+ ".github/workflows/label-sponsors.yaml",
149
+ ".github/workflows/labeller-content-based.yaml",
150
+ ".github/workflows/labeller-file-based.yaml",
151
+ ".github/workflows/labels.yaml",
152
+ ".github/workflows/lint.yaml",
153
+ ".github/workflows/release.yaml",
154
+ ".github/workflows/tests.yaml",
155
+ ],
126
156
  "doc_files": [
127
- ".github\\code-of-conduct.md",
128
- "changelog.md",
129
- "readme.md",
130
- ]
131
- if is_windows()
132
- else [
133
157
  ".github/code-of-conduct.md",
134
158
  "changelog.md",
135
159
  "readme.md",
136
160
  ],
137
161
  "markdown_files": [
138
- ".github\\code-of-conduct.md",
139
- "changelog.md",
140
- "readme.md",
141
- ]
142
- if is_windows()
143
- else [
144
162
  ".github/code-of-conduct.md",
145
163
  "changelog.md",
146
164
  "readme.md",
@@ -184,14 +202,14 @@ expected = {
184
202
  },
185
203
  {
186
204
  "target": "macos-arm64",
187
- "os": "macos-15",
205
+ "os": "macos-26",
188
206
  "platform_id": "macos",
189
207
  "arch": "arm64",
190
208
  "extension": "bin",
191
209
  },
192
210
  {
193
211
  "target": "macos-x64",
194
- "os": "macos-13",
212
+ "os": "macos-15-intel",
195
213
  "platform_id": "macos",
196
214
  "arch": "x64",
197
215
  "extension": "bin",
@@ -215,8 +233,8 @@ expected = {
215
233
  "os": [
216
234
  "ubuntu-24.04-arm",
217
235
  "ubuntu-24.04",
218
- "macos-15",
219
- "macos-13",
236
+ "macos-26",
237
+ "macos-15-intel",
220
238
  "windows-11-arm",
221
239
  "windows-2025",
222
240
  ],
@@ -239,14 +257,14 @@ expected = {
239
257
  },
240
258
  {
241
259
  "target": "macos-arm64",
242
- "os": "macos-15",
260
+ "os": "macos-26",
243
261
  "platform_id": "macos",
244
262
  "arch": "arm64",
245
263
  "extension": "bin",
246
264
  },
247
265
  {
248
266
  "target": "macos-x64",
249
- "os": "macos-13",
267
+ "os": "macos-15-intel",
250
268
  "platform_id": "macos",
251
269
  "arch": "x64",
252
270
  "extension": "bin",
@@ -290,13 +308,13 @@ expected = {
290
308
  "bin_name": regex(r"gha-utils-linux-x64-[a-z0-9]+\.bin"),
291
309
  },
292
310
  {
293
- "os": "macos-15",
311
+ "os": "macos-26",
294
312
  "entry_point": "gha-utils",
295
313
  "commit": regex(r"[a-z0-9]+"),
296
314
  "bin_name": regex(r"gha-utils-macos-arm64-[a-z0-9]+\.bin"),
297
315
  },
298
316
  {
299
- "os": "macos-13",
317
+ "os": "macos-15-intel",
300
318
  "entry_point": "gha-utils",
301
319
  "commit": regex(r"[a-z0-9]+"),
302
320
  "bin_name": regex(r"gha-utils-macos-x64-[a-z0-9]+\.bin"),
File without changes
File without changes