o
    öè¤S	  ã                   @   sZ   d Z ddlZddlmZ ddlmZ G dd„ deƒZG dd„ deƒZdd	d
„Z	dd„ Z
dS )z3setuptools_support.

License  : BSD (See COPYING)

é    N)ÚPackageIndex)Úyolklibc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚDownloadURIz5Hack to raise the value of the URI from PackageIndex.c                 C   s
   || _ dS )zinit.N)Úvalue)Úselfr   © r   úO/home/ubuntu/flask/venv/lib/python3.10/site-packages/yolk/setuptools_support.pyÚ__init__   ó   
zDownloadURI.__init__c                 C   s
   t | jƒS )zSet value to URI.)Úreprr   )r   r   r   r   Ú__str__   r
   zDownloadURI.__str__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   r   r   r      s    r   c                   @   s"   e Zd ZdZdd„ Zddd„ZdS )	ÚMyPackageIndexz5Over-ride methods so we can obtain the package's URI.c                 C   ó   t |ƒ‚©z>Raise exception so we immediately get url with no downloading.©r   )r   ÚurlÚfilenamer   r   r   Ú_download_to   ó   zMyPackageIndex._download_toú/tmp/spambarc                 C   r   r   r   )r   ÚspecÚtmpdirr   r   r   Údownload#   r   zMyPackageIndex.downloadN)r   )r   r   r   r   r   r   r   r   r   r   r      s    r   c              
   C   s¶   d}d}d}|s
d}|rd| |f }n| }t j |¡}t|ƒ}	z|	 |||||¡ W dS  tyZ }
 z#|
j d¡d }|sN| d¡sN| d	¡sNW Y d}
~
dS |W  Y d}
~
S d}
~
ww )
zMUse setuptools to search for a package's URI.

    @returns: URI string

    NTFzhttps://pypi.python.org/pypiz%s==%sú#r   z.eggz.EGG)	Úpkg_resourcesÚRequirementÚparser   Úfetch_distributionr   r   ÚsplitÚendswith)Úpackage_nameÚversionÚsourceÚ	index_urlr   Ú
force_scanÚ
develop_okÚpkg_specÚreqÚ	pkg_indexr   Ú	clean_urlr   r   r   Úget_download_uri(   s.   
ÿÿ€÷r.   c                  C   s2   g } t  d¡D ]\}}|j| vr|  |j¡ q| S )zäReturn list of all installed packages.

    Note: It returns one project name per pkg no matter how many versions
    of a particular package is installed

    @returns: list of project name strings for every installed pkg

    Úall)r   Úget_distributionsÚproject_nameÚappend)ÚprojectsÚdistÚ_r   r   r   Úget_pkglistI   s   	
€r6   )N)r   r   Úsetuptools.package_indexr   Úyolkr   Ú	Exceptionr   r   r.   r6   r   r   r   r   Ú<module>   s    
!