mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
Revert "[lint] workflow consistency linter to look at all files instead of just changed files (#165171)"
This reverts commitc746feb86a. Reverted https://github.com/pytorch/pytorch/pull/165171 on behalf of https://github.com/clee2000 due to broke lint [GH job link](https://github.com/pytorch/pytorch/actions/runs/18723760085/job/53402955955) [HUD commit link](c746feb86a) ([comment](https://github.com/pytorch/pytorch/pull/165171#issuecomment-3433501457))
This commit is contained in:
parent
12f742941d
commit
05b2e02cb4
|
|
@ -16,9 +16,6 @@ from typing import Any, NamedTuple, TYPE_CHECKING
|
|||
from yaml import dump, load
|
||||
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parent.parent.parent.parent
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from collections.abc import Iterable
|
||||
|
||||
|
|
@ -85,25 +82,6 @@ def print_lint_message(path: Path, job: dict[str, Any], sync_tag: str) -> None:
|
|||
print(json.dumps(lint_message._asdict()), flush=True)
|
||||
|
||||
|
||||
def get_jobs_with_sync_tag(
|
||||
job: dict[str, Any],
|
||||
) -> tuple[str, Path, dict[str, Any]] | None:
|
||||
sync_tag = job.get("with", {}).get("sync-tag")
|
||||
if sync_tag is None:
|
||||
return None
|
||||
|
||||
# remove the "if" field, which we allow to be different between jobs
|
||||
# (since you might have different triggering conditions on pull vs.
|
||||
# trunk, say.)
|
||||
if "if" in job:
|
||||
del job["if"]
|
||||
|
||||
# same is true for ['with']['test-matrix']
|
||||
if "test-matrix" in job.get("with", {}):
|
||||
del job["with"]["test-matrix"]
|
||||
return (sync_tag, path, {job_id: job})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(
|
||||
description="workflow consistency linter.",
|
||||
|
|
@ -116,38 +94,41 @@ if __name__ == "__main__":
|
|||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
# Go through all files, aggregating jobs with the same sync tag
|
||||
# Go through the provided files, aggregating jobs with the same sync tag
|
||||
tag_to_jobs = defaultdict(list)
|
||||
for path in REPO_ROOT.glob(".github/workflows/*"):
|
||||
if not path.is_file() or path.suffix not in {".yml", ".yaml"}:
|
||||
continue
|
||||
workflow = load_yaml(path)
|
||||
if not is_workflow(workflow):
|
||||
continue
|
||||
jobs = workflow.get("jobs", {})
|
||||
for job_id, job in jobs.items():
|
||||
res = get_jobs_with_sync_tag(job)
|
||||
if res is None:
|
||||
continue
|
||||
sync_tag, path, job_dict = res
|
||||
tag_to_jobs[sync_tag].append((path, {job_id: job}))
|
||||
|
||||
# Check the files passed as arguments
|
||||
for path in args.filenames:
|
||||
workflow = load_yaml(Path(path))
|
||||
jobs = workflow["jobs"]
|
||||
for job_id, job in jobs.items():
|
||||
res = get_jobs_with_sync_tag(job)
|
||||
if res is None:
|
||||
try:
|
||||
sync_tag = job["with"]["sync-tag"]
|
||||
except KeyError:
|
||||
continue
|
||||
sync_tag, path, job_dict = res
|
||||
|
||||
# For each sync tag, check that all the jobs have the same code.
|
||||
for baseline_path, baseline_dict in tag_to_jobs[sync_tag]:
|
||||
baseline_str = dump(baseline_dict)
|
||||
# remove the "if" field, which we allow to be different between jobs
|
||||
# (since you might have different triggering conditions on pull vs.
|
||||
# trunk, say.)
|
||||
if "if" in job:
|
||||
del job["if"]
|
||||
|
||||
printed_baseline = False
|
||||
# same is true for ['with']['test-matrix']
|
||||
if "test-matrix" in job.get("with", {}):
|
||||
del job["with"]["test-matrix"]
|
||||
|
||||
job_str = dump(job_dict)
|
||||
if baseline_str != job_str:
|
||||
print_lint_message(path, job_dict, sync_tag)
|
||||
tag_to_jobs[sync_tag].append((path, {job_id: job}))
|
||||
|
||||
# For each sync tag, check that all the jobs have the same code.
|
||||
for sync_tag, path_and_jobs in tag_to_jobs.items():
|
||||
baseline_path, baseline_dict = path_and_jobs.pop()
|
||||
baseline_str = dump(baseline_dict)
|
||||
|
||||
printed_baseline = False
|
||||
|
||||
for path, job_dict in path_and_jobs:
|
||||
job_str = dump(job_dict)
|
||||
if baseline_str != job_str:
|
||||
print_lint_message(path, job_dict, sync_tag)
|
||||
|
||||
if not printed_baseline:
|
||||
print_lint_message(baseline_path, baseline_dict, sync_tag)
|
||||
printed_baseline = True
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user