





"""simple docstring"""





from typing import List, Optional

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


lowerCAmelCase__     			=			logging.get_logger(__name__)

lowerCAmelCase__     			=			{
    '''huggingface/autoformer-tourism-monthly''': '''https://huggingface.co/huggingface/autoformer-tourism-monthly/resolve/main/config.json''',
}





class        _lowerCamelCase      (       _lowercase ):
						UpperCAmelCase_ =			"autoformer"
						UpperCAmelCase_ =			{
						    "hidden_size": "d_model",
						    "num_attention_heads": "encoder_attention_heads",
						    "num_hidden_layers": "encoder_layers",
						}


						def __init__(self   ,							__a = None   ,							__a = None   ,							__a = "student_t"   ,							__a = "nll"   ,							__a = 1   ,							__a = [1, 2, 3, 4, 5, 6, 7]   ,							__a = True   ,							__a = 0   ,							__a = 0   ,							__a = 0   ,							__a = 0   ,							__a = None   ,							__a = None   ,							__a = 64   ,							__a = 2   ,							__a = 2   ,							__a = 2   ,							__a = 2   ,							__a = 32   ,							__a = 32   ,							__a = "gelu"   ,							__a = 0.1   ,							__a = 0.1   ,							__a = 0.1   ,							__a = 0.1   ,							__a = 0.1   ,							__a = 1_00   ,							__a = 0.02   ,							__a = True   ,							__a=True   ,							__a = 10   ,							__a = 25   ,							__a = 3   ,							**__a   ,							) ->   Tuple:
								# time series specific configuration
								UpperCamelCase   =	prediction_length
								UpperCamelCase   =	context_length if context_length is not None else prediction_length
								UpperCamelCase   =	distribution_output
								UpperCamelCase   =	loss
								UpperCamelCase   =	input_size
								UpperCamelCase   =	num_time_features
								UpperCamelCase   =	lags_sequence
								UpperCamelCase   =	scaling
								UpperCamelCase   =	num_dynamic_real_features
								UpperCamelCase   =	num_static_real_features
								UpperCamelCase   =	num_static_categorical_features
								if cardinality is not None and num_static_categorical_features > 0:
										if len(__a		) != num_static_categorical_features:
												raise ValueError(
												    "The cardinality should be a list of the same length as `num_static_categorical_features`"		)
										UpperCamelCase   =	cardinality
								else:
										UpperCamelCase   =	[0]
								if embedding_dimension is not None and num_static_categorical_features > 0:
										if len(__a		) != num_static_categorical_features:
												raise ValueError(
												    "The embedding dimension should be a list of the same length as `num_static_categorical_features`"		)
										UpperCamelCase   =	embedding_dimension
								else:
										UpperCamelCase   =	[min(50   ,							(cat + 1) // 2		) for cat in self.cardinality]
								UpperCamelCase   =	num_parallel_samples

								# Transformer architecture configuration
								UpperCamelCase   =	input_size * len(self.lags_sequence		) + self._number_of_features
								UpperCamelCase   =	d_model
								UpperCamelCase   =	encoder_attention_heads
								UpperCamelCase   =	decoder_attention_heads
								UpperCamelCase   =	encoder_ffn_dim
								UpperCamelCase   =	decoder_ffn_dim
								UpperCamelCase   =	encoder_layers
								UpperCamelCase   =	decoder_layers

								UpperCamelCase   =	dropout
								UpperCamelCase   =	attention_dropout
								UpperCamelCase   =	activation_dropout
								UpperCamelCase   =	encoder_layerdrop
								UpperCamelCase   =	decoder_layerdrop

								UpperCamelCase   =	activation_function
								UpperCamelCase   =	init_std

								UpperCamelCase   =	use_cache

								# Autoformer
								UpperCamelCase   =	label_length
								UpperCamelCase   =	moving_average
								UpperCamelCase   =	autocorrelation_factor

								super().__init__(is_encoder_decoder=__a   ,							**__a		)




						@property
						def     snake_case_   (self		) ->   int:
								return (
								    sum(self.embedding_dimension		)
								    + self.num_dynamic_real_features
								    + self.num_time_features
								    + self.num_static_real_features
								    + self.input_size * 2  # the log1p(abs(loc)) and log(scale) features
								)













"""simple docstring"""





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


lowerCAmelCase__     			=			{
    '''configuration_blenderbot''': [
        '''BLENDERBOT_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''BlenderbotConfig''',
        '''BlenderbotOnnxConfig''',
    ],
    '''tokenization_blenderbot''': ['''BlenderbotTokenizer'''],
}

try:
						if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCAmelCase__     			=			['''BlenderbotTokenizerFast''']

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCAmelCase__     			=			[
						    '''BLENDERBOT_PRETRAINED_MODEL_ARCHIVE_LIST''',
						    '''BlenderbotForCausalLM''',
						    '''BlenderbotForConditionalGeneration''',
						    '''BlenderbotModel''',
						    '''BlenderbotPreTrainedModel''',
						]


try:
						if not is_tf_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCAmelCase__     			=			[
						    '''TFBlenderbotForConditionalGeneration''',
						    '''TFBlenderbotModel''',
						    '''TFBlenderbotPreTrainedModel''',
						]


try:
						if not is_flax_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCAmelCase__     			=			[
						    '''FlaxBlenderbotForConditionalGeneration''',
						    '''FlaxBlenderbotModel''',
						    '''FlaxBlenderbotPreTrainedModel''',
						]


if TYPE_CHECKING:
						from .configuration_blenderbot import (
						    BLENDERBOT_PRETRAINED_CONFIG_ARCHIVE_MAP,
						    BlenderbotConfig,
						    BlenderbotOnnxConfig,
						)
						from .tokenization_blenderbot import BlenderbotTokenizer

						try:
												if not is_tokenizers_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_blenderbot_fast import BlenderbotTokenizerFast

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_blenderbot import (
												    BLENDERBOT_PRETRAINED_MODEL_ARCHIVE_LIST,
												    BlenderbotForCausalLM,
												    BlenderbotForConditionalGeneration,
												    BlenderbotModel,
												    BlenderbotPreTrainedModel,
												)

						try:
												if not is_tf_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_tf_blenderbot import (
												    TFBlenderbotForConditionalGeneration,
												    TFBlenderbotModel,
												    TFBlenderbotPreTrainedModel,
												)

						try:
												if not is_flax_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_flax_blenderbot import (
												    FlaxBlenderbotForConditionalGeneration,
												    FlaxBlenderbotModel,
												    FlaxBlenderbotPreTrainedModel,
												)

else:
						import sys

						lowerCAmelCase__     			=			_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)






