o
    ­—Žjm  ã                   @   s�   d dl Z d dlZd dlZd dlZd dl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 e¡Zeddd�G d	d
„ d
ƒƒZdS )é    N)Ú	dataclass)Úcanonicalize_name)ÚPyPI)Úhas_tls)Únormalize_pathÚredact_auth_from_urlT)ÚfrozenÚslotsc                	   @   s|   e Zd ZU dZee ed< ee ed< eed< edee dee dedd fdd„ƒZ	defdd	„Z
d
edee fdd„ZdS )ÚSearchScopezF
    Encapsulates the locations that pip is configured to search.
    Ú
find_linksÚ
index_urlsÚno_indexÚreturnc                 C   s„   g }|D ]}|  d¡rt|ƒ}tj |¡r|}| |¡ qtƒ s;t ||¡D ]}t	j
 |¡}|jdkr:t d¡  nq&| |||d�S )zQ
        Create a SearchScope object after normalizing the `find_links`.
        ú~Úhttpszipip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.)r   r   r   )Ú
startswithr   ÚosÚpathÚexistsÚappendr   Ú	itertoolsÚchainÚurllibÚparseÚurlparseÚschemeÚloggerÚwarning)Úclsr   r   r   Úbuilt_find_linksÚlinkÚnew_linkÚparsed© r#   ú^/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pip/_internal/models/search_scope.pyÚcreate   s*   

ÿúýzSearchScope.createc                 C   s¦   g }g }| j r:| j tjgkr:| j D ]}t|ƒ}tj |¡}|js)|js)t	 
d|¡ | |¡ q| d d |¡¡¡ | jrN| d d dd„ | jD ƒ¡¡¡ d |¡S )Nz:The index url "%s" seems invalid, please provide a scheme.zLooking in indexes: {}z, zLooking in links: {}c                 s   s   � | ]}t |ƒV  qd S )N)r   ©Ú.0Úurlr#   r#   r$   Ú	<genexpr>c   s   € z6SearchScope.get_formatted_locations.<locals>.<genexpr>Ú
)r   r   Ú
simple_urlr   r   r   Úurlsplitr   Únetlocr   r   r   ÚformatÚjoinr   )ÚselfÚlinesÚredacted_index_urlsr(   Úredacted_index_urlÚpurlr#   r#   r$   Úget_formatted_locationsE   s,   
þÿÿÿ
z#SearchScope.get_formatted_locationsÚproject_namec                    s*   dt dt f‡fdd„‰ ‡ fdd„| jD ƒS )z²Returns the locations found via self.index_urls

        Checks the url_name on the main (first in the list) index and
        use this url_name to produce all locations
        r(   r   c                    s.   t  | tj tˆ ƒ¡¡}| d¡s|d }|S )Nú/)Ú	posixpathr/   r   r   Úquoter   Úendswith)r(   Úloc)r6   r#   r$   Úmkurl_pypi_urlo   s   ÿ
z<SearchScope.get_index_urls_locations.<locals>.mkurl_pypi_urlc                    s   g | ]}ˆ |ƒ‘qS r#   r#   r&   )r<   r#   r$   Ú
<listcomp>|   s    z8SearchScope.get_index_urls_locations.<locals>.<listcomp>)Ústrr   )r0   r6   r#   )r<   r6   r$   Úget_index_urls_locationsh   s   z$SearchScope.get_index_urls_locationsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úlistr>   Ú__annotations__ÚboolÚclassmethodr%   r5   r?   r#   r#   r#   r$   r
      s"   
 þýüû)#r
   )r   Úloggingr   r8   Úurllib.parser   Údataclassesr   Úpip._vendor.packaging.utilsr   Úpip._internal.models.indexr   Úpip._internal.utils.compatr   Úpip._internal.utils.miscr   r   Ú	getLoggerr@   r   r
   r#   r#   r#   r$   Ú<module>   s    

