code: 
  
  
  from typing import Any, Dict, List, Mapping
  
  import numpy as np
  import torch
  
  from ...utils import is_cython_available, requires_backends
  
  
  if is_cython_available():
      import pyximport
  
      pyximport.install(setup_args={'''include_dirs''': np.get_include()})
      from . import algos_graphormer  # noqa E402
  
  
  
  
  
  
  def 		_A		(		_lowercase				,     _lowercase = 5_12   )				->   str:
  
  
       """simple docstring"""
  
  
       __UpperCamelCase   = x.shape[1] if len(x.shape   ) > 1 else 1
       __UpperCamelCase   = 1 + np.arange(0				,     feature_num * offset				,     _lowercase				,     dtype=np.intaa   )
       __UpperCamelCase   = x + feature_offset
       return x
  
  
  
  
  
  
  def 		_A		(		_lowercase				,     _lowercase=True   )				->   str:
  
  
       """simple docstring"""
  
  
       requires_backends(_lowercase				,     ['cython']   )
  
       if keep_features and "edge_attr" in item.keys():  # edge_attr
            __UpperCamelCase   = np.asarray(item['edge_attr']				,     dtype=np.intaa   )
       else:
            __UpperCamelCase   = np.ones((len(item['edge_index'][0]   ), 1)				,     dtype=np.intaa   )  # same embedding for all
  
       if keep_features and "node_feat" in item.keys():  # input_nodes
            __UpperCamelCase   = np.asarray(item['node_feat']				,     dtype=np.intaa   )
       else:
            __UpperCamelCase   = np.ones((item['num_nodes'], 1)				,     dtype=np.intaa   )  # same embedding for all
  
       __UpperCamelCase   = np.asarray(item['edge_index']				,     dtype=np.intaa   )
  
       __UpperCamelCase   = convert_to_single_emb(_lowercase   ) + 1
       __UpperCamelCase   = item['num_nodes']
  
       if len(edge_attr.shape   ) == 1:
            __UpperCamelCase   = edge_attr[:, None]
       __UpperCamelCase   = np.zeros([num_nodes, num_nodes, edge_attr.shape[-1]]				,     dtype=np.intaa   )
       __UpperCamelCase   = convert_to_single_emb(_lowercase   ) + 1
  
       # node adj matrix [num_nodes, num_nodes] bool
       __UpperCamelCase   = np.zeros([num_nodes, num_nodes]				,     dtype=_lowercase   )
       __UpperCamelCase   = True
  
       __UpperCamelCase,						__UpperCamelCase   = algos_graphormer.floyd_warshall(_lowercase   )
       __UpperCamelCase   = np.amax(_lowercase   )
  
       __UpperCamelCase   = algos_graphormer.gen_edge_input(_lowercase				,     _lowercase				,     _lowercase   )
       __UpperCamelCase   = np.zeros([num_nodes + 1, num_nodes + 1]				,     dtype=np.single   )  # with graph token
  
       # combine
       __UpperCamelCase   = input_nodes + 1  # we shift all indices by one for padding
       __UpperCamelCase   = attn_bias
       __UpperCamelCase   = attn_edge_type
       __UpperCamelCase   = shortest_path_result.astype(np.intaa   ) + 1  # we shift all indices by one for padding
       __UpperCamelCase   = np.sum(_lowercase				,     axis=1   ).reshape(-1   ) + 1  # we shift all indices by one for padding
       __UpperCamelCase   = item['in_degree']  # for undirected graph
       __UpperCamelCase   = input_edges + 1  # we shift all indices by one for padding
       if "labels" not in item:
            __UpperCamelCase   = item['y']
  
       return item
  
  
  
  class   __lowerCamelCase :
  
  
  
  
  
  
  
         def __init__( self:   int,A_:   int=20,A_:   Optional[int]=False				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              if not is_cython_available():
                   raise ImportError('Graphormer preprocessing needs Cython (pyximport)'				)
  
              __UpperCamelCase   = spatial_pos_max
              __UpperCamelCase   = on_the_fly_processing
  
  
  
  
  
  
  
         def __call__( self:   int,A_:   List[dict]				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              if self.on_the_fly_processing:
                   __UpperCamelCase   = [preprocess_item(A_				) for i in features]
  
              if not isinstance(features[0],A_				):
                   __UpperCamelCase   = [vars(A_				) for f in features]
              __UpperCamelCase   = {}
  
              __UpperCamelCase   = max(len(i['input_nodes']				) for i in features				)
              __UpperCamelCase   = len(features[0]['input_nodes'][0]				)
              __UpperCamelCase   = len(features[0]['attn_edge_type'][0][0]				)
              __UpperCamelCase   = max(len(i['input_edges'][0][0]				) for i in features				)
              __UpperCamelCase   = len(features[0]['input_edges'][0][0][0]				)
              __UpperCamelCase   = len(A_				)
  
              __UpperCamelCase   = torch.zeros(A_,max_node_num + 1,max_node_num + 1,dtype=torch.float				)
              __UpperCamelCase   = torch.zeros(A_,A_,A_,A_,dtype=torch.long				)
              __UpperCamelCase   = torch.zeros(A_,A_,A_,dtype=torch.long				)
              __UpperCamelCase   = torch.zeros(A_,A_,dtype=torch.long				)
              __UpperCamelCase   = torch.zeros(A_,A_,A_,dtype=torch.long				)
              __UpperCamelCase   = torch.zeros(
                  A_,A_,A_,A_,A_,dtype=torch.long				)
  
              for ix, f in enumerate(A_				):
                   for k in ["attn_bias", "attn_edge_type", "spatial_pos", "in_degree", "input_nodes", "input_edges"]:
                        __UpperCamelCase   = torch.tensor(f[k]				)
  
                   if len(f['attn_bias'][1:, 1:][f['spatial_pos'] >= self.spatial_pos_max]				) > 0:
                        __UpperCamelCase   = float('-inf'				)
  
                   __UpperCamelCase   = f['attn_bias']
                   __UpperCamelCase   = f[
                       'attn_edge_type'
                   ]
                   __UpperCamelCase   = f['spatial_pos']
                   __UpperCamelCase   = f['in_degree']
                   __UpperCamelCase   = f['input_nodes']
                   __UpperCamelCase   = f['input_edges']
  
              __UpperCamelCase   = batch['in_degree']
  
              __UpperCamelCase   = features[0]['labels']
              if len(A_				) == 1:  # one task
                   if isinstance(sample[0],A_				):  # regression
                        __UpperCamelCase   = torch.from_numpy(np.concatenate([i['labels'] for i in features]				)				)
                   else:  # binary classification
                        __UpperCamelCase   = torch.from_numpy(np.concatenate([i['labels'] for i in features]				)				)
              else:  # multi task classification, left to float to keep the NaNs
                   __UpperCamelCase   = torch.from_numpy(np.stack([i['labels'] for i in features],axis=0				)				)
  
              return batch
  
  
  
style_context: 
  
  
  import unittest
  
  import requests
  
  from transformers import MODEL_FOR_VISION_2_SEQ_MAPPING, TF_MODEL_FOR_VISION_2_SEQ_MAPPING, is_vision_available
  from transformers.pipelines import pipeline
  from transformers.testing_utils import (
      is_pipeline_test,
      is_torch_available,
      require_tf,
      require_torch,
      require_vision,
      slow,
  )
  
  from .test_pipelines_common import ANY
  
  
  if is_torch_available():
      from transformers.pytorch_utils import is_torch_greater_or_equal_than_1_11
  else:
      __snake_case             =	False
  
  
  if is_vision_available():
      from PIL import Image
  else:
  
  
  
      class   __lowerCamelCase :
  
  
  
  
  
  
  
             @staticmethod
             def 		snake_case_  ( *A_:   List[str],**A_:   Any				):
  
  
  
  
  
  
                  '''simple docstring'''
  
  
  
  
                  pass
  
  
  
  @is_pipeline_test
  @require_vision
  class   __lowerCamelCase (unittest.TestCase	):
         _lowercase       							=    MODEL_FOR_VISION_2_SEQ_MAPPING
         _lowercase       							=    TF_MODEL_FOR_VISION_2_SEQ_MAPPING
  
  
  
  
  
  
  
         def 		snake_case_  ( self:   Dict,A_:   int,A_:   List[str],A_:   List[str]				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model=A_,tokenizer=A_,image_processor=A_				)
              __UpperCamelCase   = [
                  Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'				),
                  './tests/fixtures/tests_samples/COCO/000000039769.png',
              ]
              return pipe, examples
  
  
  
  
  
  
  
         def 		snake_case_  ( self:   Union[str, Any],A_:   Optional[Any],A_:   Optional[int]				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipe(A_				)
              self.assertEqual(
                  A_,[
                      [{'generated_text': ANY(A_				)}],
                      [{'generated_text': ANY(A_				)}],
                  ],)
  
  
  
  
  
  
  
         @require_tf
         def 		snake_case_  ( self:   str				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='hf-internal-testing/tiny-random-vit-gpt2',framework='tf'				)
              __UpperCamelCase   = './tests/fixtures/tests_samples/COCO/000000039769.png'
  
              __UpperCamelCase   = pipe(A_				)
              self.assertEqual(
                  A_,[
                      {
                          'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
                      },
                  ],)
  
              __UpperCamelCase   = pipe([image, image]				)
              self.assertEqual(
                  A_,[
                      [
                          {
                              'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
                          }
                      ],
                      [
                          {
                              'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
                          }
                      ],
                  ],)
  
              __UpperCamelCase   = pipe(A_,max_new_tokens=1				)
              self.assertEqual(
                  A_,[{'generated_text': 'growth'}],)
  
  
  
  
  
  
  
         @require_torch
         def 		snake_case_  ( self:   Any				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='hf-internal-testing/tiny-random-vit-gpt2'				)
              __UpperCamelCase   = './tests/fixtures/tests_samples/COCO/000000039769.png'
  
              __UpperCamelCase   = pipe(A_				)
              self.assertEqual(
                  A_,[
                      {
                          'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
                      },
                  ],)
  
              __UpperCamelCase   = pipe([image, image]				)
              self.assertEqual(
                  A_,[
                      [
                          {
                              'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
                          }
                      ],
                      [
                          {
                              'generated_text': 'growthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthgrowthGOGO'
                          }
                      ],
                  ],)
  
  
  
  
  
  
  
         @require_torch
         def 		snake_case_  ( self:   str				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='hf-internal-testing/tiny-random-BlipForConditionalGeneration'				)
              __UpperCamelCase   = './tests/fixtures/tests_samples/COCO/000000039769.png'
              __UpperCamelCase   = 'a photo of'
  
              __UpperCamelCase   = pipe(A_,prompt=A_				)
              self.assertTrue(outputs[0]['generated_text'].startswith(A_				)				)
  
  
  
  
  
  
  
         @slow
         @require_torch
         def 		snake_case_  ( self:   Dict				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='ydshieh/vit-gpt2-coco-en'				)
              __UpperCamelCase   = './tests/fixtures/tests_samples/COCO/000000039769.png'
  
              __UpperCamelCase   = pipe(A_				)
              self.assertEqual(A_,[{'generated_text': 'a cat laying on a blanket next to a cat laying on a bed '}]				)
  
              __UpperCamelCase   = pipe([image, image]				)
              self.assertEqual(
                  A_,[
                      [{'generated_text': 'a cat laying on a blanket next to a cat laying on a bed '}],
                      [{'generated_text': 'a cat laying on a blanket next to a cat laying on a bed '}],
                  ],)
  
  
  
  
  
  
  
         @slow
         @require_torch
         def 		snake_case_  ( self:   Dict				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='Salesforce/blip-image-captioning-base'				)
              __UpperCamelCase   = 'https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/pokemon.png'
              __UpperCamelCase   = Image.open(requests.get(A_,stream=A_				).raw				)
  
              __UpperCamelCase   = pipe(A_				)
              self.assertEqual(A_,[{'generated_text': 'a pink pokemon pokemon with a blue shirt and a blue shirt'}]				)
  
  
  
  
  
  
  
         @slow
         @require_torch
         def 		snake_case_  ( self:   Dict				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='microsoft/git-base-coco'				)
              __UpperCamelCase   = 'https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/pokemon.png'
              __UpperCamelCase   = Image.open(requests.get(A_,stream=A_				).raw				)
  
              __UpperCamelCase   = pipe(A_				)
              self.assertEqual(A_,[{'generated_text': 'a cartoon of a purple character.'}]				)
  
  
  
  
  
  
  
         @slow
         @require_torch
         def 		snake_case_  ( self:   Dict				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='Salesforce/blip-image-captioning-base'				)
              __UpperCamelCase   = 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
              __UpperCamelCase   = Image.open(requests.get(A_,stream=A_				).raw				)
  
              __UpperCamelCase   = 'a photography of'
  
              __UpperCamelCase   = pipe(A_,prompt=A_				)
              self.assertEqual(A_,[{'generated_text': 'a photography of a volcano'}]				)
  
              with self.assertRaises(A_				):
                   __UpperCamelCase   = pipe([image, image],prompt=[prompt, prompt]				)
  
  
  
  
  
  
  
         @slow
         @require_torch
         def 		snake_case_  ( self:   List[Any]				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='microsoft/git-base-coco'				)
              __UpperCamelCase   = 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
              __UpperCamelCase   = Image.open(requests.get(A_,stream=A_				).raw				)
  
              __UpperCamelCase   = 'a photo of a'
  
              __UpperCamelCase   = pipe(A_,prompt=A_				)
              self.assertEqual(A_,[{'generated_text': 'a photo of a tent with a tent and a tent in the background.'}]				)
  
              with self.assertRaises(A_				):
                   __UpperCamelCase   = pipe([image, image],prompt=[prompt, prompt]				)
  
  
  
  
  
  
  
         @unittest.skipIf(
             not is_torch_greater_or_equal_than_1_11,reason='`Pix2StructImageProcessor` requires `torch>=1.11.0`.'				)
         @slow
         @require_torch
         def 		snake_case_  ( self:   List[Any]				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='google/pix2struct-ai2d-base'				)
              __UpperCamelCase   = 'https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/ai2d-demo.jpg'
              __UpperCamelCase   = Image.open(requests.get(A_,stream=A_				).raw				)
  
              __UpperCamelCase   = 'What does the label 15 represent? (1) lava (2) core (3) tunnel (4) ash cloud'
  
              __UpperCamelCase   = pipe(A_,prompt=A_				)
              self.assertEqual(A_,[{'generated_text': 'ash cloud'}]				)
  
              with self.assertRaises(A_				):
                   __UpperCamelCase   = pipe([image, image],prompt=[prompt, prompt]				)
  
  
  
  
  
  
  
         @slow
         @require_tf
         def 		snake_case_  ( self:   Any				):
  
  
  
  
  
  
              '''simple docstring'''
  
  
  
  
              __UpperCamelCase   = pipeline('image-to-text',model='ydshieh/vit-gpt2-coco-en',framework='tf'				)
              __UpperCamelCase   = './tests/fixtures/tests_samples/COCO/000000039769.png'
  
              __UpperCamelCase   = pipe(A_				)
              self.assertEqual(A_,[{'generated_text': 'a cat laying on a blanket next to a cat laying on a bed '}]				)
  
              __UpperCamelCase   = pipe([image, image]				)
              self.assertEqual(
                  A_,[
                      [{'generated_text': 'a cat laying on a blanket next to a cat laying on a bed '}],
                      [{'generated_text': 'a cat laying on a blanket next to a cat laying on a bed '}],
                  ],)
  
  
  