"""simple docstring"""






from pathlib import PurePosixPath
from typing import Optional

import fsspec
from fsspec import AbstractFileSystem
from huggingface_hub.hf_api import DatasetInfo

from ..utils.file_utils import get_authentication_headers_for_url
from ..utils.hub import hf_hub_url
class 				snake_case       ( __UpperCAmelCase				):




					"""simple docstring"""

					snake_case__				    = ""
					snake_case__				    = "hf-legacy"  # "hf://"" is reserved for hffs







					def __init__(				self   :	Optional[int]    ,lowerCamelCase__   :	Optional[DatasetInfo] = None    ,lowerCamelCase__   :	Optional[str] = None    ,**lowerCamelCase__   :	Optional[int]    ,):
									super().__init__(self    ,**lowerCamelCase__			)
									UpperCAmelCase__             =							repo_info
									UpperCAmelCase__             =							token
									UpperCAmelCase__             =							None







					def 		__lowerCAmelCase						(				self   :	int			):
									if self.dir_cache is None:
													UpperCAmelCase__             =							{}
													for hf_file in self.repo_info.siblings:
																	# TODO(QL): add sizes
																	UpperCAmelCase__             =							{
																	    'name': hf_file.rfilename,
																	    'size': None,
																	    'type': 'file',
																	}
																	self.dir_cache.update(
																	    {
																	        str(lowerCamelCase__			): {'name': str(lowerCamelCase__			), 'size': None, 'type': 'directory'}
																	        for d in list(PurePosixPath(hf_file.rfilename			).parents			)[:-1]
																	    }			)







					def 		__lowerCAmelCase						(				self   :	Tuple    ,lowerCamelCase__   :	str    ,lowerCamelCase__   :	str = "rb"    ,**lowerCamelCase__   :	str    ,):
									if not isinstance(self.repo_info    ,lowerCamelCase__			):
													raise NotImplementedError(f'''Open is only implemented for dataset repositories, but got {self.repo_info}'''			)
									UpperCAmelCase__             =							hf_hub_url(self.repo_info.id    ,lowerCamelCase__    ,revision=self.repo_info.sha			)
									return fsspec.open(
									    lowerCamelCase__    ,mode=lowerCamelCase__    ,headers=get_authentication_headers_for_url(lowerCamelCase__    ,use_auth_token=self.token			)    ,client_kwargs={'trust_env': True}    ,).open()







					def 		__lowerCAmelCase						(				self   :	int    ,lowerCamelCase__   :	Any    ,**lowerCamelCase__   :	Union[str, Any]			):
									self._get_dirs()
									UpperCAmelCase__             =							self._strip_protocol(lowerCamelCase__			)
									if path in self.dir_cache:
													return self.dir_cache[path]
									else:
													raise FileNotFoundError(lowerCamelCase__			)







					def 		__lowerCAmelCase						(				self   :	Optional[Any]    ,lowerCamelCase__   :	List[str]    ,lowerCamelCase__   :	Optional[int]=False    ,**lowerCamelCase__   :	List[str]			):
									self._get_dirs()
									UpperCAmelCase__             =							PurePosixPath(path.strip('/'			)			)
									UpperCAmelCase__             =							{}
									for p, f in self.dir_cache.items():
													UpperCAmelCase__             =							PurePosixPath(p.strip('/'			)			)
													UpperCAmelCase__             =							p.parent
													if root == path:
																	UpperCAmelCase__             =							f
									UpperCAmelCase__             =							list(paths.values()			)
									if detail:
													return out
									else:
													return sorted(f['name'] for f in out			)




"""simple docstring"""






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


lowerCAmelCase__  :  int						     =	logging.get_logger(__name__)

lowerCAmelCase__  :  str						     =	{
    'facebook/xglm-564M': 'https://huggingface.co/facebook/xglm-564M/resolve/main/config.json',
    # See all XGLM models at https://huggingface.co/models?filter=xglm
}
class 				snake_case       ( __UpperCAmelCase				):




					"""simple docstring"""

					snake_case__				    = "xglm"
					snake_case__				    = ["past_key_values"]

					snake_case__				    = {
					    "num_attention_heads": "attention_heads",
					    "hidden_size": "d_model",
					    "num_hidden_layers": "num_layers",
					}







					def __init__(				self   :	Any    ,lowerCamelCase__   :	Any=256_008    ,lowerCamelCase__   :	Optional[Any]=2_048    ,lowerCamelCase__   :	List[str]=1_024    ,lowerCamelCase__   :	List[str]=4_096    ,lowerCamelCase__   :	Tuple=24    ,lowerCamelCase__   :	Optional[int]=16    ,lowerCamelCase__   :	int="gelu"    ,lowerCamelCase__   :	Dict=0.1    ,lowerCamelCase__   :	int=0.1    ,lowerCamelCase__   :	List[Any]=0.0    ,lowerCamelCase__   :	List[str]=0.0    ,lowerCamelCase__   :	Optional[Any]=0.0_2    ,lowerCamelCase__   :	List[str]=True    ,lowerCamelCase__   :	Optional[Any]=True    ,lowerCamelCase__   :	str=2    ,lowerCamelCase__   :	Dict=1    ,lowerCamelCase__   :	Optional[int]=0    ,lowerCamelCase__   :	Tuple=2    ,**lowerCamelCase__   :	List[Any]    ,):
									UpperCAmelCase__             =							vocab_size
									UpperCAmelCase__             =							max_position_embeddings
									UpperCAmelCase__             =							d_model
									UpperCAmelCase__             =							ffn_dim
									UpperCAmelCase__             =							num_layers
									UpperCAmelCase__             =							attention_heads
									UpperCAmelCase__             =							activation_function
									UpperCAmelCase__             =							dropout
									UpperCAmelCase__             =							attention_dropout
									UpperCAmelCase__             =							activation_dropout
									UpperCAmelCase__             =							layerdrop
									UpperCAmelCase__             =							init_std
									UpperCAmelCase__             =							scale_embedding  # scale factor will be sqrt(d_model) if True
									UpperCAmelCase__             =							use_cache

									super().__init__(
									    pad_token_id=lowerCamelCase__    ,bos_token_id=lowerCamelCase__    ,eos_token_id=lowerCamelCase__    ,decoder_start_token_id=lowerCamelCase__    ,**lowerCamelCase__    ,)



