class_docstr: Generates all possible ordered pairs from 'texts_batch' and 'support_dataset'
  
  Args:
      bidirectional: adds pairs in reverse order
code: def __call__(
      self,
      texts: List[str],
      dataset: List[List[str]],
  ) -> Tuple[List[str], List[str], List[str], List[str]]:
      hypotesis_batch = []
      premise_batch = []
      hypotesis_labels_batch = []
      for [premise, [hypotesis, hypotesis_labels]] in zip(
          texts * len(dataset), np.repeat(dataset, len(texts), axis=0)
      ):
          premise_batch.append(premise)
          hypotesis_batch.append(hypotesis)
          hypotesis_labels_batch.append(hypotesis_labels)
  
          if self.bidirectional:
              premise_batch.append(hypotesis)
              hypotesis_batch.append(premise)
              hypotesis_labels_batch.append(hypotesis_labels)
      return (
          texts,
          hypotesis_batch,
          premise_batch,
          hypotesis_labels_batch,
      )
  
file_path: DeepPavlov/deeppavlov/models/preprocessors/dnnc_preprocessor.py
imports: from logging import getLogger
  from typing import List, Tuple
  import numpy
  from deeppavlov.core.common.registry import register
  from deeppavlov.core.models.component import Component
label_desc: Use image node_id 2 for calling the PairGenerator obj's underlying member method code with example usage: obj.__call__(texts, dataset) and returns: texts,  hypotesis_batch,  premise_batch,  hypotesis_labels_batch