


from typing import List, Optional

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


a			:			Any												=					logging.get_logger(__name__)

a			:			Optional[Any]												=					{
    '''huggingface/autoformer-tourism-monthly''': '''https://huggingface.co/huggingface/autoformer-tourism-monthly/resolve/main/config.json''',
}
class 						lowerCamelCase_							(					lowerCAmelCase__					):



					'''simple docstring'''







					__UpperCAmelCase							  =					"autoformer"
					__UpperCAmelCase							  =					{
					    "hidden_size": "d_model",
					    "num_attention_heads": "encoder_attention_heads",
					    "num_hidden_layers": "encoder_layers",
					}






					def __init__(					self			,							snake_case_ = None			,							snake_case_ = None			,							snake_case_ = "student_t"			,							snake_case_ = "nll"			,							snake_case_ = 1			,							snake_case_ = [1, 2, 3, 4, 5, 6, 7]			,							snake_case_ = True			,							snake_case_ = 0			,							snake_case_ = 0			,							snake_case_ = 0			,							snake_case_ = 0			,							snake_case_ = None			,							snake_case_ = None			,							snake_case_ = 6_4			,							snake_case_ = 2			,							snake_case_ = 2			,							snake_case_ = 2			,							snake_case_ = 2			,							snake_case_ = 3_2			,							snake_case_ = 3_2			,							snake_case_ = "gelu"			,							snake_case_ = 0.1			,							snake_case_ = 0.1			,							snake_case_ = 0.1			,							snake_case_ = 0.1			,							snake_case_ = 0.1			,							snake_case_ = 1_0_0			,							snake_case_ = 0.0_2			,							snake_case_ = True			,							snake_case_=True			,							snake_case_ = 1_0			,							snake_case_ = 2_5			,							snake_case_ = 3			,							**snake_case_			,							) ->      Union[str, Any]:







								'''simple docstring'''

								__lowercase			       = prediction_length
								__lowercase			       = context_length if context_length is not None else prediction_length
								__lowercase			       = distribution_output
								__lowercase			       = loss
								__lowercase			       = input_size
								__lowercase			       = num_time_features
								__lowercase			       = lags_sequence
								__lowercase			       = scaling
								__lowercase			       = num_dynamic_real_features
								__lowercase			       = num_static_real_features
								__lowercase			       = num_static_categorical_features
								if cardinality is not None and num_static_categorical_features > 0:
											if len(snake_case_    ) != num_static_categorical_features:
														raise ValueError(
														    '''The cardinality should be a list of the same length as `num_static_categorical_features`'''    )
											__lowercase			       = cardinality
								else:
											__lowercase			       = [0]
								if embedding_dimension is not None and num_static_categorical_features > 0:
											if len(snake_case_    ) != num_static_categorical_features:
														raise ValueError(
														    '''The embedding dimension should be a list of the same length as `num_static_categorical_features`'''    )
											__lowercase			       = embedding_dimension
								else:
											__lowercase			       = [min(5_0			,							(cat + 1) // 2    ) for cat in self.cardinality]
								__lowercase			       = num_parallel_samples

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

								__lowercase			       = dropout
								__lowercase			       = attention_dropout
								__lowercase			       = activation_dropout
								__lowercase			       = encoder_layerdrop
								__lowercase			       = decoder_layerdrop

								__lowercase			       = activation_function
								__lowercase			       = init_std

								__lowercase			       = use_cache

								# Autoformer
								__lowercase			       = label_length
								__lowercase			       = moving_average
								__lowercase			       = autocorrelation_factor

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






					@property
					def A   (					self    ) ->      int:







								'''simple docstring'''

								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
								)






import copy
from dataclasses import dataclass
from pathlib import Path
from typing import Dict, Optional, Union
@dataclass
class 						lowerCamelCase_							:



					'''simple docstring'''







					__UpperCAmelCase							  =					None
					__UpperCAmelCase							  =					False
					__UpperCAmelCase							  =					False
					__UpperCAmelCase							  =					False
					__UpperCAmelCase							  =					None
					__UpperCAmelCase							  =					None
					__UpperCAmelCase							  =					False
					__UpperCAmelCase							  =					False
					__UpperCAmelCase							  =					False
					__UpperCAmelCase							  =					True
					__UpperCAmelCase							  =					None
					__UpperCAmelCase							  =					1
					__UpperCAmelCase							  =					None
					__UpperCAmelCase							  =					False
					__UpperCAmelCase							  =					None
					__UpperCAmelCase							  =					None






					def A   (					self    ) ->      "DownloadConfig":







								'''simple docstring'''

								return self.__class__(**{k: copy.deepcopy(snake_case_    ) for k, v in self.__dict__.items()}    )


