
    ΅i                     ^    S r SSKrSq " S S5      rS\S\4S jrS\S\4S jrS\S\4S	 jrg)
z.Import mangling.
See mangling.md for details.
    Nc                   H    \ rS rSrSrSS jrS\4S jrS\S\4S jrS	 r	S
r
g)PackageMangler   zR
Used on import, to ensure that all modules imported have a shared mangle parent.
returnNc                 V    [         U l         [         S-  q SU R                    S3U l        g )N   z<torch_package_>_mangle_index_mangle_parentselfs    Q/home/james-whalen/.local/lib/python3.13/site-packages/torch/package/_mangling.py__init__PackageMangler.__init__   s.    * !00B0B/C1E    c                 Z    [        U5      S:X  a  [        S5      eU R                  S-   U-   $ )Nr   zname must not be empty.)lenAssertionErrorr   )r   names     r   manglePackageMangler.mangle   s/    t9> !9::""S(4//r   mangledc                 t    UR                  U R                  S-   5      (       a  UR                  S5      S   $ U$ )z
Note: This only demangles names that were mangled by this specific
PackageMangler. It will pass through names created by a different
PackageMangler instance.
r      )
startswithr   	partition)r   r   s     r   demanglePackageMangler.demangle    s=     d11C788$$S)!,, r   c                     U R                   $ )N)r   r   s    r   parent_namePackageMangler.parent_name,   s    """r   r
   )r   N)__name__
__module____qualname____firstlineno____doc__r   strr   r   r"   __static_attributes__ r   r   r   r      s1    F0c 0

 
 
#r   r   r   r   c                 B    [        [        R                  " SU 5      5      $ )Nz<torch_package_\d+>)boolrematchr   s    r   
is_mangledr1   0   s    /677r   c                 t    [        U 5      (       a'  U R                  S5      u  pn[        U5      S:w  a  U$ S$ U $ )z
Note: Unlike PackageMangler.demangle, this version works on any
mangled name, irrespective of which PackageMangler created it.
r   r    )r1   r   r   )r   _firstseplasts       r   r   r   4   s>    
 $ NN3/T 3x1}t,",Kr   c                 N    [        U 5      (       a  U R                  S5      S   $ U $ )Nr   r   )r1   r   r0   s    r   get_mangle_prefixr8   A   s%    %/%5%54>>#q!?4?r   )	r(   r.   r   r   r)   r-   r1   r   r8   r+   r   r   <module>r9      s]    
 !# !#H8S 8T 8
3 
3 
@C @C @r   