



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


UpperCAmelCase__			:   List[str]      			=    {
    'configuration_flava': [
        'FLAVA_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'FlavaConfig',
        'FlavaImageCodebookConfig',
        'FlavaImageConfig',
        'FlavaMultimodalConfig',
        'FlavaTextConfig',
    ],
}

try:
					if not is_vision_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					UpperCAmelCase__			:   List[Any]      			=    ['FlavaFeatureExtractor']
					UpperCAmelCase__			:   Any      			=    ['FlavaImageProcessor']
					UpperCAmelCase__			:   List[Any]      			=    ['FlavaProcessor']

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					UpperCAmelCase__			:   List[Any]      			=    [
					    'FLAVA_PRETRAINED_MODEL_ARCHIVE_LIST',
					    'FlavaForPreTraining',
					    'FlavaImageCodebook',
					    'FlavaImageModel',
					    'FlavaModel',
					    'FlavaMultimodalModel',
					    'FlavaPreTrainedModel',
					    'FlavaTextModel',
					]

if TYPE_CHECKING:
					from .configuration_flava import (
					    FLAVA_PRETRAINED_CONFIG_ARCHIVE_MAP,
					    FlavaConfig,
					    FlavaImageCodebookConfig,
					    FlavaImageConfig,
					    FlavaMultimodalConfig,
					    FlavaTextConfig,
					)

					try:
										if not is_vision_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .feature_extraction_flava import FlavaFeatureExtractor
										from .image_processing_flava import FlavaImageProcessor
										from .processing_flava import FlavaProcessor

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_flava import (
										    FLAVA_PRETRAINED_MODEL_ARCHIVE_LIST,
										    FlavaForPreTraining,
										    FlavaImageCodebook,
										    FlavaImageModel,
										    FlavaModel,
										    FlavaMultimodalModel,
										    FlavaPreTrainedModel,
										    FlavaTextModel,
										)

else:
					import sys

					UpperCAmelCase__			:   Optional[int]      			=    _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)





import importlib.metadata
import sys

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


UpperCAmelCase__			:   str      			=    importlib.metadata.version('numpy')
UpperCAmelCase__			:   Optional[int]      			=    '.'.join([str(x) for x in sys.version_info[:3]])





class 							lowerCAmelCase_		(		lowercase_     ):







		def 					a_  (    self  :   Tuple					)       ->		Tuple:


						'''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(UpperCAmelCase_					)
										except ImportError as e:
														self.assertIn(F'''{req} is required'''       ,		str(UpperCAmelCase_					)					)
														self.assertIn('''but found'''       ,		str(UpperCAmelCase_					)					)

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

        # bogus requirements formats:
        # 1. whole thing
						for req in ["numpy??1.0.0", "numpy1.0.0"]:
										try:
														require_version_core(UpperCAmelCase_					)
										except ValueError as e:
														self.assertIn('''requirement needs to be in the pip package format'''       ,		str(UpperCAmelCase_					)					)
        # 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(UpperCAmelCase_					)
										except ValueError as e:
														self.assertIn('''need one of '''       ,		str(UpperCAmelCase_					)					)







		def 					a_  (    self  :   Tuple					)       ->		List[Any]:


						'''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(UpperCAmelCase_					)
										except ImportError as e:
														self.assertIn(F'''{req} is required'''       ,		str(UpperCAmelCase_					)					)
														self.assertIn(F'''but found python=={python_ver}'''       ,		str(UpperCAmelCase_					)					)
