"""simple docstring"""


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  UpperCamelCase					:







           @staticmethod
           def 		a_						( *lowerCAmelCase__,							**lowerCAmelCase__)      ->      Dict:
                pass




@is_pipeline_test
@require_vision
class  UpperCamelCase					(				unittest.TestCase   ):







       @require_torch
       def 		a_						( self)      ->      int:
            snake_case_					       =					pipeline(
                model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification',							)
            snake_case_					       =					Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png')
            snake_case_					       =					image_classifier(lowerCAmelCase__,							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(lowerCAmelCase__),							[
                    [{'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'}],
                ],							)

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







       @require_tf
       def 		a_						( self)      ->      Any:
            snake_case_					       =					pipeline(
                model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification',							framework='tf')
            snake_case_					       =					Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png')
            snake_case_					       =					image_classifier(lowerCAmelCase__,							candidate_labels=['a', 'b', 'c'])

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

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







       @slow
       @require_torch
       def 		a_						( self)      ->      str:
            snake_case_					       =					pipeline(
                task='zero-shot-image-classification',							model='openai/clip-vit-base-patch32',							)
            # This is an image of 2 cats with remotes and no planes
            snake_case_					       =					Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png')
            snake_case_					       =					image_classifier(lowerCAmelCase__,							candidate_labels=['cat', 'plane', 'remote'])

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

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







       @slow
       @require_tf
       def 		a_						( self)      ->      Optional[Any]:
            snake_case_					       =					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
            snake_case_					       =					Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png')
            snake_case_					       =					image_classifier(lowerCAmelCase__,							candidate_labels=['cat', 'plane', 'remote'])
            self.assertEqual(
                nested_simplify(lowerCAmelCase__),							[
                    {'score': 0.511, 'label': 'remote'},
                    {'score': 0.485, 'label': 'cat'},
                    {'score': 0.004, 'label': 'plane'},
                ],							)

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


'''simple docstring'''




__SCREAMING_SNAKE_CASE       :     Dict     =  8.3_1_4_4_6_2  # Unit - J mol-1 K-1

def 	UpperCamelCase_							(					_UpperCAmelCase  :      float			,	_UpperCAmelCase  :      float			,	_UpperCAmelCase  :      float    )    ->    float:


       """simple docstring"""







       if moles < 0 or kelvin < 0 or volume < 0:
              raise ValueError("Invalid inputs. Enter positive value."    )
       return moles * kelvin * UNIVERSAL_GAS_CONSTANT / volume

def 	UpperCamelCase_							(					_UpperCAmelCase  :      float			,	_UpperCAmelCase  :      float			,	_UpperCAmelCase  :      float    )    ->    float:


       """simple docstring"""







       if moles < 0 or kelvin < 0 or pressure < 0:
              raise ValueError("Invalid inputs. Enter positive value."    )
       return moles * kelvin * UNIVERSAL_GAS_CONSTANT / pressure


if __name__ == "__main__":
  from doctest import testmod

  testmod()

