



def     UpperCAmelCase__ (							__snake_case							)   -> int:
  if not isinstance(__snake_case						,				__snake_case							):
    raise ValueError('''double_factorial() only accepts integral values'''							)
  if n < 0:
    raise ValueError('''double_factorial() not defined for negative values'''							)
  return 1 if n <= 1 else n * double_factorial(n - 2							)


if __name__ == "__main__":
    import doctest

    doctest.testmod()




import copy

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


__lowerCamelCase  				=					logging.get_logger(__name__)

__lowerCamelCase  				=					{}



class 		_snake_case      (			lowerCamelCase				):





 """simple docstring"""



 lowerCamelCase_          =			'''fsmt_decoder'''
 def __init__(						self	,    a=0	,    a=0					)	->							str:




   """simple docstring"""







   super().__init__()
   _A           =    vocab_size
   _A           =    bos_token_id







class 		_snake_case      (			lowerCamelCase				):





 """simple docstring"""



 lowerCamelCase_          =			'''fsmt'''
 lowerCamelCase_          =			{'''num_attention_heads''': '''encoder_attention_heads''', '''hidden_size''': '''d_model'''}
 def __init__(						self	,    a=["en", "de"]	,    a=4_2_0_2_4	,    a=4_2_0_2_4	,    a="relu"	,    a=1_0_2_4	,    a=2_0_0	,    a=1_0_2_4	,    a=4_0_9_6	,    a=1_2	,    a=1_6	,    a=0.0	,    a=4_0_9_6	,    a=1_2	,    a=1_6	,    a=0.0	,    a=0.0	,    a=0.1	,    a=0.0	,    a=0.02	,    a=2	,    a=True	,    a=True	,    a=False	,    a=5	,    a=1.0	,    a=False	,    a=True	,    a=1	,    a=0	,    a=2	,    a=2	,    **a	,    )	->							Union[str, Any]:




   """simple docstring"""







   _A           =    langs
   _A           =    src_vocab_size
   _A           =    tgt_vocab_size
   _A           =    d_model  # encoder_embed_dim and decoder_embed_dim

   _A           =    encoder_ffn_dim
   _A           =    _A           =    encoder_layers
   _A           =    encoder_attention_heads
   _A           =    encoder_layerdrop
   _A           =    decoder_layerdrop
   _A           =    decoder_ffn_dim
   _A           =    decoder_layers
   _A           =    decoder_attention_heads
   _A           =    max_position_embeddings
   _A           =    init_std  # Normal(0, this parameter)
   _A           =    activation_function

   _A           =    DecoderConfig(vocab_size=a	,    bos_token_id=a					)
   if "decoder" in common_kwargs:
     del common_kwargs["decoder"]

   _A           =    scale_embedding  # scale factor will be sqrt(d_model) if True

   # 3 Types of Dropout
   _A           =    attention_dropout
   _A           =    activation_dropout
   _A           =    dropout

   _A           =    use_cache
   super().__init__(
       pad_token_id=a	,    bos_token_id=a	,    eos_token_id=a	,    decoder_start_token_id=a	,    is_encoder_decoder=a	,    tie_word_embeddings=a	,    forced_eos_token_id=a	,    max_length=a	,    num_beams=a	,    length_penalty=a	,    early_stopping=a	,    **a	,    )



 def lowercase_		(						self					)	->							Any:




   """simple docstring"""







   _A           =    copy.deepcopy(self.__dict__					)
   _A           =    self.decoder.to_dict()
   _A           =    self.__class__.model_type
   return output