


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 		UpperCamelCase__  (			self      ):
       return datasets.DatasetInfo(
           features=datasets.Features({'''content''': datasets.Value('''string'''      )}      )	,   supervised_keys=_UpperCAmelCase	,   )



 def 		UpperCamelCase__  (			self	,   _UpperCAmelCase	,   _UpperCAmelCase      ):
       return [datasets.SplitGenerator(name=datasets.Split.TRAIN	,   gen_kwargs={'''examples''': get_test_dummy_examples()}      )]





 def 		UpperCamelCase__  (			self	,   _UpperCAmelCase	,   _UpperCAmelCase      ):
       import apache_beam as beam

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







class lowerCAmelCase_		(				datasets.BeamBasedBuilder ):

 '''simple docstring'''

 def 		UpperCamelCase__  (			self      ):
       return datasets.DatasetInfo(
           features=datasets.Features({'''a''': datasets.Sequence({'''b''': datasets.Value('''string'''      )}      )}      )	,   supervised_keys=_UpperCAmelCase	,   )



 def 		UpperCamelCase__  (			self	,   _UpperCAmelCase	,   _UpperCAmelCase      ):
       return [
           datasets.SplitGenerator(name=datasets.Split.TRAIN	,   gen_kwargs={'''examples''': get_test_nested_examples()}      )
       ]





 def 		UpperCamelCase__  (			self	,   _UpperCAmelCase	,   _UpperCAmelCase      ):
       import apache_beam as beam

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






def  __lowerCAmelCase					()->						Tuple:




      """simple docstring"""

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






def  __lowerCAmelCase					()->						Optional[int]:




      """simple docstring"""

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







class lowerCAmelCase_		(				lowerCamelCase__ ):

 '''simple docstring'''

 @require_beam
 def 		UpperCamelCase__  (			self      ):
       snake_case_ =   len(get_test_dummy_examples()      )
       with tempfile.TemporaryDirectory() as tmp_cache_dir:
             snake_case_ =   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'''      )}      )      )
             snake_case_ =   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 		UpperCamelCase__  (			self      ):
       import apache_beam as beam

       snake_case_ =   beam.io.parquetio.WriteToParquet

       snake_case_ =   len(get_test_dummy_examples()      )
       with tempfile.TemporaryDirectory() as tmp_cache_dir:
             snake_case_ =   DummyBeamDataset(cache_dir=_UpperCAmelCase	,   beam_runner='''DirectRunner'''      )
             with patch('''apache_beam.io.parquetio.WriteToParquet'''      ) as write_parquet_mock:
                   snake_case_ =   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'''      )}      )      )
             snake_case_ =   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 		UpperCamelCase__  (			self      ):
       with tempfile.TemporaryDirectory() as tmp_cache_dir:
             snake_case_ =   DummyBeamDataset(cache_dir=_UpperCAmelCase      )
             self.assertRaises(datasets.builder.MissingBeamOptions	,   builder.download_and_prepare      )





 @require_beam
 def 		UpperCamelCase__  (			self      ):
       snake_case_ =   len(get_test_nested_examples()      )
       with tempfile.TemporaryDirectory() as tmp_cache_dir:
             snake_case_ =   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'''      )}      )}      )      )
             snake_case_ =   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





def  __lowerCAmelCase					(SCREAMING_SNAKE_CASE      )->						int:




      """simple docstring"""

      assert column_title.isupper()
      snake_case_ =   0
      snake_case_ =   len(SCREAMING_SNAKE_CASE      ) - 1
      snake_case_ =   0

      while index >= 0:
            snake_case_ =   (ord(column_title[index]      ) - 64) * pow(26      ,      SCREAMING_SNAKE_CASE      )
            answer += value
            power += 1
            index -= 1

      return answer


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

   testmod()