U
    |e/
                     @  s   d dl mZ d dlZd dlZd dlmZmZ ddlmZ ej	dkrbd dl
mZ ddd	d
ddZnd dl
mZ G dd deedZdgZdS )    )annotationsN)ABCMetaabstractmethod   )	Activator)   
   )filesstrbytes)module_namefilenamereturnc                 C  s   t | |  S N)r	   
read_bytes)r   r    r   F/tmp/pip-unpacked-wheel-tuxcr54r/virtualenv/activation/via_template.pyread_binary   s    r   )r   c                   @  sL   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	e
dd ZdS )ViaTemplateActivatorc                 C  s   t d S r   )NotImplementedError)selfr   r   r   	templates   s    zViaTemplateActivator.templatesc                 C  s@   |j }| ||}| ||  ||}| jd k	r<| j|jd< |S )Nprompt)bin_dirreplacements	_generater   flag_promptZ	pyenv_cfg)r   creatordest_folderr   	generatedr   r   r   generate   s    
zViaTemplateActivator.generatec                 C  s8   | j d krdn| j t|j|jt|j|jtjdS )N )Z__VIRTUAL_PROMPT__Z__VIRTUAL_ENV__Z__VIRTUAL_NAME__Z__BIN_NAME__Z__PATH_SEP__)r   r
   destenv_namer   relative_toospathsep)r   r   r   r   r   r   r       s    z!ViaTemplateActivator.replacementsc           	      C  sX   g }|D ]J}|  |||}|| | }| r8|  ||d || q|S )Nutf-8)instantiate_templateas_nameexistsunlinkwrite_bytesencodeappend)	r   r   r   Z	to_folderr   r   templatetextr"   r   r   r   r   )   s    zViaTemplateActivator._generatec                 C  s   |S r   r   )r   r/   r   r   r   r)   7   s    zViaTemplateActivator.as_namec           	      C  sH   t | j|}|jddd}| D ] \}}| ||}|||}q"|S )Nr'   strict)errors)r   
__module__decodeitems_repr_unicodereplace)	r   r   r/   r   binaryr0   keyvalueZ	value_unir   r   r   r(   :   s    z)ViaTemplateActivator.instantiate_templatec                 C  s   |S r   r   )r   r:   r   r   r   r6   C   s    z"ViaTemplateActivator._repr_unicodeN)__name__r3   __qualname__r   r   r    r   r   r)   r(   staticmethodr6   r   r   r   r   r      s   
		r   )	metaclass)
__future__r   r%   sysabcr   r   Z	activatorr   version_infoimportlib.resourcesr	   r   r   __all__r   r   r   r   <module>   s   
6