





"""simple docstring"""






import warnings
from typing import List, Optional, Union

from ...image_utils import ImageInput
from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, PreTokenizedInput, TextInput, TruncationStrategy
from ...utils import TensorType




class 				__lowercase			(			_UpperCamelCase							):







					'''simple docstring'''




					__lowerCAmelCase  =  ['''image_processor''', '''tokenizer''']
					__lowerCAmelCase  =  '''FlavaImageProcessor'''
					__lowerCAmelCase  =  ('''BertTokenizer''', '''BertTokenizerFast''')







					def __init__(						self	,			_UpperCAmelCase=None	,			_UpperCAmelCase=None	,			**_UpperCAmelCase     ):
									__a :						str			       =  None
									if "feature_extractor" in kwargs:
													warnings.warn(
													    '''The `feature_extractor` argument is deprecated and will be removed in v5, use `image_processor`'''
													    ''' instead.'''	,			_UpperCAmelCase	,			)
													__a :						Optional[Any]			       =  kwargs.pop('''feature_extractor'''     )

									__a :						Tuple			       =  image_processor if image_processor is not None else feature_extractor
									if image_processor is None:
													raise ValueError('''You need to specify an `image_processor`.'''     )
									if tokenizer is None:
													raise ValueError('''You need to specify a `tokenizer`.'''     )

									super().__init__(_UpperCAmelCase	,			_UpperCAmelCase     )
									__a :						Optional[Any]			       =  self.image_processor







					def __call__(						self	,			_UpperCAmelCase = None	,			_UpperCAmelCase = None	,			_UpperCAmelCase = True	,			_UpperCAmelCase = False	,			_UpperCAmelCase = False	,			_UpperCAmelCase = None	,			_UpperCAmelCase = 0	,			_UpperCAmelCase = None	,			_UpperCAmelCase = None	,			_UpperCAmelCase = None	,			_UpperCAmelCase = None	,			_UpperCAmelCase = None	,			_UpperCAmelCase = False	,			_UpperCAmelCase = False	,			_UpperCAmelCase = False	,			_UpperCAmelCase = False	,			_UpperCAmelCase = True	,			_UpperCAmelCase = None	,			**_UpperCAmelCase	,			):

									if text is None and images is None:
													raise ValueError('''You have to specify either text or images. Both cannot be none.'''     )

									if text is not None:
													__a :						List[str]			       =  self.tokenizer(
													    text=_UpperCAmelCase	,			add_special_tokens=_UpperCAmelCase	,			padding=_UpperCAmelCase	,			truncation=_UpperCAmelCase	,			max_length=_UpperCAmelCase	,			stride=_UpperCAmelCase	,			pad_to_multiple_of=_UpperCAmelCase	,			return_token_type_ids=_UpperCAmelCase	,			return_attention_mask=_UpperCAmelCase	,			return_overflowing_tokens=_UpperCAmelCase	,			return_special_tokens_mask=_UpperCAmelCase	,			return_offsets_mapping=_UpperCAmelCase	,			return_length=_UpperCAmelCase	,			verbose=_UpperCAmelCase	,			return_tensors=_UpperCAmelCase	,			**_UpperCAmelCase	,			)
									if images is not None:
													__a :						Any			       =  self.image_processor(
													    _UpperCAmelCase	,			return_image_mask=_UpperCAmelCase	,			return_codebook_pixels=_UpperCAmelCase	,			return_tensors=_UpperCAmelCase	,			**_UpperCAmelCase	,			)

									if text is not None and images is not None:
													encoding.update(_UpperCAmelCase     )
													return encoding
									elif text is not None:
													return encoding
									else:
													return BatchEncoding(data=dict(**_UpperCAmelCase     )	,			tensor_type=_UpperCAmelCase     )







					def  _lowerCamelCase		(						self	,			*_UpperCAmelCase	,			**_UpperCAmelCase     ):
									return self.tokenizer.batch_decode(*_UpperCAmelCase	,			**_UpperCAmelCase     )







					def  _lowerCamelCase		(						self	,			*_UpperCAmelCase	,			**_UpperCAmelCase     ):
									return self.tokenizer.decode(*_UpperCAmelCase	,			**_UpperCAmelCase     )







					@property
					def  _lowerCamelCase		(						self     ):
									__a :						List[str]			       =  self.tokenizer.model_input_names
									__a :						int			       =  self.image_processor.model_input_names
									return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names     )     )







					@property
					def  _lowerCamelCase		(						self     ):
									warnings.warn(
									    '''`feature_extractor_class` is deprecated and will be removed in v5. Use `image_processor_class` instead.'''	,			_UpperCAmelCase	,			)
									return self.image_processor_class







					@property
					def  _lowerCamelCase		(						self     ):
									warnings.warn(
									    '''`feature_extractor` is deprecated and will be removed in v5. Use `image_processor` instead.'''	,			_UpperCAmelCase	,			)
									return self.image_processor






"""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
									)