§
    !ph]  ã                  ó(  — d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ  ej        e¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zg d¢ZdS )uÜ  
A rough layout of the current storage goes as:

virtualenv-app-data
â”œâ”€â”€ py - <version> <cache information about python interpreters>
â”‚  â””â”€â”€ *.json/lock
â”œâ”€â”€ wheel <cache wheels used for seeding>
â”‚   â”œâ”€â”€ house
â”‚   â”‚   â””â”€â”€ *.whl <wheels downloaded go here>
â”‚   â””â”€â”€ <python major.minor> -> 3.9
â”‚       â”œâ”€â”€ img-<version>
â”‚       â”‚   â””â”€â”€ image
â”‚       â”‚           â””â”€â”€ <install class> -> CopyPipInstall / SymlinkPipInstall
â”‚       â”‚               â””â”€â”€ <wheel name> -> pip-20.1.1-py2.py3-none-any
â”‚       â””â”€â”€ embed
â”‚           â””â”€â”€ 3 -> json format versioning
â”‚               â””â”€â”€ *.json -> for every distribution contains data about newer embed versions and releases
â””â”€â”€â”€ unzip <in zip app we cannot refer to some internal files, so first extract them>
     â””â”€â”€ <virtualenv version>
         â”œâ”€â”€ py_info.py
         â”œâ”€â”€ debug.py
         â””â”€â”€ _virtualenv.py
é    )ÚannotationsN)ÚABC)ÚcontextmanagerÚsuppress)Úsha256)ÚReentrantFileLock)Úsafe_delete)Úextract)Ú__version__é   )ÚAppDataÚContentStorec                  ó®   — e Zd ZdZdZdZdd„Zdd„Zdd	„Zd
„ Z	d„ Z
ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ ZdS )ÚAppDataDiskFolderz>Store the application data on the disk within a folder layout.FTÚreturnÚNonec                ó.   — t          |¦  «        | _        d S ©N)r   Úlock)ÚselfÚfolders     úpC:\Users\Daniel\PycharmProjects\Portfolio_Website\.venv\Lib\site-packages\virtualenv/app_data/via_disk_folder.pyÚ__init__zAppDataDiskFolder.__init__1   s   € Ý% fÑ-Ô-ˆŒ	ˆ	ˆ	ó    Ústrc                óJ   — t          | ¦  «        j        › d| j        j        › d�S )Nú(ú))ÚtypeÚ__name__r   Úpath©r   s    r   Ú__repr__zAppDataDiskFolder.__repr__4   s&   € Ý�t‘*”*Ô%Ð9Ð9¨¬	¬Ð9Ð9Ð9Ð9r   c                ó4   — t          | j        j        ¦  «        S r   )r   r   r!   r"   s    r   Ú__str__zAppDataDiskFolder.__str__7   s   € Ý�4”9”>Ñ"Ô"Ð"r   c                ó‚   — t                                d| j        j        ¦  «         t	          | j        j        ¦  «         d S )Nzreset app data folder %s)ÚLOGGERÚdebugr   r!   r	   r"   s    r   ÚresetzAppDataDiskFolder.reset:   s3   € Ý�ŠÐ/°´´Ñ@Ô@Ð@Ý�D”I”NÑ#Ô#Ð#Ð#Ð#r   c                ó   — dS )zDo nothing.N© r"   s    r   ÚclosezAppDataDiskFolder.close>   s   € € € r   c              #  óf   K  — | j         |z  }|5  |j        V — d d d ¦  «         d S # 1 swxY w Y   d S r   ©r   r!   )r   r!   Ú	path_locks      r   ÚlockedzAppDataDiskFolder.lockedA   sŠ   è è € à”I Ñ$ˆ	Øð 	!ð 	!Ø”.Ð Ð Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   �
&¦*­*c              #  ó4  K  — |�t           |¦   «         ¦  «        n| j        dz  t          z  }|                     |j        ¦  «        5  |j        |j        z  }|                     ¦   «         st          ||¦  «         |V — d d d ¦  «         d S # 1 swxY w Y   d S )NÚunzip)r   r   r   Úlock_for_keyÚnamer!   Úexistsr
   )r   r!   Ú	to_folderÚrootÚdests        r   r
   zAppDataDiskFolder.extractG   sã   è è € à1:ÐmÕ   ¡¤Ñ-Ô-Ð-ÈDÌIÐX_ÑL_ÕbmÑLmˆØ×Ò˜tœyÑ)Ô)ð 	ð 	Ø”9˜tœyÑ(ˆDØ—;’;‘=”=ð $Ý˜˜dÑ#Ô#Ð#ØˆJˆJˆJð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á8BÂBÂBc                ó   — | j         dz  dz  S )NÚpy_infoÚ2)r   r"   s    r   Ú
py_info_atzAppDataDiskFolder.py_info_atP   s   € àŒy˜9Ñ$ sÑ*Ð*r   c                ó,   — t          | j        |¦  «        S r   )ÚPyInfoStoreDiskr<   ©r   r!   s     r   r:   zAppDataDiskFolder.py_infoT   s   € Ý˜tœ°Ñ5Ô5Ð5r   c                óN  — | j         }|5  |j                             ¦   «         D ]g}|j        dk    rZ|                     |j        ¦  «        5  |                     ¦   «         r|                     ¦   «          ddd¦  «         n# 1 swxY w Y   Œh	 ddd¦  «         dS # 1 swxY w Y   dS )zclear py info.ú.jsonN)r<   r!   ÚiterdirÚsuffixr3   Ústemr5   Úunlink)r   Úpy_info_folderÚfilenames      r   Úpy_info_clearzAppDataDiskFolder.py_info_clearW   s3  € àœˆØð 	.ð 	.Ø*Ô/×7Ò7Ñ9Ô9ð .ð .�Ø”? gÒ-ð .Ø'×4Ò4°X´]ÑCÔCð .ð .Ø#Ÿ?š?Ñ,Ô,ð .Ø$ŸOšOÑ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .øð.ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s6   ŠABÁ)B Á4BÂ BÂBÂBÂBÂBÂ!Bc                óD   — t          | j        dz  |z  dz  dz  |¦  «        S )NÚwheelÚembedÚ3)Ú EmbedDistributionUpdateStoreDiskr   )r   ÚdistributionÚfor_py_versions      r   Úembed_update_logz"AppDataDiskFolder.embed_update_loga   s+   € Ý/°´	¸GÑ0CÀnÑ0TÐW^Ñ0^ÐadÑ0dÐfrÑsÔsÐsr   c                óX   — | j         j        dz  dz  }|                     dd¬¦  «         |S )NrJ   ÚhouseT©ÚparentsÚexist_ok)r   r!   Úmkdirr?   s     r   rR   zAppDataDiskFolder.housed   s0   € àŒyŒ~ Ñ'¨'Ñ1ˆØ�
Š
˜4¨$ˆ
Ñ/Ô/Ð/Øˆr   c                ó8   — | j         j        dz  |z  dz  dz  |z  S )NrJ   ÚimageÚ1r.   )r   rO   r4   s      r   Úwheel_imagezAppDataDiskFolder.wheel_imagej   s%   € ØŒyŒ~ Ñ'¨.Ñ8¸7ÑBÀSÑHÈ4ÑOÐOr   N©r   r   )r   r   )r    Ú
__module__Ú__qualname__Ú__doc__Ú	transientÚ
can_updater   r#   r%   r)   r,   r   r0   r
   Úpropertyr<   r:   rH   rP   rR   rZ   r+   r   r   r   r   +   s.  € € € € € ØHÐHà€IØ€Jð.ð .ð .ð .ð:ð :ð :ð :ð#ð #ð #ð #ð$ð $ð $ðð ð ð ð!ð !ñ „^ð!ð
 ðð ñ „^ðð ð+ð +ñ „Xð+ð6ð 6ð 6ð.ð .ð .ðtð tð tð ðð ñ „Xðð
Pð Pð Pð Pð Pr   r   c                  óZ   — e Zd Zdd„Zed„ ¦   «         Zd„ Zd„ Zd„ Ze	d„ ¦   «         Z
d	„ Zd
S )ÚJSONStoreDiskr   r   c                óD   — || _         || _        g |¢| j        ‘R | _        d S r   )Ú	in_folderÚkeyÚfileÚmsg_args)r   re   rf   rh   s       r   r   zJSONStoreDisk.__init__o   s*   € Ø"ˆŒØˆŒØ.˜(Ð. D¤IÐ.Ð.ˆŒˆˆr   c                ó0   — | j         j        | j        › d�z  S )NrA   )re   r!   rf   r"   s    r   rg   zJSONStoreDisk.filet   s   € àŒ~Ô"¨¬Ð%7Ð%7Ð%7Ñ7Ð7r   c                ó4   — | j                              ¦   «         S r   )rg   r5   r"   s    r   r5   zJSONStoreDisk.existsx   s   € ØŒy×ÒÑ!Ô!Ð!r   c                ó\  — d\  }}	 t          j        | j                             d¬¦  «        ¦  «        }t	          j        dg| j        ¢R Ž  |S # t          $ r d}Y nt          $ r Y nw xY w|r@t          t          ¦  «        5  |                      ¦   «          d d d ¦  «         n# 1 swxY w Y   d S )N)NFúutf-8©Úencodingzgot %s %s from %sT)ÚjsonÚloadsrg   Ú	read_textr'   r(   rh   Ú
ValueErrorÚ	Exceptionr   ÚOSErrorÚremove)r   ÚdataÚ
bad_formats      r   ÚreadzJSONStoreDisk.read{   s  € Ø&Ñˆˆjð	Ý”:˜dœi×1Ò1¸7Ð1ÑCÔCÑDÔDˆDõ ŒLÐ,Ð=¨t¬}Ð=Ð=Ð=Ð=ØˆKøõ ð 	ð 	ð 	ØˆJˆJˆJÝð 	ð 	ð 	ØˆDð	øøøð
 ð 	Ý�'Ñ"Ô"ð ð Ø—’‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àˆts)   ‡-A ÁA'Á	A'Á&A'Â B!Â!B%Â(B%c                óf   — | j                              ¦   «          t          j        dg| j        ¢R Ž  d S )Nzremoved %s %s at %s)rg   rE   r'   r(   rh   r"   s    r   ru   zJSONStoreDisk.remove‹   s7   € ØŒ	×ÒÑÔÐÝŒÐ*Ð;¨T¬]Ð;Ð;Ð;Ð;Ð;Ð;r   c              #  ó‚   K  — | j                              | j        ¦  «        5  d V — d d d ¦  «         d S # 1 swxY w Y   d S r   )re   r3   rf   r"   s    r   r0   zJSONStoreDisk.locked�   s‹   è è € àŒ^×(Ò(¨¬Ñ2Ô2ð 	ð 	ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ¢4´8»8c                óÜ   — | j         j        }|                     dd¬¦  «         | j                              t	          j        |dd¬¦  «        d¬¦  «         t          j        dg| j        ¢R Ž  d S )NTrS   é   )Ú	sort_keysÚindentrl   rm   zwrote %s %s at %s)	rg   ÚparentrV   Ú
write_textro   Údumpsr'   r(   rh   )r   Úcontentr   s      r   ÚwritezJSONStoreDisk.write”   sp   € Ø”Ô!ˆØ�Š˜T¨DˆÑ1Ô1Ð1ØŒ	×Ò�TœZ¨¸4ÈÐJÑJÔJÐU\ÐÑ]Ô]Ð]ÝŒÐ(Ð9¨4¬=Ð9Ð9Ð9Ð9Ð9Ð9r   Nr[   )r    r\   r]   r   ra   rg   r5   rx   ru   r   r0   rƒ   r+   r   r   rc   rc   n   sš   € € € € € ð/ð /ð /ð /ð
 ð8ð 8ñ „Xð8ð"ð "ð "ðð ð ð <ð <ð <ð ðð ñ „^ðð:ð :ð :ð :ð :r   rc   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )r>   r   r   c                óÔ   •— t          t          |¦  «                             d¦  «        ¦  «                             ¦   «         }t	          ¦   «                              ||d|f¦  «         d S )Nrl   zpython info of)r   r   ÚencodeÚ	hexdigestÚsuperr   )r   re   r!   rf   Ú	__class__s       €r   r   zPyInfoStoreDisk.__init__œ   sX   ø€ Ý•S˜‘Y”Y×%Ò% gÑ.Ô.Ñ/Ô/×9Ò9Ñ;Ô;ˆÝ‰Œ×Ò˜ CÐ*:¸DÐ)AÑBÔBÐBÐBÐBr   r[   ©r    r\   r]   r   Ú__classcell__©r‰   s   @r   r>   r>   ›   sG   ø€ € € € € ðCð Cð Cð Cð Cð Cð Cð Cð Cð Cr   r>   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )rM   r   r   c                óR   •— t          ¦   «                              ||d|f¦  «         d S )Nzembed update of distribution)rˆ   r   )r   re   rN   r‰   s      €r   r   z)EmbedDistributionUpdateStoreDisk.__init__¢   s7   ø€ Ý‰Œ×ÒØØØ+¨\Ð:ñ	
ô 	
ð 	
ð 	
ð 	
r   r[   rŠ   rŒ   s   @r   rM   rM   ¡   s=   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r   rM   )r   rc   r>   )r^   Ú
__future__r   ro   ÚloggingÚabcr   Ú
contextlibr   r   Úhashlibr   Úvirtualenv.util.lockr   Úvirtualenv.util.pathr	   Úvirtualenv.util.zipappr
   Úvirtualenv.versionr   Úbaser   r   Ú	getLoggerr    r'   r   rc   r>   rM   Ú__all__r+   r   r   ú<module>r›      s¼  ððð ð0 #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *Ø *Ð *Ð *Ð *Ð *Ð *à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à	ˆÔ	˜8Ñ	$Ô	$€ð@Pð @Pð @Pð @Pð @P˜ñ @Pô @Pð @PðF*:ð *:ð *:ð *:ð *:�L #ñ *:ô *:ð *:ðZCð Cð Cð Cð C�mñ Cô Cð Cð
ð 
ð 
ð 
ð 
 }ñ 
ô 
ð 
ðð ð €€€r   