o
    Wi                     @  s   d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	 ddl
mZ e	r<d dlmZmZ d dlmZ d d	lmZ ejd
krMd dlmZ dddZnd dlmZ G dd deeZdgZdS )    )annotationsN)ABCabstractmethod)TYPE_CHECKING   )	Activator)IterableIterator)Path)Creator)   
   )filesmodule_namestrfilenamereturnbytesc                 C  s   t | |  S N)r   
read_bytes)r   r    r   V/home/ubuntu/.local/lib/python3.10/site-packages/virtualenv/activation/via_template.pyread_binary   s   r   )r   c                   @  sh   e Zd Zed"ddZed#ddZd$ddZd%ddZd&ddZ	d'ddZ
d(ddZed)dd Zd!S )*ViaTemplateActivatorr   Iterator[str]c                 C  s   t r   )NotImplementedError)selfr   r   r   	templates      zViaTemplateActivator.templatesstringr   c                 C  s
   t | S )zQuote strings in the activation script.

        :param string: the string to quote

        :returns: quoted string that works in the activation script

        )shlexquote)r   r   r   r   r!       s   
	zViaTemplateActivator.quotecreatorr   
list[Path]c                 C  s@   |j }| ||}| ||  ||}| jd ur| j|jd< |S )Nprompt)bin_dirreplacements	_generater   flag_prompt	pyenv_cfg)r   r"   dest_folderr&   	generatedr   r   r   generate+   s   
zViaTemplateActivator.generater*   r
   dict[str, str]c              
   C  sX   | j d u rdn| j t|j|jt|j|jtjt|j	dd p!dt|j	dd p)ddS )N tcl_libtk_lib)__VIRTUAL_PROMPT____VIRTUAL_ENV____VIRTUAL_NAME____BIN_NAME____PATH_SEP____TCL_LIBRARY____TK_LIBRARY__)
r(   r   destenv_namer%   relative_toospathsepgetattrinterpreter)r   r"   r*   r   r   r   r&   3   s   z!ViaTemplateActivator.replacementsr&   r   Iterable[str]	to_folderc           
      C  sn   g }|D ]0}|  |||}|| | }| r|  t|dr%dnd}	|||	 || q|S )Nz.ps1z	utf-8-sigutf-8)	instantiate_templateas_nameexistsunlinkr   endswithwrite_bytesencodeappend)
r   r&   r   r@   r"   r+   templatetextr8   encodingr   r   r   r'   >   s   zViaTemplateActivator._generaterJ   c                 C     |S r   r   )r   rJ   r   r   r   rC   P   s   zViaTemplateActivator.as_namec           	      C  sN   t | j|}|jddd}| D ]\}}| ||}||| |}q|S )NrA   strict)errors)r   
__module__decodeitems_repr_unicodereplacer!   )	r   r&   rJ   r"   binaryrK   keyvalue	value_unir   r   r   rB   S   s   z)ViaTemplateActivator.instantiate_templaterW   c                 C  rM   r   r   )r"   rW   r   r   r   rS   \   r   z"ViaTemplateActivator._repr_unicodeN)r   r   )r   r   r   r   )r"   r   r   r#   )r"   r   r*   r
   r   r-   )
r&   r-   r   r?   r@   r
   r"   r   r   r#   )rJ   r   r   r   )r&   r-   rJ   r   r"   r   r   r   )r"   r   rW   r   r   r   )__name__rP   __qualname__r   r   staticmethodr!   r,   r&   r'   rC   rB   rS   r   r   r   r   r      s    





	r   )r   r   r   r   r   r   )
__future__r   r;   r    sysabcr   r   typingr   	activatorr   collections.abcr   r	   pathlibr
   virtualenv.create.creatorr   version_infoimportlib.resourcesr   r   r   __all__r   r   r   r   <module>   s$    
G