




'''simple docstring'''

from cva import destroyAllWindows, imread, imshow, waitKey


def 						__magic_name__       (      __UpperCAmelCase      )						->   Any:

					'''simple docstring'''

					snake_case_     ,snake_case_		     =							img.shape[0], img.shape[1]

					# converting each pixel's color to its negative
					for i in range(__UpperCAmelCase      ):
										for j in range(__UpperCAmelCase      ):
															snake_case_		     =							[255, 255, 255] - img[i][j]

					return img


if __name__ == "__main__":
							# read original image
							a    :							Tuple										=    imread('image_data/lena.jpg', 1)

							# convert to its negative
							a    :							List[Any]										=    convert_to_negative(img)

							# show result image
							imshow('negative of original image', img)
							waitKey(0)
							destroyAllWindows()







'''simple docstring'''

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

import fsspec

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






class 		a							(  _lowerCamelCase	):


				def __init__(						self       :   Optional[int]			,							lowercase_       :   NestedDataStructureLike[PathLike]			,							lowercase_       :   Optional[NamedSplit] = None			,							lowercase_       :   Optional[Features] = None			,							lowercase_       :   str = None			,							lowercase_       :   bool = False			,							lowercase_       :   bool = False			,							lowercase_       :   Optional[str] = None			,							lowercase_       :   Optional[int] = None			,							**lowercase_       :   Optional[Any]			,							):
									super().__init__(
									    lowercase_			,							split=lowercase_			,							features=lowercase_			,							cache_dir=lowercase_			,							keep_in_memory=lowercase_			,							streaming=lowercase_			,							num_proc=lowercase_			,							**lowercase_			,							)
									snake_case_		     =							field
									snake_case_		     =							path_or_paths if isinstance(lowercase_			,							lowercase_   ) else {self.split: path_or_paths}
									snake_case_		     =							Json(
									    cache_dir=lowercase_			,							data_files=lowercase_			,							features=lowercase_			,							field=lowercase_			,							**lowercase_			,							)


				def     A_					(						self       :   Optional[Any]   ):
									# Build iterable dataset
									if self.streaming:
														snake_case_		     =							self.builder.as_streaming_dataset(split=self.split   )
									# Build regular (map-style) dataset
									else:
														snake_case_		     =							None
														snake_case_		     =							None
														snake_case_		     =							None
														snake_case_		     =							None

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







class 		a							:


				def __init__(						self       :   Dict			,							lowercase_       :   Dataset			,							lowercase_       :   Union[PathLike, BinaryIO]			,							lowercase_       :   Optional[int] = None			,							lowercase_       :   Optional[int] = None			,							**lowercase_       :   List[str]			,							):
									if num_proc is not None and num_proc <= 0:
														raise ValueError(F"num_proc {num_proc} must be an integer > 0."   )

									snake_case_		     =							dataset
									snake_case_		     =							path_or_buf
									snake_case_		     =							batch_size if batch_size else config.DEFAULT_MAX_BATCH_SIZE
									snake_case_		     =							num_proc
									snake_case_		     =							'''utf-8'''
									snake_case_		     =							to_json_kwargs


				def     A_					(						self       :   str   ):
									snake_case_		     =							self.to_json_kwargs.pop('''path_or_buf'''			,							lowercase_   )
									snake_case_		     =							self.to_json_kwargs.pop('''orient'''			,							'''records'''   )
									snake_case_		     =							self.to_json_kwargs.pop('''lines'''			,							True if orient == '''records''' else False   )
									snake_case_		     =							self.to_json_kwargs.pop('''index'''			,							False if orient in ['''split''', '''table'''] else True   )
									snake_case_		     =							self.to_json_kwargs.pop('''compression'''			,							lowercase_   )

									if compression not in [None, "infer", "gzip", "bz2", "xz"]:
														raise NotImplementedError(F"`datasets` currently does not support {compression} compression"   )

									if isinstance(self.path_or_buf			,							(str, bytes, os.PathLike)   ):
														with fsspec.open(self.path_or_buf			,							'''wb'''			,							compression=lowercase_   ) as buffer:
																			snake_case_		     =							self._write(file_obj=lowercase_			,							orient=lowercase_			,							lines=lowercase_			,							index=lowercase_			,							**self.to_json_kwargs   )
									else:
														if compression:
																			raise NotImplementedError(
																			    F"The compression parameter is not supported when writing to a buffer, but compression={compression}"
																			    ''' was passed. Please provide a local path instead.'''   )
														snake_case_		     =							self._write(
														    file_obj=self.path_or_buf			,							orient=lowercase_			,							lines=lowercase_			,							index=lowercase_			,							**self.to_json_kwargs   )
									return written


				def     A_					(						self       :   List[str]			,							lowercase_       :   Dict   ):
									snake_case_     ,snake_case_     ,snake_case_     ,snake_case_     ,snake_case_		     =							args

									snake_case_		     =							query_table(
									    table=self.dataset.data			,							key=slice(lowercase_			,							offset + self.batch_size   )			,							indices=self.dataset._indices			,							)
									snake_case_		     =							batch.to_pandas().to_json(
									    path_or_buf=lowercase_			,							orient=lowercase_			,							lines=lowercase_			,							index=lowercase_			,							**lowercase_   )
									if not json_str.endswith('''\n'''   ):
														json_str += "\n"
									return json_str.encode(self.encoding   )


				def     A_					(						self       :   Optional[int]			,							lowercase_       :   BinaryIO			,							lowercase_       :   List[Any]			,							lowercase_       :   str			,							lowercase_       :   int			,							**lowercase_       :   Optional[int]			,							):
									snake_case_		     =							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 json from Arrow format'''			,							):
																			snake_case_		     =							self._batch_json((offset, orient, lines, index, to_json_kwargs)   )
																			written += file_obj.write(lowercase_   )
									else:
														snake_case_     ,snake_case_		     =							len(self.dataset   ), self.batch_size
														with multiprocessing.Pool(self.num_proc   ) as pool:
																			for json_str in logging.tqdm(
																			    pool.imap(
																			        self._batch_json			,							[(offset, orient, lines, index, to_json_kwargs) for offset in range(0			,							lowercase_			,							lowercase_   )]			,							)			,							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 json from Arrow format'''			,							):
																								written += file_obj.write(lowercase_   )

									return written

