"""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         =		get_logger(__name__)


if TYPE_CHECKING:
				from .builder import DatasetBuilder

def    _A(		lowerCAmelCase ,     lowerCAmelCase = None       ):
							A__					:    Any														= importlib.import_module(UpperCamelCase__       )

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

							def wrap_auth(lowerCAmelCase       ):
														@wraps(UpperCamelCase__       )
														def wrapper(*lowerCAmelCase ,     **lowerCAmelCase       ):
																					return function(*UpperCamelCase__ ,     use_auth_token=UpperCamelCase__ ,     **UpperCamelCase__       )

														A__					:    Optional[int]														= '''wrap_auth'''
														return wrapper

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



def    _A(		lowerCAmelCase       ):
							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":
																												A__					:    Any														= imports[1]
																												A__					:    List[Any]														= '''.'''.join(builder.__module__.split("""."""       )[:-1] + [internal_import_name]       )
																												extend_module_for_streaming(UpperCamelCase__ ,     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

							A__					:    Tuple														= [
							    cls.__module__
							    for cls in type(UpperCamelCase__       ).__mro__[1:]  # make sure it's not the same module we've already patched
							    if issubclass(cls ,     UpperCamelCase__       ) 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(UpperCamelCase__ ,     use_auth_token=builder.use_auth_token       )






"""simple docstring"""



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


_UpperCamelCase         =		logging.get_logger(__name__)

_UpperCamelCase         =		{
    "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 	__UpperCAmelCase						(__A    ):







			'''simple docstring'''
			_UpperCamelCase     :	Dict				    =							'opt'
			_UpperCamelCase     :	Optional[Any]				    =							['past_key_values']





			def __init__( self      ,			snake_case_=50_272      ,			snake_case_=768      ,			snake_case_=12      ,			snake_case_=3_072      ,			snake_case_=2_048      ,			snake_case_=True      ,			snake_case_=False      ,			snake_case_=None      ,			snake_case_=0.1      ,			snake_case_=0.0      ,			snake_case_=12      ,			snake_case_="relu"      ,			snake_case_=0.0      ,			snake_case_=0.02      ,			snake_case_=True      ,			snake_case_=1      ,			snake_case_=2      ,			snake_case_=2      ,			snake_case_=True      ,			snake_case_=True      ,			**snake_case_      ,			):







										'''simple docstring'''


										super().__init__(
										    pad_token_id=snake_case_      ,			bos_token_id=snake_case_      ,			eos_token_id=snake_case_      ,			**snake_case_      ,			)
										A__					:    int														= vocab_size
										A__					:    List[str]														= max_position_embeddings
										A__					:    str														= num_attention_heads
										A__					:    Dict														= word_embed_proj_dim if word_embed_proj_dim is not None else hidden_size
										A__					:    Optional[int]														= ffn_dim
										A__					:    Optional[int]														= hidden_size
										A__					:    int														= num_hidden_layers
										A__					:    str														= dropout
										A__					:    Tuple														= attention_dropout
										A__					:    Optional[Any]														= activation_function
										A__					:    Any														= init_std
										A__					:    Optional[int]														= layerdrop
										A__					:    Optional[int]														= use_cache
										A__					:    int														= do_layer_norm_before
										# We keep these variables at `True` for backward compatibility.
										A__					:    str														= enable_bias
										A__					:    List[str]														= 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
										A__					:    str														= _remove_final_layer_norm





