

"""simple docstring"""





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


__UpperCamelCase  :      Union[str, Any]							      =		{
    '''configuration_blip''': [
        '''BLIP_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''BlipConfig''',
        '''BlipTextConfig''',
        '''BlipVisionConfig''',
    ],
    '''processing_blip''': ['''BlipProcessor'''],
}

try:
							if not is_vision_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__UpperCamelCase  :      int							      =		['''BlipImageProcessor''']


try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__UpperCamelCase  :      List[Any]							      =		[
							    '''BLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
							    '''BlipModel''',
							    '''BlipPreTrainedModel''',
							    '''BlipForConditionalGeneration''',
							    '''BlipForQuestionAnswering''',
							    '''BlipVisionModel''',
							    '''BlipTextModel''',
							    '''BlipForImageTextRetrieval''',
							]

try:
							if not is_tf_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__UpperCamelCase  :      int							      =		[
							    '''TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
							    '''TFBlipModel''',
							    '''TFBlipPreTrainedModel''',
							    '''TFBlipForConditionalGeneration''',
							    '''TFBlipForQuestionAnswering''',
							    '''TFBlipVisionModel''',
							    '''TFBlipTextModel''',
							    '''TFBlipForImageTextRetrieval''',
							]

if TYPE_CHECKING:
							from .configuration_blip import BLIP_PRETRAINED_CONFIG_ARCHIVE_MAP, BlipConfig, BlipTextConfig, BlipVisionConfig
							from .processing_blip import BlipProcessor

							try:
														if not is_vision_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .image_processing_blip import BlipImageProcessor

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_blip import (
														    BLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
														    BlipForConditionalGeneration,
														    BlipForImageTextRetrieval,
														    BlipForQuestionAnswering,
														    BlipModel,
														    BlipPreTrainedModel,
														    BlipTextModel,
														    BlipVisionModel,
														)

							try:
														if not is_tf_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_tf_blip import (
														    TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
														    TFBlipForConditionalGeneration,
														    TFBlipForImageTextRetrieval,
														    TFBlipForQuestionAnswering,
														    TFBlipModel,
														    TFBlipPreTrainedModel,
														    TFBlipTextModel,
														    TFBlipVisionModel,
														)

else:
							import sys

							__UpperCamelCase  :      str							      =		_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)







"""simple docstring"""





import unittest

from huggingface_hub import hf_hub_download

from transformers import MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING, VideoMAEFeatureExtractor
from transformers.pipelines import VideoClassificationPipeline, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_decord,
    require_tf,
    require_torch,
    require_torch_or_tf,
    require_vision,
)

from .test_pipelines_common import ANY







@is_pipeline_test
@require_torch_or_tf
@require_vision
@require_decord
class 				SCREAMING_SNAKE_CASE					(		unittest.TestCase       ):






					"""simple docstring"""



					lowercase__				 =       MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING







					def        __lowerCAmelCase (       self			:				Optional[Any]   ,lowercase_			:				Optional[Any]   ,lowercase_			:				int   ,lowercase_			:				str		):
						lowerCAmelCase__	:						Optional[int]  				=	hf_hub_download(
						    repo_id='''nateraw/video-demo'''   ,filename='''archery.mp4'''   ,repo_type='''dataset'''		)
						lowerCAmelCase__	:						Tuple  				=	VideoClassificationPipeline(model=lowercase_   ,image_processor=lowercase_   ,top_k=2		)
						lowerCAmelCase__	:						Optional[int]  				=	[
						    example_video_filepath,
						    '''https://huggingface.co/datasets/nateraw/video-demo/resolve/main/archery.mp4''',
						]
						return video_classifier, examples







					def        __lowerCAmelCase (       self			:				str   ,lowercase_			:				int   ,lowercase_			:				Dict		):
						for example in examples:
							lowerCAmelCase__	:						Dict  				=	video_classifier(lowercase_		)

							self.assertEqual(
							    lowercase_   ,[
							        {'''score''': ANY(lowercase_		), '''label''': ANY(lowercase_		)},
							        {'''score''': ANY(lowercase_		), '''label''': ANY(lowercase_		)},
							    ]   ,)







					@require_torch
					def        __lowerCAmelCase (       self			:				Optional[int]		):
						lowerCAmelCase__	:						Optional[int]  				=	'''hf-internal-testing/tiny-random-VideoMAEForVideoClassification'''
						lowerCAmelCase__	:						List[str]  				=	VideoMAEFeatureExtractor(
						    size={'''shortest_edge''': 1_0}   ,crop_size={'''height''': 1_0, '''width''': 1_0}		)
						lowerCAmelCase__	:						Optional[Any]  				=	pipeline(
						    '''video-classification'''   ,model=lowercase_   ,feature_extractor=lowercase_   ,frame_sampling_rate=4		)

						lowerCAmelCase__	:						Optional[int]  				=	hf_hub_download(repo_id='''nateraw/video-demo'''   ,filename='''archery.mp4'''   ,repo_type='''dataset'''		)
						lowerCAmelCase__	:						Optional[int]  				=	video_classifier(lowercase_   ,top_k=2		)
						self.assertEqual(
						    nested_simplify(lowercase_   ,decimals=4		)   ,[{'''score''': 0.5199, '''label''': '''LABEL_0'''}, {'''score''': 0.4801, '''label''': '''LABEL_1'''}]   ,)

						lowerCAmelCase__	:						Dict  				=	video_classifier(
						    [
						        video_file_path,
						        video_file_path,
						    ]   ,top_k=2   ,)
						self.assertEqual(
						    nested_simplify(lowercase_   ,decimals=4		)   ,[
						        [{'''score''': 0.5199, '''label''': '''LABEL_0'''}, {'''score''': 0.4801, '''label''': '''LABEL_1'''}],
						        [{'''score''': 0.5199, '''label''': '''LABEL_0'''}, {'''score''': 0.4801, '''label''': '''LABEL_1'''}],
						    ]   ,)







					@require_tf
					def        __lowerCAmelCase (       self			:				int		):
						pass




