
    sgb                     X    d Z ddlZda G d d      ZdedefdZdedefdZdedefd	Zy)
z.Import mangling.
See mangling.md for details.
    Nc                   :    e Zd ZdZd	dZdefdZdedefdZd Zy)
PackageManglerzZ
    Used on import, to ensure that all modules imported have a shared mangle parent.
    returnNc                 V    t         | _         t         dz  a d| j                    d| _        y )N   z<torch_package_>)_mangle_index_mangle_parentselfs    J/var/www/html/venv/lib/python3.12/site-packages/torch/package/_mangling.py__init__zPackageMangler.__init__   s.    * !00B0B/C1E    c                 F    t        |      dk7  sJ | j                  dz   |z   S )Nr   .)lenr
   )r   names     r   manglezPackageMangler.mangle   s(    4yA~~""S(4//r   mangledc                 j    |j                  | j                  dz         r|j                  d      d   S |S )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   demanglezPackageMangler.demangle   s:     d11C78$$S)!,, r   c                     | j                   S )N)r
   r   s    r   parent_namezPackageMangler.parent_name*   s    """r   )r   N)	__name__
__module____qualname____doc__r   strr   r   r    r   r   r   r      s1    F0c 0
 
 
#r   r   r   r   c                 @    t        t        j                  d|             S )Nz<torch_package_\d+>)boolrematchr   s    r   
is_mangledr(   .   s    /677r   c                 j    t        |       r'| j                  d      \  }}}t        |      dk7  r|S dS | S )z
    Note: Unlike PackageMangler.demangle, this version works on any
    mangled name, irrespective of which PackageMangler created it.
    r   r    )r(   r   r   )r   firstseplasts       r   r   r   2   s=    
 $>>#.sD 3x1}t,",Kr   c                 D    t        |       r| j                  d      d   S | S )Nr   r   )r(   r   r'   s    r   get_mangle_prefixr/   ?   s"    %/%54>>#q!?4?r   )	r    r%   r	   r   r!   r$   r(   r   r/   r"   r   r   <module>r0      s]    
  #  #F8S 8T 8
3 
3 
@C @C @r   