





"""simple docstring"""






from typing import List, Optional

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


A 			=  logging.get_logger(__name__)

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




class 				__lowercase			(			_UpperCamelCase							):







					'''simple docstring'''




					__lowerCAmelCase  =  '''autoformer'''
					__lowerCAmelCase  =  {
					    '''hidden_size''': '''d_model''',
					    '''num_attention_heads''': '''encoder_attention_heads''',
					    '''num_hidden_layers''': '''encoder_layers''',
					}







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

									# Transformer architecture configuration
									__a :						Union[str, Any]			       =  input_size * len(self.lags_sequence     ) + self._number_of_features
									__a :						List[Any]			       =  d_model
									__a :						List[str]			       =  encoder_attention_heads
									__a :						Union[str, Any]			       =  decoder_attention_heads
									__a :						Optional[int]			       =  encoder_ffn_dim
									__a :						List[str]			       =  decoder_ffn_dim
									__a :						List[str]			       =  encoder_layers
									__a :						Optional[int]			       =  decoder_layers

									__a :						Union[str, Any]			       =  dropout
									__a :						Union[str, Any]			       =  attention_dropout
									__a :						Optional[Any]			       =  activation_dropout
									__a :						List[str]			       =  encoder_layerdrop
									__a :						Any			       =  decoder_layerdrop

									__a :						Union[str, Any]			       =  activation_function
									__a :						Union[str, Any]			       =  init_std

									__a :						List[str]			       =  use_cache

									# Autoformer
									__a :						int			       =  label_length
									__a :						List[Any]			       =  moving_average
									__a :						str			       =  autocorrelation_factor

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







					@property
					def  _lowerCamelCase		(						self     ):
									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"""






# tests directory-specific settings - this file is run automatically
# by pytest before any tests are run

import sys
import warnings
from os.path import abspath, dirname, join


# allow having multiple repository checkouts and not needing to remember to rerun
# 'pip install -e .[dev]' when switching between checkouts and running tests.
A 			=  abspath(join(dirname(dirname(dirname(__file__))), '''src'''))
sys.path.insert(1, git_repo_path)


# silence FutureWarning warnings in tests since often we can't act on them until
# they become normal warnings - i.e. the tests still need to test the current functionality
warnings.simplefilter(action='''ignore''', category=FutureWarning)

def     __A      (			a_						:Tuple)		->		Dict:
				from transformers.testing_utils import pytest_addoption_shared

				pytest_addoption_shared(a_)






def     __A      (			a_						:Any)		->		int:
				from transformers.testing_utils import pytest_terminal_summary_main

				__a :						str			       =  terminalreporter.config.getoption('''--make-reports''')
				if make_reports:
								pytest_terminal_summary_main(a_   ,       id=a_)