




'''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


A					       =get_logger(__name__)


if TYPE_CHECKING:
   from .builder import DatasetBuilder





def 		snake_case_				(_a      :				int       ,  _a      :				Optional[Union[str, bool]] = None	):
    UpperCAmelCase     			=						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(_a      :				Optional[int]	):
        @wraps(lowercase_	)
        def wrapper(*_a      :				Union[str, Any]       ,  **_a      :				Tuple	):
            return function(*lowercase_       ,  use_auth_token=lowercase_       ,  **lowercase_	)

        UpperCAmelCase     			=						'''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()
    UpperCAmelCase     			=						True







def 		snake_case_				(_a      :				"DatasetBuilder"	):
    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":
                UpperCAmelCase     			=						imports[1]
                UpperCAmelCase     			=						'''.'''.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

    UpperCAmelCase     			=						[
        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"""







from ...configuration_utils import PretrainedConfig
from ...utils import logging


_SCREAMING_SNAKE_CASE	:		str   =   logging.get_logger(__name__)

_SCREAMING_SNAKE_CASE	:		Any   =   {
    '''facebook/opt-125m''': '''https://huggingface.co/facebook/opt-125m/blob/main/config.json''',
    '''facebook/opt-350m''': '''https://huggingface.co/facebook/opt-350m/blob/main/config.json''',
    '''facebook/opt-1.3b''': '''https://huggingface.co/facebook/opt-1.3b/blob/main/config.json''',
    '''facebook/opt-2.7b''': '''https://huggingface.co/facebook/opt-2.7b/blob/main/config.json''',
    '''facebook/opt-6.7b''': '''https://huggingface.co/facebook/opt-6.7b/blob/main/config.json''',
    '''facebook/opt-13b''': '''https://huggingface.co/facebook/opt-13b/blob/main/config.json''',
}






class      _SCREAMING_SNAKE_CASE							(			UpperCAmelCase				):



   '''simple docstring'''



   __UpperCAmelCase	:							Tuple    =    "opt"
   __UpperCAmelCase	:							Any    =    ["past_key_values"]







   def __init__(	self ,				_SCREAMING_SNAKE_CASE=50272 ,				_SCREAMING_SNAKE_CASE=768 ,				_SCREAMING_SNAKE_CASE=12 ,				_SCREAMING_SNAKE_CASE=3072 ,				_SCREAMING_SNAKE_CASE=2048 ,				_SCREAMING_SNAKE_CASE=True ,				_SCREAMING_SNAKE_CASE=False ,				_SCREAMING_SNAKE_CASE=None ,				_SCREAMING_SNAKE_CASE=0.1 ,				_SCREAMING_SNAKE_CASE=0.0 ,				_SCREAMING_SNAKE_CASE=12 ,				_SCREAMING_SNAKE_CASE="relu" ,				_SCREAMING_SNAKE_CASE=0.0 ,				_SCREAMING_SNAKE_CASE=0.02 ,				_SCREAMING_SNAKE_CASE=True ,				_SCREAMING_SNAKE_CASE=1 ,				_SCREAMING_SNAKE_CASE=2 ,				_SCREAMING_SNAKE_CASE=2 ,				_SCREAMING_SNAKE_CASE=True ,				_SCREAMING_SNAKE_CASE=True ,				**_SCREAMING_SNAKE_CASE ,				):


      '''simple docstring'''

      super().__init__(
          pad_token_id=_SCREAMING_SNAKE_CASE ,				bos_token_id=_SCREAMING_SNAKE_CASE ,				eos_token_id=_SCREAMING_SNAKE_CASE ,				**_SCREAMING_SNAKE_CASE ,				)
      __lowerCamelCase    		=					vocab_size
      __lowerCamelCase    		=					max_position_embeddings
      __lowerCamelCase    		=					num_attention_heads
      __lowerCamelCase    		=					word_embed_proj_dim if word_embed_proj_dim is not None else hidden_size
      __lowerCamelCase    		=					ffn_dim
      __lowerCamelCase    		=					hidden_size
      __lowerCamelCase    		=					num_hidden_layers
      __lowerCamelCase    		=					dropout
      __lowerCamelCase    		=					attention_dropout
      __lowerCamelCase    		=					activation_function
      __lowerCamelCase    		=					init_std
      __lowerCamelCase    		=					layerdrop
      __lowerCamelCase    		=					use_cache
      __lowerCamelCase    		=					do_layer_norm_before
      # We keep these variables at `True` for backward compatibility.
      __lowerCamelCase    		=					enable_bias
      __lowerCamelCase    		=					layer_norm_elementwise_affine

      # Note that the only purpose of `_remove_final_layer_norm` is to keep backward compatibility
      # with checkpoints that have been fine-tuned before transformers v4.20.1
      # see https://github.com/facebookresearch/metaseq/pull/164
      __lowerCamelCase    		=					_remove_final_layer_norm






