



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


_lowerCamelCase						    =  {
    """configuration_xlm""": ["""XLM_PRETRAINED_CONFIG_ARCHIVE_MAP""", """XLMConfig""", """XLMOnnxConfig"""],
    """tokenization_xlm""": ["""XLMTokenizer"""],
}

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      _lowerCamelCase						    =  [
          """XLM_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """XLMForMultipleChoice""",
          """XLMForQuestionAnswering""",
          """XLMForQuestionAnsweringSimple""",
          """XLMForSequenceClassification""",
          """XLMForTokenClassification""",
          """XLMModel""",
          """XLMPreTrainedModel""",
          """XLMWithLMHeadModel""",
      ]

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      _lowerCamelCase						    =  [
          """TF_XLM_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """TFXLMForMultipleChoice""",
          """TFXLMForQuestionAnsweringSimple""",
          """TFXLMForSequenceClassification""",
          """TFXLMForTokenClassification""",
          """TFXLMMainLayer""",
          """TFXLMModel""",
          """TFXLMPreTrainedModel""",
          """TFXLMWithLMHeadModel""",
      ]


if TYPE_CHECKING:
      from .configuration_xlm import XLM_PRETRAINED_CONFIG_ARCHIVE_MAP, XLMConfig, XLMOnnxConfig
      from .tokenization_xlm import XLMTokenizer

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_xlm import (
                XLM_PRETRAINED_MODEL_ARCHIVE_LIST,
                XLMForMultipleChoice,
                XLMForQuestionAnswering,
                XLMForQuestionAnsweringSimple,
                XLMForSequenceClassification,
                XLMForTokenClassification,
                XLMModel,
                XLMPreTrainedModel,
                XLMWithLMHeadModel,
            )

      try:
            if not is_tf_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_tf_xlm import (
                TF_XLM_PRETRAINED_MODEL_ARCHIVE_LIST,
                TFXLMForMultipleChoice,
                TFXLMForQuestionAnsweringSimple,
                TFXLMForSequenceClassification,
                TFXLMForTokenClassification,
                TFXLMMainLayer,
                TFXLMModel,
                TFXLMPreTrainedModel,
                TFXLMWithLMHeadModel,
            )

else:
      import sys

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











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 	_lowerCAmelCase						(				__lowerCamelCase   :     str     ):



 """simple docstring"""





 if "://" in dataset_path:
  __SCREAMING_SNAKE_CASE       :    Any       =	dataset_path.split("://"     )[1]
 return dataset_path






def 	_lowerCAmelCase						(				__lowerCamelCase   :     fsspec.AbstractFileSystem     ):



 """simple docstring"""





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






def 	_lowerCAmelCase						(				__lowerCamelCase   :     fsspec.AbstractFileSystem		,	__lowerCamelCase   :     str		,	__lowerCamelCase   :     str     ):



 """simple docstring"""





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






def 	_lowerCAmelCase						(				):



 """simple docstring"""





 if hasattr(fsspec.asyn		,	"reset_lock"     ):
  # for future fsspec>2022.05.0
  fsspec.asyn.reset_lock()
 else:
  __SCREAMING_SNAKE_CASE       :    Tuple       =	None
  __SCREAMING_SNAKE_CASE       :    Optional[Any]       =	None
  __SCREAMING_SNAKE_CASE       :    Dict       =	threading.Lock()






