U
    •Ê¹j>  ã                   @   sR   d Z ddlZdaG dd„ dƒZeedœdd„Zeedœdd	„Zeedœd
d„ZdS )z.Import mangling.
See mangling.md for details.
é    Nc                   @   s>   e Zd ZdZdd„ Zedœdd„Zeedœdd	„Zd
d„ ZdS )ÚPackageManglerzZ
    Used on import, to ensure that all modules imported have a shared mangle parent.
    c                 C   s"   t | _ t d7 a d| j › d�| _d S )Né   z<torch_package_ú>)Ú_mangle_indexÚ_mangle_parent©Úself© r	   úV/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/package/_mangling.pyÚ__init__   s    zPackageMangler.__init__)Úreturnc                 C   s   t |ƒdkst‚| jd | S )Nr   Ú.)ÚlenÚAssertionErrorr   )r   Únamer	   r	   r
   Úmangle   s    zPackageMangler.mangle)Úmangledr   c                 C   s"   |  | jd ¡r| 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   r	   r	   r
   Údemangle   s    zPackageMangler.demanglec                 C   s   | j S )N)r   r   r	   r	   r
   Úparent_name(   s    zPackageMangler.parent_nameN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr   r   r   r	   r	   r	   r
   r   	   s
   
r   )r   r   c                 C   s   t t d| ¡ƒS )Nz<torch_package_\d+>)ÚboolÚreÚmatch©r   r	   r	   r
   Ú
is_mangled,   s    r!   c                 C   s0   t | ƒr,|  d¡\}}}t|ƒdk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Úlastr	   r	   r
   r   0   s    r   c                 C   s   t | ƒr|  d¡d S | S )Nr   r   )r!   r   r    r	   r	   r
   Úget_mangle_prefix=   s    r&   )	r   r   r   r   r   r   r!   r   r&   r	   r	   r	   r
   Ú<module>   s   #