


import math
from typing import Optional

import numpy as np

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


__a	 =      logging.get_logger(__name__)

__a	 =      {
    """facebook/encodec_24khz""": """https://huggingface.co/facebook/encodec_24khz/resolve/main/config.json""",
    """facebook/encodec_48khz""": """https://huggingface.co/facebook/encodec_48khz/resolve/main/config.json""",
}






class 	__lowercase					(	__snake_case	):
      UpperCamelCase										=							'''encodec'''





      def __init__(		self    :       List[Any]       ,							__lowerCamelCase    :       List[str]=[1.5, 3.0, 6.0, 12.0, 24.0]       ,							__lowerCamelCase    :       Optional[int]=2_4_0_0_0       ,							__lowerCamelCase    :       Optional[Any]=1       ,							__lowerCamelCase    :       List[str]=False       ,							__lowerCamelCase    :       int=None       ,							__lowerCamelCase    :       Optional[int]=None       ,							__lowerCamelCase    :       Optional[Any]=1_2_8       ,							__lowerCamelCase    :       Tuple=3_2       ,							__lowerCamelCase    :       int=1       ,							__lowerCamelCase    :       Union[str, Any]=[8, 5, 4, 2]       ,							__lowerCamelCase    :       Tuple="weight_norm"       ,							__lowerCamelCase    :       List[Any]=7       ,							__lowerCamelCase    :       str=7       ,							__lowerCamelCase    :       Optional[Any]=3       ,							__lowerCamelCase    :       Optional[int]=2       ,							__lowerCamelCase    :       Dict=True       ,							__lowerCamelCase    :       List[str]="reflect"       ,							__lowerCamelCase    :       List[Any]=2       ,							__lowerCamelCase    :       Optional[Any]=2       ,							__lowerCamelCase    :       List[str]=1.0       ,							__lowerCamelCase    :       str=1_0_2_4       ,							__lowerCamelCase    :       List[str]=None       ,							__lowerCamelCase    :       Union[str, Any]=True       ,							**__lowerCamelCase    :       Tuple       ,							)     -> Any:






         """simple docstring"""







         UpperCAmelCase      					=  target_bandwidths
         UpperCAmelCase      					=  sampling_rate
         UpperCAmelCase      					=  audio_channels
         UpperCAmelCase      					=  normalize
         UpperCAmelCase      					=  chunk_length_s
         UpperCAmelCase      					=  overlap
         UpperCAmelCase      					=  hidden_size
         UpperCAmelCase      					=  num_filters
         UpperCAmelCase      					=  num_residual_layers
         UpperCAmelCase      					=  upsampling_ratios
         UpperCAmelCase      					=  norm_type
         UpperCAmelCase      					=  kernel_size
         UpperCAmelCase      					=  last_kernel_size
         UpperCAmelCase      					=  residual_kernel_size
         UpperCAmelCase      					=  dilation_growth_rate
         UpperCAmelCase      					=  use_causal_conv
         UpperCAmelCase      					=  pad_mode
         UpperCAmelCase      					=  compress
         UpperCAmelCase      					=  num_lstm_layers
         UpperCAmelCase      					=  trim_right_ratio
         UpperCAmelCase      					=  codebook_size
         UpperCAmelCase      					=  codebook_dim if codebook_dim is not None else hidden_size
         UpperCAmelCase      					=  use_conv_shortcut

         if self.norm_type not in ["weight_norm", "time_group_norm"]:
            raise ValueError(
                F"""self.norm_type must be one of `\"weight_norm\"`, `\"time_group_norm\"`), got {self.norm_type}"""							)

         super().__init__(**__lowerCamelCase							)





      @property
      def 							_lowercase					(		self    :       List[str]							)     -> Optional[int]:






         """simple docstring"""







         if self.chunk_length_s is None:
            return None
         else:
            return int(self.chunk_length_s * self.sampling_rate							)





      @property
      def 							_lowercase					(		self    :       Any							)     -> Optional[int]:






         """simple docstring"""







         if self.chunk_length_s is None or self.overlap is None:
            return None
         else:
            return max(1       ,							int((1.0 - self.overlap) * self.chunk_length							)							)





      @property
      def 							_lowercase					(		self    :       Optional[int]							)     -> int:






         """simple docstring"""







         UpperCAmelCase      					=  np.prod(self.upsampling_ratios							)
         return math.ceil(self.sampling_rate / hop_length							)





      @property
      def 							_lowercase					(		self    :       Optional[int]							)     -> int:






         """simple docstring"""







         return int(1_0_0_0 * self.target_bandwidths[-1] // (self.frame_rate * 1_0)							)







import copy
import os
from typing import Union

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


__a	 =      logging.get_logger(__name__)

__a	 =      {
    """google/pix2struct-textcaps-base""": (
        """https://huggingface.co/google/pix2struct-textcaps-base/resolve/main/config.json"""
    ),
}






class 	__lowercase					(	__snake_case	):
      UpperCamelCase										=							'''pix2struct_text_model'''
      UpperCamelCase										=							['''past_key_values''']
      UpperCamelCase										=							{
          '''hidden_size''': '''hidden_size''',
          '''num_attention_heads''': '''num_heads''',
          '''num_hidden_layers''': '''num_layers''',
      }





      def __init__(		self    :       Optional[Any]       ,							__lowerCamelCase    :       Optional[int]=5_0_2_4_4       ,							__lowerCamelCase    :       int=7_6_8       ,							__lowerCamelCase    :       Union[str, Any]=6_4       ,							__lowerCamelCase    :       Dict=2_0_4_8       ,							__lowerCamelCase    :       int=1_2       ,							__lowerCamelCase    :       Any=1_2       ,							__lowerCamelCase    :       Union[str, Any]=3_2       ,							__lowerCamelCase    :       Any=1_2_8       ,							__lowerCamelCase    :       Union[str, Any]=0.1       ,							__lowerCamelCase    :       str=1e-6       ,							__lowerCamelCase    :       int=1.0       ,							__lowerCamelCase    :       Optional[int]="gelu_new"       ,							__lowerCamelCase    :       int=0       ,							__lowerCamelCase    :       int=False       ,							__lowerCamelCase    :       Optional[Any]=0       ,							__lowerCamelCase    :       Dict=1       ,							__lowerCamelCase    :       List[Any]=False       ,							__lowerCamelCase    :       Optional[Any]=True       ,							**__lowerCamelCase    :       Dict       ,							)     -> int:






         """simple docstring"""







         UpperCAmelCase      					=  vocab_size
         UpperCAmelCase      					=  hidden_size
         UpperCAmelCase      					=  d_kv
         UpperCAmelCase      					=  d_ff
         UpperCAmelCase      					=  num_layers
         UpperCAmelCase      					=  num_heads
         UpperCAmelCase      					=  relative_attention_num_buckets
         UpperCAmelCase      					=  relative_attention_max_distance
         UpperCAmelCase      					=  dropout_rate
         UpperCAmelCase      					=  layer_norm_epsilon
         UpperCAmelCase      					=  initializer_factor
         UpperCAmelCase      					=  use_cache

         UpperCAmelCase      					=  eos_token_id
         UpperCAmelCase      					=  decoder_start_token_id

         # for backwards compatibility
         UpperCAmelCase      					=  dense_act_fn

         super().__init__(
             pad_token_id=__lowerCamelCase       ,							eos_token_id=__lowerCamelCase       ,							decoder_start_token_id=__lowerCamelCase       ,							tie_word_embeddings=__lowerCamelCase       ,							is_decoder=__lowerCamelCase       ,							**__lowerCamelCase       ,							)





      @classmethod
      def 							_lowercase					(		cls    :       List[Any]       ,							__lowerCamelCase    :       Union[str, os.PathLike]       ,							**__lowerCamelCase    :       Any							)     -> "PretrainedConfig":






         """simple docstring"""







         cls._set_token_in_kwargs(__lowerCamelCase							)

         UpperCAmelCase					,	UpperCAmelCase      					=  cls.get_config_dict(__lowerCamelCase       ,							**__lowerCamelCase							)

         # get the text config dict if we are loading from Pix2StructConfig
         if config_dict.get("""model_type"""							) == "pix2struct":
            UpperCAmelCase      					=  config_dict["""text_config"""]

         if "model_type" in config_dict and hasattr(cls       ,							"""model_type"""							) and config_dict["model_type"] != cls.model_type:
            logger.warning(
                F"""You are using a model of type {config_dict['model_type']} to instantiate a model of type """
                F"""{cls.model_type}. This is not supported for all configurations of models and can yield errors."""							)

         return cls.from_dict(__lowerCamelCase       ,							**__lowerCamelCase							)






class 	__lowercase					(	__snake_case	):
      UpperCamelCase										=							'''pix2struct_vision_model'''





      def __init__(		self    :       str       ,							__lowerCamelCase    :       Any=7_6_8       ,							__lowerCamelCase    :       Dict=7_6_8       ,							__lowerCamelCase    :       List[Any]=2_0_4_8       ,							__lowerCamelCase    :       List[Any]=6_4       ,							__lowerCamelCase    :       Union[str, Any]=1_2       ,							__lowerCamelCase    :       Optional[int]=1_2       ,							__lowerCamelCase    :       Tuple="gelu_new"       ,							__lowerCamelCase    :       Tuple=1e-6       ,							__lowerCamelCase    :       Any=0.0       ,							__lowerCamelCase    :       List[Any]=0.0       ,							__lowerCamelCase    :       int=1e-1_0       ,							__lowerCamelCase    :       Union[str, Any]=1.0       ,							__lowerCamelCase    :       Any=4_0_9_6       ,							__lowerCamelCase    :       Dict=3_2       ,							__lowerCamelCase    :       Any=1_2_8       ,							**__lowerCamelCase    :       Optional[int]       ,							)     -> Optional[Any]:






         """simple docstring"""







         super().__init__(**__lowerCamelCase							)

         UpperCAmelCase      					=  hidden_size
         UpperCAmelCase      					=  patch_embed_hidden_size
         UpperCAmelCase      					=  d_ff
         UpperCAmelCase      					=  dropout_rate
         UpperCAmelCase      					=  num_hidden_layers
         UpperCAmelCase      					=  num_attention_heads
         UpperCAmelCase      					=  initializer_range
         UpperCAmelCase      					=  initializer_factor
         UpperCAmelCase      					=  attention_dropout
         UpperCAmelCase      					=  layer_norm_eps
         UpperCAmelCase      					=  dense_act_fn
         UpperCAmelCase      					=  seq_len
         UpperCAmelCase      					=  relative_attention_num_buckets
         UpperCAmelCase      					=  relative_attention_max_distance
         UpperCAmelCase      					=  d_kv





      @classmethod
      def 							_lowercase					(		cls    :       Any       ,							__lowerCamelCase    :       Union[str, os.PathLike]       ,							**__lowerCamelCase    :       int							)     -> "PretrainedConfig":






         """simple docstring"""







         cls._set_token_in_kwargs(__lowerCamelCase							)

         UpperCAmelCase					,	UpperCAmelCase      					=  cls.get_config_dict(__lowerCamelCase       ,							**__lowerCamelCase							)

         # get the vision config dict if we are loading from Pix2StructConfig
         if config_dict.get("""model_type"""							) == "pix2struct":
            UpperCAmelCase      					=  config_dict["""vision_config"""]

         if "model_type" in config_dict and hasattr(cls       ,							"""model_type"""							) and config_dict["model_type"] != cls.model_type:
            logger.warning(
                F"""You are using a model of type {config_dict['model_type']} to instantiate a model of type """
                F"""{cls.model_type}. This is not supported for all configurations of models and can yield errors."""							)

         return cls.from_dict(__lowerCamelCase       ,							**__lowerCamelCase							)






class 	__lowercase					(	__snake_case	):
      UpperCamelCase										=							'''pix2struct'''
      UpperCamelCase										=							True





      def __init__(		self    :       str       ,							__lowerCamelCase    :       str=None       ,							__lowerCamelCase    :       Dict=None       ,							__lowerCamelCase    :       Optional[Any]=1.0       ,							__lowerCamelCase    :       str=0.02       ,							__lowerCamelCase    :       Any=False       ,							__lowerCamelCase    :       Tuple=False       ,							__lowerCamelCase    :       str=True       ,							**__lowerCamelCase    :       Dict       ,							)     -> Optional[Any]:






         """simple docstring"""







         super().__init__(tie_word_embeddings=__lowerCamelCase       ,							is_encoder_decoder=__lowerCamelCase       ,							**__lowerCamelCase							)

         if text_config is None:
            UpperCAmelCase      					=  {}
            logger.info("""text_config is None. Initializing the Pix2StructTextConfig with default values."""							)

         if vision_config is None:
            UpperCAmelCase      					=  {}
            logger.info("""vision_config is None. Initializing the Pix2StructVisionConfig with default values."""							)

         UpperCAmelCase      					=  PixaStructTextConfig(**__lowerCamelCase							)
         UpperCAmelCase      					=  PixaStructVisionConfig(**__lowerCamelCase							)

         UpperCAmelCase      					=  self.text_config.decoder_start_token_id
         UpperCAmelCase      					=  self.text_config.pad_token_id
         UpperCAmelCase      					=  self.text_config.eos_token_id

         UpperCAmelCase      					=  initializer_factor
         UpperCAmelCase      					=  initializer_range

         UpperCAmelCase      					=  self.initializer_range
         UpperCAmelCase      					=  self.initializer_range

         UpperCAmelCase      					=  is_vqa





      @classmethod
      def 							_lowercase					(		cls    :       List[Any]       ,							__lowerCamelCase    :       PixaStructTextConfig       ,							__lowerCamelCase    :       PixaStructVisionConfig       ,							**__lowerCamelCase    :       Dict							)     -> Union[str, Any]:






         """simple docstring"""







         return cls(text_config=text_config.to_dict()       ,							vision_config=vision_config.to_dict()       ,							**__lowerCamelCase							)





      def 							_lowercase					(		self    :       List[str]							)     -> Optional[int]:






         """simple docstring"""







         UpperCAmelCase      					=  copy.deepcopy(self.__dict__							)
         UpperCAmelCase      					=  self.text_config.to_dict()
         UpperCAmelCase      					=  self.vision_config.to_dict()
         UpperCAmelCase      					=  self.__class__.model_type
         return output



