o
    $¼"b÷  ã                   @   sŠ   d Z ddlZdd„ Zdd„ Zdd„ Zejd	krd
ndZdd„ Zdd„ Zddd„Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zeƒ  dS ) z�
A simple shim module to fix up things on Python 2 only.

Note: until we setup correctly the paths we can only import built-ins.
é    Nc                  C   sh   t } tƒ }|d  t_t_|d t_|d t_| dd¡dk}tƒ  t	ƒ  t
| ƒ |r.tƒ  t| ƒ dS )z2Patch what needed, and invoke the original site.pyzbase-prefixzbase-exec-prefixzbase-executablezinclude-system-site-packagesFÚtrueN)Ú__file__Úread_pyvenvÚsysÚreal_prefixÚbase_prefixÚbase_exec_prefixÚbase_executableÚgetÚ!rewrite_standard_library_sys_pathÚdisable_user_site_packageÚload_host_siteÚadd_global_site_packageÚrewrite_getsitepackages)ÚhereÚconfigÚglobal_site_package_enabled© r   úW/usr/lib/python3/dist-packages/virtualenv/create/via_global_ref/builtin/python2/site.pyÚmain
   s   

r   c                 C   s&   t jd j}t| ƒD ]}||ƒ q
dS )zetrigger reload of site.py - now it will use the standard library instance that will take care of initÚsiteN)r   ÚmodulesÚ
addsitedirÚget_site_packages_dirs)r   Úadd_site_dirÚpathr   r   r   r      s   
ÿr   c              	   c   sH   � dd l }dd l}d}| |¡D ]}|j |j | | d¡¡¡V  qd S )Nr   z&
    ___EXPECTED_SITE_PACKAGES___
    zutf-8)ÚjsonÚosÚloadsr   ÚabspathÚjoinÚencode)r   r   r   Úsite_packagesr   r   r   r   r   3   s   € ÿr   Úwin32ú\ú/c               	   C   s–   d  tjt¡} t| ƒ�}| ¡ }W d  ƒ n1 sw   Y  i }|D ]%}z| d¡}W n	 ty5   Y q#w ||d d…  ¡ ||d|…  ¡ < q#|S )zread pyvenv.cfgz{}{}pyvenv.cfgNú=é   )	Úformatr   ÚprefixÚsepÚopenÚ	readlinesÚindexÚ
ValueErrorÚstrip)Úconfig_fileÚfile_handlerÚlinesr   ÚlineÚsplit_atr   r   r   r   B   s   

ÿÿ&r   c               	   C   sä   t dd�\} }}t dd�\}}}| d|  t¡… }ttjƒD ]\}}t|ƒ}||k}	|	}	|	s;t|||||||ƒtj|< qtjj	rBdS ddl
}
g }d|
jv rg|
jd rg|
jd  |
j¡D ]}||vrf| |¡ q[|tjdt|ƒ…< dS )z[Once this site file is loaded the standard library paths have already been set, fix them upF©ÚbaseTNr   Ú
PYTHONPATH)Úget_exe_prefixesÚrfindr*   Ú	enumerater   r   Úabs_pathÚmap_pathÚflagsÚignore_environmentr   ÚenvironÚsplitÚpathsepÚappendÚlen)Úexer)   Úexec_prefixÚbase_exer   Ú	base_execÚexe_dirÚatr   Úskip_rewriter   Úpython_pathsr   r   r   r   R   s(   €
€r   Fc                    s   t ‡ fdd„dD ƒƒS )Nc                 3   s*   � | ]}t ttˆ rd nd| ƒƒV  qdS )Úbase_Ú N)r;   Úgetattrr   )Ú.0Úir5   r   r   Ú	<genexpr>l   s   €( z#get_exe_prefixes.<locals>.<genexpr>)Ú
executabler)   rE   )Útupler5   r   r5   r   r8   k   s   r8   c                 C   sl   |   t¡g }}t|ƒd }|dkr,|| dkr|d8 }n| || ¡ |d8 }|dkst |d d d… ¡S )Nr'   r   z..éÿÿÿÿ)r@   r*   rC   rB   r    )ÚvalueÚvaluesÚkeeprI   r   r   r   r;   o   s   
ûr;   c                 C   s|   t | |ƒr|d | t¡… }d || t|ƒd … ¡S t | |ƒr+d || t|ƒd … ¡S t | |ƒr<d || t|ƒd … ¡S | S )Nz{}{})Úpath_starts_withr9   r*   r(   rC   )r   r	   rH   rE   r   r)   r   Úorig_exe_folderr   r   r   r<   {   s   


r<   c                 C   s    |   |d tkr|¡S |t ¡S )NrT   )Ú
startswithr*   )Ú	directoryrU   r   r   r   rX   ‡   s    rX   c                  C   s,   t jt _G dd„ dtƒ} | ƒ t _dt j_dS )z+Flip the switch on enable user site packagec                   @   s   e Zd Zdd„ ZdS )z(disable_user_site_package.<locals>.Flagsc                 S   s   dd„ t tjƒD ƒ| _d S )Nc                 S   s$   i | ]}|  d ¡s|ttj|ƒ“qS )Ú_)rZ   rN   r   r=   )rO   Úkeyr   r   r   Ú
<dictcomp>’   s   $ zEdisable_user_site_package.<locals>.Flags.__init__.<locals>.<dictcomp>)Údirr   r=   Ú__dict__)Úselfr   r   r   Ú__init__‘   s   z1disable_user_site_package.<locals>.Flags.__init__N)Ú__name__Ú
__module__Ú__qualname__rb   r   r   r   r   ÚFlags�   s    rf   r'   N)r   r=   Úoriginal_flagsÚobjectÚno_user_site)rf   r   r   r   r   ‹   s   r   c                  C   sX   ddl } tjt_d| _d}z| j}tjtjg| _|  ¡  W || j | _dS || j | _w )zadd the global site packager   N)	r   r   rg   r=   ÚENABLE_USER_SITEÚPREFIXESr   r   r   )r   Úorig_prefixesr   r   r   r   ˜   s   
r   c                    s2   t jd ‰t| ƒ‰ˆj‰ ‡ ‡‡fdd„}|ˆ_d S )Nr   c                     sD   ˆ ƒ } t jˆjvst jˆjvr| S ˆD ]}|| vr|  d|¡ q| S )Nr   )r   r)   rk   rE   Úinsert)Úsitepackagesr   ©Úorig_getsitepackagesr   Úsite_package_dirsr   r   Úgetsitepackages°   s   €z0rewrite_getsitepackages.<locals>.getsitepackages)r   r   r   rr   )r   rr   r   ro   r   r   ª   s
   

r   )F)Ú__doc__r   r   r   r   Úplatformr*   r   r   r8   r;   r<   rX   r   r   r   r   r   r   r   Ú<module>   s    

