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





     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




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





     def 						UpperCAmelCase (     self     ,					__UpperCAmelCase     ,					__UpperCAmelCase				):

      '''simple docstring'''




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







     def 						UpperCAmelCase (     self     ,					__UpperCAmelCase     ,					__UpperCAmelCase				):

      '''simple docstring'''




      import apache_beam as beam

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


class __lowerCAmelCase		(				datasets.BeamBasedBuilder      ):





     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




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





     def 						UpperCAmelCase (     self     ,					__UpperCAmelCase     ,					__UpperCAmelCase				):

      '''simple docstring'''




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







     def 						UpperCAmelCase (     self     ,					__UpperCAmelCase     ,					__UpperCAmelCase				):

      '''simple docstring'''




      import apache_beam as beam

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






def 							A						(    )				->     List[str]:
 return [(i, {"content": content}) for i, content in enumerate(['foo', 'bar', 'foobar']		)]






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





class __lowerCAmelCase		(				__SCREAMING_SNAKE_CASE      ):





     @require_beam
     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




      __UpperCamelCase      =	len(get_test_dummy_examples()				)
      with tempfile.TemporaryDirectory() as tmp_cache_dir:
       __UpperCamelCase      =	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'				)}				)				)
       __UpperCamelCase      =	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				):

      '''simple docstring'''




      import apache_beam as beam

      __UpperCamelCase      =	beam.io.parquetio.WriteToParquet

      __UpperCamelCase      =	len(get_test_dummy_examples()				)
      with tempfile.TemporaryDirectory() as tmp_cache_dir:
       __UpperCamelCase      =	DummyBeamDataset(cache_dir=__UpperCAmelCase     ,					beam_runner='DirectRunner'				)
       with patch('apache_beam.io.parquetio.WriteToParquet'				) as write_parquet_mock:
        __UpperCamelCase      =	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'				)}				)				)
       __UpperCamelCase      =	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				):

      '''simple docstring'''




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







     @require_beam
     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




      __UpperCamelCase      =	len(get_test_nested_examples()				)
      with tempfile.TemporaryDirectory() as tmp_cache_dir:
       __UpperCamelCase      =	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'				)}				)}				)				)
       __UpperCamelCase      =	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"""

from math import isqrt






def 							A						(    snake_case				:int		)				->     list[int]:
 __UpperCamelCase      =	[True] * max_number
 for i in range(2    , isqrt(max_number - 1		) + 1		):
  if is_prime[i]:
   for j in range(i**2    , snake_case    , snake_case		):
    __UpperCamelCase      =	False

 return [i for i in range(2    , snake_case		) if is_prime[i]]






def 							A						(    snake_case				:int = 1_0**8		)				->     int:
 __UpperCamelCase      =	calculate_prime_numbers(max_number // 2		)

 __UpperCamelCase      =	0
 __UpperCamelCase      =	0
 __UpperCamelCase      =	len(snake_case		) - 1
 while left <= right:
  while prime_numbers[left] * prime_numbers[right] >= max_number:
   right -= 1
  semiprimes_count += right - left + 1
  left += 1

 return semiprimes_count


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



