





'''simple docstring'''

import importlib.metadata
import sys

from transformers.testing_utils import TestCasePlus
from transformers.utils.versions import require_version, require_version_core


lowercase__		:    Dict =       importlib.metadata.version('numpy')
lowercase__		:    Optional[Any] =       '.'.join([str(x) for x in sys.version_info[:3]])
class        __lowerCAmelCase  (					__magic_name__				):






       """simple docstring"""





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

            '''simple docstring'''




            require_version_core('''numpy<1000.4.5'''  )
            require_version_core('''numpy<1000.4'''  )
            require_version_core('''numpy<1000'''  )

            # le
            require_version_core('''numpy<=1000.4.5'''  )
            require_version_core(f"""numpy<={numpy_ver}"""  )

            # eq
            require_version_core(f"""numpy=={numpy_ver}"""  )

            # ne
            require_version_core('''numpy!=1000.4.5'''  )

            # ge
            require_version_core('''numpy>=1.0'''  )
            require_version_core('''numpy>=1.0.0'''  )
            require_version_core(f"""numpy>={numpy_ver}"""  )

            # gt
            require_version_core('''numpy>1.0.0'''  )

            # mix
            require_version_core('''numpy>1.0.0,<1000'''  )

            # requirement w/o version
            require_version_core('''numpy'''  )

            # unmet requirements due to version conflict
            for req in ["numpy==1.0.0", "numpy>=1000.0.0", f"""numpy<{numpy_ver}"""]:
                 try:
                      require_version_core(lowerCAmelCase__  )
                 except ImportError as e:
                      self.assertIn(f"""{req} is required""" ,				str(lowerCAmelCase__  )  )
                      self.assertIn('''but found''' ,				str(lowerCAmelCase__  )  )

        # unmet requirements due to missing module
            for req in ["numpipypie>1", "numpipypie2"]:
                 try:
                      require_version_core(lowerCAmelCase__  )
                 except importlib.metadata.PackageNotFoundError as e:
                      self.assertIn(f"""The '{req}' distribution was not found and is required by this application""" ,				str(lowerCAmelCase__  )  )
                      self.assertIn('''Try: pip install transformers -U''' ,				str(lowerCAmelCase__  )  )

        # bogus requirements formats:
        # 1. whole thing
            for req in ["numpy??1.0.0", "numpy1.0.0"]:
                 try:
                      require_version_core(lowerCAmelCase__  )
                 except ValueError as e:
                      self.assertIn('''requirement needs to be in the pip package format''' ,				str(lowerCAmelCase__  )  )
        # 2. only operators
            for req in ["numpy=1.0.0", "numpy == 1.00", "numpy<>1.0.0", "numpy><1.00", "numpy>>1.0.0"]:
                 try:
                      require_version_core(lowerCAmelCase__  )
                 except ValueError as e:
                      self.assertIn('''need one of ''' ,				str(lowerCAmelCase__  )  )







       def snake_case__		(							self     :	Any  )					->  List[str]:

            '''simple docstring'''




            require_version('''python>=3.6.0'''  )

            # not matching requirements
            for req in ["python>9.9.9", "python<3.0.0"]:
                 try:
                      require_version_core(lowerCAmelCase__  )
                 except ImportError as e:
                      self.assertIn(f"""{req} is required""" ,				str(lowerCAmelCase__  )  )
                      self.assertIn(f"""but found python=={python_ver}""" ,				str(lowerCAmelCase__  )  )










'''simple docstring'''

import unittest
from dataclasses import dataclass
from typing import List, Union

import numpy as np
import PIL.Image

from diffusers.utils.outputs import BaseOutput
@dataclass
class        __lowerCAmelCase  (					__magic_name__				):






       """simple docstring"""
       _snake_case			:  Union[List[PIL.Image.Image], np.ndarray]

class        __lowerCAmelCase  (					unittest.TestCase				):






       """simple docstring"""





       def snake_case__		(							self     :	Any  )					->  Any:

            '''simple docstring'''




            _UpperCamelCase       					= CustomOutput(images=np.random.rand(1 ,				3 ,				4 ,				4  )  )

            # check every way of getting the attribute
            assert isinstance(outputs.images ,				np.ndarray  )
            assert outputs.images.shape == (1, 3, 4, 4)
            assert isinstance(outputs['''images'''] ,				np.ndarray  )
            assert outputs["images"].shape == (1, 3, 4, 4)
            assert isinstance(outputs[0] ,				np.ndarray  )
            assert outputs[0].shape == (1, 3, 4, 4)

            # test with a non-tensor attribute
            _UpperCamelCase       					= CustomOutput(images=[PIL.Image.new('''RGB''' ,				(4, 4)  )]  )

            # check every way of getting the attribute
            assert isinstance(outputs.images ,				lowerCAmelCase__  )
            assert isinstance(outputs.images[0] ,				PIL.Image.Image  )
            assert isinstance(outputs['''images'''] ,				lowerCAmelCase__  )
            assert isinstance(outputs['''images'''][0] ,				PIL.Image.Image  )
            assert isinstance(outputs[0] ,				lowerCAmelCase__  )
            assert isinstance(outputs[0][0] ,				PIL.Image.Image  )







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

            '''simple docstring'''




            _UpperCamelCase       					= CustomOutput({'''images''': np.random.rand(1 ,				3 ,				4 ,				4  )}  )

            # check every way of getting the attribute
            assert isinstance(outputs.images ,				np.ndarray  )
            assert outputs.images.shape == (1, 3, 4, 4)
            assert isinstance(outputs['''images'''] ,				np.ndarray  )
            assert outputs["images"].shape == (1, 3, 4, 4)
            assert isinstance(outputs[0] ,				np.ndarray  )
            assert outputs[0].shape == (1, 3, 4, 4)

            # test with a non-tensor attribute
            _UpperCamelCase       					= CustomOutput({'''images''': [PIL.Image.new('''RGB''' ,				(4, 4)  )]}  )

            # check every way of getting the attribute
            assert isinstance(outputs.images ,				lowerCAmelCase__  )
            assert isinstance(outputs.images[0] ,				PIL.Image.Image  )
            assert isinstance(outputs['''images'''] ,				lowerCAmelCase__  )
            assert isinstance(outputs['''images'''][0] ,				PIL.Image.Image  )
            assert isinstance(outputs[0] ,				lowerCAmelCase__  )
            assert isinstance(outputs[0][0] ,				PIL.Image.Image  )



