o
    Ëý°j¨  ã                   @   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G dd„ dƒZdS )	é    N)ÚList)Úcanonicalize_name)ÚPyPI)Úhas_tls)Únormalize_pathÚredact_auth_from_urlc                   @   s|   e Zd ZdZddgZedee dee dd fdd„ƒZdee de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Ú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
   )Ú
startswithr   ÚosÚpathÚexistsÚappendr   Ú	itertoolsÚchainÚurllibÚparseÚurlparseÚschemeÚloggerÚwarning)Úclsr	   r
   Úbuilt_find_linksÚlinkÚnew_linkÚparsed© r!   ú”/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.pyÚcreate   s(   

ÿúþzSearchScope.createNc                 C   s   || _ || _d S ©Nr   )Úselfr	   r
   r!   r!   r"   Ú__init__A   s   
zSearchScope.__init__c                 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 r$   )r   ©Ú.0Úurlr!   r!   r"   Ú	<genexpr>h   s   € z6SearchScope.get_formatted_locations.<locals>.<genexpr>Ú
)r
   r   Ú
simple_urlr   r   r   Úurlsplitr   Únetlocr   r   r   ÚformatÚjoinr	   )r%   ÚlinesÚredacted_index_urlsr)   Úredacted_index_urlÚpurlr!   r!   r"   Úget_formatted_locationsI   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ú/)Ú	posixpathr0   r   r   Úquoter   Úendswith)r)   Úloc)r6   r!   r"   Úmkurl_pypi_urlt   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
   )r%   r6   r!   )r<   r6   r"   Úget_index_urls_locationsm   s   z$SearchScope.get_index_urls_locations)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Úclassmethodr   r>   r#   r&   r5   r?   r!   r!   r!   r"   r      s(    þýü'þý
ü$r   )r   Úloggingr   r8   Úurllib.parser   Útypingr   Ú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    
