o
    ki                     @   sX   d Z ddlZdaG dd dZdedefddZdedefd	d
ZdedefddZdS )z.Import mangling.
See mangling.md for details.
    Nc                   @   sB   e Zd ZdZdddZdefddZdedefd	d
Zdd ZdS )PackageManglerzZ
    Used on import, to ensure that all modules imported have a shared mangle parent.
    returnNc                 C   s"   t | _ t d7 a d| j  d| _d S )N   z<torch_package_>)_mangle_index_mangle_parentself r
   a/var/www/addictedbytheproject.nl/epg/venv/lib/python3.10/site-packages/torch/package/_mangling.py__init__   s   zPackageMangler.__init__c                 C   s"   t |dkr
td| jd | S )Nr   zname must not be empty.)lenAssertionErrorr   )r	   namer
   r
   r   mangle   s   zPackageMangler.manglemangledc                 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_name)r   N)	__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_mangled0   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   4   s   r   c                 C   s   t | r| dd S | S )Nr   r   )r!   r   r    r
   r
   r   get_mangle_prefixA   s   r&   )	r   r   r   r   r   r   r!   r   r&   r
   r
   r
   r   <module>   s   $