
    Ch	                        S SK Jr  S SKrS SKrS SKrS SKJr  S	S jrS
S jr\S 5       r	\\R                  4S j5       rS rg)    )annotationsN)contextmanagerc                    U R                   R                  nUb  U[        R                   R                  :X  a  U R                   R                  $ US-   U R                   R                  -   $ )a  
Gives a full name (package_name.class_name) for a class / object in Python. Will
be used to load the correct classes from JSON files

Args:
    o: The object for which to get the full name.

Returns:
    str: The full name of the object.

Example:
    >>> from sentence_transformers.losses import MultipleNegativesRankingLoss
    >>> from sentence_transformers import SentenceTransformer
    >>> from sentence_transformers.util import fullname
    >>> model = SentenceTransformer('all-MiniLM-L6-v2')
    >>> loss = MultipleNegativesRankingLoss(model)
    >>> fullname(loss)
    'sentence_transformers.losses.MultipleNegativesRankingLoss.MultipleNegativesRankingLoss'
.)	__class__
__module__str__name__)omodules     W/var/www/html/shao/venv/lib/python3.13/site-packages/sentence_transformers/util/misc.pyfullnamer   	   sR    * [[##F~3==#;#;;{{###|akk2222    c                >    U R                  SS5      u  p [        R                  " U 5      n [        XB5      $ ! [         a    U  S3n[        U5      ef = f! [
         a    [        R                  " U5      n NLf = f! [         a    SU SU S3n[        U5      ef = f)a
  
Import a dotted module path and return the attribute/class designated by the
last name in the path. Raise ImportError if the import failed.

Args:
    dotted_path (str): The dotted module path.

Returns:
    Any: The attribute/class designated by the last name in the path.

Raises:
    ImportError: If the import failed.

Example:
    >>> import_from_string('sentence_transformers.losses.MultipleNegativesRankingLoss')
    <class 'sentence_transformers.losses.MultipleNegativesRankingLoss.MultipleNegativesRankingLoss'>
r      z  doesn't look like a module pathzModule "z" does not define a "z" attribute/class)rsplit
ValueErrorImportError	importlibimport_module	ExceptiongetattrAttributeError)dotted_pathmodule_path
class_namemsgr   s        r   import_from_stringr   %   s    $"-"4"4S!"<
6((5v**  =>#  6((56
  %::,FWX#s%   9 A 
A= A A:9A:=Bc               #     #    SSK Jn JnJn  U" 5       n U(       a  U " 5         Sv   U(       a  U" 5         gg! U(       a  U" 5         f f = f7f)zF
A context manager that will disable caching in the datasets library.
r   )disable_cachingenable_cachingis_caching_enabledN)datasetsr    r!   r"   )r    r!   r"   is_originally_enableds       r   disable_datasets_cachingr%   I   sE     
 ML.0   !  !s   A7 AAAc              #     #    [         R                  R                  R                  n[         R                  " U 5         Sv   [         R                  " U5        g! [         R                  " U5        f = f7f)z
A context manager that will prevent any logging messages
triggered during the body from being processed.

Args:
    highest_level: the maximum logging level allowed.
N)loggingrootmanagerdisable)highest_levelprevious_levels     r   disable_loggingr-   [   sH      \\))11NOOM"(''s   ;A4A A4A11A4c                r   [        U SSS9 n[        R                  " U5      n[        U5      nS S S 5        [	        W5      S:  aQ  US   R                  U5        [        U SSSS9 n[        R                  " U5      nUR                  U5        S S S 5        gg! , (       d  f       No= f! , (       d  f       g= f)	N zutf-8)newlineencodingr   wTF)opencsvreaderlistlenextendwriter	writerows)csv_pathadditional_datafr6   rowsr:   s         r   append_to_last_rowr@   m   s    	hW	5AF| 
6 4y1}R( (Cg>!ZZ]FT" ?  
6	5 ?> s   "B%(B(
B%(
B6)returnr	   )r   r	   rA   type)
__future__r   r5   r   r'   
contextlibr   r   r   r%   CRITICALr-   r@    r   r   <module>rG      sU    " 
   %38!H  " ")"2"2 ( ("r   