

'''simple docstring'''





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_tokenizers_available,
    is_torch_available,
)


A_	= {"""configuration_reformer""": ["""REFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP""", """ReformerConfig"""]}

try:
				if not is_sentencepiece_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				A_	= ["""ReformerTokenizer"""]

try:
				if not is_tokenizers_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				A_	= ["""ReformerTokenizerFast"""]

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				A_	= [
				    """REFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
				    """ReformerAttention""",
				    """ReformerForMaskedLM""",
				    """ReformerForQuestionAnswering""",
				    """ReformerForSequenceClassification""",
				    """ReformerLayer""",
				    """ReformerModel""",
				    """ReformerModelWithLMHead""",
				    """ReformerPreTrainedModel""",
				]


if TYPE_CHECKING:
				from .configuration_reformer import REFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, ReformerConfig

				try:
								if not is_sentencepiece_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .tokenization_reformer import ReformerTokenizer

				try:
								if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .tokenization_reformer_fast import ReformerTokenizerFast

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_reformer import (
								    REFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
								    ReformerAttention,
								    ReformerForMaskedLM,
								    ReformerForQuestionAnswering,
								    ReformerForSequenceClassification,
								    ReformerLayer,
								    ReformerModel,
								    ReformerModelWithLMHead,
								    ReformerPreTrainedModel,
								)

else:
				import sys

				A_	= _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)




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


__a    :	int         =    logging.get_logger(__name__)

__a    :	Optional[int]         =    {
    """google/pegasus-large""": """https://huggingface.co/google/pegasus-large/resolve/main/config.json""",
    # See all PEGASUS models at https://huggingface.co/models?filter=pegasus
}




class   _UpperCamelCase (		_UpperCAmelCase					):


			"""simple docstring"""






			__a    :					Any     					=		'''pegasus'''
			__a    :					Optional[Any]     					=		['''past_key_values''']
			__a    :					Tuple     					=		{'''num_attention_heads''': '''encoder_attention_heads''', '''hidden_size''': '''d_model'''}





			def __init__(  self ,  lowerCAmelCase__=5_02_65 ,  lowerCAmelCase__=10_24 ,  lowerCAmelCase__=12 ,  lowerCAmelCase__=40_96 ,  lowerCAmelCase__=16 ,  lowerCAmelCase__=12 ,  lowerCAmelCase__=40_96 ,  lowerCAmelCase__=16 ,  lowerCAmelCase__=0.0 ,  lowerCAmelCase__=0.0 ,  lowerCAmelCase__=True ,  lowerCAmelCase__=True ,  lowerCAmelCase__="gelu" ,  lowerCAmelCase__=10_24 ,  lowerCAmelCase__=0.1 ,  lowerCAmelCase__=0.0 ,  lowerCAmelCase__=0.0 ,  lowerCAmelCase__=0.02 ,  lowerCAmelCase__=0 ,  lowerCAmelCase__=False ,  lowerCAmelCase__=0 ,  lowerCAmelCase__=1 ,  lowerCAmelCase__=1 ,  **lowerCAmelCase__ ,  )	->   Dict:

							'''simple docstring'''


							__lowercase					     =				vocab_size
							__lowercase					     =				max_position_embeddings
							__lowercase					     =				d_model
							__lowercase					     =				encoder_ffn_dim
							__lowercase					     =				encoder_layers
							__lowercase					     =				encoder_attention_heads
							__lowercase					     =				decoder_ffn_dim
							__lowercase					     =				decoder_layers
							__lowercase					     =				decoder_attention_heads
							__lowercase					     =				dropout
							__lowercase					     =				attention_dropout
							__lowercase					     =				activation_dropout
							__lowercase					     =				activation_function
							__lowercase					     =				init_std
							__lowercase					     =				encoder_layerdrop
							__lowercase					     =				decoder_layerdrop
							__lowercase					     =				use_cache
							__lowercase					     =				encoder_layers
							__lowercase					     =				scale_embedding  # scale factor will be sqrt(d_model) if True
							super().__init__(
							    pad_token_id=lowerCAmelCase__ ,  eos_token_id=lowerCAmelCase__ ,  is_encoder_decoder=lowerCAmelCase__ ,  decoder_start_token_id=lowerCAmelCase__ ,  forced_eos_token_id=lowerCAmelCase__ ,  **lowerCAmelCase__ ,  )





			@property
			def 			_SCREAMING_SNAKE_CASE     (  self		)	->   int:

							'''simple docstring'''


							return self.encoder_attention_heads





			@property
			def 			_SCREAMING_SNAKE_CASE     (  self		)	->   int:

							'''simple docstring'''


							return self.d_model