"""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	):
			snake_case_							=      MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING


			def 	snake_case__	(     self,				_UpperCAmelCase,				_UpperCAmelCase,				_UpperCAmelCase  ):
								'''simple docstring'''



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


			def 	snake_case__	(     self,				_UpperCAmelCase,				_UpperCAmelCase  ):
								'''simple docstring'''



								for example in examples:
													lowercase__				 =							video_classifier(UpperCamelCase__  )

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


			@require_torch
			def 	snake_case__	(     self  ):
								'''simple docstring'''



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

								lowercase__				 =							hf_hub_download(repo_id="nateraw/video-demo",				filename="archery.mp4",				repo_type="dataset"  )
								lowercase__				 =							video_classifier(UpperCamelCase__,				top_k=2  )
								self.assertEqual(
								    nested_simplify(UpperCamelCase__,				decimals=4  ),				[{"score": 0.5_199, "label": "LABEL_0"}, {"score": 0.4_801, "label": "LABEL_1"}],				)

								lowercase__				 =							video_classifier(
								    [
								        video_file_path,
								        video_file_path,
								    ],				top_k=2,				)
								self.assertEqual(
								    nested_simplify(UpperCamelCase__,				decimals=4  ),				[
								        [{"score": 0.5_199, "label": "LABEL_0"}, {"score": 0.4_801, "label": "LABEL_1"}],
								        [{"score": 0.5_199, "label": "LABEL_0"}, {"score": 0.4_801, "label": "LABEL_1"}],
								    ],				)


			@require_tf
			def 	snake_case__	(     self  ):
								'''simple docstring'''



								pass





"""simple docstring"""


from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


lowerCAmelCase_:					Union[str, Any]     =					{
    "configuration_distilbert": [
        "DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "DistilBertConfig",
        "DistilBertOnnxConfig",
    ],
    "tokenization_distilbert": ["DistilBertTokenizer"],
}

try:
 if not is_tokenizers_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase_:					Union[str, Any]     =					["DistilBertTokenizerFast"]

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase_:					Any     =					[
     "DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
     "DistilBertForMaskedLM",
     "DistilBertForMultipleChoice",
     "DistilBertForQuestionAnswering",
     "DistilBertForSequenceClassification",
     "DistilBertForTokenClassification",
     "DistilBertModel",
     "DistilBertPreTrainedModel",
 ]

try:
 if not is_tf_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase_:					Tuple     =					[
     "TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST",
     "TFDistilBertForMaskedLM",
     "TFDistilBertForMultipleChoice",
     "TFDistilBertForQuestionAnswering",
     "TFDistilBertForSequenceClassification",
     "TFDistilBertForTokenClassification",
     "TFDistilBertMainLayer",
     "TFDistilBertModel",
     "TFDistilBertPreTrainedModel",
 ]

try:
 if not is_flax_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase_:					Optional[Any]     =					[
     "FlaxDistilBertForMaskedLM",
     "FlaxDistilBertForMultipleChoice",
     "FlaxDistilBertForQuestionAnswering",
     "FlaxDistilBertForSequenceClassification",
     "FlaxDistilBertForTokenClassification",
     "FlaxDistilBertModel",
     "FlaxDistilBertPreTrainedModel",
 ]


if TYPE_CHECKING:
 from .configuration_distilbert import (
     DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
     DistilBertConfig,
     DistilBertOnnxConfig,
 )
 from .tokenization_distilbert import DistilBertTokenizer

 try:
  if not is_tokenizers_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_distilbert_fast import DistilBertTokenizerFast

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_distilbert import (
      DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
      DistilBertForMaskedLM,
      DistilBertForMultipleChoice,
      DistilBertForQuestionAnswering,
      DistilBertForSequenceClassification,
      DistilBertForTokenClassification,
      DistilBertModel,
      DistilBertPreTrainedModel,
  )

 try:
  if not is_tf_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_tf_distilbert import (
      TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
      TFDistilBertForMaskedLM,
      TFDistilBertForMultipleChoice,
      TFDistilBertForQuestionAnswering,
      TFDistilBertForSequenceClassification,
      TFDistilBertForTokenClassification,
      TFDistilBertMainLayer,
      TFDistilBertModel,
      TFDistilBertPreTrainedModel,
  )

 try:
  if not is_flax_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_flax_distilbert import (
      FlaxDistilBertForMaskedLM,
      FlaxDistilBertForMultipleChoice,
      FlaxDistilBertForQuestionAnswering,
      FlaxDistilBertForSequenceClassification,
      FlaxDistilBertForTokenClassification,
      FlaxDistilBertModel,
      FlaxDistilBertPreTrainedModel,
  )

else:
 import sys

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




