





"""simple docstring"""




import os
import tempfile
from functools import partial
from unittest import TestCase
from unittest.mock import patch

import datasets
import datasets.config

from .utils import require_beam


class   A      (datasets.BeamBasedBuilder   ):
			'''simple docstring'''




			def        a_	(      self       :   Union[str, Any]       )     ->     List[Any]:







					"""simple docstring"""






					return datasets.DatasetInfo(
					    features=datasets.Features({"""content""": datasets.Value("""string"""       )}       )							,     supervised_keys=__lowerCAmelCase							,     )






			def        a_	(      self       :   Union[str, Any]							,     __lowerCAmelCase       :   List[str]							,     __lowerCAmelCase       :   Optional[Any]       )     ->     Optional[int]:







					"""simple docstring"""






					return [datasets.SplitGenerator(name=datasets.Split.TRAIN							,     gen_kwargs={"""examples""": get_test_dummy_examples()}       )]







			def        a_	(      self       :   Any							,     __lowerCAmelCase       :   int							,     __lowerCAmelCase       :   str       )     ->     Optional[int]:







					"""simple docstring"""






					import apache_beam as beam

					return pipeline | "Load Examples" >> beam.Create(__lowerCAmelCase       )


class   A      (datasets.BeamBasedBuilder   ):
			'''simple docstring'''




			def        a_	(      self       :   Optional[int]       )     ->     Optional[Any]:







					"""simple docstring"""






					return datasets.DatasetInfo(
					    features=datasets.Features({"""a""": datasets.Sequence({"""b""": datasets.Value("""string"""       )}       )}       )							,     supervised_keys=__lowerCAmelCase							,     )






			def        a_	(      self       :   Tuple							,     __lowerCAmelCase       :   int							,     __lowerCAmelCase       :   Optional[Any]       )     ->     str:







					"""simple docstring"""






					return [
					    datasets.SplitGenerator(name=datasets.Split.TRAIN							,     gen_kwargs={"""examples""": get_test_nested_examples()}       )
					]







			def        a_	(      self       :   List[Any]							,     __lowerCAmelCase       :   Any							,     __lowerCAmelCase       :   List[Any]       )     ->     Optional[Any]:







					"""simple docstring"""






					import apache_beam as beam

					return pipeline | "Load Examples" >> beam.Create(__lowerCAmelCase       )







def        __lowerCamelCase (							)		->    Dict:






		"""simple docstring"""

		return [(i, {"content": content}) for i, content in enumerate(["""foo""", """bar""", """foobar"""]   )]







def        __lowerCamelCase (							)		->    Union[str, Any]:






		"""simple docstring"""

		return [(i, {"a": {"b": [content]}}) for i, content in enumerate(["""foo""", """bar""", """foobar"""]   )]






class   A      (SCREAMING_SNAKE_CASE   ):
			'''simple docstring'''




			@require_beam
			def        a_	(      self       :   List[Any]       )     ->     Optional[int]:







					"""simple docstring"""






					A__  				=       len(get_test_dummy_examples()       )
					with tempfile.TemporaryDirectory() as tmp_cache_dir:
							A__  				=       DummyBeamDataset(cache_dir=__lowerCAmelCase							,     beam_runner="""DirectRunner"""       )
							builder.download_and_prepare()
							self.assertTrue(
							    os.path.exists(
							        os.path.join(__lowerCAmelCase							,     builder.name							,     """default"""							,     """0.0.0"""							,     f'{builder.name}-train.arrow'       )       )       )
							self.assertDictEqual(builder.info.features							,     datasets.Features({"""content""": datasets.Value("""string"""       )}       )       )
							A__  				=       builder.as_dataset()
							self.assertEqual(dset["""train"""].num_rows							,     __lowerCAmelCase       )
							self.assertEqual(dset["""train"""].info.splits["""train"""].num_examples							,     __lowerCAmelCase       )
							self.assertDictEqual(dset["""train"""][0]							,     get_test_dummy_examples()[0][1]       )
							self.assertDictEqual(
							    dset["""train"""][expected_num_examples - 1]							,     get_test_dummy_examples()[expected_num_examples - 1][1]       )
							self.assertTrue(
							    os.path.exists(os.path.join(__lowerCAmelCase							,     builder.name							,     """default"""							,     """0.0.0"""							,     """dataset_info.json"""       )       )       )
							del dset






			@require_beam
			def        a_	(      self       :   List[Any]       )     ->     List[Any]:







					"""simple docstring"""






					import apache_beam as beam

					A__  				=       beam.io.parquetio.WriteToParquet

					A__  				=       len(get_test_dummy_examples()       )
					with tempfile.TemporaryDirectory() as tmp_cache_dir:
							A__  				=       DummyBeamDataset(cache_dir=__lowerCAmelCase							,     beam_runner="""DirectRunner"""       )
							with patch("""apache_beam.io.parquetio.WriteToParquet"""       ) as write_parquet_mock:
									A__  				=       partial(__lowerCAmelCase							,     num_shards=2       )
									builder.download_and_prepare()
							self.assertTrue(
							    os.path.exists(
							        os.path.join(
							            __lowerCAmelCase							,     builder.name							,     """default"""							,     """0.0.0"""							,     f'{builder.name}-train-00000-of-00002.arrow'       )       )       )
							self.assertTrue(
							    os.path.exists(
							        os.path.join(
							            __lowerCAmelCase							,     builder.name							,     """default"""							,     """0.0.0"""							,     f'{builder.name}-train-00000-of-00002.arrow'       )       )       )
							self.assertDictEqual(builder.info.features							,     datasets.Features({"""content""": datasets.Value("""string"""       )}       )       )
							A__  				=       builder.as_dataset()
							self.assertEqual(dset["""train"""].num_rows							,     __lowerCAmelCase       )
							self.assertEqual(dset["""train"""].info.splits["""train"""].num_examples							,     __lowerCAmelCase       )
							# Order is not preserved when sharding, so we just check that all the elements are there
							self.assertListEqual(sorted(dset["""train"""]["""content"""]       )							,     sorted(["""foo""", """bar""", """foobar"""]       )       )
							self.assertTrue(
							    os.path.exists(os.path.join(__lowerCAmelCase							,     builder.name							,     """default"""							,     """0.0.0"""							,     """dataset_info.json"""       )       )       )
							del dset






			@require_beam
			def        a_	(      self       :   str       )     ->     Tuple:







					"""simple docstring"""






					with tempfile.TemporaryDirectory() as tmp_cache_dir:
							A__  				=       DummyBeamDataset(cache_dir=__lowerCAmelCase       )
							self.assertRaises(datasets.builder.MissingBeamOptions							,     builder.download_and_prepare       )







			@require_beam
			def        a_	(      self       :   Optional[int]       )     ->     int:







					"""simple docstring"""






					A__  				=       len(get_test_nested_examples()       )
					with tempfile.TemporaryDirectory() as tmp_cache_dir:
							A__  				=       NestedBeamDataset(cache_dir=__lowerCAmelCase							,     beam_runner="""DirectRunner"""       )
							builder.download_and_prepare()
							self.assertTrue(
							    os.path.exists(
							        os.path.join(__lowerCAmelCase							,     builder.name							,     """default"""							,     """0.0.0"""							,     f'{builder.name}-train.arrow'       )       )       )
							self.assertDictEqual(
							    builder.info.features							,     datasets.Features({"""a""": datasets.Sequence({"""b""": datasets.Value("""string"""       )}       )}       )       )
							A__  				=       builder.as_dataset()
							self.assertEqual(dset["""train"""].num_rows							,     __lowerCAmelCase       )
							self.assertEqual(dset["""train"""].info.splits["""train"""].num_examples							,     __lowerCAmelCase       )
							self.assertDictEqual(dset["""train"""][0]							,     get_test_nested_examples()[0][1]       )
							self.assertDictEqual(
							    dset["""train"""][expected_num_examples - 1]							,     get_test_nested_examples()[expected_num_examples - 1][1]       )
							self.assertTrue(
							    os.path.exists(os.path.join(__lowerCAmelCase							,     builder.name							,     """default"""							,     """0.0.0"""							,     """dataset_info.json"""       )       )       )
							del dset










import argparse
import math
import traceback

import dateutil.parser as date_parser
import requests







def        __lowerCamelCase (							__a       :str   )		->    Optional[int]:






		"""simple docstring"""

		A__  				=       {}

		A__  				=       job["""started_at"""]
		A__  				=       job["""completed_at"""]

		A__  				=       date_parser.parse(__a   )
		A__  				=       date_parser.parse(__a   )

		A__  				=       round((end_datetime - start_datetime).total_seconds() / 60.0   )

		A__  				=       start
		A__  				=       end
		A__  				=       duration_in_min

		return job_info







def        __lowerCamelCase (							__a       :Optional[Any]   ,					__a       :List[str]=None   )		->    List[Any]:






		"""simple docstring"""

		A__  				=       None
		if token is not None:
				A__  				=       {"""Accept""": """application/vnd.github+json""", """Authorization""": F'Bearer {token}'}

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

		try:
				job_time.update({job["""name"""]: extract_time_from_single_job(__a   ) for job in result["""jobs"""]}   )
				A__  				=       math.ceil((result["""total_count"""] - 1_0_0) / 1_0_0   )

				for i in range(__a   ):
						A__  				=       requests.get(url + F'&page={i + 2}'   ,					headers=__a   ).json()
						job_time.update({job["""name"""]: extract_time_from_single_job(__a   ) for job in result["""jobs"""]}   )

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

		return {}


if __name__ == "__main__":
					A   : Optional[Any]			=				argparse.ArgumentParser()
					# Required parameters
					parser.add_argument('''--workflow_run_id''', type=str, required=True, help='''A GitHub Actions workflow run id.''')
					A   : Dict			=				parser.parse_args()

					A   : List[Any]			=				get_job_time(args.workflow_run_id)
					A   : int			=				dict(sorted(job_time.items(), key=lambda item: item[1]["duration"], reverse=True))

					for k, v in job_time.items():
										print(F'''{k}: {v["duration"]}''')



