






"""simple docstring"""
from typing import TYPE_CHECKING

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


lowerCAmelCase__    						=			{
    'configuration_bert': ['BERT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'BertConfig', 'BertOnnxConfig'],
    'tokenization_bert': ['BasicTokenizer', 'BertTokenizer', 'WordpieceTokenizer'],
}

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

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			lowerCAmelCase__    						=			[
			    'BERT_PRETRAINED_MODEL_ARCHIVE_LIST',
			    'BertForMaskedLM',
			    'BertForMultipleChoice',
			    'BertForNextSentencePrediction',
			    'BertForPreTraining',
			    'BertForQuestionAnswering',
			    'BertForSequenceClassification',
			    'BertForTokenClassification',
			    'BertLayer',
			    'BertLMHeadModel',
			    'BertModel',
			    'BertPreTrainedModel',
			    'load_tf_weights_in_bert',
			]

try:
			if not is_tf_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			lowerCAmelCase__    						=			[
			    'TF_BERT_PRETRAINED_MODEL_ARCHIVE_LIST',
			    'TFBertEmbeddings',
			    'TFBertForMaskedLM',
			    'TFBertForMultipleChoice',
			    'TFBertForNextSentencePrediction',
			    'TFBertForPreTraining',
			    'TFBertForQuestionAnswering',
			    'TFBertForSequenceClassification',
			    'TFBertForTokenClassification',
			    'TFBertLMHeadModel',
			    'TFBertMainLayer',
			    'TFBertModel',
			    'TFBertPreTrainedModel',
			]
try:
			if not is_tensorflow_text_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			lowerCAmelCase__    						=			['TFBertTokenizer']

try:
			if not is_flax_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			lowerCAmelCase__    						=			[
			    'FlaxBertForCausalLM',
			    'FlaxBertForMaskedLM',
			    'FlaxBertForMultipleChoice',
			    'FlaxBertForNextSentencePrediction',
			    'FlaxBertForPreTraining',
			    'FlaxBertForQuestionAnswering',
			    'FlaxBertForSequenceClassification',
			    'FlaxBertForTokenClassification',
			    'FlaxBertModel',
			    'FlaxBertPreTrainedModel',
			]

if TYPE_CHECKING:
			from .configuration_bert import BERT_PRETRAINED_CONFIG_ARCHIVE_MAP, BertConfig, BertOnnxConfig
			from .tokenization_bert import BasicTokenizer, BertTokenizer, WordpieceTokenizer

			try:
						if not is_tokenizers_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_bert_fast import BertTokenizerFast

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_bert import (
						    BERT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    BertForMaskedLM,
						    BertForMultipleChoice,
						    BertForNextSentencePrediction,
						    BertForPreTraining,
						    BertForQuestionAnswering,
						    BertForSequenceClassification,
						    BertForTokenClassification,
						    BertLayer,
						    BertLMHeadModel,
						    BertModel,
						    BertPreTrainedModel,
						    load_tf_weights_in_bert,
						)

			try:
						if not is_tf_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_tf_bert import (
						    TF_BERT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    TFBertEmbeddings,
						    TFBertForMaskedLM,
						    TFBertForMultipleChoice,
						    TFBertForNextSentencePrediction,
						    TFBertForPreTraining,
						    TFBertForQuestionAnswering,
						    TFBertForSequenceClassification,
						    TFBertForTokenClassification,
						    TFBertLMHeadModel,
						    TFBertMainLayer,
						    TFBertModel,
						    TFBertPreTrainedModel,
						)

			try:
						if not is_tensorflow_text_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_bert_tf import TFBertTokenizer

			try:
						if not is_flax_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_flax_bert import (
						    FlaxBertForCausalLM,
						    FlaxBertForMaskedLM,
						    FlaxBertForMultipleChoice,
						    FlaxBertForNextSentencePrediction,
						    FlaxBertForPreTraining,
						    FlaxBertForQuestionAnswering,
						    FlaxBertForSequenceClassification,
						    FlaxBertForTokenClassification,
						    FlaxBertModel,
						    FlaxBertPreTrainedModel,
						)

else:
			import sys

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









"""simple docstring"""
from typing import List, Optional, Union

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


lowerCAmelCase__    						=			logging.get_logger(__name__)

lowerCAmelCase__    						=			{
    'huggingface/time-series-transformer-tourism-monthly': (
        'https://huggingface.co/huggingface/time-series-transformer-tourism-monthly/resolve/main/config.json'
    ),
    # See all TimeSeriesTransformer models at https://huggingface.co/models?filter=time_series_transformer
}


class _lowerCAmelCase						(    __UpperCAmelCase       ):
						SCREAMING_SNAKE_CASE_:					Any 					=				'time_series_transformer'
						SCREAMING_SNAKE_CASE_:					List[str] 					=				{
						    'hidden_size': 'd_model',
						    'num_attention_heads': 'encoder_attention_heads',
						    'num_hidden_layers': 'encoder_layers',
						}







						def __init__(    self   ,				lowerCAmelCase_ = None   ,				lowerCAmelCase_ = None   ,				lowerCAmelCase_ = "student_t"   ,				lowerCAmelCase_ = "nll"   ,				lowerCAmelCase_ = 1   ,				lowerCAmelCase_ = [1, 2, 3, 4, 5, 6, 7]   ,				lowerCAmelCase_ = "mean"   ,				lowerCAmelCase_ = 0   ,				lowerCAmelCase_ = 0   ,				lowerCAmelCase_ = 0   ,				lowerCAmelCase_ = 0   ,				lowerCAmelCase_ = None   ,				lowerCAmelCase_ = None   ,				lowerCAmelCase_ = 3_2   ,				lowerCAmelCase_ = 3_2   ,				lowerCAmelCase_ = 2   ,				lowerCAmelCase_ = 2   ,				lowerCAmelCase_ = 2   ,				lowerCAmelCase_ = 2   ,				lowerCAmelCase_ = True   ,				lowerCAmelCase_ = "gelu"   ,				lowerCAmelCase_ = 6_4   ,				lowerCAmelCase_ = 0.1   ,				lowerCAmelCase_ = 0.1   ,				lowerCAmelCase_ = 0.1   ,				lowerCAmelCase_ = 0.1   ,				lowerCAmelCase_ = 0.1   ,				lowerCAmelCase_ = 1_0_0   ,				lowerCAmelCase_ = 0.02   ,				lowerCAmelCase_=True   ,				**lowerCAmelCase_   ,				)		->							str:
										# time series specific configuration
										_SCREAMING_SNAKE_CASE   :		List[str]       		=    prediction_length
										_SCREAMING_SNAKE_CASE   :		Tuple       		=    context_length or prediction_length
										_SCREAMING_SNAKE_CASE   :		Any       		=    distribution_output
										_SCREAMING_SNAKE_CASE   :		List[str]       		=    loss
										_SCREAMING_SNAKE_CASE   :		Any       		=    input_size
										_SCREAMING_SNAKE_CASE   :		Any       		=    num_time_features
										_SCREAMING_SNAKE_CASE   :		List[Any]       		=    lags_sequence
										_SCREAMING_SNAKE_CASE   :		Dict       		=    scaling
										_SCREAMING_SNAKE_CASE   :		Any       		=    num_dynamic_real_features
										_SCREAMING_SNAKE_CASE   :		List[Any]       		=    num_static_real_features
										_SCREAMING_SNAKE_CASE   :		List[Any]       		=    num_static_categorical_features
										if cardinality and num_static_categorical_features > 0:
														if len(lowerCAmelCase_							) != num_static_categorical_features:
																		raise ValueError(
																		    'The cardinality should be a list of the same length as `num_static_categorical_features`'							)
														_SCREAMING_SNAKE_CASE   :		List[str]       		=    cardinality
										else:
														_SCREAMING_SNAKE_CASE   :		Dict       		=    [0]
										if embedding_dimension and num_static_categorical_features > 0:
														if len(lowerCAmelCase_							) != num_static_categorical_features:
																		raise ValueError(
																		    'The embedding dimension should be a list of the same length as `num_static_categorical_features`'							)
														_SCREAMING_SNAKE_CASE   :		int       		=    embedding_dimension
										else:
														_SCREAMING_SNAKE_CASE   :		List[str]       		=    [min(5_0   ,				(cat + 1) // 2							) for cat in self.cardinality]
										_SCREAMING_SNAKE_CASE   :		str       		=    num_parallel_samples

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

										_SCREAMING_SNAKE_CASE   :		Dict       		=    dropout
										_SCREAMING_SNAKE_CASE   :		Union[str, Any]       		=    attention_dropout
										_SCREAMING_SNAKE_CASE   :		Tuple       		=    activation_dropout
										_SCREAMING_SNAKE_CASE   :		Union[str, Any]       		=    encoder_layerdrop
										_SCREAMING_SNAKE_CASE   :		List[str]       		=    decoder_layerdrop

										_SCREAMING_SNAKE_CASE   :		Dict       		=    activation_function
										_SCREAMING_SNAKE_CASE   :		str       		=    init_std

										_SCREAMING_SNAKE_CASE   :		Tuple       		=    use_cache

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







						@property
						def 			A      (    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
										)

