
import unittest

from transformers import ElectraConfig, is_torch_available
from transformers.models.auto import get_values
from transformers.testing_utils import require_torch, slow, torch_device

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor, random_attention_mask
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
    import torch

    from transformers import (
        MODEL_FOR_PRETRAINING_MAPPING,
        ElectraForCausalLM,
        ElectraForMaskedLM,
        ElectraForMultipleChoice,
        ElectraForPreTraining,
        ElectraForQuestionAnswering,
        ElectraForSequenceClassification,
        ElectraForTokenClassification,
        ElectraModel,
    )
    from transformers.models.electra.modeling_electra import ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST




class 	UpperCAmelCase_      :


  '''simple docstring'''







  def __init__(			self      :			List[Any]      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Optional[Any]=13      ,							UpperCamelCase__      :			List[str]=7      ,							UpperCamelCase__      :			int=True      ,							UpperCamelCase__      :			List[str]=True      ,							UpperCamelCase__      :			Tuple=True      ,							UpperCamelCase__      :			Dict=True      ,							UpperCamelCase__      :			int=99      ,							UpperCamelCase__      :			List[str]=32      ,							UpperCamelCase__      :			str=5      ,							UpperCamelCase__      :			Tuple=4      ,							UpperCamelCase__      :			str=37      ,							UpperCamelCase__      :			List[str]="gelu"      ,							UpperCamelCase__      :			Optional[int]=0.1      ,							UpperCamelCase__      :			Optional[int]=0.1      ,							UpperCamelCase__      :			Dict=512      ,							UpperCamelCase__      :			Any=16      ,							UpperCamelCase__      :			Tuple=2      ,							UpperCamelCase__      :			List[Any]=0.02      ,							UpperCamelCase__      :			Any=3      ,							UpperCamelCase__      :			Optional[Any]=4      ,							UpperCamelCase__      :			List[str]=None      ,							)      ->     List[str]:







    """simple docstring"""






    __magic_name__    					=	parent
    __magic_name__    					=	batch_size
    __magic_name__    					=	seq_length
    __magic_name__    					=	is_training
    __magic_name__    					=	use_input_mask
    __magic_name__    					=	use_token_type_ids
    __magic_name__    					=	use_labels
    __magic_name__    					=	vocab_size
    __magic_name__    					=	hidden_size
    __magic_name__    					=	num_hidden_layers
    __magic_name__    					=	num_attention_heads
    __magic_name__    					=	intermediate_size
    __magic_name__    					=	hidden_act
    __magic_name__    					=	hidden_dropout_prob
    __magic_name__    					=	attention_probs_dropout_prob
    __magic_name__    					=	max_position_embeddings
    __magic_name__    					=	type_vocab_size
    __magic_name__    					=	type_sequence_label_size
    __magic_name__    					=	initializer_range
    __magic_name__    					=	num_labels
    __magic_name__    					=	num_choices
    __magic_name__    					=	scope
  def 							_lowercase							(			self      :			Tuple   )      ->     str:







    """simple docstring"""






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

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

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

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

    __magic_name__    					=	self.get_config()

    return (
        config,
        input_ids,
        token_type_ids,
        input_mask,
        sequence_labels,
        token_labels,
        choice_labels,
        fake_token_labels,
    )
  def 							_lowercase							(			self      :			List[Any]   )      ->     Tuple:







    """simple docstring"""






    return ElectraConfig(
        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=UpperCamelCase__      ,							initializer_range=self.initializer_range      ,							)
  def 							_lowercase							(			self      :			Optional[int]   )      ->     int:







    """simple docstring"""






    (
        (
        __magic_name__
    )					,   (
        __magic_name__
    )					,   (
        __magic_name__
    )					,   (
        __magic_name__
    )					,   (
        __magic_name__
    )					,   (
        __magic_name__
    )					,   (
        __magic_name__
    )					,   (
        __magic_name__
    )					,   
    )    					=	self.prepare_config_and_inputs()

    __magic_name__    					=	True
    __magic_name__    					=	floats_tensor([self.batch_size, self.seq_length, self.hidden_size]   )
    __magic_name__    					=	ids_tensor([self.batch_size, self.seq_length]      ,							vocab_size=2   )

    return (
        config,
        input_ids,
        token_type_ids,
        input_mask,
        sequence_labels,
        token_labels,
        choice_labels,
        encoder_hidden_states,
        encoder_attention_mask,
    )
  def 							_lowercase							(			self      :			Optional[int]      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Optional[int]      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			str      ,							)      ->     Tuple:







    """simple docstring"""






    __magic_name__    					=	ElectraModel(config=UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	model(UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__   )
    __magic_name__    					=	model(UpperCamelCase__      ,							token_type_ids=UpperCamelCase__   )
    __magic_name__    					=	model(UpperCamelCase__   )
    self.parent.assertEqual(result.last_hidden_state.shape      ,							(self.batch_size, self.seq_length, self.hidden_size)   )
  def 							_lowercase							(			self      :			Dict      ,							UpperCamelCase__      :			Dict      ,							UpperCamelCase__      :			int      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			Optional[int]      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Any      ,							UpperCamelCase__      :			Any      ,							UpperCamelCase__      :			int      ,							)      ->     Optional[int]:







    """simple docstring"""






    __magic_name__    					=	True
    __magic_name__    					=	ElectraModel(UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	model(
        UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							encoder_hidden_states=UpperCamelCase__      ,							encoder_attention_mask=UpperCamelCase__      ,							)
    __magic_name__    					=	model(
        UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							encoder_hidden_states=UpperCamelCase__      ,							)
    __magic_name__    					=	model(UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__   )
    self.parent.assertEqual(result.last_hidden_state.shape      ,							(self.batch_size, self.seq_length, self.hidden_size)   )
  def 							_lowercase							(			self      :			Optional[Any]      ,							UpperCamelCase__      :			Union[str, Any]      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Optional[int]      ,							UpperCamelCase__      :			int      ,							UpperCamelCase__      :			Union[str, Any]      ,							UpperCamelCase__      :			Optional[int]      ,							)      ->     str:







    """simple docstring"""






    __magic_name__    					=	ElectraForMaskedLM(config=UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	model(UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							labels=UpperCamelCase__   )
    self.parent.assertEqual(result.logits.shape      ,							(self.batch_size, self.seq_length, self.vocab_size)   )
  def 							_lowercase							(			self      :			Any      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Dict      ,							UpperCamelCase__      :			str      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			Dict      ,							UpperCamelCase__      :			Any      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			List[str]      ,							)      ->     Union[str, Any]:







    """simple docstring"""






    __magic_name__    					=	ElectraForCausalLM(config=UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	model(UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							labels=UpperCamelCase__   )
    self.parent.assertEqual(result.logits.shape      ,							(self.batch_size, self.seq_length, self.vocab_size)   )
  def 							_lowercase							(			self      :			str      ,							UpperCamelCase__      :			int      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Optional[int]      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			Optional[int]      ,							)      ->     int:







    """simple docstring"""






    __magic_name__    					=	self.num_labels
    __magic_name__    					=	ElectraForTokenClassification(config=UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	model(UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							labels=UpperCamelCase__   )
    self.parent.assertEqual(result.logits.shape      ,							(self.batch_size, self.seq_length, self.num_labels)   )
  def 							_lowercase							(			self      :			Any      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			Optional[int]      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			Tuple      ,							)      ->     str:







    """simple docstring"""






    __magic_name__    					=	self.num_labels
    __magic_name__    					=	ElectraForPreTraining(config=UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	model(UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							labels=UpperCamelCase__   )
    self.parent.assertEqual(result.logits.shape      ,							(self.batch_size, self.seq_length)   )
  def 							_lowercase							(			self      :			Optional[int]      ,							UpperCamelCase__      :			Union[str, Any]      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			Any      ,							UpperCamelCase__      :			Union[str, Any]      ,							UpperCamelCase__      :			str      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			int      ,							UpperCamelCase__      :			Optional[int]      ,							)      ->     List[Any]:







    """simple docstring"""






    __magic_name__    					=	self.num_labels
    __magic_name__    					=	ElectraForSequenceClassification(UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	model(UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							labels=UpperCamelCase__   )
    self.parent.assertEqual(result.logits.shape      ,							(self.batch_size, self.num_labels)   )
  def 							_lowercase							(			self      :			List[Any]      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			int      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Any      ,							UpperCamelCase__      :			Optional[int]      ,							UpperCamelCase__      :			Union[str, Any]      ,							UpperCamelCase__      :			str      ,							)      ->     Any:







    """simple docstring"""






    __magic_name__    					=	ElectraForQuestionAnswering(config=UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	model(
        UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							start_positions=UpperCamelCase__      ,							end_positions=UpperCamelCase__      ,							)
    self.parent.assertEqual(result.start_logits.shape      ,							(self.batch_size, self.seq_length)   )
    self.parent.assertEqual(result.end_logits.shape      ,							(self.batch_size, self.seq_length)   )
  def 							_lowercase							(			self      :			Tuple      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			List[str]      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			Optional[Any]      ,							UpperCamelCase__      :			List[Any]      ,							UpperCamelCase__      :			List[Any]      ,							)      ->     Dict:







    """simple docstring"""






    __magic_name__    					=	self.num_choices
    __magic_name__    					=	ElectraForMultipleChoice(config=UpperCamelCase__   )
    model.to(UpperCamelCase__   )
    model.eval()
    __magic_name__    					=	input_ids.unsqueeze(1   ).expand(-1      ,							self.num_choices      ,							-1   ).contiguous()
    __magic_name__    					=	token_type_ids.unsqueeze(1   ).expand(-1      ,							self.num_choices      ,							-1   ).contiguous()
    __magic_name__    					=	input_mask.unsqueeze(1   ).expand(-1      ,							self.num_choices      ,							-1   ).contiguous()
    __magic_name__    					=	model(
        UpperCamelCase__      ,							attention_mask=UpperCamelCase__      ,							token_type_ids=UpperCamelCase__      ,							labels=UpperCamelCase__      ,							)
    self.parent.assertEqual(result.logits.shape      ,							(self.batch_size, self.num_choices)   )





  def 							_lowercase							(			self      :			List[str]   )      ->     int:







    """simple docstring"""






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







@require_torch
class 	UpperCAmelCase_      (			_A  ,	_A  ,	unittest.TestCase					):


  '''simple docstring'''







  a__   	=		(
      (
          ElectraModel,
          ElectraForPreTraining,
          ElectraForMaskedLM,
          ElectraForCausalLM,
          ElectraForMultipleChoice,
          ElectraForTokenClassification,
          ElectraForSequenceClassification,
          ElectraForQuestionAnswering,
      )
      if is_torch_available()
      else ()
  )
  a__   	=		(
      {
          """feature-extraction""": ElectraModel,
          """fill-mask""": ElectraForMaskedLM,
          """question-answering""": ElectraForQuestionAnswering,
          """text-classification""": ElectraForSequenceClassification,
          """text-generation""": ElectraForCausalLM,
          """token-classification""": ElectraForTokenClassification,
          """zero-shot""": ElectraForSequenceClassification,
      }
      if is_torch_available()
      else {}
  )
  a__   	=		True
  def 							_lowercase							(			self      :			Dict      ,							UpperCamelCase__      :			Tuple      ,							UpperCamelCase__      :			Optional[int]      ,							UpperCamelCase__      :			List[str]=False   )      ->     List[str]:







    """simple docstring"""






    __magic_name__    					=	super()._prepare_for_class(UpperCamelCase__      ,							UpperCamelCase__      ,							return_labels=UpperCamelCase__   )

    if return_labels:
      if model_class in get_values(UpperCamelCase__   ):
        __magic_name__    					=	torch.zeros(
            (self.model_tester.batch_size, self.model_tester.seq_length)      ,							dtype=torch.long      ,							device=UpperCamelCase__   )
    return inputs_dict
  def 							_lowercase							(			self      :			Optional[Any]   )      ->     Dict:







    """simple docstring"""






    __magic_name__    					=	ElectraModelTester(self   )
    __magic_name__    					=	ConfigTester(self      ,							config_class=UpperCamelCase__      ,							hidden_size=37   )
  def 							_lowercase							(			self      :			List[str]   )      ->     List[str]:







    """simple docstring"""






    self.config_tester.run_common_tests()
  def 							_lowercase							(			self      :			str   )      ->     List[str]:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_electra_model(*UpperCamelCase__   )
  def 							_lowercase							(			self      :			str   )      ->     Union[str, Any]:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs_for_decoder()
    self.model_tester.create_and_check_electra_model_as_decoder(*UpperCamelCase__   )
  def 							_lowercase							(			self      :			Optional[Any]   )      ->     List[Any]:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs()
    for type in ["absolute", "relative_key", "relative_key_query"]:
      __magic_name__    					=	type
      self.model_tester.create_and_check_electra_model(*UpperCamelCase__   )
  def 							_lowercase							(			self      :			int   )      ->     Tuple:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_electra_for_masked_lm(*UpperCamelCase__   )
  def 							_lowercase							(			self      :			Tuple   )      ->     str:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_electra_for_token_classification(*UpperCamelCase__   )
  def 							_lowercase							(			self      :			List[str]   )      ->     Union[str, Any]:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_electra_for_pretraining(*UpperCamelCase__   )
  def 							_lowercase							(			self      :			List[Any]   )      ->     int:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_electra_for_sequence_classification(*UpperCamelCase__   )
  def 							_lowercase							(			self      :			Any   )      ->     Any:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_electra_for_question_answering(*UpperCamelCase__   )
  def 							_lowercase							(			self      :			Any   )      ->     Any:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs()
    self.model_tester.create_and_check_electra_for_multiple_choice(*UpperCamelCase__   )
  @slow
  def 							_lowercase							(			self      :			Tuple   )      ->     Optional[int]:







    """simple docstring"""






    for model_name in ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
      __magic_name__    					=	ElectraModel.from_pretrained(UpperCamelCase__   )
      self.assertIsNotNone(UpperCamelCase__   )





  def 							_lowercase							(			self      :			str   )      ->     Optional[Any]:







    """simple docstring"""






    __magic_name__    					=	self.model_tester.prepare_config_and_inputs_for_decoder()
    self.model_tester.create_and_check_electra_for_causal_lm(*UpperCamelCase__   )







@require_torch
class 	UpperCAmelCase_      (			unittest.TestCase					):


  '''simple docstring'''







  @slow
  def 							_lowercase							(			self      :			Union[str, Any]   )      ->     List[str]:







    """simple docstring"""






    __magic_name__    					=	ElectraModel.from_pretrained("""google/electra-small-discriminator"""   )
    __magic_name__    					=	torch.tensor([[0, 345, 232, 328, 740, 140, 1695, 69, 6078, 1588, 2]]   )
    __magic_name__    					=	torch.tensor([[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]   )
    __magic_name__    					=	model(UpperCamelCase__      ,							attention_mask=UpperCamelCase__   )[0]
    __magic_name__    					=	torch.Size((1, 11, 256)   )
    self.assertEqual(output.shape      ,							UpperCamelCase__   )
    __magic_name__    					=	torch.tensor(
        [[[0.4471, 0.6821, -0.3265], [0.4627, 0.5255, -0.3668], [0.4532, 0.3313, -0.4344]]]   )

    self.assertTrue(torch.allclose(output[:, 1:4, 1:4]      ,							UpperCamelCase__      ,							atol=1E-4   )   )



from typing import Dict, List, Optional, Union

import numpy as np

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


__lowerCAmelCase      :					str   	=       logging.get_logger(__name__)




class 	UpperCAmelCase_      (			_A					):


  '''simple docstring'''







  a__   	=		["""pixel_values"""]
  def __init__(			self      :			Tuple      ,							UpperCamelCase__      :			bool = True      ,							UpperCamelCase__      :			Optional[Dict[str, int]] = None      ,							UpperCamelCase__      :			PILImageResampling = PILImageResampling.BILINEAR      ,							UpperCamelCase__      :			bool = True      ,							UpperCamelCase__      :			Union[int, float] = 1 / 255      ,							UpperCamelCase__      :			bool = True      ,							UpperCamelCase__      :			Optional[Union[float, List[float]]] = None      ,							UpperCamelCase__      :			Optional[Union[float, List[float]]] = None      ,							**UpperCamelCase__      :			Optional[Any]      ,							)      ->     None:







    """simple docstring"""






    super().__init__(**UpperCamelCase__   )
    __magic_name__    					=	size if size is not None else {"""height""": 224, """width""": 224}
    __magic_name__    					=	get_size_dict(UpperCamelCase__   )
    __magic_name__    					=	do_resize
    __magic_name__    					=	do_rescale
    __magic_name__    					=	do_normalize
    __magic_name__    					=	size
    __magic_name__    					=	resample
    __magic_name__    					=	rescale_factor
    __magic_name__    					=	image_mean if image_mean is not None else IMAGENET_STANDARD_MEAN
    __magic_name__    					=	image_std if image_std is not None else IMAGENET_STANDARD_STD
  def 							_lowercase							(			self      :			Optional[Any]      ,							UpperCamelCase__      :			np.ndarray      ,							UpperCamelCase__      :			Dict[str, int]      ,							UpperCamelCase__      :			PILImageResampling = PILImageResampling.BILINEAR      ,							UpperCamelCase__      :			Optional[Union[str, ChannelDimension]] = None      ,							**UpperCamelCase__      :			Optional[int]      ,							)      ->     np.ndarray:







    """simple docstring"""






    __magic_name__    					=	get_size_dict(UpperCamelCase__   )
    if "height" not in size or "width" not in size:
      raise ValueError(F'''The `size` dictionary must contain the keys `height` and `width`. Got {size.keys()}'''   )
    return resize(
        UpperCamelCase__      ,							size=(size["""height"""], size["""width"""])      ,							resample=UpperCamelCase__      ,							data_format=UpperCamelCase__      ,							**UpperCamelCase__   )
  def 							_lowercase							(			self      :			Tuple      ,							UpperCamelCase__      :			np.ndarray      ,							UpperCamelCase__      :			float      ,							UpperCamelCase__      :			Optional[Union[str, ChannelDimension]] = None      ,							**UpperCamelCase__      :			Union[str, Any]   )      ->     np.ndarray:







    """simple docstring"""






    return rescale(UpperCamelCase__      ,							scale=UpperCamelCase__      ,							data_format=UpperCamelCase__      ,							**UpperCamelCase__   )
  def 							_lowercase							(			self      :			List[str]      ,							UpperCamelCase__      :			np.ndarray      ,							UpperCamelCase__      :			Union[float, List[float]]      ,							UpperCamelCase__      :			Union[float, List[float]]      ,							UpperCamelCase__      :			Optional[Union[str, ChannelDimension]] = None      ,							**UpperCamelCase__      :			Union[str, Any]      ,							)      ->     np.ndarray:







    """simple docstring"""






    return normalize(UpperCamelCase__      ,							mean=UpperCamelCase__      ,							std=UpperCamelCase__      ,							data_format=UpperCamelCase__      ,							**UpperCamelCase__   )





  def 							_lowercase							(			self      :			Tuple      ,							UpperCamelCase__      :			ImageInput      ,							UpperCamelCase__      :			Optional[bool] = None      ,							UpperCamelCase__      :			Dict[str, int] = None      ,							UpperCamelCase__      :			PILImageResampling = None      ,							UpperCamelCase__      :			Optional[bool] = None      ,							UpperCamelCase__      :			Optional[float] = None      ,							UpperCamelCase__      :			Optional[bool] = None      ,							UpperCamelCase__      :			Optional[Union[float, List[float]]] = None      ,							UpperCamelCase__      :			Optional[Union[float, List[float]]] = None      ,							UpperCamelCase__      :			Optional[Union[str, TensorType]] = None      ,							UpperCamelCase__      :			Union[str, ChannelDimension] = ChannelDimension.FIRST      ,							**UpperCamelCase__      :			List[str]      ,							)      ->     Optional[int]:







    """simple docstring"""






    __magic_name__    					=	do_resize if do_resize is not None else self.do_resize
    __magic_name__    					=	do_rescale if do_rescale is not None else self.do_rescale
    __magic_name__    					=	do_normalize if do_normalize is not None else self.do_normalize
    __magic_name__    					=	resample if resample is not None else self.resample
    __magic_name__    					=	rescale_factor if rescale_factor is not None else self.rescale_factor
    __magic_name__    					=	image_mean if image_mean is not None else self.image_mean
    __magic_name__    					=	image_std if image_std is not None else self.image_std

    __magic_name__    					=	size if size is not None else self.size
    __magic_name__    					=	get_size_dict(UpperCamelCase__   )

    __magic_name__    					=	make_list_of_images(UpperCamelCase__   )

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

    if do_resize and size is None:
      raise ValueError("""Size must be specified if do_resize is True."""   )

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

    # All transformations expect numpy arrays.
    __magic_name__    					=	[to_numpy_array(UpperCamelCase__   ) for image in images]

    if do_resize:
      __magic_name__    					=	[self.resize(image=UpperCamelCase__      ,							size=UpperCamelCase__      ,							resample=UpperCamelCase__   ) for image in images]

    if do_rescale:
      __magic_name__    					=	[self.rescale(image=UpperCamelCase__      ,							scale=UpperCamelCase__   ) for image in images]

    if do_normalize:
      __magic_name__    					=	[self.normalize(image=UpperCamelCase__      ,							mean=UpperCamelCase__      ,							std=UpperCamelCase__   ) for image in images]

    __magic_name__    					=	[to_channel_dimension_format(UpperCamelCase__      ,							UpperCamelCase__   ) for image in images]

    __magic_name__    					=	{"""pixel_values""": images}
    return BatchFeature(data=UpperCamelCase__      ,							tensor_type=UpperCamelCase__   )

