
"""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 	lowerCAmelCase_						(datasets.BeamBasedBuilder  ):


				"""simple docstring"""



				def 	__magic_name__    (self    )					->		str:



											"""simple docstring"""




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



				def 	__magic_name__    (self   ,       SCREAMING_SNAKE_CASE__   ,       SCREAMING_SNAKE_CASE__    )					->		Any:



											"""simple docstring"""




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



				def 	__magic_name__    (self   ,       SCREAMING_SNAKE_CASE__   ,       SCREAMING_SNAKE_CASE__    )					->		Union[str, Any]:



											"""simple docstring"""




											import apache_beam as beam

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






class 	lowerCAmelCase_						(datasets.BeamBasedBuilder  ):


				"""simple docstring"""



				def 	__magic_name__    (self    )					->		Optional[Any]:



											"""simple docstring"""




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



				def 	__magic_name__    (self   ,       SCREAMING_SNAKE_CASE__   ,       SCREAMING_SNAKE_CASE__    )					->		Dict:



											"""simple docstring"""




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



				def 	__magic_name__    (self   ,       SCREAMING_SNAKE_CASE__   ,       SCREAMING_SNAKE_CASE__    )					->		int:



											"""simple docstring"""




											import apache_beam as beam

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






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

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



class 	lowerCAmelCase_						(a__  ):


				"""simple docstring"""



				@require_beam
				def 	__magic_name__    (self    )					->		Dict:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Union[str, Any]           =   len(get_test_dummy_examples()    )
											with tempfile.TemporaryDirectory() as tmp_cache_dir:
																		SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   DummyBeamDataset(cache_dir=SCREAMING_SNAKE_CASE__   ,       beam_runner="""DirectRunner"""    )
																		builder.download_and_prepare()
																		self.assertTrue(
																		    os.path.exists(
																		        os.path.join(SCREAMING_SNAKE_CASE__   ,       builder.name   ,       """default"""   ,       """0.0.0"""   ,       F'''{builder.name}-train.arrow'''    )    )    )
																		self.assertDictEqual(builder.info.features   ,       datasets.Features({"""content""": datasets.Value("""string"""    )}    )    )
																		SCREAMING_SNAKE_CASE__						:       str           =   builder.as_dataset()
																		self.assertEqual(dset["""train"""].num_rows   ,       SCREAMING_SNAKE_CASE__    )
																		self.assertEqual(dset["""train"""].info.splits["""train"""].num_examples   ,       SCREAMING_SNAKE_CASE__    )
																		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(SCREAMING_SNAKE_CASE__   ,       builder.name   ,       """default"""   ,       """0.0.0"""   ,       """dataset_info.json"""    )    )    )
																		del dset



				@require_beam
				def 	__magic_name__    (self    )					->		Tuple:



											"""simple docstring"""




											import apache_beam as beam

											SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   beam.io.parquetio.WriteToParquet

											SCREAMING_SNAKE_CASE__						:       int           =   len(get_test_dummy_examples()    )
											with tempfile.TemporaryDirectory() as tmp_cache_dir:
																		SCREAMING_SNAKE_CASE__						:       Dict           =   DummyBeamDataset(cache_dir=SCREAMING_SNAKE_CASE__   ,       beam_runner="""DirectRunner"""    )
																		with patch("""apache_beam.io.parquetio.WriteToParquet"""    ) as write_parquet_mock:
																									SCREAMING_SNAKE_CASE__						:       str           =   partial(SCREAMING_SNAKE_CASE__   ,       num_shards=2    )
																									builder.download_and_prepare()
																		self.assertTrue(
																		    os.path.exists(
																		        os.path.join(
																		            SCREAMING_SNAKE_CASE__   ,       builder.name   ,       """default"""   ,       """0.0.0"""   ,       F'''{builder.name}-train-00000-of-00002.arrow'''    )    )    )
																		self.assertTrue(
																		    os.path.exists(
																		        os.path.join(
																		            SCREAMING_SNAKE_CASE__   ,       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"""    )}    )    )
																		SCREAMING_SNAKE_CASE__						:       Optional[int]           =   builder.as_dataset()
																		self.assertEqual(dset["""train"""].num_rows   ,       SCREAMING_SNAKE_CASE__    )
																		self.assertEqual(dset["""train"""].info.splits["""train"""].num_examples   ,       SCREAMING_SNAKE_CASE__    )
																		# 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(SCREAMING_SNAKE_CASE__   ,       builder.name   ,       """default"""   ,       """0.0.0"""   ,       """dataset_info.json"""    )    )    )
																		del dset



				@require_beam
				def 	__magic_name__    (self    )					->		Tuple:



											"""simple docstring"""




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



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



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       List[str]           =   len(get_test_nested_examples()    )
											with tempfile.TemporaryDirectory() as tmp_cache_dir:
																		SCREAMING_SNAKE_CASE__						:       Dict           =   NestedBeamDataset(cache_dir=SCREAMING_SNAKE_CASE__   ,       beam_runner="""DirectRunner"""    )
																		builder.download_and_prepare()
																		self.assertTrue(
																		    os.path.exists(
																		        os.path.join(SCREAMING_SNAKE_CASE__   ,       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"""    )}    )}    )    )
																		SCREAMING_SNAKE_CASE__						:       Any           =   builder.as_dataset()
																		self.assertEqual(dset["""train"""].num_rows   ,       SCREAMING_SNAKE_CASE__    )
																		self.assertEqual(dset["""train"""].info.splits["""train"""].num_examples   ,       SCREAMING_SNAKE_CASE__    )
																		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(SCREAMING_SNAKE_CASE__   ,       builder.name   ,       """default"""   ,       """0.0.0"""   ,       """dataset_info.json"""    )    )    )
																		del dset






"""simple docstring"""




def lowercase_  (   _snake_case						):
							SCREAMING_SNAKE_CASE__						:       Optional[int]           =   [1]

							SCREAMING_SNAKE_CASE__      ,      SCREAMING_SNAKE_CASE__      ,      SCREAMING_SNAKE_CASE__						:       str           =   0, 0, 0
							SCREAMING_SNAKE_CASE__						:       List[str]           =   ugly_nums[ia] * 2
							SCREAMING_SNAKE_CASE__						:       int           =   ugly_nums[ia] * 3
							SCREAMING_SNAKE_CASE__						:       Any           =   ugly_nums[ia] * 5

							for _ in range(1   ,_snake_case						):
														SCREAMING_SNAKE_CASE__						:       Union[str, Any]           =   min(_snake_case   ,_snake_case   ,_snake_case						)
														ugly_nums.append(_snake_case						)
														if next_num == next_a:
																					ia += 1
																					SCREAMING_SNAKE_CASE__						:       Optional[int]           =   ugly_nums[ia] * 2
														if next_num == next_a:
																					ia += 1
																					SCREAMING_SNAKE_CASE__						:       List[str]           =   ugly_nums[ia] * 3
														if next_num == next_a:
																					ia += 1
																					SCREAMING_SNAKE_CASE__						:       Tuple           =   ugly_nums[ia] * 5
							return ugly_nums[-1]


if __name__ == "__main__":
					from doctest import testmod

					testmod(verbose=True)
					print(f"""{ugly_numbers(2_0_0) = }""")




