





import unittest

from parameterized import parameterized

from transformers import OpenLlamaConfig, is_torch_available, set_seed
from transformers.testing_utils import require_torch, torch_device

from ...generation.test_utils import GenerationTesterMixin
from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, ids_tensor, random_attention_mask
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
						import torch

						from transformers import OpenLlamaForCausalLM, OpenLlamaForSequenceClassification, OpenLlamaModel

class SCREAMING_SNAKE_CASE_ :





					"""simple docstring"""


					def __init__( self	,  _lowerCAmelCase	,  _lowerCAmelCase=13	,  _lowerCAmelCase=7	,  _lowerCAmelCase=True	,  _lowerCAmelCase=True	,  _lowerCAmelCase=False	,  _lowerCAmelCase=True	,  _lowerCAmelCase=99	,  _lowerCAmelCase=32	,  _lowerCAmelCase=5	,  _lowerCAmelCase=4	,  _lowerCAmelCase=37	,  _lowerCAmelCase="gelu"	,  _lowerCAmelCase=0.1	,  _lowerCAmelCase=0.1	,  _lowerCAmelCase=512	,  _lowerCAmelCase=16	,  _lowerCAmelCase=2	,  _lowerCAmelCase=0.02	,  _lowerCAmelCase=3	,  _lowerCAmelCase=4	,  _lowerCAmelCase=None	,  ):
										lowerCamelCase__       =       parent
										lowerCamelCase__       =       batch_size
										lowerCamelCase__       =       seq_length
										lowerCamelCase__       =       is_training
										lowerCamelCase__       =       use_input_mask
										lowerCamelCase__       =       use_token_type_ids
										lowerCamelCase__       =       use_labels
										lowerCamelCase__       =       vocab_size
										lowerCamelCase__       =       hidden_size
										lowerCamelCase__       =       num_hidden_layers
										lowerCamelCase__       =       num_attention_heads
										lowerCamelCase__       =       intermediate_size
										lowerCamelCase__       =       hidden_act
										lowerCamelCase__       =       hidden_dropout_prob
										lowerCamelCase__       =       attention_probs_dropout_prob
										lowerCamelCase__       =       max_position_embeddings
										lowerCamelCase__       =       type_vocab_size
										lowerCamelCase__       =       type_sequence_label_size
										lowerCamelCase__       =       initializer_range
										lowerCamelCase__       =       num_labels
										lowerCamelCase__       =       num_choices
										lowerCamelCase__       =       scope





					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       ids_tensor([self.batch_size, self.seq_length]	,  self.vocab_size	)

										lowerCamelCase__       =       None
										if self.use_input_mask:
															lowerCamelCase__       =       random_attention_mask([self.batch_size, self.seq_length]	)

										lowerCamelCase__       =       None
										if self.use_token_type_ids:
															lowerCamelCase__       =       ids_tensor([self.batch_size, self.seq_length]	,  self.type_vocab_size	)

										lowerCamelCase__       =       None
										lowerCamelCase__       =       None
										lowerCamelCase__       =       None
										if self.use_labels:
															lowerCamelCase__       =       ids_tensor([self.batch_size]	,  self.type_sequence_label_size	)
															lowerCamelCase__       =       ids_tensor([self.batch_size, self.seq_length]	,  self.num_labels	)
															lowerCamelCase__       =       ids_tensor([self.batch_size]	,  self.num_choices	)

										lowerCamelCase__       =       self.get_config()

										return config, input_ids, token_type_ids, input_mask, sequence_labels, token_labels, choice_labels





					def 					__magic_name__ ( self	):
										return OpenLlamaConfig(
										    vocab_size=self.vocab_size	,  hidden_size=self.hidden_size	,  num_hidden_layers=self.num_hidden_layers	,  num_attention_heads=self.num_attention_heads	,  intermediate_size=self.intermediate_size	,  hidden_act=self.hidden_act	,  hidden_dropout_prob=self.hidden_dropout_prob	,  attention_probs_dropout_prob=self.attention_probs_dropout_prob	,  max_position_embeddings=self.max_position_embeddings	,  type_vocab_size=self.type_vocab_size	,  is_decoder=_lowerCAmelCase	,  initializer_range=self.initializer_range	,  use_stable_embedding=_lowerCAmelCase	,  )





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	):
										lowerCamelCase__       =       OpenLlamaModel(config=_lowerCAmelCase	)
										model.to(_lowerCAmelCase	)
										model.eval()
										lowerCamelCase__       =       model(_lowerCAmelCase	,  attention_mask=_lowerCAmelCase	)
										lowerCamelCase__       =       model(_lowerCAmelCase	)
										self.parent.assertEqual(result.last_hidden_state.shape	,  (self.batch_size, self.seq_length, self.hidden_size)	)





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  ):
										lowerCamelCase__       =       True
										lowerCamelCase__       =       OpenLlamaModel(_lowerCAmelCase	)
										model.to(_lowerCAmelCase	)
										model.eval()
										lowerCamelCase__       =       model(
										    _lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  encoder_hidden_states=_lowerCAmelCase	,  encoder_attention_mask=_lowerCAmelCase	,  )
										lowerCamelCase__       =       model(
										    _lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  encoder_hidden_states=_lowerCAmelCase	,  )
										lowerCamelCase__       =       model(_lowerCAmelCase	,  attention_mask=_lowerCAmelCase	)
										self.parent.assertEqual(result.last_hidden_state.shape	,  (self.batch_size, self.seq_length, self.hidden_size)	)





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  ):
										lowerCamelCase__       =       OpenLlamaForCausalLM(config=_lowerCAmelCase	)
										model.to(_lowerCAmelCase	)
										model.eval()
										lowerCamelCase__       =       model(_lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  labels=_lowerCAmelCase	)
										self.parent.assertEqual(result.logits.shape	,  (self.batch_size, self.seq_length, self.vocab_size)	)





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  ):
										lowerCamelCase__       =       True
										lowerCamelCase__       =       True
										lowerCamelCase__       =       OpenLlamaForCausalLM(config=_lowerCAmelCase	)
										model.to(_lowerCAmelCase	)
										model.eval()

										# first forward pass
										lowerCamelCase__       =       model(
										    _lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  encoder_hidden_states=_lowerCAmelCase	,  encoder_attention_mask=_lowerCAmelCase	,  use_cache=_lowerCAmelCase	,  )
										lowerCamelCase__       =       outputs.past_key_values

										# create hypothetical multiple next token and extent to next_input_ids
										lowerCamelCase__       =       ids_tensor((self.batch_size, 3)	,  config.vocab_size	)
										lowerCamelCase__       =       ids_tensor((self.batch_size, 3)	,  vocab_size=2	)

										# append to next input_ids and
										lowerCamelCase__       =       torch.cat([input_ids, next_tokens]	,  dim=-1	)
										lowerCamelCase__       =       torch.cat([input_mask, next_mask]	,  dim=-1	)

										lowerCamelCase__       =       model(
										    _lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  encoder_hidden_states=_lowerCAmelCase	,  encoder_attention_mask=_lowerCAmelCase	,  output_hidden_states=_lowerCAmelCase	,  )["hidden_states"][0]
										lowerCamelCase__       =       model(
										    _lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  encoder_hidden_states=_lowerCAmelCase	,  encoder_attention_mask=_lowerCAmelCase	,  past_key_values=_lowerCAmelCase	,  output_hidden_states=_lowerCAmelCase	,  )["hidden_states"][0]

										# select random slice
										lowerCamelCase__       =       ids_tensor((1,)	,  output_from_past.shape[-1]	).item()
										lowerCamelCase__       =       output_from_no_past[:, -3:, random_slice_idx].detach()
										lowerCamelCase__       =       output_from_past[:, :, random_slice_idx].detach()

										self.parent.assertTrue(output_from_past_slice.shape[1] == next_tokens.shape[1]	)

										# test that outputs are equal for slice
										self.parent.assertTrue(torch.allclose(_lowerCAmelCase	,  _lowerCAmelCase	,  atol=1E-3	)	)






					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       self.prepare_config_and_inputs()
										(
										    (
										    lowerCamelCase__
										)    ,		(
										    lowerCamelCase__
										)    ,		(
										    lowerCamelCase__
										)    ,		(
										    lowerCamelCase__
										)    ,		(
										    lowerCamelCase__
										)    ,		(
										    lowerCamelCase__
										)    ,		(
										    lowerCamelCase__
										)    ,		
										)       =       config_and_inputs
										lowerCamelCase__       =       {"input_ids": input_ids, "attention_mask": input_mask}
										return config, inputs_dict

@require_torch
class SCREAMING_SNAKE_CASE_ (					lowercase_							,       lowercase_							,       lowercase_							,       unittest.TestCase   ):





					"""simple docstring"""


					A__				 =    (
					    (OpenLlamaModel, OpenLlamaForCausalLM, OpenLlamaForSequenceClassification) if is_torch_available() else ()
					)
					A__				 =    (OpenLlamaForCausalLM,) if is_torch_available() else ()
					A__				 =    (
					    {
					        "feature-extraction": OpenLlamaModel,
					        "text-classification": OpenLlamaForSequenceClassification,
					        "text-generation": OpenLlamaForCausalLM,
					        "zero-shot": OpenLlamaForSequenceClassification,
					    }
					    if is_torch_available()
					    else {}
					)
					A__				 =    False
					A__				 =    False





					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       OpenLlamaModelTester(self	)
										lowerCamelCase__       =       ConfigTester(self	,  config_class=_lowerCAmelCase	,  hidden_size=37	)





					def 					__magic_name__ ( self	):
										self.config_tester.run_common_tests()





					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       self.model_tester.prepare_config_and_inputs()
										self.model_tester.create_and_check_model(*_lowerCAmelCase	)





					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       self.model_tester.prepare_config_and_inputs()
										for type in ["absolute", "relative_key", "relative_key_query"]:
															lowerCamelCase__       =       type
															self.model_tester.create_and_check_model(*_lowerCAmelCase	)





					def 					__magic_name__ ( self	):
										lowerCamelCase__    ,		lowerCamelCase__       =       self.model_tester.prepare_config_and_inputs_for_common()
										lowerCamelCase__       =       3
										lowerCamelCase__       =       input_dict["input_ids"]
										lowerCamelCase__       =       input_ids.ne(1	).to(_lowerCAmelCase	)
										lowerCamelCase__       =       ids_tensor([self.model_tester.batch_size]	,  self.model_tester.type_sequence_label_size	)
										lowerCamelCase__       =       OpenLlamaForSequenceClassification(_lowerCAmelCase	)
										model.to(_lowerCAmelCase	)
										model.eval()
										lowerCamelCase__       =       model(_lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  labels=_lowerCAmelCase	)
										self.assertEqual(result.logits.shape	,  (self.model_tester.batch_size, self.model_tester.num_labels)	)





					def 					__magic_name__ ( self	):
										lowerCamelCase__    ,		lowerCamelCase__       =       self.model_tester.prepare_config_and_inputs_for_common()
										lowerCamelCase__       =       3
										lowerCamelCase__       =       "single_label_classification"
										lowerCamelCase__       =       input_dict["input_ids"]
										lowerCamelCase__       =       input_ids.ne(1	).to(_lowerCAmelCase	)
										lowerCamelCase__       =       ids_tensor([self.model_tester.batch_size]	,  self.model_tester.type_sequence_label_size	)
										lowerCamelCase__       =       OpenLlamaForSequenceClassification(_lowerCAmelCase	)
										model.to(_lowerCAmelCase	)
										model.eval()
										lowerCamelCase__       =       model(_lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  labels=_lowerCAmelCase	)
										self.assertEqual(result.logits.shape	,  (self.model_tester.batch_size, self.model_tester.num_labels)	)





					def 					__magic_name__ ( self	):
										lowerCamelCase__    ,		lowerCamelCase__       =       self.model_tester.prepare_config_and_inputs_for_common()
										lowerCamelCase__       =       3
										lowerCamelCase__       =       "multi_label_classification"
										lowerCamelCase__       =       input_dict["input_ids"]
										lowerCamelCase__       =       input_ids.ne(1	).to(_lowerCAmelCase	)
										lowerCamelCase__       =       ids_tensor(
										    [self.model_tester.batch_size, config.num_labels]	,  self.model_tester.type_sequence_label_size	).to(torch.float	)
										lowerCamelCase__       =       OpenLlamaForSequenceClassification(_lowerCAmelCase	)
										model.to(_lowerCAmelCase	)
										model.eval()
										lowerCamelCase__       =       model(_lowerCAmelCase	,  attention_mask=_lowerCAmelCase	,  labels=_lowerCAmelCase	)
										self.assertEqual(result.logits.shape	,  (self.model_tester.batch_size, self.model_tester.num_labels)	)





					@unittest.skip("Open-Llama buffers include complex numbers, which breaks this test"	)
					def 					__magic_name__ ( self	):
										pass






					@parameterized.expand([("linear",), ("dynamic",)]	)
					def 					__magic_name__ ( self	,  _lowerCAmelCase	):
										lowerCamelCase__    ,		lowerCamelCase__       =       self.model_tester.prepare_config_and_inputs_for_common()
										lowerCamelCase__       =       ids_tensor([1, 10]	,  config.vocab_size	)
										lowerCamelCase__       =       ids_tensor([1, int(config.max_position_embeddings * 1.5	)]	,  config.vocab_size	)

										set_seed(42	)  # Fixed seed at init time so the two models get the same random weights
										lowerCamelCase__       =       OpenLlamaModel(_lowerCAmelCase	)
										original_model.to(_lowerCAmelCase	)
										original_model.eval()
										lowerCamelCase__       =       original_model(_lowerCAmelCase	).last_hidden_state
										lowerCamelCase__       =       original_model(_lowerCAmelCase	).last_hidden_state

										set_seed(42	)  # Fixed seed at init time so the two models get the same random weights
										lowerCamelCase__       =       {"type": scaling_type, "factor": 10.0}
										lowerCamelCase__       =       OpenLlamaModel(_lowerCAmelCase	)
										scaled_model.to(_lowerCAmelCase	)
										scaled_model.eval()
										lowerCamelCase__       =       scaled_model(_lowerCAmelCase	).last_hidden_state
										lowerCamelCase__       =       scaled_model(_lowerCAmelCase	).last_hidden_state

										# Dynamic scaling does not change the RoPE embeddings until it receives an input longer than the original
										# maximum sequence length, so the outputs for the short input should match.
										if scaling_type == "dynamic":
															self.assertTrue(torch.allclose(_lowerCAmelCase	,  _lowerCAmelCase	,  atol=1E-5	)	)
										else:
															self.assertFalse(torch.allclose(_lowerCAmelCase	,  _lowerCAmelCase	,  atol=1E-5	)	)

										# The output should be different for long inputs
										self.assertFalse(torch.allclose(_lowerCAmelCase	,  _lowerCAmelCase	,  atol=1E-5	)	)








from typing import Dict, List, Optional, Union

import numpy as np

from transformers.utils import is_vision_available
from transformers.utils.generic import TensorType

from ...image_processing_utils import BaseImageProcessor, BatchFeature, get_size_dict
from ...image_transforms import (
    center_crop,
    get_resize_output_image_size,
    normalize,
    rescale,
    resize,
    to_channel_dimension_format,
)
from ...image_utils import (
    IMAGENET_STANDARD_MEAN,
    IMAGENET_STANDARD_STD,
    ChannelDimension,
    ImageInput,
    PILImageResampling,
    is_valid_image,
    to_numpy_array,
    valid_images,
)
from ...utils import logging


if is_vision_available():
						import PIL

A_												=     logging.get_logger(__name__)





def    __UpperCamelCase      (    a) ->List[List[ImageInput]]:
					if isinstance(a,     (list, tuple)) and isinstance(videos[0],     (list, tuple)) and is_valid_image(videos[0][0]):
										return videos

					elif isinstance(a,     (list, tuple)) and is_valid_image(videos[0]):
										return [videos]

					elif is_valid_image(a):
										return [[videos]]

					raise ValueError(f"Could not make batched video from {videos}")







class SCREAMING_SNAKE_CASE_ (					lowercase_   ):





					"""simple docstring"""


					A__				 =    ["pixel_values"]





					def __init__( self	,  _lowerCAmelCase = True	,  _lowerCAmelCase = None	,  _lowerCAmelCase = PILImageResampling.BILINEAR	,  _lowerCAmelCase = True	,  _lowerCAmelCase = None	,  _lowerCAmelCase = True	,  _lowerCAmelCase = 1 / 255	,  _lowerCAmelCase = True	,  _lowerCAmelCase = True	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  **_lowerCAmelCase	,  ):
										super().__init__(**_lowerCAmelCase	)
										lowerCamelCase__       =       size if size is not None else {"shortest_edge": 256}
										lowerCamelCase__       =       get_size_dict(_lowerCAmelCase	,  default_to_square=_lowerCAmelCase	)
										lowerCamelCase__       =       crop_size if crop_size is not None else {"height": 224, "width": 224}
										lowerCamelCase__       =       get_size_dict(_lowerCAmelCase	,  param_name="crop_size"	)

										lowerCamelCase__       =       do_resize
										lowerCamelCase__       =       size
										lowerCamelCase__       =       do_center_crop
										lowerCamelCase__       =       crop_size
										lowerCamelCase__       =       resample
										lowerCamelCase__       =       do_rescale
										lowerCamelCase__       =       rescale_factor
										lowerCamelCase__       =       offset
										lowerCamelCase__       =       do_normalize
										lowerCamelCase__       =       image_mean if image_mean is not None else IMAGENET_STANDARD_MEAN
										lowerCamelCase__       =       image_std if image_std is not None else IMAGENET_STANDARD_STD





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase = PILImageResampling.BILINEAR	,  _lowerCAmelCase = None	,  **_lowerCAmelCase	,  ):
										lowerCamelCase__       =       get_size_dict(_lowerCAmelCase	,  default_to_square=_lowerCAmelCase	)
										if "shortest_edge" in size:
															lowerCamelCase__       =       get_resize_output_image_size(_lowerCAmelCase	,  size["shortest_edge"]	,  default_to_square=_lowerCAmelCase	)
										elif "height" in size and "width" in size:
															lowerCamelCase__       =       (size["height"], size["width"])
										else:
															raise ValueError(F"Size must have 'height' and 'width' or 'shortest_edge' as keys. Got {size.keys()}"	)
										return resize(_lowerCAmelCase	,  size=_lowerCAmelCase	,  resample=_lowerCAmelCase	,  data_format=_lowerCAmelCase	,  **_lowerCAmelCase	)





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase = None	,  **_lowerCAmelCase	,  ):
										lowerCamelCase__       =       get_size_dict(_lowerCAmelCase	)
										if "height" not in size or "width" not in size:
															raise ValueError(F"Size must have 'height' and 'width' as keys. Got {size.keys()}"	)
										return center_crop(_lowerCAmelCase	,  size=(size["height"], size["width"])	,  data_format=_lowerCAmelCase	,  **_lowerCAmelCase	)





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase = True	,  _lowerCAmelCase = None	,  **_lowerCAmelCase	,  ):
										lowerCamelCase__       =       image.astype(np.floataa	)
										if offset:
															lowerCamelCase__       =       image - (scale / 2)
										return rescale(_lowerCAmelCase	,  scale=_lowerCAmelCase	,  data_format=_lowerCAmelCase	,  **_lowerCAmelCase	)





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase	,  _lowerCAmelCase = None	,  **_lowerCAmelCase	,  ):
										return normalize(_lowerCAmelCase	,  mean=_lowerCAmelCase	,  std=_lowerCAmelCase	,  data_format=_lowerCAmelCase	,  **_lowerCAmelCase	)





					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = ChannelDimension.FIRST	,  ):
										if do_resize and size is None or resample is None:
															raise ValueError("Size and resample must be specified if do_resize is True."	)

										if do_center_crop and crop_size is None:
															raise ValueError("Crop size must be specified if do_center_crop is True."	)

										if do_rescale and rescale_factor is None:
															raise ValueError("Rescale factor must be specified if do_rescale is True."	)

										if do_normalize and (image_mean is None or image_std is None):
															raise ValueError("Image mean and std must be specified if do_normalize is True."	)

										if offset and not do_rescale:
															raise ValueError("For offset, do_rescale must also be set to True."	)

										# All transformations expect numpy arrays.
										lowerCamelCase__       =       to_numpy_array(_lowerCAmelCase	)

										if do_resize:
															lowerCamelCase__       =       self.resize(image=_lowerCAmelCase	,  size=_lowerCAmelCase	,  resample=_lowerCAmelCase	)

										if do_center_crop:
															lowerCamelCase__       =       self.center_crop(_lowerCAmelCase	,  size=_lowerCAmelCase	)

										if do_rescale:
															lowerCamelCase__       =       self.rescale(image=_lowerCAmelCase	,  scale=_lowerCAmelCase	,  offset=_lowerCAmelCase	)

										if do_normalize:
															lowerCamelCase__       =       self.normalize(image=_lowerCAmelCase	,  mean=_lowerCAmelCase	,  std=_lowerCAmelCase	)

										lowerCamelCase__       =       to_channel_dimension_format(_lowerCAmelCase	,  _lowerCAmelCase	)
										return image






					def 					__magic_name__ ( self	,  _lowerCAmelCase	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = None	,  _lowerCAmelCase = ChannelDimension.FIRST	,  **_lowerCAmelCase	,  ):
										lowerCamelCase__       =       do_resize if do_resize is not None else self.do_resize
										lowerCamelCase__       =       resample if resample is not None else self.resample
										lowerCamelCase__       =       do_center_crop if do_center_crop is not None else self.do_center_crop
										lowerCamelCase__       =       do_rescale if do_rescale is not None else self.do_rescale
										lowerCamelCase__       =       rescale_factor if rescale_factor is not None else self.rescale_factor
										lowerCamelCase__       =       offset if offset is not None else self.offset
										lowerCamelCase__       =       do_normalize if do_normalize is not None else self.do_normalize
										lowerCamelCase__       =       image_mean if image_mean is not None else self.image_mean
										lowerCamelCase__       =       image_std if image_std is not None else self.image_std

										lowerCamelCase__       =       size if size is not None else self.size
										lowerCamelCase__       =       get_size_dict(_lowerCAmelCase	,  default_to_square=_lowerCAmelCase	)
										lowerCamelCase__       =       crop_size if crop_size is not None else self.crop_size
										lowerCamelCase__       =       get_size_dict(_lowerCAmelCase	,  param_name="crop_size"	)

										if not valid_images(_lowerCAmelCase	):
															raise ValueError(
															    "Invalid image type. Must be of type PIL.Image.Image, numpy.ndarray, "
															    "torch.Tensor, tf.Tensor or jax.ndarray."	)

										lowerCamelCase__       =       make_batched(_lowerCAmelCase	)

										lowerCamelCase__       =       [
										    [
										        self._preprocess_image(
										            image=_lowerCAmelCase	,  do_resize=_lowerCAmelCase	,  size=_lowerCAmelCase	,  resample=_lowerCAmelCase	,  do_center_crop=_lowerCAmelCase	,  crop_size=_lowerCAmelCase	,  do_rescale=_lowerCAmelCase	,  rescale_factor=_lowerCAmelCase	,  offset=_lowerCAmelCase	,  do_normalize=_lowerCAmelCase	,  image_mean=_lowerCAmelCase	,  image_std=_lowerCAmelCase	,  data_format=_lowerCAmelCase	,  )
										        for img in video
										    ]
										    for video in videos
										]

										lowerCamelCase__       =       {"pixel_values": videos}
										return BatchFeature(data=_lowerCAmelCase	,  tensor_type=_lowerCAmelCase	)

