
"""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					)      ->	int:



											"""simple docstring"""




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



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



											"""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__					)      ->	List[Any]:



											"""simple docstring"""




											import apache_beam as beam

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






class 			lowerCAmelCase_		(datasets.BeamBasedBuilder						):


				"""simple docstring"""



				def 			__magic_name__					(self					)      ->	List[str]:



											"""simple docstring"""




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



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



											"""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__					)      ->	Union[str, Any]:



											"""simple docstring"""




											import apache_beam as beam

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






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_		(snake_case__						):


				"""simple docstring"""



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



											"""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=UpperCAmelCase_     , beam_runner="""DirectRunner"""					)
																		builder.download_and_prepare()
																		self.assertTrue(
																		    os.path.exists(
																		        os.path.join(UpperCAmelCase_     , 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__		: List[Any]     =     builder.as_dataset()
																		self.assertEqual(dset["""train"""].num_rows     , UpperCAmelCase_					)
																		self.assertEqual(dset["""train"""].info.splits["""train"""].num_examples     , UpperCAmelCase_					)
																		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(UpperCAmelCase_     , builder.name     , """default"""     , """0.0.0"""     , """dataset_info.json"""					)					)					)
																		del dset



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



											"""simple docstring"""




											import apache_beam as beam

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

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



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



											"""simple docstring"""




											with tempfile.TemporaryDirectory() as tmp_cache_dir:
																		SCREAMING_SNAKE_CASE__		: Optional[Any]     =     DummyBeamDataset(cache_dir=UpperCAmelCase_					)
																		self.assertRaises(datasets.builder.MissingBeamOptions     , builder.download_and_prepare					)



				@require_beam
				def 			__magic_name__					(self					)      ->	str:



											"""simple docstring"""




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






"""simple docstring"""




def lowercase_						(     _snake_case		):
							if divisor % 5 == 0 or divisor % 2 == 0:
														return 0
							SCREAMING_SNAKE_CASE__		: List[str]     =     1
							SCREAMING_SNAKE_CASE__		: List[Any]     =     1
							while repunit:
														SCREAMING_SNAKE_CASE__		: Dict     =     (10 * repunit + 1) % divisor
														repunit_index += 1
							return repunit_index

def lowercase_						(     _snake_case = 1_000_000		):
							SCREAMING_SNAKE_CASE__		: int     =     limit - 1
							if divisor % 2 == 0:
														divisor += 1
							while least_divisible_repunit(_snake_case		) <= limit:
														divisor += 2
							return divisor


if __name__ == "__main__":
					print(f"""{solution() = }""")




