U
ÀÒ.e_Ê ã @ sD d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZzd dlZW n e k
rd d dl
ZY nX d dlZddlm
Z
ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ dd l0m1Z1m2Z2 dd
l3m4Z4m5Z5 e 6e7¡Z8e 9d¡Z:e 9dej;¡Zd-dd„Z?G dd„ deƒZ@G dd„ deAƒZBG dd„ deBƒZCG dd„ deBƒZDG dd„ deAƒZEG dd„ deBƒZFG dd„ deBƒZGG dd „ d eBƒZHG d!d"„ d"eBƒZIG d#d$„ d$eBƒZJeJeHƒ eFd%d&d'd(d)ZKeKjLZLe 9d*¡ZMG d+d,„ d,eAƒZNdS ).é N)ÚBytesIOé )ÚDistlibException)ÚurljoinÚurlparseÚ
urlunparseÚurl2pathnameÚpathname2urlÚqueueÚquoteÚunescapeÚstring_typesÚbuild_openerÚHTTPRedirectHandlerÚ text_typeÚRequestÚ HTTPErrorÚURLError)ÚDistributionÚDistributionPathÚ make_dist)ÚMetadataÚMetadataInvalidError) Úcached_propertyÚparse_credentialsÚensure_slashÚsplit_filenameÚget_project_dataÚparse_requirementÚparse_name_and_versionÚServerProxyÚnormalize_name)Ú
get_schemeÚUnsupportedVersionError)ÚWheelÚ
is_compatiblez^(\w+)=([a-f0-9]+)z;\s*charset\s*=\s*(.*)\s*$ztext/html|application/x(ht)?mlzhttps://pypi.org/pypic C s6 | dkrt } t| dd}z| ¡ W ¢S |dƒƒ X dS )z•
Return all distribution names known by an index.
:param url: The URL of the index.
:return: A list of all known distribution names.
Nç @©ÚtimeoutÚclose)Ú
DEFAULT_INDEXr Ú
list_packages)ÚurlÚclient© r. ú@/usr/lib/python3.8/site-packages/pip/_vendor/distlib/locators.pyÚget_all_distribution_names) s r0 c @ s$ e Zd ZdZdd„ Ze Z ZZdS )ÚRedirectHandlerzE
A class to work around a bug in some Python 3.2.x releases.
c C s‚ d }dD ]}||kr|| } q"q|d kr.d S t |ƒ}|jdkrnt| ¡ |ƒ}t|dƒrf| ||¡ n|||<