"""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,
)


__lowerCamelCase											=  {
    "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:
				__lowerCamelCase											=  ["CLIPTokenizerFast"]

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

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

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

try:
				if not is_flax_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__lowerCamelCase											=  [
				    "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

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






"""simple docstring"""




import importlib
import shutil
import threading
import warnings
from typing import List

import fsspec
import fsspec.asyn

from . import compression
from .hffilesystem import HfFileSystem


__lowerCamelCase											=  importlib.util.find_spec("s3fs") is not None

if _has_safs:
				from .safilesystem import SaFileSystem  # noqa: F401

__lowerCamelCase											=  [
    compression.BzaFileSystem,
    compression.GzipFileSystem,
    compression.LzaFileSystem,
    compression.XzFileSystem,
    compression.ZstdFileSystem,
]

# Register custom filesystems
for fs_class in COMPRESSION_FILESYSTEMS + [HfFileSystem]:
				if fs_class.protocol in fsspec.registry and fsspec.registry[fs_class.protocol] is not fs_class:
								warnings.warn(F'''A filesystem protocol was already set for {fs_class.protocol} and will be overwritten.''')
				fsspec.register_implementation(fs_class.protocol, fs_class, clobber=True)






def   UpperCAmelCase					(	UpperCamelCase__				):






							"""simple docstring"""





							if "://" in dataset_path:
														A__	     =							dataset_path.split('://'				)[1]
							return dataset_path






def   UpperCAmelCase					(	UpperCamelCase__				):






							"""simple docstring"""





							if fs is not None and fs.protocol != "file":
														return True
							else:
														return False






def   UpperCAmelCase					(	UpperCamelCase__       ,    UpperCamelCase__       ,    UpperCamelCase__				):






							"""simple docstring"""





							A__	     =							not is_remote_filesystem(UpperCamelCase__				)
							if is_local:
														# LocalFileSystem.mv does copy + rm, it is more efficient to simply move a local directory
														shutil.move(fs._strip_protocol(UpperCamelCase__				)       ,    fs._strip_protocol(UpperCamelCase__				)				)
							else:
														fs.mv(UpperCamelCase__       ,    UpperCamelCase__       ,    recursive=UpperCamelCase__				)






def   UpperCAmelCase					(	):






							"""simple docstring"""





							if hasattr(fsspec.asyn       ,    'reset_lock'				):
														# for future fsspec>2022.05.0
														fsspec.asyn.reset_lock()
							else:
														A__	     =							None
														A__	     =							None
														A__	     =							threading.Lock()





