


"""simple docstring"""






import unittest

import numpy as np

from transformers import BlipTextConfig
from transformers.testing_utils import require_torch, slow, torch_device
from transformers.utils import is_torch_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask


if is_torch_available():
					import torch

					from transformers import BlipTextModel
					from transformers.models.blip.modeling_blip import BLIP_PRETRAINED_MODEL_ARCHIVE_LIST


class 			SCREAMING_SNAKE_CASE_  :




							'''simple docstring'''





							def __init__(						self	,					lowerCamelCase__	,					lowerCamelCase__=12	,					lowerCamelCase__=7	,					lowerCamelCase__=True	,					lowerCamelCase__=True	,					lowerCamelCase__=True	,					lowerCamelCase__=99	,					lowerCamelCase__=32	,					lowerCamelCase__=32	,					lowerCamelCase__=5	,					lowerCamelCase__=4	,					lowerCamelCase__=37	,					lowerCamelCase__=0.1	,					lowerCamelCase__=0.1	,					lowerCamelCase__=512	,					lowerCamelCase__=0.02	,					lowerCamelCase__=0	,					lowerCamelCase__=None	,					)   ->	Any:







								'''simple docstring'''




								snake_case__  :						Optional[int]		=      parent
								snake_case__  :						str		=      batch_size
								snake_case__  :						Optional[int]		=      seq_length
								snake_case__  :						Optional[int]		=      is_training
								snake_case__  :						str		=      use_input_mask
								snake_case__  :						Any		=      use_labels
								snake_case__  :						Tuple		=      vocab_size
								snake_case__  :						Optional[Any]		=      hidden_size
								snake_case__  :						List[str]		=      projection_dim
								snake_case__  :						List[Any]		=      num_hidden_layers
								snake_case__  :						List[str]		=      num_attention_heads
								snake_case__  :						Optional[Any]		=      intermediate_size
								snake_case__  :						Any		=      dropout
								snake_case__  :						Optional[int]		=      attention_dropout
								snake_case__  :						List[Any]		=      max_position_embeddings
								snake_case__  :						Optional[Any]		=      initializer_range
								snake_case__  :						Tuple		=      scope
								snake_case__  :						int		=      bos_token_id




							def        UpperCAmelCase (						self)   ->	Tuple:







								'''simple docstring'''




								snake_case__  :						Optional[int]		=      ids_tensor([self.batch_size, self.seq_length]	,					self.vocab_size)

								snake_case__  :						List[str]		=      None
								if self.use_input_mask:
									snake_case__  :						List[Any]		=      random_attention_mask([self.batch_size, self.seq_length])

								if input_mask is not None:
									snake_case__,					snake_case__  :						str		=      input_mask.shape
									snake_case__  :						List[Any]		=      np.random.randint(1	,					seq_length - 1	,					size=(batch_size,))
									for batch_idx, start_index in enumerate(lowerCamelCase__):
										snake_case__  :						Tuple		=      1
										snake_case__  :						List[str]		=      0

								snake_case__  :						str		=      self.get_config()

								return config, input_ids, input_mask




							def        UpperCAmelCase (						self)   ->	Dict:







								'''simple docstring'''




								return BlipTextConfig(
								    vocab_size=self.vocab_size	,					hidden_size=self.hidden_size	,					projection_dim=self.projection_dim	,					num_hidden_layers=self.num_hidden_layers	,					num_attention_heads=self.num_attention_heads	,					intermediate_size=self.intermediate_size	,					dropout=self.dropout	,					attention_dropout=self.attention_dropout	,					max_position_embeddings=self.max_position_embeddings	,					initializer_range=self.initializer_range	,					bos_token_id=self.bos_token_id	,					)




							def        UpperCAmelCase (						self	,					lowerCamelCase__	,					lowerCamelCase__	,					lowerCamelCase__)   ->	Optional[int]:







								'''simple docstring'''




								snake_case__  :						Union[str, Any]		=      BlipTextModel(config=lowerCamelCase__)
								model.to(lowerCamelCase__)
								model.eval()
								with torch.no_grad():
									snake_case__  :						Union[str, Any]		=      model(lowerCamelCase__	,					attention_mask=lowerCamelCase__)
									snake_case__  :						Optional[int]		=      model(lowerCamelCase__)
								self.parent.assertEqual(result.last_hidden_state.shape	,					(self.batch_size, self.seq_length, self.hidden_size))
								self.parent.assertEqual(result.pooler_output.shape	,					(self.batch_size, self.hidden_size))







							def        UpperCAmelCase (						self)   ->	Union[str, Any]:







								'''simple docstring'''




								snake_case__  :						Any		=      self.prepare_config_and_inputs()
								snake_case__,					snake_case__,					snake_case__  :						Tuple		=      config_and_inputs
								snake_case__  :						Dict		=      {"input_ids": input_ids, "attention_mask": input_mask}
								return config, inputs_dict


@require_torch
class 			SCREAMING_SNAKE_CASE_  (   _lowercase	,      unittest.TestCase):




							'''simple docstring'''





							__magic_name__					:     Tuple				  =  (BlipTextModel,) if is_torch_available() else ()
							__magic_name__					:     Tuple				  =  False
							__magic_name__					:     Tuple				  =  False
							__magic_name__					:     int				  =  False




							def        UpperCAmelCase (						self)   ->	Tuple:







								'''simple docstring'''




								snake_case__  :						List[Any]		=      BlipTextModelTester(self)
								snake_case__  :						Any		=      ConfigTester(self	,					config_class=lowerCamelCase__	,					hidden_size=37)




							def        UpperCAmelCase (						self)   ->	str:







								'''simple docstring'''




								self.config_tester.run_common_tests()




							def        UpperCAmelCase (						self)   ->	Dict:







								'''simple docstring'''




								snake_case__  :						Optional[Any]		=      self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_model(*lowerCamelCase__)




							def        UpperCAmelCase (						self)   ->	Union[str, Any]:







								'''simple docstring'''




								pass




							def        UpperCAmelCase (						self)   ->	Optional[Any]:







								'''simple docstring'''




								pass




							@unittest.skip(reason="Blip does not use inputs_embeds")
							def        UpperCAmelCase (						self)   ->	str:







								'''simple docstring'''




								pass




							@unittest.skip(reason="BlipTextModel has no base class and is not available in MODEL_MAPPING")
							def        UpperCAmelCase (						self)   ->	int:







								'''simple docstring'''




								pass




							@unittest.skip(reason="BlipTextModel has no base class and is not available in MODEL_MAPPING")
							def        UpperCAmelCase (						self)   ->	int:







								'''simple docstring'''




								pass




							@slow
							def        UpperCAmelCase (						self)   ->	List[str]:







								'''simple docstring'''




								for model_name in BLIP_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
									snake_case__  :						Optional[int]		=      BlipTextModel.from_pretrained(lowerCamelCase__)
									self.assertIsNotNone(lowerCamelCase__)







							def        UpperCAmelCase (						self)   ->	str:







								'''simple docstring'''




								super().test_pt_tf_model_equivalence(allow_missing_keys=lowerCamelCase__)






from typing import TYPE_CHECKING

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


snake_case__						      =			{
    'configuration_dpr': ['DPR_PRETRAINED_CONFIG_ARCHIVE_MAP', 'DPRConfig'],
    'tokenization_dpr': [
        'DPRContextEncoderTokenizer',
        'DPRQuestionEncoderTokenizer',
        'DPRReaderOutput',
        'DPRReaderTokenizer',
    ],
}


try:
     if not is_tokenizers_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     snake_case__						      =			[
         'DPRContextEncoderTokenizerFast',
         'DPRQuestionEncoderTokenizerFast',
         'DPRReaderTokenizerFast',
     ]

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     snake_case__						      =			[
         'DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
         'DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
         'DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST',
         'DPRContextEncoder',
         'DPRPretrainedContextEncoder',
         'DPRPreTrainedModel',
         'DPRPretrainedQuestionEncoder',
         'DPRPretrainedReader',
         'DPRQuestionEncoder',
         'DPRReader',
     ]

try:
     if not is_tf_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     snake_case__						      =			[
         'TF_DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
         'TF_DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
         'TF_DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST',
         'TFDPRContextEncoder',
         'TFDPRPretrainedContextEncoder',
         'TFDPRPretrainedQuestionEncoder',
         'TFDPRPretrainedReader',
         'TFDPRQuestionEncoder',
         'TFDPRReader',
     ]


if TYPE_CHECKING:
     from .configuration_dpr import DPR_PRETRAINED_CONFIG_ARCHIVE_MAP, DPRConfig
     from .tokenization_dpr import (
         DPRContextEncoderTokenizer,
         DPRQuestionEncoderTokenizer,
         DPRReaderOutput,
         DPRReaderTokenizer,
     )

     try:
          if not is_tokenizers_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .tokenization_dpr_fast import (
              DPRContextEncoderTokenizerFast,
              DPRQuestionEncoderTokenizerFast,
              DPRReaderTokenizerFast,
          )

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_dpr import (
              DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
              DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
              DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST,
              DPRContextEncoder,
              DPRPretrainedContextEncoder,
              DPRPreTrainedModel,
              DPRPretrainedQuestionEncoder,
              DPRPretrainedReader,
              DPRQuestionEncoder,
              DPRReader,
          )

     try:
          if not is_tf_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_tf_dpr import (
              TF_DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
              TF_DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
              TF_DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST,
              TFDPRContextEncoder,
              TFDPRPretrainedContextEncoder,
              TFDPRPretrainedQuestionEncoder,
              TFDPRPretrainedReader,
              TFDPRQuestionEncoder,
              TFDPRReader,
          )

else:
     import sys

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