
"""simple docstring"""
from __future__ import annotations

import unittest

import numpy as np

from transformers import BlipTextConfig
from transformers.testing_utils import require_tf, slow
from transformers.utils import is_tf_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_tf_common import TFModelTesterMixin, ids_tensor, random_attention_mask


if is_tf_available():
      import tensorflow as tf

      from transformers import TFBlipTextModel
      from transformers.models.blip.modeling_tf_blip import TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST
class 			UpperCamelCase      :
     def __init__(     self  ,     snake_case__  ,     snake_case__=12  ,     snake_case__=7  ,     snake_case__=True  ,     snake_case__=True  ,     snake_case__=True  ,     snake_case__=99  ,     snake_case__=32  ,     snake_case__=32  ,     snake_case__=2  ,     snake_case__=4  ,     snake_case__=37  ,     snake_case__=0.1  ,     snake_case__=0.1  ,     snake_case__=512  ,     snake_case__=0.02  ,     snake_case__=0  ,     snake_case__=None  ,     ):




       """simple docstring"""


       _SCREAMING_SNAKE_CASE   :				List[str]							    = parent
       _SCREAMING_SNAKE_CASE   :				Tuple							    = batch_size
       _SCREAMING_SNAKE_CASE   :				Any							    = seq_length
       _SCREAMING_SNAKE_CASE   :				Dict							    = is_training
       _SCREAMING_SNAKE_CASE   :				List[str]							    = use_input_mask
       _SCREAMING_SNAKE_CASE   :				Any							    = use_labels
       _SCREAMING_SNAKE_CASE   :				str							    = vocab_size
       _SCREAMING_SNAKE_CASE   :				Any							    = hidden_size
       _SCREAMING_SNAKE_CASE   :				List[Any]							    = projection_dim
       _SCREAMING_SNAKE_CASE   :				Tuple							    = num_hidden_layers
       _SCREAMING_SNAKE_CASE   :				Any							    = num_attention_heads
       _SCREAMING_SNAKE_CASE   :				List[Any]							    = intermediate_size
       _SCREAMING_SNAKE_CASE   :				Union[str, Any]							    = dropout
       _SCREAMING_SNAKE_CASE   :				Any							    = attention_dropout
       _SCREAMING_SNAKE_CASE   :				Dict							    = max_position_embeddings
       _SCREAMING_SNAKE_CASE   :				str							    = initializer_range
       _SCREAMING_SNAKE_CASE   :				List[str]							    = scope
       _SCREAMING_SNAKE_CASE   :				List[str]							    = bos_token_id
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       _SCREAMING_SNAKE_CASE   :				List[Any]							    = ids_tensor([self.batch_size, self.seq_length]  ,     self.vocab_size				)

       _SCREAMING_SNAKE_CASE   :				int							    = None
       if self.use_input_mask:
         _SCREAMING_SNAKE_CASE   :				str							    = random_attention_mask([self.batch_size, self.seq_length]				)

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

       _SCREAMING_SNAKE_CASE   :				Optional[Any]							    = self.get_config()

       return config, input_ids, tf.convert_to_tensor(snake_case__				)
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """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 				__SCREAMING_SNAKE_CASE							(     self  ,     snake_case__  ,     snake_case__  ,     snake_case__				):




       """simple docstring"""


       _SCREAMING_SNAKE_CASE   :				Union[str, Any]							    = TFBlipTextModel(config=snake_case__				)
       _SCREAMING_SNAKE_CASE   :				List[str]							    = model(snake_case__  ,     attention_mask=snake_case__  ,     training=snake_case__				)
       _SCREAMING_SNAKE_CASE   :				int							    = model(snake_case__  ,     training=snake_case__				)
       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 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       _SCREAMING_SNAKE_CASE   :				List[str]							    = self.prepare_config_and_inputs()
       _SCREAMING_SNAKE_CASE    ,		_SCREAMING_SNAKE_CASE    ,		_SCREAMING_SNAKE_CASE   :				Optional[int]							    = config_and_inputs
       _SCREAMING_SNAKE_CASE   :				Union[str, Any]							    = {"input_ids": input_ids, "attention_mask": input_mask}
       return config, inputs_dict
@require_tf
class 			UpperCamelCase      (							__SCREAMING_SNAKE_CASE      ,       unittest.TestCase  ):
     A__      =			(TFBlipTextModel,) if is_tf_available() else ()
     A__      =			False
     A__      =			False
     A__      =			False
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       _SCREAMING_SNAKE_CASE   :				str							    = BlipTextModelTester(self				)
       _SCREAMING_SNAKE_CASE   :				Optional[Any]							    = ConfigTester(self  ,     config_class=snake_case__  ,     hidden_size=37				)
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       self.config_tester.run_common_tests()
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       _SCREAMING_SNAKE_CASE   :				Optional[Any]							    = self.model_tester.prepare_config_and_inputs()
       self.model_tester.create_and_check_model(*snake_case__				)
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       pass
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       pass
     @unittest.skip(reason="Blip does not use inputs_embeds"				)
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       pass
     @unittest.skip(reason="BlipTextModel has no base class and is not available in MODEL_MAPPING"				)
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       pass
     @unittest.skip(reason="BlipTextModel has no base class and is not available in MODEL_MAPPING"				)
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       pass
     @slow
     def 				__SCREAMING_SNAKE_CASE							(     self				):




       """simple docstring"""


       for model_name in TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
         _SCREAMING_SNAKE_CASE   :				Optional[int]							    = TFBlipTextModel.from_pretrained(snake_case__				)
         self.assertIsNotNone(snake_case__				)




     def 				__SCREAMING_SNAKE_CASE							(     self  ,     snake_case__=True				):




       """simple docstring"""


       super().test_pt_tf_model_equivalence(allow_missing_keys=snake_case__				)





"""simple docstring"""
def    _lowerCAmelCase    (     lowerCamelCase__							:							str,						lowerCamelCase__							:							str				)  ->    Union[str, Any]:
  print("\nThe shortest path matrix using Floyd Warshall algorithm\n"				)
  for i in range(lowerCamelCase__				):
    for j in range(lowerCamelCase__				):
      if dist[i][j] != float("inf"				):
        print(int(dist[i][j]				),						end="\t"				)
      else:
        print("INF",						end="\t"				)
    print()





def    _lowerCAmelCase    (     lowerCamelCase__							:							Dict,						lowerCamelCase__							:							Any				)  ->    List[str]:
  _SCREAMING_SNAKE_CASE   :				List[Any]							    = [[float("inf"				) for _ in range(lowerCamelCase__				)] for _ in range(lowerCamelCase__				)]

  for i in range(lowerCamelCase__				):
    for j in range(lowerCamelCase__				):
      _SCREAMING_SNAKE_CASE   :				List[Any]							    = graph[i][j]

      # check vertex k against all other vertices (i, j)
  for k in range(lowerCamelCase__				):
    # looping through rows of graph array
    for i in range(lowerCamelCase__				):
      # looping through columns of graph array
      for j in range(lowerCamelCase__				):
        if (
            dist[i][k] != float("inf"				)
            and dist[k][j] != float("inf"				)
            and dist[i][k] + dist[k][j] < dist[i][j]
        ):
          _SCREAMING_SNAKE_CASE   :				List[Any]							    = dist[i][k] + dist[k][j]

  _print_dist(lowerCamelCase__,						lowerCamelCase__				)
  return dist, v


if __name__ == "__main__":
      lowercase_       :						Tuple     					=	int(input('''Enter number of vertices: '''))
      lowercase_       :						List[Any]     					=	int(input('''Enter number of edges: '''))

      lowercase_       :						Optional[Any]     					=	[[float('''inf''') for i in range(v)] for j in range(v)]

      for i in range(v):
            lowercase_       :						Tuple     					=	0.0

            # src and dst are indices that must be within the array size graph[e][v]
            # failure to follow this will result in an error
      for i in range(e):
            print('''\nEdge ''', i + 1)
            lowercase_       :						str     					=	int(input('''Enter source:'''))
            lowercase_       :						Optional[Any]     					=	int(input('''Enter destination:'''))
            lowercase_       :						Union[str, Any]     					=	float(input('''Enter weight:'''))
            lowercase_       :						str     					=	weight

      floyd_warshall(graph, v)

      # Example Input
      # Enter number of vertices: 3
      # Enter number of edges: 2

      # # generated graph from vertex and edge inputs
      # [[inf, inf, inf], [inf, inf, inf], [inf, inf, inf]]
      # [[0.0, inf, inf], [inf, 0.0, inf], [inf, inf, 0.0]]

      # specify source, destination and weight for edge #1
      # Edge  1
      # Enter source:1
      # Enter destination:2
      # Enter weight:2

      # specify source, destination and weight for edge #2
      # Edge  2
      # Enter source:2
      # Enter destination:1
      # Enter weight:1

      # # Expected Output from the vertice, edge and src, dst, weight inputs!!
      # 0		INF	INF
      # INF	0	2
      # INF	1	0



