




"""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   a__					(						unittest.TestCase ):
			lowercase_		=						MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING


			def    a_  (   self   :     Tuple   ,	UpperCamelCase_   :     List[Any]   ,	UpperCamelCase_   :     str   ,	UpperCamelCase_   :     List[str]):


						"""simple docstring"""




						__UpperCAmelCase						:			Any												=       hf_hub_download(
						    repo_id="nateraw/video-demo"   ,	filename="archery.mp4"   ,	repo_type="dataset")
						__UpperCAmelCase						:			List[Any]												=       VideoClassificationPipeline(model=UpperCamelCase_   ,	image_processor=UpperCamelCase_   ,	top_k=2)
						__UpperCAmelCase						:			Optional[int]												=       [
						    example_video_filepath,
						    "https://huggingface.co/datasets/nateraw/video-demo/resolve/main/archery.mp4",
						]
						return video_classifier, examples


			def    a_  (   self   :     Union[str, Any]   ,	UpperCamelCase_   :     Any   ,	UpperCamelCase_   :     Union[str, Any]):


						"""simple docstring"""




						for example in examples:
									__UpperCAmelCase						:			List[str]												=       video_classifier(UpperCamelCase_)

									self.assertEqual(
									    UpperCamelCase_   ,	[
									        {"score": ANY(UpperCamelCase_), "label": ANY(UpperCamelCase_)},
									        {"score": ANY(UpperCamelCase_), "label": ANY(UpperCamelCase_)},
									    ]   ,	)


			@require_torch
			def    a_  (   self   :     Union[str, Any]):


						"""simple docstring"""




						__UpperCAmelCase						:			str												=       "hf-internal-testing/tiny-random-VideoMAEForVideoClassification"
						__UpperCAmelCase						:			Tuple												=       VideoMAEFeatureExtractor(
						    size={"shortest_edge": 10}   ,	crop_size={"height": 10, "width": 10})
						__UpperCAmelCase						:			str												=       pipeline(
						    "video-classification"   ,	model=UpperCamelCase_   ,	feature_extractor=UpperCamelCase_   ,	frame_sampling_rate=4)

						__UpperCAmelCase						:			Tuple												=       hf_hub_download(repo_id="nateraw/video-demo"   ,	filename="archery.mp4"   ,	repo_type="dataset")
						__UpperCAmelCase						:			List[str]												=       video_classifier(UpperCamelCase_   ,	top_k=2)
						self.assertEqual(
						    nested_simplify(UpperCamelCase_   ,	decimals=4)   ,	[{"score": 0.5199, "label": "LABEL_0"}, {"score": 0.4801, "label": "LABEL_1"}]   ,	)

						__UpperCAmelCase						:			Union[str, Any]												=       video_classifier(
						    [
						        video_file_path,
						        video_file_path,
						    ]   ,	top_k=2   ,	)
						self.assertEqual(
						    nested_simplify(UpperCamelCase_   ,	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    a_  (   self   :     str):


						"""simple docstring"""




						pass




"""simple docstring"""


from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


_lowercase				 =					logging.get_logger(__name__)

_lowercase				 =					{
    '''google/mobilenet_v1_1.0_224''': '''https://huggingface.co/google/mobilenet_v1_1.0_224/resolve/main/config.json''',
    '''google/mobilenet_v1_0.75_192''': '''https://huggingface.co/google/mobilenet_v1_0.75_192/resolve/main/config.json''',
    # See all MobileNetV1 models at https://huggingface.co/models?filter=mobilenet_v1
}







class 					lowerCAmelCase_					(   _lowercase     ):



						'''simple docstring'''


						_lowerCamelCase:     Optional[Any]   =     '''mobilenet_v1'''


						def __init__(			self  :   Optional[int]	,A_  :   Optional[int]=3	,A_  :   Any=224	,A_  :   List[Any]=1.0	,A_  :   Union[str, Any]=8	,A_  :   Union[str, Any]="relu6"	,A_  :   Optional[Any]=True	,A_  :   List[str]=0.9_99	,A_  :   int=0.02	,A_  :   int=0.0_01	,**A_  :   Union[str, Any]	,)  -> Dict:
							super().__init__(**A_   )

							if depth_multiplier <= 0:
								raise ValueError('depth_multiplier must be greater than zero.'   )

							A     = num_channels
							A     = image_size
							A     = depth_multiplier
							A     = min_depth
							A     = hidden_act
							A     = tf_padding
							A     = classifier_dropout_prob
							A     = initializer_range
							A     = layer_norm_eps







class 					lowerCAmelCase_					(   _lowercase     ):



						'''simple docstring'''


						_lowerCamelCase:     Optional[int]   =     version.parse('''1.11'''     )


						@property
						def     _SCREAMING_SNAKE_CASE   (			self  :   Optional[int]   )  -> Mapping[str, Mapping[int, str]]:
							return OrderedDict([('pixel_values', {0: 'batch'})]   )


						@property
						def     _SCREAMING_SNAKE_CASE   (			self  :   Optional[int]   )  -> Mapping[str, Mapping[int, str]]:
							if self.task == "image-classification":
								return OrderedDict([('logits', {0: 'batch'})]   )
							else:
								return OrderedDict([('last_hidden_state', {0: 'batch'}), ('pooler_output', {0: 'batch'})]   )




						@property
						def     _SCREAMING_SNAKE_CASE   (			self  :   Optional[int]   )  -> float:
							return 1e-4