






import logging
import os

from .state import PartialState
class 				A_     (    logging.LoggerAdapter      ):






 '''simple docstring'''




 @staticmethod
 def 			snake_case__					(						_A)			->		int:

     """simple docstring"""



     _UpperCAmelCase					:   Any      	=					PartialState()
     return not main_process_only or (main_process_only and state.is_main_process)


 def 			snake_case__					(						self				,	_A				,	_A				,	*_A				,	**_A)			->		Union[str, Any]:

     """simple docstring"""



     if PartialState._shared_state == {}:
         raise RuntimeError(
             '''You must initialize the accelerate state by calling either `PartialState()` or `Accelerator()` before using the logging utility.''')
     _UpperCAmelCase					:   Optional[int]      	=					kwargs.pop('''main_process_only'''				,	A_)
     _UpperCAmelCase					:   Dict      	=					kwargs.pop('''in_order'''				,	A_)

     if self.isEnabledFor(A_):
         if self._should_log(A_):
             _UpperCAmelCase					:   int      	=					self.process(A_				,	A_)
             self.logger.log(A_				,	A_				,	*A_				,	**A_)

         elif in_order:
             _UpperCAmelCase					:   Dict      	=					PartialState()
             for i in range(state.num_processes):
                 if i == state.process_index:
                     _UpperCAmelCase					:   List[str]      	=					self.process(A_				,	A_)
                     self.logger.log(A_				,	A_				,	*A_				,	**A_)
                 state.wait_for_everyone()



def   _lowerCamelCase						(    __A     :				str		,		__A     :				Union[str, Any] = None			)   ->       int:



    if log_level is None:
        _UpperCAmelCase					:   Dict      	=					os.environ.get('''ACCELERATE_LOG_LEVEL'''		,		_UpperCamelCase			)
    _UpperCAmelCase					:   Any      	=					logging.getLogger(_UpperCamelCase			)
    if log_level is not None:
        logger.setLevel(log_level.upper()			)
        logger.root.setLevel(log_level.upper()			)
    return MultiProcessAdapter(_UpperCamelCase		,		{}			)






"""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       __magic_name__							:
         @staticmethod
         def 				lowercase_				(  *A_			,					**A_							)  ->						Optional[int]:





           """simple docstring"""




           pass


@is_pipeline_test
@require_vision
class       __magic_name__							(							unittest.TestCase			):
       @require_torch
       def 				lowercase_				(  self							)  ->						int:





         """simple docstring"""




         _lowercase:      Optional[Any]   			=  pipeline(
             model='''hf-internal-testing/tiny-random-clip-zero-shot-image-classification'''			,					)
         _lowercase:      List[Any]   			=  Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''							)
         _lowercase:      str   			=  image_classifier(A_			,					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(A_							)			,					[
                 [{'''score''': 0.3_33, '''label''': '''a'''}, {'''score''': 0.3_33, '''label''': '''b'''}, {'''score''': 0.3_33, '''label''': '''c'''}],
                 [{'''score''': 0.3_33, '''label''': '''a'''}, {'''score''': 0.3_33, '''label''': '''c'''}, {'''score''': 0.3_33, '''label''': '''b'''}],
             ]			,					)

         _lowercase:      Any   			=  image_classifier([image] * 5			,					candidate_labels=['''A''', '''B''', '''C''']			,					batch_size=2							)
         self.assertEqual(
             nested_simplify(A_							)			,					[
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
             ]			,					)
       @require_tf
       def 				lowercase_				(  self							)  ->						int:





         """simple docstring"""




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

         self.assertEqual(
             nested_simplify(A_							)			,					[{'''score''': 0.3_33, '''label''': '''a'''}, {'''score''': 0.3_33, '''label''': '''b'''}, {'''score''': 0.3_33, '''label''': '''c'''}]			,					)

         _lowercase:      List[str]   			=  image_classifier([image] * 5			,					candidate_labels=['''A''', '''B''', '''C''']			,					batch_size=2							)
         self.assertEqual(
             nested_simplify(A_							)			,					[
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
                 [
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                     {'''score''': 0.3_33, '''label''': ANY(A_							)},
                 ],
             ]			,					)
       @slow
       @require_torch
       def 				lowercase_				(  self							)  ->						Any:





         """simple docstring"""




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

         self.assertEqual(
             nested_simplify(A_							)			,					[
                 {'''score''': 0.5_11, '''label''': '''remote'''},
                 {'''score''': 0.4_85, '''label''': '''cat'''},
                 {'''score''': 0.0_04, '''label''': '''plane'''},
             ]			,					)

         _lowercase:      Optional[Any]   			=  image_classifier([image] * 5			,					candidate_labels=['''cat''', '''plane''', '''remote''']			,					batch_size=2							)
         self.assertEqual(
             nested_simplify(A_							)			,					[
                 [
                     {'''score''': 0.5_11, '''label''': '''remote'''},
                     {'''score''': 0.4_85, '''label''': '''cat'''},
                     {'''score''': 0.0_04, '''label''': '''plane'''},
                 ],
             ]
             * 5			,					)



       @slow
       @require_tf
       def 				lowercase_				(  self							)  ->						Optional[Any]:





         """simple docstring"""




         _lowercase:      Tuple   			=  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
         _lowercase:      str   			=  Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''							)
         _lowercase:      Optional[int]   			=  image_classifier(A_			,					candidate_labels=['''cat''', '''plane''', '''remote''']							)
         self.assertEqual(
             nested_simplify(A_							)			,					[
                 {'''score''': 0.5_11, '''label''': '''remote'''},
                 {'''score''': 0.4_85, '''label''': '''cat'''},
                 {'''score''': 0.0_04, '''label''': '''plane'''},
             ]			,					)

         _lowercase:      Optional[Any]   			=  image_classifier([image] * 5			,					candidate_labels=['''cat''', '''plane''', '''remote''']			,					batch_size=2							)
         self.assertEqual(
             nested_simplify(A_							)			,					[
                 [
                     {'''score''': 0.5_11, '''label''': '''remote'''},
                     {'''score''': 0.4_85, '''label''': '''cat'''},
                     {'''score''': 0.0_04, '''label''': '''plane'''},
                 ],
             ]
             * 5			,					)
