





import torch
from transformers import PreTrainedModel, XLMRobertaConfig, XLMRobertaModel



class 				_UpperCAmelCase    (    _UpperCamelCase    ):

  """simple docstring"""


  a_        = """M-CLIP"""






  def __init__(				self :		Optional[Any]					,  lowerCAmelCase_ :		Union[str, Any]=1_0_2_4					,  lowerCAmelCase_ :		Any=7_6_8					,  **lowerCAmelCase_ :		List[Any]     )							->						Union[str, Any]:
     __lowerCAmelCase								=	transformerDimSize
     __lowerCAmelCase								=	imageDimSize
     super().__init__(**lowerCAmelCase_     )





class 				_UpperCAmelCase    (    _UpperCamelCase    ):

  """simple docstring"""


  a_        = MCLIPConfig






  def __init__(				self :		str					,  lowerCAmelCase_ :		List[str]					,  *lowerCAmelCase_ :		str					,  **lowerCAmelCase_ :		Dict     )							->						Optional[Any]:
     super().__init__(lowerCAmelCase_					,  *lowerCAmelCase_					,  **lowerCAmelCase_     )
     __lowerCAmelCase								=	XLMRobertaModel(lowerCAmelCase_     )
     __lowerCAmelCase								=	torch.nn.Linear(
         in_features=config.transformerDimensions					,  out_features=config.numDims     )






  def 				lowercase		(				self :		Optional[int]					,  lowerCAmelCase_ :		Any					,  lowerCAmelCase_ :		Tuple     )							->						Tuple:
     __lowerCAmelCase								=	self.transformer(input_ids=lowerCAmelCase_					,  attention_mask=lowerCAmelCase_     )[0]
     __lowerCAmelCase								=	(embs * attention_mask.unsqueeze(2     )).sum(dim=1     ) / attention_mask.sum(dim=1     )[:, None]
     return self.LinearTransformation(lowerCAmelCase_     ), embs








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

import fsspec
import fsspec.asyn

from . import compression
from .hffilesystem import HfFileSystem


_snake_case  :    Tuple						    =  importlib.util.find_spec('s3fs') is not None

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

_snake_case  :    List[compression.BaseCompressedFileFileSystem]						    =  [
    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   a_    ( lowerCAmelCase_      :			str	):
   if "://" in dataset_path:
      __lowerCAmelCase								=	dataset_path.split('://'	)[1]
   return dataset_path

def   a_    ( lowerCAmelCase_      :			fsspec.AbstractFileSystem	):
   if fs is not None and fs.protocol != "file":
      return True
   else:
      return False

def   a_    ( lowerCAmelCase_      :			fsspec.AbstractFileSystem,	lowerCAmelCase_      :			str,	lowerCAmelCase_      :			str	):
   __lowerCAmelCase								=	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   a_    ( ):
   if hasattr(fsspec.asyn,	'reset_lock'	):
      # for future fsspec>2022.05.0
      fsspec.asyn.reset_lock()
   else:
      __lowerCAmelCase								=	None
      __lowerCAmelCase								=	None
      __lowerCAmelCase								=	threading.Lock()

