





from typing import TYPE_CHECKING

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


snake_case								=							{
    """configuration_albert""": ["""ALBERT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """AlbertConfig""", """AlbertOnnxConfig"""],
}

try:
      if not is_sentencepiece_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      snake_case								=							["""AlbertTokenizer"""]

try:
      if not is_tokenizers_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      snake_case								=							["""AlbertTokenizerFast"""]

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      snake_case								=							[
          """ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """AlbertForMaskedLM""",
          """AlbertForMultipleChoice""",
          """AlbertForPreTraining""",
          """AlbertForQuestionAnswering""",
          """AlbertForSequenceClassification""",
          """AlbertForTokenClassification""",
          """AlbertModel""",
          """AlbertPreTrainedModel""",
          """load_tf_weights_in_albert""",
      ]

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      snake_case								=							[
          """TF_ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """TFAlbertForMaskedLM""",
          """TFAlbertForMultipleChoice""",
          """TFAlbertForPreTraining""",
          """TFAlbertForQuestionAnswering""",
          """TFAlbertForSequenceClassification""",
          """TFAlbertForTokenClassification""",
          """TFAlbertMainLayer""",
          """TFAlbertModel""",
          """TFAlbertPreTrainedModel""",
      ]

try:
      if not is_flax_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      snake_case								=							[
          """FlaxAlbertForMaskedLM""",
          """FlaxAlbertForMultipleChoice""",
          """FlaxAlbertForPreTraining""",
          """FlaxAlbertForQuestionAnswering""",
          """FlaxAlbertForSequenceClassification""",
          """FlaxAlbertForTokenClassification""",
          """FlaxAlbertModel""",
          """FlaxAlbertPreTrainedModel""",
      ]

if TYPE_CHECKING:
      from .configuration_albert import ALBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, AlbertConfig, AlbertOnnxConfig

      try:
            if not is_sentencepiece_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .tokenization_albert import AlbertTokenizer

      try:
            if not is_tokenizers_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .tokenization_albert_fast import AlbertTokenizerFast

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_albert import (
                ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
                AlbertForMaskedLM,
                AlbertForMultipleChoice,
                AlbertForPreTraining,
                AlbertForQuestionAnswering,
                AlbertForSequenceClassification,
                AlbertForTokenClassification,
                AlbertModel,
                AlbertPreTrainedModel,
                load_tf_weights_in_albert,
            )

      try:
            if not is_tf_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_tf_albert import (
                TF_ALBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
                TFAlbertForMaskedLM,
                TFAlbertForMultipleChoice,
                TFAlbertForPreTraining,
                TFAlbertForQuestionAnswering,
                TFAlbertForSequenceClassification,
                TFAlbertForTokenClassification,
                TFAlbertMainLayer,
                TFAlbertModel,
                TFAlbertPreTrainedModel,
            )

      try:
            if not is_flax_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_flax_albert import (
                FlaxAlbertForMaskedLM,
                FlaxAlbertForMultipleChoice,
                FlaxAlbertForPreTraining,
                FlaxAlbertForQuestionAnswering,
                FlaxAlbertForSequenceClassification,
                FlaxAlbertForTokenClassification,
                FlaxAlbertModel,
                FlaxAlbertPreTrainedModel,
            )
else:
      import sys

      snake_case								=							_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)







'''simple docstring'''



from typing import List, Optional, Union

import numpy as np
import PIL.Image

from ...image_processing_utils import BaseImageProcessor, BatchFeature
from ...image_transforms import rescale, resize, to_channel_dimension_format
from ...image_utils import (
    ChannelDimension,
    PILImageResampling,
    get_image_size,
    make_list_of_images,
    to_numpy_array,
    valid_images,
)
from ...utils import TensorType, logging


__UpperCamelCase   :							Dict         =   logging.get_logger(__name__)
class 				__SCREAMING_SNAKE_CASE							(				_lowerCAmelCase  ):
      __a	       =["pixel_values"]




      def __init__(	self			, lowerCamelCase = True			, lowerCamelCase = 32			, lowerCamelCase=PILImageResampling.BILINEAR			, lowerCamelCase = True			, **lowerCamelCase			, )				->None:



         '''simple docstring'''
         __a					  =     do_resize
         __a					  =     do_rescale
         __a					  =     size_divisor
         __a					  =     resample
         super().__init__(**lowerCamelCase   )




      def 			__UpperCamelCase				(	self			, lowerCamelCase			, lowerCamelCase			, lowerCamelCase			, lowerCamelCase = None			, **lowerCamelCase   )				->np.ndarray:



         '''simple docstring'''
         __a  ,      __a					  =     get_image_size(lowerCamelCase   )
         # Rounds the height and width down to the closest multiple of size_divisor
         __a					  =     height // size_divisor * size_divisor
         __a					  =     width // size_divisor * size_divisor
         __a					  =     resize(lowerCamelCase			, (new_h, new_w)			, resample=lowerCamelCase			, data_format=lowerCamelCase			, **lowerCamelCase   )
         return image




      def 			__UpperCamelCase				(	self			, lowerCamelCase			, lowerCamelCase			, lowerCamelCase = None			, **lowerCamelCase   )				->np.ndarray:



         '''simple docstring'''
         return rescale(image=lowerCamelCase			, scale=lowerCamelCase			, data_format=lowerCamelCase			, **lowerCamelCase   )






      def 			__UpperCamelCase				(	self			, lowerCamelCase			, lowerCamelCase = None			, lowerCamelCase = None			, lowerCamelCase=None			, lowerCamelCase = None			, lowerCamelCase = None			, lowerCamelCase = ChannelDimension.FIRST			, **lowerCamelCase			, )				->BatchFeature:



         '''simple docstring'''
         __a					  =     do_resize if do_resize is not None else self.do_resize
         __a					  =     do_rescale if do_rescale is not None else self.do_rescale
         __a					  =     size_divisor if size_divisor is not None else self.size_divisor
         __a					  =     resample if resample is not None else self.resample

         if do_resize and size_divisor is None:
            raise ValueError('size_divisor is required for resizing'   )

         __a					  =     make_list_of_images(lowerCamelCase   )

         if not valid_images(lowerCamelCase   ):
            raise ValueError('Invalid image(s)'   )

         # All transformations expect numpy arrays.
         __a					  =     [to_numpy_array(lowerCamelCase   ) for img in images]

         if do_resize:
            __a					  =     [self.resize(lowerCamelCase			, size_divisor=lowerCamelCase			, resample=lowerCamelCase   ) for image in images]

         if do_rescale:
            __a					  =     [self.rescale(lowerCamelCase			, scale=1 / 255   ) for image in images]

         __a					  =     [to_channel_dimension_format(lowerCamelCase			, lowerCamelCase   ) for image in images]

         __a					  =     {'pixel_values': images}
         return BatchFeature(data=lowerCamelCase			, tensor_type=lowerCamelCase   )