




"""simple docstring"""

from typing import TYPE_CHECKING

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


a         =      {
    '''configuration_clip''': [
        '''CLIP_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''CLIPConfig''',
        '''CLIPOnnxConfig''',
        '''CLIPTextConfig''',
        '''CLIPVisionConfig''',
    ],
    '''processing_clip''': ['''CLIPProcessor'''],
    '''tokenization_clip''': ['''CLIPTokenizer'''],
}

try:
       if not is_tokenizers_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      ['''CLIPTokenizerFast''']

try:
       if not is_vision_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      ['''CLIPFeatureExtractor''']
       a         =      ['''CLIPImageProcessor''']

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      [
           '''CLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''CLIPModel''',
           '''CLIPPreTrainedModel''',
           '''CLIPTextModel''',
           '''CLIPTextModelWithProjection''',
           '''CLIPVisionModel''',
           '''CLIPVisionModelWithProjection''',
       ]

try:
       if not is_tf_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      [
           '''TF_CLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''TFCLIPModel''',
           '''TFCLIPPreTrainedModel''',
           '''TFCLIPTextModel''',
           '''TFCLIPVisionModel''',
       ]

try:
       if not is_flax_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a         =      [
           '''FlaxCLIPModel''',
           '''FlaxCLIPPreTrainedModel''',
           '''FlaxCLIPTextModel''',
           '''FlaxCLIPTextPreTrainedModel''',
           '''FlaxCLIPVisionModel''',
           '''FlaxCLIPVisionPreTrainedModel''',
       ]


if TYPE_CHECKING:
       from .configuration_clip import (
           CLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
           CLIPConfig,
           CLIPOnnxConfig,
           CLIPTextConfig,
           CLIPVisionConfig,
       )
       from .processing_clip import CLIPProcessor
       from .tokenization_clip import CLIPTokenizer

       try:
              if not is_tokenizers_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .tokenization_clip_fast import CLIPTokenizerFast

       try:
              if not is_vision_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .feature_extraction_clip import CLIPFeatureExtractor
              from .image_processing_clip import CLIPImageProcessor

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_clip import (
                  CLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                  CLIPModel,
                  CLIPPreTrainedModel,
                  CLIPTextModel,
                  CLIPTextModelWithProjection,
                  CLIPVisionModel,
                  CLIPVisionModelWithProjection,
              )

       try:
              if not is_tf_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_tf_clip import (
                  TF_CLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                  TFCLIPModel,
                  TFCLIPPreTrainedModel,
                  TFCLIPTextModel,
                  TFCLIPVisionModel,
              )

       try:
              if not is_flax_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_flax_clip import (
                  FlaxCLIPModel,
                  FlaxCLIPPreTrainedModel,
                  FlaxCLIPTextModel,
                  FlaxCLIPTextPreTrainedModel,
                  FlaxCLIPVisionModel,
                  FlaxCLIPVisionPreTrainedModel,
              )


else:
       import sys

       a         =      _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)







"""simple docstring"""

import enum
import os
from hashlib import shaaaa
from typing import Optional

from .. import config
from .logging import get_logger


a         =      get_logger(__name__)





class     lowercase_	(					enum.Enum							):



 '''simple docstring'''
 UpperCAmelCase   :					Optional[int]				  =     '''all_checks'''
 UpperCAmelCase   :					List[Any]				  =     '''basic_checks'''
 UpperCAmelCase   :					Any				  =     '''no_checks'''





class     lowercase_	(					__lowerCAmelCase							):



 '''simple docstring'''





class     lowercase_	(					__lowerCAmelCase							):



 '''simple docstring'''





class     lowercase_	(					__lowerCAmelCase							):



 '''simple docstring'''





class     lowercase_	(					__lowerCAmelCase							):



 '''simple docstring'''






def 						_snake_case					( _snake_case							: Optional[dict]    ,  _snake_case							: dict    ,  _snake_case							: Dict=None							)   -> Dict:






      '''simple docstring'''


      if expected_checksums is None:
            logger.info('Unable to verify checksums.'							)
            return
      if len(set(_snake_case							) - set(_snake_case							)							) > 0:
            raise ExpectedMoreDownloadedFiles(str(set(_snake_case							) - set(_snake_case							)							)							)
      if len(set(_snake_case							) - set(_snake_case							)							) > 0:
            raise UnexpectedDownloadedFile(str(set(_snake_case							) - set(_snake_case							)							)							)
      _A        =       [url for url in expected_checksums if expected_checksums[url] != recorded_checksums[url]]
      _A        =       ' for ' + verification_name if verification_name is not None else ''
      if len(_snake_case							) > 0:
            raise NonMatchingChecksumError(
                F'''Checksums didn\'t match{for_verification_name}:\n'''
                F'''{bad_urls}\n'''
                'Set `verification_mode=\'no_checks\'` to skip checksums verification and ignore this error'							)
      logger.info('All the checksums matched successfully' + for_verification_name							)





class     lowercase_	(					__lowerCAmelCase							):



 '''simple docstring'''





class     lowercase_	(					__lowerCAmelCase							):



 '''simple docstring'''





class     lowercase_	(					__lowerCAmelCase							):



 '''simple docstring'''





class     lowercase_	(					__lowerCAmelCase							):



 '''simple docstring'''






def 						_snake_case					( _snake_case							: Optional[dict]    ,  _snake_case							: dict							)   -> List[str]:






      '''simple docstring'''


      if expected_splits is None:
            logger.info('Unable to verify splits sizes.'							)
            return
      if len(set(_snake_case							) - set(_snake_case							)							) > 0:
            raise ExpectedMoreSplits(str(set(_snake_case							) - set(_snake_case							)							)							)
      if len(set(_snake_case							) - set(_snake_case							)							) > 0:
            raise UnexpectedSplits(str(set(_snake_case							) - set(_snake_case							)							)							)
      _A        =       [
          {'expected': expected_splits[name], 'recorded': recorded_splits[name]}
          for name in expected_splits
          if expected_splits[name].num_examples != recorded_splits[name].num_examples
      ]
      if len(_snake_case							) > 0:
            raise NonMatchingSplitsSizesError(str(_snake_case							)							)
      logger.info('All the splits matched successfully.'							)






def 						_snake_case					( _snake_case							: str    ,  _snake_case							: bool = True							)   -> dict:






      '''simple docstring'''


      if record_checksum:
            _A        =       shaaaa()
            with open(_snake_case    ,  'rb'							) as f:
                  for chunk in iter(lambda: f.read(1 << 20							)    ,  B''							):
                        m.update(_snake_case							)
                  _A        =       m.hexdigest()
      else:
            _A        =       None
      return {"num_bytes": os.path.getsize(_snake_case							), "checksum": checksum}







def 						_snake_case					( _snake_case							: int							)   -> int:






      '''simple docstring'''


      if dataset_size and config.IN_MEMORY_MAX_SIZE:
            return dataset_size < config.IN_MEMORY_MAX_SIZE
      else:
            return False

