2024-08-20T21:16:12.9188279Z Current runner version: '2.319.1' 2024-08-20T21:16:12.9212382Z ##[group]Operating System 2024-08-20T21:16:12.9213073Z Ubuntu 2024-08-20T21:16:12.9213457Z 22.04.4 2024-08-20T21:16:12.9213801Z LTS 2024-08-20T21:16:12.9214175Z ##[endgroup] 2024-08-20T21:16:12.9214577Z ##[group]Runner Image 2024-08-20T21:16:12.9215002Z Image: ubuntu-22.04 2024-08-20T21:16:12.9215432Z Version: 20240811.1.0 2024-08-20T21:16:12.9216486Z Included Software: https://github.com/actions/runner-images/blob/ubuntu22/20240811.1/images/ubuntu/Ubuntu2204-Readme.md 2024-08-20T21:16:12.9217929Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu22%2F20240811.1 2024-08-20T21:16:12.9218878Z ##[endgroup] 2024-08-20T21:16:12.9219241Z ##[group]Runner Image Provisioner 2024-08-20T21:16:12.9219716Z 2.0.374.1 2024-08-20T21:16:12.9220127Z ##[endgroup] 2024-08-20T21:16:12.9236301Z ##[group]GITHUB_TOKEN Permissions 2024-08-20T21:16:12.9237970Z Actions: read 2024-08-20T21:16:12.9238548Z Attestations: read 2024-08-20T21:16:12.9239172Z Checks: read 2024-08-20T21:16:12.9239566Z Contents: read 2024-08-20T21:16:12.9240018Z Deployments: read 2024-08-20T21:16:12.9240410Z Discussions: read 2024-08-20T21:16:12.9240765Z Issues: read 2024-08-20T21:16:12.9241188Z Metadata: read 2024-08-20T21:16:12.9241586Z Packages: read 2024-08-20T21:16:12.9241963Z Pages: read 2024-08-20T21:16:12.9242387Z PullRequests: read 2024-08-20T21:16:12.9242814Z RepositoryProjects: read 2024-08-20T21:16:12.9243220Z SecurityEvents: read 2024-08-20T21:16:12.9243694Z Statuses: read 2024-08-20T21:16:12.9244075Z ##[endgroup] 2024-08-20T21:16:12.9246902Z Secret source: Actions 2024-08-20T21:16:12.9247605Z Prepare workflow directory 2024-08-20T21:16:13.0144601Z Prepare all required actions 2024-08-20T21:16:13.0307903Z Uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@refs/tags/ciflow/inductor/133712 (40ec5f6ddd9787aca0449b24128343ff4c4a88b3) 2024-08-20T21:16:13.0313459Z ##[group] Inputs 2024-08-20T21:16:13.0314037Z triggering_actor: pytorch-bot[bot] 2024-08-20T21:16:13.0314721Z issue_owner: 2024-08-20T21:16:13.0315142Z curr_branch: ciflow/inductor/133712 2024-08-20T21:16:13.0315671Z curr_ref_type: tag 2024-08-20T21:16:13.0316174Z issue_number: 5132 2024-08-20T21:16:13.0316560Z ##[endgroup] 2024-08-20T21:16:13.0317391Z Complete job name: get-label-type / runner-determinator 2024-08-20T21:16:13.1182191Z ##[group]Run cat < runner_determinator.py 2024-08-20T21:16:13.1183773Z cat < runner_determinator.py 2024-08-20T21:16:13.1184377Z # flake8: noqa: G004 2024-08-20T21:16:13.1184813Z  2024-08-20T21:16:13.1185608Z """ 2024-08-20T21:16:13.1186332Z This runner determinator is used to determine which set of runners to run a 2024-08-20T21:16:13.1187397Z GitHub job on. It uses the first comment of a GitHub issue (by default 2024-08-20T21:16:13.1188604Z https://github.com/pytorch/test-infra/issues/5132) as a user list to determine 2024-08-20T21:16:13.1189773Z which users will get their jobs to run on experimental runners. This user list 2024-08-20T21:16:13.1190968Z is also a comma separated list of additional features or experiments which the 2024-08-20T21:16:13.1191909Z user could be opted in to. 2024-08-20T21:16:13.1192411Z  2024-08-20T21:16:13.1192967Z The user list has the following rules: 2024-08-20T21:16:13.1193532Z  2024-08-20T21:16:13.1194018Z - Users are GitHub usernames with the @ prefix 2024-08-20T21:16:13.1194923Z - If the first line is a "*" then all users will use the new runners 2024-08-20T21:16:13.1195895Z - If the first line is a "!" then all users will use the old runners 2024-08-20T21:16:13.1196955Z - Each user is also a comma-separated list of features/experiments to enable 2024-08-20T21:16:13.1198163Z - A "#" prefix indicates the user is opted out of the new runners but is opting 2024-08-20T21:16:13.1198976Z  into features/experiments. 2024-08-20T21:16:13.1200109Z  2024-08-20T21:16:13.1200568Z Example user list: 2024-08-20T21:16:13.1200979Z  2024-08-20T21:16:13.1201339Z  @User1 2024-08-20T21:16:13.1201825Z  @User2,amz2023 2024-08-20T21:16:13.1202340Z  #@UserOptOutOfNewRunner,amz2023 2024-08-20T21:16:13.1202902Z """ 2024-08-20T21:16:13.1203318Z  2024-08-20T21:16:13.1203650Z import logging 2024-08-20T21:16:13.1204065Z import os 2024-08-20T21:16:13.1204623Z from argparse import ArgumentParser 2024-08-20T21:16:13.1205209Z from logging import LogRecord 2024-08-20T21:16:13.1205770Z from typing import Any, Iterable 2024-08-20T21:16:13.1206452Z  2024-08-20T21:16:13.1206821Z from github import Auth, Github 2024-08-20T21:16:13.1207389Z from github.Issue import Issue 2024-08-20T21:16:13.1207983Z  2024-08-20T21:16:13.1208276Z  2024-08-20T21:16:13.1208739Z WORKFLOW_LABEL_META = "" # use meta runners 2024-08-20T21:16:13.1209656Z WORKFLOW_LABEL_LF = "lf." # use runners from the linux foundation 2024-08-20T21:16:13.1210690Z WORKFLOW_LABEL_LF_CANARY = "lf.c." # use canary runners from the linux foundation 2024-08-20T21:16:13.1211512Z  2024-08-20T21:16:13.1211959Z RUNNER_AMI_LEGACY = "" 2024-08-20T21:16:13.1212457Z RUNNER_AMI_AMZ2023 = "amz2023" 2024-08-20T21:16:13.1212917Z  2024-08-20T21:16:13.1213715Z GITHUB_OUTPUT = os.getenv("GITHUB_OUTPUT", "") 2024-08-20T21:16:13.1214384Z GH_OUTPUT_KEY_AMI = "runner-ami" 2024-08-20T21:16:13.1214957Z GH_OUTPUT_KEY_LABEL_TYPE = "label-type" 2024-08-20T21:16:13.1215611Z  2024-08-20T21:16:13.1215945Z  2024-08-20T21:16:13.1216347Z class ColorFormatter(logging.Formatter): 2024-08-20T21:16:13.1217204Z  """Color codes the log messages based on the log level""" 2024-08-20T21:16:13.1217876Z  2024-08-20T21:16:13.1218212Z  COLORS = { 2024-08-20T21:16:13.1218753Z  "WARNING": "\033[33m", # Yellow 2024-08-20T21:16:13.1219347Z  "ERROR": "\033[31m", # Red 2024-08-20T21:16:13.1219900Z  "CRITICAL": "\033[31m", # Red 2024-08-20T21:16:13.1220745Z  "INFO": "\033[0m", # Reset 2024-08-20T21:16:13.1221359Z  "DEBUG": "\033[0m", # Reset 2024-08-20T21:16:13.1221848Z  } 2024-08-20T21:16:13.1222276Z  2024-08-20T21:16:13.1222756Z  def format(self, record: LogRecord) -> str: 2024-08-20T21:16:13.1223655Z  log_color = self.COLORS.get(record.levelname, "\033[0m") # Default to reset 2024-08-20T21:16:13.1224680Z  record.msg = f"{log_color}{record.msg}\033[0m" 2024-08-20T21:16:13.1225738Z  return super().format(record) 2024-08-20T21:16:13.1226367Z  2024-08-20T21:16:13.1226770Z  2024-08-20T21:16:13.1227211Z handler = logging.StreamHandler() 2024-08-20T21:16:13.1228096Z handler.setFormatter(ColorFormatter(fmt="%(levelname)-8s: %(message)s")) 2024-08-20T21:16:13.1228986Z  2024-08-20T21:16:13.1229463Z log = logging.getLogger(os.path.basename(__file__)) 2024-08-20T21:16:13.1230143Z log.addHandler(handler) 2024-08-20T21:16:13.1230785Z log.setLevel(logging.INFO) 2024-08-20T21:16:13.1231245Z  2024-08-20T21:16:13.1231571Z  2024-08-20T21:16:13.1232156Z def set_github_output(key: str, value: str) -> None: 2024-08-20T21:16:13.1232776Z  """ 2024-08-20T21:16:13.1233378Z  Defines outputs of the github action that invokes this script 2024-08-20T21:16:13.1234171Z  """ 2024-08-20T21:16:13.1234532Z  if not GITHUB_OUTPUT: 2024-08-20T21:16:13.1235907Z  # See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ for deprecation notice 2024-08-20T21:16:13.1237564Z  log.warning( 2024-08-20T21:16:13.1238619Z  "No env var found for GITHUB_OUTPUT, you must be running this code locally. Falling back to the deprecated print method." 2024-08-20T21:16:13.1239770Z  ) 2024-08-20T21:16:13.1240358Z  print(f"::set-output name={key}::{value}") 2024-08-20T21:16:13.1240961Z  return 2024-08-20T21:16:13.1241341Z  2024-08-20T21:16:13.1241812Z  with open(GITHUB_OUTPUT, "a") as f: 2024-08-20T21:16:13.1242490Z  log.info(f"Setting output: {key}='{value}'") 2024-08-20T21:16:13.1243134Z  f.write(f"{key}={value}\n") 2024-08-20T21:16:13.1243713Z  2024-08-20T21:16:13.1244070Z  2024-08-20T21:16:13.1244395Z def parse_args() -> Any: 2024-08-20T21:16:13.1245126Z  parser = ArgumentParser("Get dynamic rollout settings") 2024-08-20T21:16:13.1246194Z  parser.add_argument("--github-token", type=str, required=True, help="GitHub token") 2024-08-20T21:16:13.1247035Z  parser.add_argument( 2024-08-20T21:16:13.1247630Z  "--github-issue-repo", 2024-08-20T21:16:13.1248171Z  type=str, 2024-08-20T21:16:13.1248583Z  required=False, 2024-08-20T21:16:13.1249180Z  default="pytorch/test-infra", 2024-08-20T21:16:13.1249836Z  help="GitHub repo to get the issue", 2024-08-20T21:16:13.1250461Z  ) 2024-08-20T21:16:13.1250818Z  parser.add_argument( 2024-08-20T21:16:13.1251365Z  "--github-repo", 2024-08-20T21:16:13.1251899Z  type=str, 2024-08-20T21:16:13.1252308Z  required=True, 2024-08-20T21:16:13.1252882Z  help="GitHub repo where CI is running", 2024-08-20T21:16:13.1253538Z  ) 2024-08-20T21:16:13.1253905Z  parser.add_argument( 2024-08-20T21:16:13.1254651Z  "--github-issue", type=int, required=True, help="GitHub issue number" 2024-08-20T21:16:13.1255461Z  ) 2024-08-20T21:16:13.1255826Z  parser.add_argument( 2024-08-20T21:16:13.1256740Z  "--github-actor", type=str, required=True, help="GitHub triggering_actor" 2024-08-20T21:16:13.1257610Z  ) 2024-08-20T21:16:13.1257982Z  parser.add_argument( 2024-08-20T21:16:13.1258760Z  "--github-issue-owner", type=str, required=True, help="GitHub issue owner" 2024-08-20T21:16:13.1259626Z  ) 2024-08-20T21:16:13.1259975Z  parser.add_argument( 2024-08-20T21:16:13.1260783Z  "--github-branch", type=str, required=True, help="Current GitHub branch or tag" 2024-08-20T21:16:13.1261702Z  ) 2024-08-20T21:16:13.1262066Z  parser.add_argument( 2024-08-20T21:16:13.1262567Z  "--github-ref-type", 2024-08-20T21:16:13.1263161Z  type=str, 2024-08-20T21:16:13.1263603Z  required=True, 2024-08-20T21:16:13.1264164Z  help="Current GitHub ref type, branch or tag", 2024-08-20T21:16:13.1265197Z  ) 2024-08-20T21:16:13.1265628Z  2024-08-20T21:16:13.1265998Z  return parser.parse_args() 2024-08-20T21:16:13.1266607Z  2024-08-20T21:16:13.1266939Z  2024-08-20T21:16:13.1267389Z def get_gh_client(github_token: str) -> Github: 2024-08-20T21:16:13.1268124Z  auth = Auth.Token(github_token) 2024-08-20T21:16:13.1268690Z  return Github(auth=auth) 2024-08-20T21:16:13.1269159Z  2024-08-20T21:16:13.1269547Z  2024-08-20T21:16:13.1270114Z def get_issue(gh: Github, repo: str, issue_num: int) -> Issue: 2024-08-20T21:16:13.1270833Z  repo = gh.get_repo(repo) 2024-08-20T21:16:13.1271521Z  return repo.get_issue(number=issue_num) 2024-08-20T21:16:13.1272289Z  2024-08-20T21:16:13.1272605Z  2024-08-20T21:16:13.1273045Z def get_potential_pr_author( 2024-08-20T21:16:13.1273801Z  gh: Github, repo: str, username: str, ref_type: str, ref_name: str 2024-08-20T21:16:13.1274498Z ) -> str: 2024-08-20T21:16:13.1275209Z  # If the trigger was a new tag added by a bot, this is a ciflow case 2024-08-20T21:16:13.1276232Z  # Fetch the actual username from the original PR. The PR number is 2024-08-20T21:16:13.1277144Z  # embedded in the tag name: ciflow// 2024-08-20T21:16:13.1278009Z  if username == "pytorch-bot[bot]" and ref_type == "tag": 2024-08-20T21:16:13.1278768Z  split_tag = ref_name.split("/") 2024-08-20T21:16:13.1279335Z  if ( 2024-08-20T21:16:13.1279822Z  len(split_tag) == 3 2024-08-20T21:16:13.1280415Z  and split_tag[0] == "ciflow" 2024-08-20T21:16:13.1281037Z  and split_tag[2].isnumeric() 2024-08-20T21:16:13.1281627Z  ): 2024-08-20T21:16:13.1282070Z  pr_number = split_tag[2] 2024-08-20T21:16:13.1282603Z  try: 2024-08-20T21:16:13.1283166Z  repository = gh.get_repo(repo) 2024-08-20T21:16:13.1283910Z  pull = repository.get_pull(number=int(pr_number)) 2024-08-20T21:16:13.1284625Z  except Exception as e: 2024-08-20T21:16:13.1285293Z  raise Exception( # noqa: TRY002 2024-08-20T21:16:13.1286117Z  f"issue with pull request {pr_number} from repo {repository}" 2024-08-20T21:16:13.1286889Z  ) from e 2024-08-20T21:16:13.1287499Z  return pull.user.login 2024-08-20T21:16:13.1288180Z  # In all other cases, return the original input username 2024-08-20T21:16:13.1288886Z  return username 2024-08-20T21:16:13.1289380Z  2024-08-20T21:16:13.1289674Z  2024-08-20T21:16:13.1290142Z def is_exception_branch(branch: str) -> bool: 2024-08-20T21:16:13.1291081Z  return branch.split("/")[0] in {"main", "nightly", "release", "landchecks"} 2024-08-20T21:16:13.1291957Z  2024-08-20T21:16:13.1292310Z  2024-08-20T21:16:13.1293056Z def get_workflow_type(issue: Issue, workflow_requestors: Iterable[str]) -> str: 2024-08-20T21:16:13.1293840Z  try: 2024-08-20T21:16:13.1294463Z  first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:13.1295215Z  2024-08-20T21:16:13.1295583Z  if first_comment[0] == "!": 2024-08-20T21:16:13.1296409Z  log.info("LF Workflows are disabled for everyone. Using meta runners.") 2024-08-20T21:16:13.1297332Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:13.1297947Z  elif first_comment[0] == "*": 2024-08-20T21:16:13.1298738Z  log.info("LF Workflows are enabled for everyone. Using LF runners.") 2024-08-20T21:16:13.1299635Z  return WORKFLOW_LABEL_LF 2024-08-20T21:16:13.1300185Z  else: 2024-08-20T21:16:13.1300601Z  all_opted_in_users = { 2024-08-20T21:16:13.1301290Z  usr_raw.strip("\n\t@ ").split(",")[0] 2024-08-20T21:16:13.1302031Z  for usr_raw in first_comment.split() 2024-08-20T21:16:13.1302593Z  } 2024-08-20T21:16:13.1303115Z  opted_in_requestors = { 2024-08-20T21:16:13.1303891Z  usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:13.1304628Z  } 2024-08-20T21:16:13.1305701Z  if opted_in_requestors: 2024-08-20T21:16:13.1306311Z  log.info( 2024-08-20T21:16:13.1307390Z  f"LF Workflows are enabled for {', '.join(opted_in_requestors)}. Using LF runners." 2024-08-20T21:16:13.1308320Z  ) 2024-08-20T21:16:13.1308820Z  return WORKFLOW_LABEL_LF 2024-08-20T21:16:13.1309410Z  else: 2024-08-20T21:16:13.1309949Z  log.info( 2024-08-20T21:16:13.1310827Z  f"LF Workflows are disabled for {', '.join(workflow_requestors)}. Using meta runners." 2024-08-20T21:16:13.1311675Z  ) 2024-08-20T21:16:13.1312240Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:13.1312811Z  2024-08-20T21:16:13.1313152Z  except Exception as e: 2024-08-20T21:16:13.1313720Z  log.error( 2024-08-20T21:16:13.1314569Z  f"Failed to get determine workflow type. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:13.1315413Z  ) 2024-08-20T21:16:13.1315917Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:13.1316457Z  2024-08-20T21:16:13.1316758Z  2024-08-20T21:16:13.1317201Z def get_optin_feature( 2024-08-20T21:16:13.1318002Z  issue: Issue, workflow_requestors: Iterable[str], feature: str, fallback: str 2024-08-20T21:16:13.1318782Z ) -> str: 2024-08-20T21:16:13.1319230Z  try: 2024-08-20T21:16:13.1319829Z  first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:13.1320860Z  userlist = {u.lstrip("#").strip("\n\t@ ") for u in first_comment.split()} 2024-08-20T21:16:13.1321647Z  all_opted_in_users = set() 2024-08-20T21:16:13.1322225Z  for user in userlist: 2024-08-20T21:16:13.1322850Z  for i in user.split(","): 2024-08-20T21:16:13.1323407Z  if i == feature: 2024-08-20T21:16:13.1324044Z  all_opted_in_users.add(user.split(",")[0]) 2024-08-20T21:16:13.1324764Z  opted_in_requestors = { 2024-08-20T21:16:13.1325514Z  usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:13.1326251Z  } 2024-08-20T21:16:13.1326847Z  2024-08-20T21:16:13.1327206Z  if opted_in_requestors: 2024-08-20T21:16:13.1327737Z  log.info( 2024-08-20T21:16:13.1328704Z  f"Feature {feature} is enabled for {', '.join(opted_in_requestors)}. Using feature {feature}." 2024-08-20T21:16:13.1329656Z  ) 2024-08-20T21:16:13.1330043Z  return feature 2024-08-20T21:16:13.1330653Z  else: 2024-08-20T21:16:13.1331069Z  log.info( 2024-08-20T21:16:13.1331937Z  f"Feature {feature} is disabled for {', '.join(workflow_requestors)}. Using fallback \"{fallback}\"." 2024-08-20T21:16:13.1332984Z  ) 2024-08-20T21:16:13.1333413Z  return fallback 2024-08-20T21:16:13.1333859Z  2024-08-20T21:16:13.1334309Z  except Exception as e: 2024-08-20T21:16:13.1334814Z  log.error( 2024-08-20T21:16:13.1335755Z  f'Failed to determine if user has opted-in to feature {feature}. Using fallback "{fallback}". Exception: {e}' 2024-08-20T21:16:13.1336860Z  ) 2024-08-20T21:16:13.1337260Z  return fallback 2024-08-20T21:16:13.1337786Z  2024-08-20T21:16:13.1338201Z  2024-08-20T21:16:13.1338557Z def main() -> None: 2024-08-20T21:16:13.1339003Z  args = parse_args() 2024-08-20T21:16:13.1339554Z  2024-08-20T21:16:13.1340228Z  if args.github_ref_type == "branch" and is_exception_branch(args.github_branch): 2024-08-20T21:16:13.1341373Z  log.info(f"Exception branch: '{args.github_branch}', using meta runners") 2024-08-20T21:16:13.1342420Z  label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:13.1343064Z  runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:13.1343603Z  else: 2024-08-20T21:16:13.1344015Z  try: 2024-08-20T21:16:13.1344541Z  gh = get_gh_client(args.github_token) 2024-08-20T21:16:13.1345798Z  # The default issue we use - https://github.com/pytorch/test-infra/issues/5132 2024-08-20T21:16:13.1346942Z  issue = get_issue(gh, args.github_issue_repo, args.github_issue) 2024-08-20T21:16:13.1347816Z  username = get_potential_pr_author( 2024-08-20T21:16:13.1348423Z  gh, 2024-08-20T21:16:13.1348984Z  args.github_repo, 2024-08-20T21:16:13.1349518Z  args.github_actor, 2024-08-20T21:16:13.1350098Z  args.github_ref_type, 2024-08-20T21:16:13.1350786Z  args.github_branch, 2024-08-20T21:16:13.1351283Z  ) 2024-08-20T21:16:13.1351761Z  label_type = get_workflow_type( 2024-08-20T21:16:13.1352420Z  issue, 2024-08-20T21:16:13.1352843Z  ( 2024-08-20T21:16:13.1353341Z  args.github_issue_owner, 2024-08-20T21:16:13.1354003Z  username, 2024-08-20T21:16:13.1354467Z  ), 2024-08-20T21:16:13.1354909Z  ) 2024-08-20T21:16:13.1355468Z  runner_ami = get_optin_feature( 2024-08-20T21:16:13.1356024Z  issue=issue, 2024-08-20T21:16:13.1356593Z  workflow_requestors=( 2024-08-20T21:16:13.1357261Z  args.github_issue_owner, 2024-08-20T21:16:13.1357817Z  username, 2024-08-20T21:16:13.1358329Z  ), 2024-08-20T21:16:13.1358900Z  feature=RUNNER_AMI_AMZ2023, 2024-08-20T21:16:13.1359487Z  fallback=RUNNER_AMI_LEGACY, 2024-08-20T21:16:13.1360064Z  ) 2024-08-20T21:16:13.1360566Z  except Exception as e: 2024-08-20T21:16:13.1361381Z  log.error( 2024-08-20T21:16:13.1362100Z  f"Failed to get issue. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:13.1362957Z  ) 2024-08-20T21:16:13.1363465Z  label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:13.1364071Z  runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:13.1364700Z  2024-08-20T21:16:13.1365146Z  # For Canary builds use canary runners 2024-08-20T21:16:13.1366051Z  if args.github_repo == "pytorch/pytorch-canary" and label_type == WORKFLOW_LABEL_LF: 2024-08-20T21:16:13.1367079Z  label_type = WORKFLOW_LABEL_LF_CANARY 2024-08-20T21:16:13.1367671Z  2024-08-20T21:16:13.1368159Z  set_github_output(GH_OUTPUT_KEY_LABEL_TYPE, label_type) 2024-08-20T21:16:13.1369041Z  set_github_output(GH_OUTPUT_KEY_AMI, runner_ami) 2024-08-20T21:16:13.1369689Z  2024-08-20T21:16:13.1369991Z  2024-08-20T21:16:13.1370429Z if __name__ == "__main__": 2024-08-20T21:16:13.1370915Z  main() 2024-08-20T21:16:13.1371259Z EOF 2024-08-20T21:16:13.1371679Z  2024-08-20T21:16:13.1372056Z cat runner_determinator.py 2024-08-20T21:16:13.1887797Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:13.1888319Z env: 2024-08-20T21:16:13.1889075Z GITHUB_TOKEN: *** 2024-08-20T21:16:13.1889503Z ISSUE_NUMBER: 5132 2024-08-20T21:16:13.1889974Z TRIGGERING_ACTOR: pytorch-bot[bot] 2024-08-20T21:16:13.1890595Z ISSUE_OWNER: 2024-08-20T21:16:13.1890963Z ##[endgroup] 2024-08-20T21:16:13.2306133Z # flake8: noqa: G004 2024-08-20T21:16:13.2306452Z 2024-08-20T21:16:13.2306872Z """ 2024-08-20T21:16:13.2308485Z This runner determinator is used to determine which set of runners to run a 2024-08-20T21:16:13.2309493Z GitHub job on. It uses the first comment of a GitHub issue (by default 2024-08-20T21:16:13.2310746Z https://github.com/pytorch/test-infra/issues/5132) as a user list to determine 2024-08-20T21:16:13.2311882Z which users will get their jobs to run on experimental runners. This user list 2024-08-20T21:16:13.2312904Z is also a comma separated list of additional features or experiments which the 2024-08-20T21:16:13.2313693Z user could be opted in to. 2024-08-20T21:16:13.2313965Z 2024-08-20T21:16:13.2314238Z The user list has the following rules: 2024-08-20T21:16:13.2314591Z 2024-08-20T21:16:13.2314862Z - Users are GitHub usernames with the @ prefix 2024-08-20T21:16:13.2315656Z - If the first line is a "*" then all users will use the new runners 2024-08-20T21:16:13.2316643Z - If the first line is a "!" then all users will use the old runners 2024-08-20T21:16:13.2317669Z - Each user is also a comma-separated list of features/experiments to enable 2024-08-20T21:16:13.2318709Z - A "#" prefix indicates the user is opted out of the new runners but is opting 2024-08-20T21:16:13.2319565Z into features/experiments. 2024-08-20T21:16:13.2319924Z 2024-08-20T21:16:13.2320099Z Example user list: 2024-08-20T21:16:13.2320324Z 2024-08-20T21:16:13.2320447Z @User1 2024-08-20T21:16:13.2320890Z @User2,amz2023 2024-08-20T21:16:13.2321317Z #@UserOptOutOfNewRunner,amz2023 2024-08-20T21:16:13.2321783Z """ 2024-08-20T21:16:13.2322044Z 2024-08-20T21:16:13.2322192Z import logging 2024-08-20T21:16:13.2322553Z import os 2024-08-20T21:16:13.2322894Z from argparse import ArgumentParser 2024-08-20T21:16:13.2323496Z from logging import LogRecord 2024-08-20T21:16:13.2323975Z from typing import Any, Iterable 2024-08-20T21:16:13.2324283Z 2024-08-20T21:16:13.2324437Z from github import Auth, Github 2024-08-20T21:16:13.2324999Z from github.Issue import Issue 2024-08-20T21:16:13.2325306Z 2024-08-20T21:16:13.2325311Z 2024-08-20T21:16:13.2325578Z WORKFLOW_LABEL_META = "" # use meta runners 2024-08-20T21:16:13.2326256Z WORKFLOW_LABEL_LF = "lf." # use runners from the linux foundation 2024-08-20T21:16:13.2327484Z WORKFLOW_LABEL_LF_CANARY = "lf.c." # use canary runners from the linux foundation 2024-08-20T21:16:13.2328116Z 2024-08-20T21:16:13.2328295Z RUNNER_AMI_LEGACY = "" 2024-08-20T21:16:13.2328703Z RUNNER_AMI_AMZ2023 = "amz2023" 2024-08-20T21:16:13.2329106Z 2024-08-20T21:16:13.2329316Z GITHUB_OUTPUT = os.getenv("GITHUB_OUTPUT", "") 2024-08-20T21:16:13.2329946Z GH_OUTPUT_KEY_AMI = "runner-ami" 2024-08-20T21:16:13.2330497Z GH_OUTPUT_KEY_LABEL_TYPE = "label-type" 2024-08-20T21:16:13.2330914Z 2024-08-20T21:16:13.2330919Z 2024-08-20T21:16:13.2331105Z class ColorFormatter(logging.Formatter): 2024-08-20T21:16:13.2331757Z """Color codes the log messages based on the log level""" 2024-08-20T21:16:13.2332235Z 2024-08-20T21:16:13.2332397Z COLORS = { 2024-08-20T21:16:13.2332825Z "WARNING": "\033[33m", # Yellow 2024-08-20T21:16:13.2333350Z "ERROR": "\033[31m", # Red 2024-08-20T21:16:13.2333852Z "CRITICAL": "\033[31m", # Red 2024-08-20T21:16:13.2334383Z "INFO": "\033[0m", # Reset 2024-08-20T21:16:13.2334890Z "DEBUG": "\033[0m", # Reset 2024-08-20T21:16:13.2335361Z } 2024-08-20T21:16:13.2335599Z 2024-08-20T21:16:13.2335852Z def format(self, record: LogRecord) -> str: 2024-08-20T21:16:13.2336683Z log_color = self.COLORS.get(record.levelname, "\033[0m") # Default to reset 2024-08-20T21:16:13.2337533Z record.msg = f"{log_color}{record.msg}\033[0m" 2024-08-20T21:16:13.2338253Z return super().format(record) 2024-08-20T21:16:13.2338638Z 2024-08-20T21:16:13.2338642Z 2024-08-20T21:16:13.2338812Z handler = logging.StreamHandler() 2024-08-20T21:16:13.2339603Z handler.setFormatter(ColorFormatter(fmt="%(levelname)-8s: %(message)s")) 2024-08-20T21:16:13.2340254Z 2024-08-20T21:16:13.2340535Z log = logging.getLogger(os.path.basename(__file__)) 2024-08-20T21:16:13.2341242Z log.addHandler(handler) 2024-08-20T21:16:13.2341689Z log.setLevel(logging.INFO) 2024-08-20T21:16:13.2342032Z 2024-08-20T21:16:13.2342037Z 2024-08-20T21:16:13.2342377Z def set_github_output(key: str, value: str) -> None: 2024-08-20T21:16:13.2342917Z """ 2024-08-20T21:16:13.2343428Z Defines outputs of the github action that invokes this script 2024-08-20T21:16:13.2344171Z """ 2024-08-20T21:16:13.2344482Z if not GITHUB_OUTPUT: 2024-08-20T21:16:13.2346082Z # See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ for deprecation notice 2024-08-20T21:16:13.2347504Z log.warning( 2024-08-20T21:16:13.2348425Z "No env var found for GITHUB_OUTPUT, you must be running this code locally. Falling back to the deprecated print method." 2024-08-20T21:16:13.2349480Z ) 2024-08-20T21:16:13.2372006Z print(f"::set-output name={key}::{value}") 2024-08-20T21:16:13.2372662Z return 2024-08-20T21:16:13.2372894Z 2024-08-20T21:16:13.2373071Z with open(GITHUB_OUTPUT, "a") as f: 2024-08-20T21:16:13.2373861Z log.info(f"Setting output: {key}='{value}'") 2024-08-20T21:16:13.2374476Z f.write(f"{key}={value}\n") 2024-08-20T21:16:13.2374804Z 2024-08-20T21:16:13.2374815Z 2024-08-20T21:16:13.2375110Z def parse_args() -> Any: 2024-08-20T21:16:13.2375644Z parser = ArgumentParser("Get dynamic rollout settings") 2024-08-20T21:16:13.2376661Z parser.add_argument("--github-token", type=str, required=True, help="GitHub token") 2024-08-20T21:16:13.2377555Z parser.add_argument( 2024-08-20T21:16:13.2378005Z "--github-issue-repo", 2024-08-20T21:16:13.2378484Z type=str, 2024-08-20T21:16:13.2378945Z required=False, 2024-08-20T21:16:13.2379394Z default="pytorch/test-infra", 2024-08-20T21:16:13.2379979Z help="GitHub repo to get the issue", 2024-08-20T21:16:13.2380571Z ) 2024-08-20T21:16:13.2380884Z parser.add_argument( 2024-08-20T21:16:13.2381373Z "--github-repo", 2024-08-20T21:16:13.2381848Z type=str, 2024-08-20T21:16:13.2382189Z required=True, 2024-08-20T21:16:13.2382659Z help="GitHub repo where CI is running", 2024-08-20T21:16:13.2383259Z ) 2024-08-20T21:16:13.2383772Z parser.add_argument( 2024-08-20T21:16:13.2384480Z "--github-issue", type=int, required=True, help="GitHub issue number" 2024-08-20T21:16:13.2385546Z ) 2024-08-20T21:16:13.2385915Z parser.add_argument( 2024-08-20T21:16:13.2386661Z "--github-actor", type=str, required=True, help="GitHub triggering_actor" 2024-08-20T21:16:13.2387479Z ) 2024-08-20T21:16:13.2387791Z parser.add_argument( 2024-08-20T21:16:13.2388516Z "--github-issue-owner", type=str, required=True, help="GitHub issue owner" 2024-08-20T21:16:13.2389352Z ) 2024-08-20T21:16:13.2389659Z parser.add_argument( 2024-08-20T21:16:13.2390397Z "--github-branch", type=str, required=True, help="Current GitHub branch or tag" 2024-08-20T21:16:13.2391247Z ) 2024-08-20T21:16:13.2391552Z parser.add_argument( 2024-08-20T21:16:13.2392015Z "--github-ref-type", 2024-08-20T21:16:13.2392549Z type=str, 2024-08-20T21:16:13.2392909Z required=True, 2024-08-20T21:16:13.2393400Z help="Current GitHub ref type, branch or tag", 2024-08-20T21:16:13.2394046Z ) 2024-08-20T21:16:13.2394215Z 2024-08-20T21:16:13.2394373Z return parser.parse_args() 2024-08-20T21:16:13.2394702Z 2024-08-20T21:16:13.2394707Z 2024-08-20T21:16:13.2394971Z def get_gh_client(github_token: str) -> Github: 2024-08-20T21:16:13.2395646Z auth = Auth.Token(github_token) 2024-08-20T21:16:13.2396111Z return Github(auth=auth) 2024-08-20T21:16:13.2396423Z 2024-08-20T21:16:13.2396428Z 2024-08-20T21:16:13.2396795Z def get_issue(gh: Github, repo: str, issue_num: int) -> Issue: 2024-08-20T21:16:13.2397529Z repo = gh.get_repo(repo) 2024-08-20T21:16:13.2397990Z return repo.get_issue(number=issue_num) 2024-08-20T21:16:13.2398589Z 2024-08-20T21:16:13.2398595Z 2024-08-20T21:16:13.2398749Z def get_potential_pr_author( 2024-08-20T21:16:13.2399484Z gh: Github, repo: str, username: str, ref_type: str, ref_name: str 2024-08-20T21:16:13.2400207Z ) -> str: 2024-08-20T21:16:13.2400720Z # If the trigger was a new tag added by a bot, this is a ciflow case 2024-08-20T21:16:13.2401691Z # Fetch the actual username from the original PR. The PR number is 2024-08-20T21:16:13.2402562Z # embedded in the tag name: ciflow// 2024-08-20T21:16:13.2403297Z if username == "pytorch-bot[bot]" and ref_type == "tag": 2024-08-20T21:16:13.2404020Z split_tag = ref_name.split("/") 2024-08-20T21:16:13.2404540Z if ( 2024-08-20T21:16:13.2404867Z len(split_tag) == 3 2024-08-20T21:16:13.2405413Z and split_tag[0] == "ciflow" 2024-08-20T21:16:13.2405968Z and split_tag[2].isnumeric() 2024-08-20T21:16:13.2406416Z ): 2024-08-20T21:16:13.2406858Z pr_number = split_tag[2] 2024-08-20T21:16:13.2407364Z try: 2024-08-20T21:16:13.2407755Z repository = gh.get_repo(repo) 2024-08-20T21:16:13.2408478Z pull = repository.get_pull(number=int(pr_number)) 2024-08-20T21:16:13.2409130Z except Exception as e: 2024-08-20T21:16:13.2409627Z raise Exception( # noqa: TRY002 2024-08-20T21:16:13.2410432Z f"issue with pull request {pr_number} from repo {repository}" 2024-08-20T21:16:13.2411131Z ) from e 2024-08-20T21:16:13.2411533Z return pull.user.login 2024-08-20T21:16:13.2412226Z # In all other cases, return the original input username 2024-08-20T21:16:13.2412853Z return username 2024-08-20T21:16:13.2413079Z 2024-08-20T21:16:13.2413084Z 2024-08-20T21:16:13.2413335Z def is_exception_branch(branch: str) -> bool: 2024-08-20T21:16:13.2414225Z return branch.split("/")[0] in {"main", "nightly", "release", "landchecks"} 2024-08-20T21:16:13.2414841Z 2024-08-20T21:16:13.2414845Z 2024-08-20T21:16:13.2415315Z def get_workflow_type(issue: Issue, workflow_requestors: Iterable[str]) -> str: 2024-08-20T21:16:13.2416068Z try: 2024-08-20T21:16:13.2416605Z first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:13.2417129Z 2024-08-20T21:16:13.2417430Z if first_comment[0] == "!": 2024-08-20T21:16:13.2418180Z log.info("LF Workflows are disabled for everyone. Using meta runners.") 2024-08-20T21:16:13.2418988Z return WORKFLOW_LABEL_META 2024-08-20T21:16:13.2419516Z elif first_comment[0] == "*": 2024-08-20T21:16:13.2420278Z log.info("LF Workflows are enabled for everyone. Using LF runners.") 2024-08-20T21:16:13.2421048Z return WORKFLOW_LABEL_LF 2024-08-20T21:16:13.2421531Z else: 2024-08-20T21:16:13.2421933Z all_opted_in_users = { 2024-08-20T21:16:13.2422496Z usr_raw.strip("\n\t@ ").split(",")[0] 2024-08-20T21:16:13.2423116Z for usr_raw in first_comment.split() 2024-08-20T21:16:13.2423685Z } 2024-08-20T21:16:13.2424148Z opted_in_requestors = { 2024-08-20T21:16:13.2424992Z usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:13.2425706Z } 2024-08-20T21:16:13.2426151Z if opted_in_requestors: 2024-08-20T21:16:13.2426667Z log.info( 2024-08-20T21:16:13.2427473Z f"LF Workflows are enabled for {', '.join(opted_in_requestors)}. Using LF runners." 2024-08-20T21:16:13.2428356Z ) 2024-08-20T21:16:13.2428727Z return WORKFLOW_LABEL_LF 2024-08-20T21:16:13.2429237Z else: 2024-08-20T21:16:13.2429685Z log.info( 2024-08-20T21:16:13.2430466Z f"LF Workflows are disabled for {', '.join(workflow_requestors)}. Using meta runners." 2024-08-20T21:16:13.2431281Z ) 2024-08-20T21:16:13.2431772Z return WORKFLOW_LABEL_META 2024-08-20T21:16:13.2432300Z 2024-08-20T21:16:13.2432450Z except Exception as e: 2024-08-20T21:16:13.2432880Z log.error( 2024-08-20T21:16:13.2433691Z f"Failed to get determine workflow type. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:13.2434486Z ) 2024-08-20T21:16:13.2434865Z return WORKFLOW_LABEL_META 2024-08-20T21:16:13.2435249Z 2024-08-20T21:16:13.2435253Z 2024-08-20T21:16:13.2435432Z def get_optin_feature( 2024-08-20T21:16:13.2436088Z issue: Issue, workflow_requestors: Iterable[str], feature: str, fallback: str 2024-08-20T21:16:13.2436892Z ) -> str: 2024-08-20T21:16:13.2437297Z try: 2024-08-20T21:16:13.2437754Z first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:13.2438640Z userlist = {u.lstrip("#").strip("\n\t@ ") for u in first_comment.split()} 2024-08-20T21:16:13.2439447Z all_opted_in_users = set() 2024-08-20T21:16:13.2439906Z for user in userlist: 2024-08-20T21:16:13.2440402Z for i in user.split(","): 2024-08-20T21:16:13.2440973Z if i == feature: 2024-08-20T21:16:13.2441479Z all_opted_in_users.add(user.split(",")[0]) 2024-08-20T21:16:13.2442090Z opted_in_requestors = { 2024-08-20T21:16:13.2442809Z usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:13.2443506Z } 2024-08-20T21:16:13.2443751Z 2024-08-20T21:16:13.2443900Z if opted_in_requestors: 2024-08-20T21:16:13.2444420Z log.info( 2024-08-20T21:16:13.2445259Z f"Feature {feature} is enabled for {', '.join(opted_in_requestors)}. Using feature {feature}." 2024-08-20T21:16:13.2446065Z ) 2024-08-20T21:16:13.2446490Z return feature 2024-08-20T21:16:13.2446920Z else: 2024-08-20T21:16:13.2447238Z log.info( 2024-08-20T21:16:13.2448171Z f"Feature {feature} is disabled for {', '.join(workflow_requestors)}. Using fallback \"{fallback}\"." 2024-08-20T21:16:13.2449075Z ) 2024-08-20T21:16:13.2449393Z return fallback 2024-08-20T21:16:13.2449759Z 2024-08-20T21:16:13.2449928Z except Exception as e: 2024-08-20T21:16:13.2450380Z log.error( 2024-08-20T21:16:13.2451427Z f'Failed to determine if user has opted-in to feature {feature}. Using fallback "{fallback}". Exception: {e}' 2024-08-20T21:16:13.2452515Z ) 2024-08-20T21:16:13.2452880Z return fallback 2024-08-20T21:16:13.2453124Z 2024-08-20T21:16:13.2453130Z 2024-08-20T21:16:13.2453305Z def main() -> None: 2024-08-20T21:16:13.2453792Z args = parse_args() 2024-08-20T21:16:13.2454038Z 2024-08-20T21:16:13.2454482Z if args.github_ref_type == "branch" and is_exception_branch(args.github_branch): 2024-08-20T21:16:13.2455523Z log.info(f"Exception branch: '{args.github_branch}', using meta runners") 2024-08-20T21:16:13.2456393Z label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:13.2456933Z runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:13.2457392Z else: 2024-08-20T21:16:13.2457825Z try: 2024-08-20T21:16:13.2458231Z gh = get_gh_client(args.github_token) 2024-08-20T21:16:13.2459117Z # The default issue we use - https://github.com/pytorch/test-infra/issues/5132 2024-08-20T21:16:13.2460166Z issue = get_issue(gh, args.github_issue_repo, args.github_issue) 2024-08-20T21:16:13.2460902Z username = get_potential_pr_author( 2024-08-20T21:16:13.2461525Z gh, 2024-08-20T21:16:13.2461889Z args.github_repo, 2024-08-20T21:16:13.2462368Z args.github_actor, 2024-08-20T21:16:13.2462944Z args.github_ref_type, 2024-08-20T21:16:13.2463420Z args.github_branch, 2024-08-20T21:16:13.2463886Z ) 2024-08-20T21:16:13.2464368Z label_type = get_workflow_type( 2024-08-20T21:16:13.2465657Z issue, 2024-08-20T21:16:13.2466126Z ( 2024-08-20T21:16:13.2466810Z args.github_issue_owner, 2024-08-20T21:16:13.2467323Z username, 2024-08-20T21:16:13.2467771Z ), 2024-08-20T21:16:13.2468113Z ) 2024-08-20T21:16:13.2468576Z runner_ami = get_optin_feature( 2024-08-20T21:16:13.2469127Z issue=issue, 2024-08-20T21:16:13.2469558Z workflow_requestors=( 2024-08-20T21:16:13.2470162Z args.github_issue_owner, 2024-08-20T21:16:13.2470705Z username, 2024-08-20T21:16:13.2471110Z ), 2024-08-20T21:16:13.2471601Z feature=RUNNER_AMI_AMZ2023, 2024-08-20T21:16:13.2472172Z fallback=RUNNER_AMI_LEGACY, 2024-08-20T21:16:13.2472648Z ) 2024-08-20T21:16:13.2473103Z except Exception as e: 2024-08-20T21:16:13.2473555Z log.error( 2024-08-20T21:16:13.2474137Z f"Failed to get issue. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:13.2474944Z ) 2024-08-20T21:16:13.2475358Z label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:13.2475987Z runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:13.2476366Z 2024-08-20T21:16:13.2476541Z # For Canary builds use canary runners 2024-08-20T21:16:13.2477467Z if args.github_repo == "pytorch/pytorch-canary" and label_type == WORKFLOW_LABEL_LF: 2024-08-20T21:16:13.2478433Z label_type = WORKFLOW_LABEL_LF_CANARY 2024-08-20T21:16:13.2478807Z 2024-08-20T21:16:13.2479067Z set_github_output(GH_OUTPUT_KEY_LABEL_TYPE, label_type) 2024-08-20T21:16:13.2479771Z set_github_output(GH_OUTPUT_KEY_AMI, runner_ami) 2024-08-20T21:16:13.2480182Z 2024-08-20T21:16:13.2480187Z 2024-08-20T21:16:13.2480450Z if __name__ == "__main__": 2024-08-20T21:16:13.2480837Z main() 2024-08-20T21:16:13.2654317Z ##[group]Run python3 -m pip install urllib3==1.26.18 PyGithub==2.3.0 2024-08-20T21:16:13.2655252Z python3 -m pip install urllib3==1.26.18 PyGithub==2.3.0 2024-08-20T21:16:13.2716051Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:13.2716525Z env: 2024-08-20T21:16:13.2717108Z GITHUB_TOKEN: *** 2024-08-20T21:16:13.2717609Z ISSUE_NUMBER: 5132 2024-08-20T21:16:13.2718027Z TRIGGERING_ACTOR: pytorch-bot[bot] 2024-08-20T21:16:13.2718533Z ISSUE_OWNER: 2024-08-20T21:16:13.2718982Z ##[endgroup] 2024-08-20T21:16:13.7193787Z Defaulting to user installation because normal site-packages is not writeable 2024-08-20T21:16:14.1372868Z Collecting urllib3==1.26.18 2024-08-20T21:16:14.1876658Z Downloading urllib3-1.26.18-py2.py3-none-any.whl (143 kB) 2024-08-20T21:16:14.2133029Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 143.8/143.8 KB 6.1 MB/s eta 0:00:00 2024-08-20T21:16:14.2485478Z Collecting PyGithub==2.3.0 2024-08-20T21:16:14.2560011Z Downloading PyGithub-2.3.0-py3-none-any.whl (354 kB) 2024-08-20T21:16:14.2837484Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 354.4/354.4 KB 13.3 MB/s eta 0:00:00 2024-08-20T21:16:14.3336975Z Collecting typing-extensions>=4.0.0 2024-08-20T21:16:14.3408415Z Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB) 2024-08-20T21:16:14.3506088Z Requirement already satisfied: requests>=2.14.0 in /usr/lib/python3/dist-packages (from PyGithub==2.3.0) (2.25.1) 2024-08-20T21:16:14.3747084Z Collecting Deprecated 2024-08-20T21:16:14.3819747Z Downloading Deprecated-1.2.14-py2.py3-none-any.whl (9.6 kB) 2024-08-20T21:16:14.4262702Z Collecting pynacl>=1.4.0 2024-08-20T21:16:14.4339005Z Downloading PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB) 2024-08-20T21:16:14.4875593Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 856.7/856.7 KB 16.4 MB/s eta 0:00:00 2024-08-20T21:16:14.5170995Z Collecting pyjwt[crypto]>=2.4.0 2024-08-20T21:16:14.5242221Z Downloading PyJWT-2.9.0-py3-none-any.whl (22 kB) 2024-08-20T21:16:14.5376876Z Requirement already satisfied: cryptography>=3.4.0 in /usr/lib/python3/dist-packages (from pyjwt[crypto]>=2.4.0->PyGithub==2.3.0) (3.4.8) 2024-08-20T21:16:14.7554981Z Collecting cffi>=1.4.1 2024-08-20T21:16:14.7629030Z Downloading cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (445 kB) 2024-08-20T21:16:14.7852027Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 445.9/445.9 KB 21.4 MB/s eta 0:00:00 2024-08-20T21:16:14.9392972Z Collecting wrapt<2,>=1.10 2024-08-20T21:16:14.9468361Z Downloading wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (80 kB) 2024-08-20T21:16:14.9511042Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 80.3/80.3 KB 28.5 MB/s eta 0:00:00 2024-08-20T21:16:14.9706167Z Collecting pycparser 2024-08-20T21:16:14.9781355Z Downloading pycparser-2.22-py3-none-any.whl (117 kB) 2024-08-20T21:16:14.9836256Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.6/117.6 KB 30.3 MB/s eta 0:00:00 2024-08-20T21:16:15.1586916Z Installing collected packages: wrapt, urllib3, typing-extensions, pyjwt, pycparser, Deprecated, cffi, pynacl, PyGithub 2024-08-20T21:16:15.6199235Z Successfully installed Deprecated-1.2.14 PyGithub-2.3.0 cffi-1.17.0 pycparser-2.22 pyjwt-2.9.0 pynacl-1.5.0 typing-extensions-4.12.2 urllib3-1.26.18 wrapt-1.16.0 2024-08-20T21:16:15.6908879Z ##[group]Run curr_branch="ciflow/inductor/133712" 2024-08-20T21:16:15.6909506Z curr_branch="ciflow/inductor/133712" 2024-08-20T21:16:15.6909966Z curr_ref_type="tag" 2024-08-20T21:16:15.6910514Z echo "Current branch is '$curr_branch'" 2024-08-20T21:16:15.6910927Z  2024-08-20T21:16:15.6911277Z python3 runner_determinator.py \ 2024-08-20T21:16:15.6911844Z  --github-token "$GITHUB_TOKEN" \ 2024-08-20T21:16:15.6912306Z  --github-issue "$ISSUE_NUMBER" \ 2024-08-20T21:16:15.6912783Z  --github-branch "$curr_branch" \ 2024-08-20T21:16:15.6913310Z  --github-actor "$TRIGGERING_ACTOR" \ 2024-08-20T21:16:15.6913781Z  --github-issue-owner "$ISSUE_OWNER" \ 2024-08-20T21:16:15.6914327Z  --github-ref-type "$curr_ref_type" \ 2024-08-20T21:16:15.6914871Z  --github-repo "$GITHUB_REPOSITORY" 2024-08-20T21:16:15.6978890Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:15.6979384Z env: 2024-08-20T21:16:15.6980190Z GITHUB_TOKEN: *** 2024-08-20T21:16:15.6980596Z ISSUE_NUMBER: 5132 2024-08-20T21:16:15.6981402Z TRIGGERING_ACTOR: pytorch-bot[bot] 2024-08-20T21:16:15.6981933Z ISSUE_OWNER: 2024-08-20T21:16:15.6982280Z ##[endgroup] 2024-08-20T21:16:15.7062876Z Current branch is 'ciflow/inductor/133712' 2024-08-20T21:16:17.7061362Z INFO : LF Workflows are disabled for , XuehaiPan. Using meta runners. 2024-08-20T21:16:18.0800218Z INFO : Feature amz2023 is disabled for , XuehaiPan. Using fallback "". 2024-08-20T21:16:18.0800995Z INFO : Setting output: label-type='' 2024-08-20T21:16:18.0801957Z INFO : Setting output: runner-ami='' 2024-08-20T21:16:18.1178830Z Evaluate and set job outputs 2024-08-20T21:16:18.1190603Z Cleaning up orphan processes