




'''simple docstring'''



import importlib
import inspect
from functools import wraps
from typing import TYPE_CHECKING, Optional, Union

from .download.streaming_download_manager import (
    xbasename,
    xdirname,
    xet_parse,
    xexists,
    xgetsize,
    xglob,
    xgzip_open,
    xisdir,
    xisfile,
    xjoin,
    xlistdir,
    xnumpy_load,
    xopen,
    xpandas_read_csv,
    xpandas_read_excel,
    xPath,
    xrelpath,
    xsio_loadmat,
    xsplit,
    xsplitext,
    xwalk,
    xxml_dom_minidom_parse,
)
from .utils.logging import get_logger
from .utils.patching import patch_submodule
from .utils.py_utils import get_imports


UpperCAmelCase_    :					List[str]					      =						get_logger(__name__)


if TYPE_CHECKING:
     from .builder import DatasetBuilder







def      _UpperCamelCase	(_lowerCamelCase							:       Dict				,		_lowerCamelCase							:       Optional[Union[str, bool]] = None		)->				List[str]:




     '''simple docstring'''





     __snake_case         =					importlib.import_module(__lowercase		)

     # TODO(QL): always update the module to add subsequent new authentication
     if hasattr(__lowercase				,		'''_patched_for_streaming'''		) and module._patched_for_streaming:
          return

     def wrap_auth(_lowerCamelCase							:       int		):
          @wraps(__lowercase		)
          def wrapper(*_lowerCamelCase							:       Tuple				,		**_lowerCamelCase							:       List[str]		):
               return function(*__lowercase				,		use_auth_token=__lowercase				,		**__lowercase		)

          __snake_case         =					'''wrap_auth'''
          return wrapper

     # open files in a streaming fashion
     patch_submodule(__lowercase				,		'''open'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''os.listdir'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''os.walk'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''glob.glob'''				,		wrap_auth(__lowercase		)		).start()
     # allow to navigate in remote zip files
     patch_submodule(__lowercase				,		'''os.path.join'''				,		__lowercase		).start()
     patch_submodule(__lowercase				,		'''os.path.dirname'''				,		__lowercase		).start()
     patch_submodule(__lowercase				,		'''os.path.basename'''				,		__lowercase		).start()
     patch_submodule(__lowercase				,		'''os.path.relpath'''				,		__lowercase		).start()
     patch_submodule(__lowercase				,		'''os.path.split'''				,		__lowercase		).start()
     patch_submodule(__lowercase				,		'''os.path.splitext'''				,		__lowercase		).start()
     # allow checks on paths
     patch_submodule(__lowercase				,		'''os.path.exists'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''os.path.isdir'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''os.path.isfile'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''os.path.getsize'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''pathlib.Path'''				,		__lowercase		).start()
     # file readers
     patch_submodule(__lowercase				,		'''gzip.open'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''numpy.load'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''pandas.read_csv'''				,		wrap_auth(__lowercase		)				,		attrs=['''__version__''']		).start()
     patch_submodule(__lowercase				,		'''pandas.read_excel'''				,		wrap_auth(__lowercase		)				,		attrs=['''__version__''']		).start()
     patch_submodule(__lowercase				,		'''scipy.io.loadmat'''				,		wrap_auth(__lowercase		)				,		attrs=['''__version__''']		).start()
     patch_submodule(__lowercase				,		'''xml.etree.ElementTree.parse'''				,		wrap_auth(__lowercase		)		).start()
     patch_submodule(__lowercase				,		'''xml.dom.minidom.parse'''				,		wrap_auth(__lowercase		)		).start()
     __snake_case         =					True







def      _UpperCamelCase	(_lowerCamelCase							:       "DatasetBuilder"		)->				Union[str, Any]:




     '''simple docstring'''





     extend_module_for_streaming(builder.__module__				,		use_auth_token=builder.use_auth_token		)
     # if needed, we also have to extend additional internal imports (like wmt14 -> wmt_utils)
     if not builder.__module__.startswith('''datasets.'''		):  # check that it's not a packaged builder like csv
          for imports in get_imports(inspect.getfile(builder.__class__		)		):
               if imports[0] == "internal":
                    __snake_case         =					imports[1]
                    __snake_case         =					'''.'''.join(builder.__module__.split('''.'''		)[:-1] + [internal_import_name]		)
                    extend_module_for_streaming(__lowercase				,		use_auth_token=builder.use_auth_token		)

    # builders can inherit from other builders that might use streaming functionality
    # (for example, ImageFolder and AudioFolder inherit from FolderBuilder which implements examples generation)
    # but these parents builders are not patched automatically as they are not instantiated, so we patch them here
     from .builder import DatasetBuilder

     __snake_case         =					[
         cls.__module__
         for cls in type(__lowercase		).__mro__[1:]  # make sure it's not the same module we've already patched
         if issubclass(cls				,		__lowercase		) and cls.__module__ != DatasetBuilder.__module__
     ]  # check it's not a standard builder from datasets.builder
     for module in parent_builder_modules:
          extend_module_for_streaming(__lowercase				,		use_auth_token=builder.use_auth_token		)












'''simple docstring'''



def      _UpperCamelCase	(_lowerCamelCase							:       list				,		_lowerCamelCase							:       int		)->				int:




     '''simple docstring'''





     for index, item in enumerate(_lowerCamelCase		):
          if item == target:
               return index
     return -1







def      _UpperCamelCase	(_lowerCamelCase							:       list				,		_lowerCamelCase							:       int				,		_lowerCamelCase							:       int				,		_lowerCamelCase							:       int		)->				int:




     '''simple docstring'''





     if not (0 <= high < len(_lowerCamelCase		) and 0 <= low < len(_lowerCamelCase		)):
          raise Exception('''Invalid upper or lower bound!'''		)
     if high < low:
          return -1
     if sequence[low] == target:
          return low
     if sequence[high] == target:
          return high
     return rec_linear_search(_lowerCamelCase				,		low + 1				,		high - 1				,		_lowerCamelCase		)


if __name__ == "__main__":
     UpperCAmelCase_    :					List[Any]					      =						input('''Enter numbers separated by comma:\n''').strip()
     UpperCAmelCase_    :					Optional[int]					      =						[int(item.strip()) for item in user_input.split(''',''')]

     UpperCAmelCase_    :					List[str]					      =						int(input('''Enter a single number to be found in the list:\n''').strip())
     UpperCAmelCase_    :					Optional[int]					      =						linear_search(sequence, target)
     if result != -1:
          print(F"""linear_search({sequence}, {target}) = {result}""")
     else:
          print(F"""{target} was not found in {sequence}""")






