





import argparse
import json
import math
import os
import time
import traceback
import zipfile
from collections import Counter

import requests





def      _lowercase					(						_UpperCAmelCase			,      _UpperCAmelCase=None				)						->  Tuple:
				lowerCamelCase	 =None
				if token is not None:
								lowerCamelCase	 ={"""Accept""": """application/vnd.github+json""", """Authorization""": F"""Bearer {token}"""}

				lowerCamelCase	 =F"""https://api.github.com/repos/huggingface/transformers/actions/runs/{workflow_run_id}/jobs?per_page=100"""
				lowerCamelCase	 =requests.get(_UpperCAmelCase			,      headers=_UpperCAmelCase				).json()
				lowerCamelCase	 ={}

				try:
								job_links.update({job["""name"""]: job["""html_url"""] for job in result["""jobs"""]}				)
								lowerCamelCase	 =math.ceil((result["""total_count"""] - 1_00) / 1_00				)

								for i in range(_UpperCAmelCase				):
												lowerCamelCase	 =requests.get(url + F"""&page={i + 2}"""			,      headers=_UpperCAmelCase				).json()
												job_links.update({job["""name"""]: job["""html_url"""] for job in result["""jobs"""]}				)

								return job_links
				except Exception:
								print(F"""Unknown error, could not fetch links:\n{traceback.format_exc()}"""				)

				return {}





def      _lowercase					(						_UpperCAmelCase			,      _UpperCAmelCase=None				)						->  List[Any]:
				lowerCamelCase	 =None
				if token is not None:
								lowerCamelCase	 ={"""Accept""": """application/vnd.github+json""", """Authorization""": F"""Bearer {token}"""}

				lowerCamelCase	 =F"""https://api.github.com/repos/huggingface/transformers/actions/runs/{worflow_run_id}/artifacts?per_page=100"""
				lowerCamelCase	 =requests.get(_UpperCAmelCase			,      headers=_UpperCAmelCase				).json()
				lowerCamelCase	 ={}

				try:
								artifacts.update({artifact["""name"""]: artifact["""archive_download_url"""] for artifact in result["""artifacts"""]}				)
								lowerCamelCase	 =math.ceil((result["""total_count"""] - 1_00) / 1_00				)

								for i in range(_UpperCAmelCase				):
												lowerCamelCase	 =requests.get(url + F"""&page={i + 2}"""			,      headers=_UpperCAmelCase				).json()
												artifacts.update({artifact["""name"""]: artifact["""archive_download_url"""] for artifact in result["""artifacts"""]}				)

								return artifacts
				except Exception:
								print(F"""Unknown error, could not fetch links:\n{traceback.format_exc()}"""				)

				return {}





def      _lowercase					(						_UpperCAmelCase			,      _UpperCAmelCase			,      _UpperCAmelCase			,      _UpperCAmelCase				)						->  Optional[int]:
				lowerCamelCase	 =None
				if token is not None:
								lowerCamelCase	 ={"""Accept""": """application/vnd.github+json""", """Authorization""": F"""Bearer {token}"""}

				lowerCamelCase	 =requests.get(_UpperCAmelCase			,      headers=_UpperCAmelCase			,      allow_redirects=_UpperCAmelCase				)
				lowerCamelCase	 =result.headers["""Location"""]
				lowerCamelCase	 =requests.get(_UpperCAmelCase			,      allow_redirects=_UpperCAmelCase				)
				lowerCamelCase	 =os.path.join(_UpperCAmelCase			,      F"""{artifact_name}.zip"""				)
				with open(_UpperCAmelCase			,      """wb"""				) as fp:
								fp.write(response.content				)





def      _lowercase					(						_UpperCAmelCase			,      _UpperCAmelCase=None				)						->  Any:
				lowerCamelCase	 =[]
				lowerCamelCase	 =[]
				lowerCamelCase	 =None

				with zipfile.ZipFile(_UpperCAmelCase				) as z:
								for filename in z.namelist():
												if not os.path.isdir(_UpperCAmelCase				):
																# read the file
																if filename in ["failures_line.txt", "summary_short.txt", "job_name.txt"]:
																				with z.open(_UpperCAmelCase				) as f:
																								for line in f:
																												lowerCamelCase	 =line.decode("""UTF-8"""				).strip()
																												if filename == "failures_line.txt":
																																try:
																																				# `error_line` is the place where `error` occurs
																																				lowerCamelCase	 =line[: line.index(""": """				)]
																																				lowerCamelCase	 =line[line.index(""": """				) + len(""": """				) :]
																																				errors.append([error_line, error]				)
																																except Exception:
																																				# skip un-related lines
																																				pass
																												elif filename == "summary_short.txt" and line.startswith("""FAILED """				):
																																# `test` is the test method that failed
																																lowerCamelCase	 =line[len("""FAILED """				) :]
																																failed_tests.append(_UpperCAmelCase				)
																												elif filename == "job_name.txt":
																																lowerCamelCase	 =line

				if len(_UpperCAmelCase				) != len(_UpperCAmelCase				):
								raise ValueError(
								    F"""`errors` and `failed_tests` should have the same number of elements. Got {len(_UpperCAmelCase				)} for `errors` """
								    F"""and {len(_UpperCAmelCase				)} for `failed_tests` instead. The test reports in {artifact_zip_path} have some"""
								    """ problem."""				)

				lowerCamelCase	 =None
				if job_name and job_links:
								lowerCamelCase	 =job_links.get(_UpperCAmelCase			,      _UpperCAmelCase				)

				# A list with elements of the form (line of error, error, failed test)
				lowerCamelCase	 =[x + [y] + [job_link] for x, y in zip(_UpperCAmelCase			,      _UpperCAmelCase				)]

				return result





def      _lowercase					(						_UpperCAmelCase			,      _UpperCAmelCase=None				)						->  Union[str, Any]:
				lowerCamelCase	 =[]

				lowerCamelCase	 =[os.path.join(_UpperCAmelCase			,      _UpperCAmelCase				) for p in os.listdir(_UpperCAmelCase				) if p.endswith(""".zip"""				)]
				for p in paths:
								errors.extend(get_errors_from_single_artifact(_UpperCAmelCase			,      job_links=_UpperCAmelCase				)				)

				return errors





def      _lowercase					(						_UpperCAmelCase			,      _UpperCAmelCase=None				)						->  Any:
				lowerCamelCase	 =Counter()
				counter.update([x[1] for x in logs]				)
				lowerCamelCase	 =counter.most_common()
				lowerCamelCase	 ={}
				for error, count in counts:
								if error_filter is None or error not in error_filter:
												lowerCamelCase	 ={"""count""": count, """failed_tests""": [(x[2], x[0]) for x in logs if x[1] == error]}

				lowerCamelCase	 =dict(sorted(r.items()			,      key=lambda _UpperCAmelCase				: item[1]["count"]			,      reverse=_UpperCAmelCase				)				)
				return r





def      _lowercase					(						_UpperCAmelCase				)						->  List[str]:
				lowerCamelCase	 =test.split("""::"""				)[0]
				if test.startswith("""tests/models/"""				):
								lowerCamelCase	 =test.split("""/"""				)[2]
				else:
								lowerCamelCase	 =None

				return test





def      _lowercase					(						_UpperCAmelCase			,      _UpperCAmelCase=None				)						->  List[Any]:
				lowerCamelCase	 =[(x[0], x[1], get_model(x[2]				)) for x in logs]
				lowerCamelCase	 =[x for x in logs if x[2] is not None]
				lowerCamelCase	 ={x[2] for x in logs}

				lowerCamelCase	 ={}
				for test in tests:
								lowerCamelCase	 =Counter()
								# count by errors in `test`
								counter.update([x[1] for x in logs if x[2] == test]				)
								lowerCamelCase	 =counter.most_common()
								lowerCamelCase	 ={error: count for error, count in counts if (error_filter is None or error not in error_filter)}
								lowerCamelCase	 =sum(error_counts.values()				)
								if n_errors > 0:
												lowerCamelCase	 ={"""count""": n_errors, """errors""": error_counts}

				lowerCamelCase	 =dict(sorted(r.items()			,      key=lambda _UpperCAmelCase				: item[1]["count"]			,      reverse=_UpperCAmelCase				)				)
				return r





def      _lowercase					(						_UpperCAmelCase				)						->  Any:
				lowerCamelCase	 ="""| no. | error | status |"""
				lowerCamelCase	 ="""|-:|:-|:-|"""
				lowerCamelCase	 =[header, sep]
				for error in reduced_by_error:
								lowerCamelCase	 =reduced_by_error[error]["""count"""]
								lowerCamelCase	 =F"""| {count} | {error[:1_00]} |  |"""
								lines.append(_UpperCAmelCase				)

				return "\n".join(_UpperCAmelCase				)





def      _lowercase					(						_UpperCAmelCase				)						->  Optional[Any]:
				lowerCamelCase	 ="""| model | no. of errors | major error | count |"""
				lowerCamelCase	 ="""|-:|-:|-:|-:|"""
				lowerCamelCase	 =[header, sep]
				for model in reduced_by_model:
								lowerCamelCase	 =reduced_by_model[model]["""count"""]
								lowerCamelCase ,  lowerCamelCase	 =list(reduced_by_model[model]["""errors"""].items()				)[0]
								lowerCamelCase	 =F"""| {model} | {count} | {error[:60]} | {_count} |"""
								lines.append(_UpperCAmelCase				)

				return "\n".join(_UpperCAmelCase				)


if __name__ == "__main__":
							UpperCAmelCase__									=argparse.ArgumentParser()
							# Required parameters
							parser.add_argument('''--workflow_run_id''', type=str, required=True, help='''A GitHub Actions workflow run id.''')
							parser.add_argument(
							    '''--output_dir''',
							    type=str,
							    required=True,
							    help='''Where to store the downloaded artifacts and other result files.''',
							)
							parser.add_argument('''--token''', default=None, type=str, help='''A token that has actions:read permission.''')
							UpperCAmelCase__									=parser.parse_args()

							os.makedirs(args.output_dir, exist_ok=True)

							UpperCAmelCase__									=get_job_links(args.workflow_run_id, token=args.token)
							UpperCAmelCase__									={}
							# To deal with `workflow_call` event, where a job name is the combination of the job names in the caller and callee.
							# For example, `PyTorch 1.11 / Model tests (models/albert, single-gpu)`.
							if _job_links:
														for k, v in _job_links.items():
																					# This is how GitHub actions combine job names.
																					if " / " in k:
																												UpperCAmelCase__									=k.find(''' / ''')
																												UpperCAmelCase__									=k[index + len(''' / ''') :]
																					UpperCAmelCase__									=v
							with open(os.path.join(args.output_dir, '''job_links.json'''), '''w''', encoding='''UTF-8''') as fp:
														json.dump(job_links, fp, ensure_ascii=False, indent=4)

							UpperCAmelCase__									=get_artifacts_links(args.workflow_run_id, token=args.token)
							with open(os.path.join(args.output_dir, '''artifacts.json'''), '''w''', encoding='''UTF-8''') as fp:
														json.dump(artifacts, fp, ensure_ascii=False, indent=4)

							for idx, (name, url) in enumerate(artifacts.items()):
														download_artifact(name, url, args.output_dir, args.token)
														# Be gentle to GitHub
														time.sleep(1)

							UpperCAmelCase__									=get_all_errors(args.output_dir, job_links=job_links)

							# `e[1]` is the error
							UpperCAmelCase__									=Counter()
							counter.update([e[1] for e in errors])

							# print the top 30 most common test errors
							UpperCAmelCase__									=counter.most_common(30)
							for item in most_common:
														print(item)

							with open(os.path.join(args.output_dir, '''errors.json'''), '''w''', encoding='''UTF-8''') as fp:
														json.dump(errors, fp, ensure_ascii=False, indent=4)

							UpperCAmelCase__									=reduce_by_error(errors)
							UpperCAmelCase__									=reduce_by_model(errors)

							UpperCAmelCase__									=make_github_table(reduced_by_error)
							UpperCAmelCase__									=make_github_table_per_model(reduced_by_model)

							with open(os.path.join(args.output_dir, '''reduced_by_error.txt'''), '''w''', encoding='''UTF-8''') as fp:
														fp.write(sa)
							with open(os.path.join(args.output_dir, '''reduced_by_model.txt'''), '''w''', encoding='''UTF-8''') as fp:
														fp.write(sa)












from ..utils import DummyObject, requires_backends

class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)





def      _lowercase					(						*_UpperCAmelCase			,      **_UpperCAmelCase				)						->  int:
				requires_backends(_UpperCAmelCase			,      ["""torch"""]				)





def      _lowercase					(						*_UpperCAmelCase			,      **_UpperCAmelCase				)						->  Optional[int]:
				requires_backends(_UpperCAmelCase			,      ["""torch"""]				)





def      _lowercase					(						*_UpperCAmelCase			,      **_UpperCAmelCase				)						->  str:
				requires_backends(_UpperCAmelCase			,      ["""torch"""]				)





def      _lowercase					(						*_UpperCAmelCase			,      **_UpperCAmelCase				)						->  str:
				requires_backends(_UpperCAmelCase			,      ["""torch"""]				)





def      _lowercase					(						*_UpperCAmelCase			,      **_UpperCAmelCase				)						->  Optional[Any]:
				requires_backends(_UpperCAmelCase			,      ["""torch"""]				)





def      _lowercase					(						*_UpperCAmelCase			,      **_UpperCAmelCase				)						->  List[str]:
				requires_backends(_UpperCAmelCase			,      ["""torch"""]				)





def      _lowercase					(						*_UpperCAmelCase			,      **_UpperCAmelCase				)						->  Dict:
				requires_backends(_UpperCAmelCase			,      ["""torch"""]				)

class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)




class       __A     (						metaclass=a    ):
				__A      =				["""torch"""]


				def __init__(		self   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(self   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)


				@classmethod
				def _snake_case       (		cls   , *UpperCAmelCase_   , **UpperCAmelCase_							):
								requires_backends(cls   , ["""torch"""]							)





