

import unittest

from transformers import is_vision_available
from transformers.pipelines import pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
    from PIL import Image
else:
    class  _A		:

      @staticmethod
      def  UpperCAmelCase    (				*_SCREAMING_SNAKE_CASE ,					**_SCREAMING_SNAKE_CASE					):





            """simple docstring"""







            pass
@is_pipeline_test
@require_vision
class  _A		(  unittest.TestCase):

  @require_torch
  def  UpperCAmelCase    (				self					):





        """simple docstring"""







        SCREAMING_SNAKE_CASE_				:  Dict           =     pipeline(
            model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification' ,					)
        SCREAMING_SNAKE_CASE_				:  Tuple           =     Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'					)
        SCREAMING_SNAKE_CASE_				:  int           =     image_classifier(_SCREAMING_SNAKE_CASE ,					candidate_labels=['a', 'b', 'c']					)

        # The floating scores are so close, we enter floating error approximation and the order is not guaranteed across
        # python and torch versions.
        self.assertIn(
            nested_simplify(_SCREAMING_SNAKE_CASE					) ,					[
                [{'score': 0.333, 'label': 'a'}, {'score': 0.333, 'label': 'b'}, {'score': 0.333, 'label': 'c'}],
                [{'score': 0.333, 'label': 'a'}, {'score': 0.333, 'label': 'c'}, {'score': 0.333, 'label': 'b'}],
            ] ,					)

        SCREAMING_SNAKE_CASE_				:  Any           =     image_classifier([image] * 5 ,					candidate_labels=['A', 'B', 'C'] ,					batch_size=2					)
        self.assertEqual(
            nested_simplify(_SCREAMING_SNAKE_CASE					) ,					[
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
            ] ,					)

  @require_tf
  def  UpperCAmelCase    (				self					):





        """simple docstring"""







        SCREAMING_SNAKE_CASE_				:  int           =     pipeline(
            model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification' ,					framework='tf'					)
        SCREAMING_SNAKE_CASE_				:  int           =     Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'					)
        SCREAMING_SNAKE_CASE_				:  str           =     image_classifier(_SCREAMING_SNAKE_CASE ,					candidate_labels=['a', 'b', 'c']					)

        self.assertEqual(
            nested_simplify(_SCREAMING_SNAKE_CASE					) ,					[{'score': 0.333, 'label': 'a'}, {'score': 0.333, 'label': 'b'}, {'score': 0.333, 'label': 'c'}] ,					)

        SCREAMING_SNAKE_CASE_				:  Optional[Any]           =     image_classifier([image] * 5 ,					candidate_labels=['A', 'B', 'C'] ,					batch_size=2					)
        self.assertEqual(
            nested_simplify(_SCREAMING_SNAKE_CASE					) ,					[
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
                [
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                    {'score': 0.333, 'label': ANY(_SCREAMING_SNAKE_CASE					)},
                ],
            ] ,					)

  @slow
  @require_torch
  def  UpperCAmelCase    (				self					):





        """simple docstring"""







        SCREAMING_SNAKE_CASE_				:  List[str]           =     pipeline(
            task='zero-shot-image-classification' ,					model='openai/clip-vit-base-patch32' ,					)
        # This is an image of 2 cats with remotes and no planes
        SCREAMING_SNAKE_CASE_				:  Optional[Any]           =     Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'					)
        SCREAMING_SNAKE_CASE_				:  str           =     image_classifier(_SCREAMING_SNAKE_CASE ,					candidate_labels=['cat', 'plane', 'remote']					)

        self.assertEqual(
            nested_simplify(_SCREAMING_SNAKE_CASE					) ,					[
                {'score': 0.511, 'label': 'remote'},
                {'score': 0.485, 'label': 'cat'},
                {'score': 0.004, 'label': 'plane'},
            ] ,					)

        SCREAMING_SNAKE_CASE_				:  int           =     image_classifier([image] * 5 ,					candidate_labels=['cat', 'plane', 'remote'] ,					batch_size=2					)
        self.assertEqual(
            nested_simplify(_SCREAMING_SNAKE_CASE					) ,					[
                [
                    {'score': 0.511, 'label': 'remote'},
                    {'score': 0.485, 'label': 'cat'},
                    {'score': 0.004, 'label': 'plane'},
                ],
            ]
            * 5 ,					)



  @slow
  @require_tf
  def  UpperCAmelCase    (				self					):





        """simple docstring"""







        SCREAMING_SNAKE_CASE_				:  Any           =     pipeline(
            task='zero-shot-image-classification' ,					model='openai/clip-vit-base-patch32' ,					framework='tf'					)
        # This is an image of 2 cats with remotes and no planes
        SCREAMING_SNAKE_CASE_				:  Union[str, Any]           =     Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'					)
        SCREAMING_SNAKE_CASE_				:  str           =     image_classifier(_SCREAMING_SNAKE_CASE ,					candidate_labels=['cat', 'plane', 'remote']					)
        self.assertEqual(
            nested_simplify(_SCREAMING_SNAKE_CASE					) ,					[
                {'score': 0.511, 'label': 'remote'},
                {'score': 0.485, 'label': 'cat'},
                {'score': 0.004, 'label': 'plane'},
            ] ,					)

        SCREAMING_SNAKE_CASE_				:  Optional[int]           =     image_classifier([image] * 5 ,					candidate_labels=['cat', 'plane', 'remote'] ,					batch_size=2					)
        self.assertEqual(
            nested_simplify(_SCREAMING_SNAKE_CASE					) ,					[
                [
                    {'score': 0.511, 'label': 'remote'},
                    {'score': 0.485, 'label': 'cat'},
                    {'score': 0.004, 'label': 'plane'},
                ],
            ]
            * 5 ,					)









def    A_  (							a					,   a  ):

      """simple docstring"""



      return int((input_a, input_a).count(0  ) != 0  )

def    A_  (							):

      """simple docstring"""



      assert nand_gate(0					,   0  ) == 1
      assert nand_gate(0					,   1  ) == 1
      assert nand_gate(1					,   0  ) == 1
      assert nand_gate(1					,   1  ) == 0


if __name__ == "__main__":
    print(nand_gate(0, 0))
    print(nand_gate(0, 1))
    print(nand_gate(1, 0))
    print(nand_gate(1, 1))






