
def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) * 9 / 5) + 32						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round(float(a__  ) + 273.15						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) * 9 / 5) + 491.67						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) - 32) * 5 / 9						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round(((float(a__  ) - 32) * 5 / 9) + 273.15						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round(float(a__  ) + 459.67						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round(float(a__  ) - 273.15						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round(((float(a__  ) - 273.15) * 9 / 5) + 32						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) * 9 / 5)						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) - 491.67) * 5 / 9						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round(float(a__  ) - 459.67						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) * 5 / 9)						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) * 1.25 + 273.15)						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) * 2.25 + 32)						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) * 1.25)						,   a__  )




def 					lowerCamelCase__					(    a__	:	float						,   a__	:	int = 2  )		->						float:
       return round((float(a__  ) * 2.25 + 32 + 459.67)						,   a__  )


if __name__ == "__main__":
      import doctest

      doctest.testmod()





import multiprocessing
import os
from typing import BinaryIO, Optional, Union

from .. import Dataset, Features, NamedSplit, config
from ..formatting import query_table
from ..packaged_modules.csv.csv import Csv
from ..utils import logging
from ..utils.typing import NestedDataStructureLike, PathLike
from .abc import AbstractDatasetReader

class 		lowercase_							(							__SCREAMING_SNAKE_CASE					):

 def __init__(   self  ,						__UpperCamelCase  ,						__UpperCamelCase = None  ,						__UpperCamelCase = None  ,						__UpperCamelCase = None  ,						__UpperCamelCase = False  ,						__UpperCamelCase = False  ,						__UpperCamelCase = None  ,						**__UpperCamelCase  ,						):




        """simple docstring"""


        super().__init__(
            __UpperCamelCase  ,						split=__UpperCamelCase  ,						features=__UpperCamelCase  ,						cache_dir=__UpperCamelCase  ,						keep_in_memory=__UpperCamelCase  ,						streaming=__UpperCamelCase  ,						num_proc=__UpperCamelCase  ,						**__UpperCamelCase  ,						)
        UpperCamelCase_											=							path_or_paths if isinstance(__UpperCamelCase  ,						__UpperCamelCase  ) else {self.split: path_or_paths}
        UpperCamelCase_											=							Csv(
            cache_dir=__UpperCamelCase  ,						data_files=__UpperCamelCase  ,						features=__UpperCamelCase  ,						**__UpperCamelCase  ,						)

 def lowerCamelCase_					(   self  ):




        """simple docstring"""


        if self.streaming:
               UpperCamelCase_											=							self.builder.as_streaming_dataset(split=self.split  )
        # Build regular (map-style) dataset
        else:
               UpperCamelCase_											=							None
               UpperCamelCase_											=							None
               UpperCamelCase_											=							None
               UpperCamelCase_											=							None

               self.builder.download_and_prepare(
                   download_config=__UpperCamelCase  ,						download_mode=__UpperCamelCase  ,						verification_mode=__UpperCamelCase  ,						base_path=__UpperCamelCase  ,						num_proc=self.num_proc  ,						)
               UpperCamelCase_											=							self.builder.as_dataset(
                   split=self.split  ,						verification_mode=__UpperCamelCase  ,						in_memory=self.keep_in_memory  )
        return dataset



class 		lowercase_							:

 def __init__(   self  ,						__UpperCamelCase  ,						__UpperCamelCase  ,						__UpperCamelCase = None  ,						__UpperCamelCase = None  ,						**__UpperCamelCase  ,						):




        """simple docstring"""


        if num_proc is not None and num_proc <= 0:
               raise ValueError(f'''num_proc {num_proc} must be an integer > 0.'''  )

        UpperCamelCase_											=							dataset
        UpperCamelCase_											=							path_or_buf
        UpperCamelCase_											=							batch_size if batch_size else config.DEFAULT_MAX_BATCH_SIZE
        UpperCamelCase_											=							num_proc
        UpperCamelCase_											=							"""utf-8"""
        UpperCamelCase_											=							to_csv_kwargs

 def lowerCamelCase_					(   self  ):




        """simple docstring"""


        UpperCamelCase_											=							self.to_csv_kwargs.pop("""path_or_buf"""  ,						__UpperCamelCase  )
        UpperCamelCase_											=							self.to_csv_kwargs.pop("""header"""  ,						__UpperCamelCase  )
        UpperCamelCase_											=							self.to_csv_kwargs.pop("""index"""  ,						__UpperCamelCase  )

        if isinstance(self.path_or_buf  ,						(str, bytes, os.PathLike)  ):
               with open(self.path_or_buf  ,						"""wb+"""  ) as buffer:
                      UpperCamelCase_											=							self._write(file_obj=__UpperCamelCase  ,						header=__UpperCamelCase  ,						index=__UpperCamelCase  ,						**self.to_csv_kwargs  )
        else:
               UpperCamelCase_											=							self._write(file_obj=self.path_or_buf  ,						header=__UpperCamelCase  ,						index=__UpperCamelCase  ,						**self.to_csv_kwargs  )
        return written

 def lowerCamelCase_					(   self  ,						__UpperCamelCase  ):




        """simple docstring"""


        UpperCamelCase_							,					UpperCamelCase_							,					UpperCamelCase_							,					UpperCamelCase_											=							args

        UpperCamelCase_											=							query_table(
            table=self.dataset.data  ,						key=slice(__UpperCamelCase  ,						offset + self.batch_size  )  ,						indices=self.dataset._indices  ,						)
        UpperCamelCase_											=							batch.to_pandas().to_csv(
            path_or_buf=__UpperCamelCase  ,						header=header if (offset == 0) else False  ,						index=__UpperCamelCase  ,						**__UpperCamelCase  )
        return csv_str.encode(self.encoding  )

 def lowerCamelCase_					(   self  ,						__UpperCamelCase  ,						__UpperCamelCase  ,						__UpperCamelCase  ,						**__UpperCamelCase  ):




        """simple docstring"""


        UpperCamelCase_											=							0

        if self.num_proc is None or self.num_proc == 1:
               for offset in logging.tqdm(
                   range(0  ,						len(self.dataset  )  ,						self.batch_size  )  ,						unit="""ba"""  ,						disable=not logging.is_progress_bar_enabled()  ,						desc="""Creating CSV from Arrow format"""  ,						):
                      UpperCamelCase_											=							self._batch_csv((offset, header, index, to_csv_kwargs)  )
                      written += file_obj.write(__UpperCamelCase  )

        else:
               UpperCamelCase_							,					UpperCamelCase_											=							len(self.dataset  ), self.batch_size
               with multiprocessing.Pool(self.num_proc  ) as pool:
                      for csv_str in logging.tqdm(
                          pool.imap(
                              self._batch_csv  ,						[(offset, header, index, to_csv_kwargs) for offset in range(0  ,						__UpperCamelCase  ,						__UpperCamelCase  )]  ,						)  ,						total=(num_rows // batch_size) + 1 if num_rows % batch_size else num_rows // batch_size  ,						unit="""ba"""  ,						disable=not logging.is_progress_bar_enabled()  ,						desc="""Creating CSV from Arrow format"""  ,						):
                             written += file_obj.write(__UpperCamelCase  )

        return written



