File: //usr/local/lib/python3.7/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-37.pyc
B
L��g� � @ s� d dl mZ d dlZd dlZd dlZd dlZyd dlZW n ek
rP dZY nX ejd dk �rnd dl m Z e
fZeZ
d dlmZ d dlZd dlZd dlmZmZmZmZmZ d dlmZmZmZmZm Z m!Z!m"Z" dd � Zd dl#Z#d d
l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, e�r"d dl#m-Z- d dl.Z.d dl/Z/d dl0Z1d dl2m2Z2 d dl3Z3e4Z4d d
l5m6Z7 d dl5m8Z9 �nd dl:m Z e;fZe;Z
d dl:m<Z d dlZd dlZd dl=mZmZmZmZmZmZmZm"Z" d dl>m%Z%mZm$Z$mZm Z m(Z(m)Z)m*Z*m+Z+m,Z, e�r
d dl>m-Z- d dl?m'Z'm&Z&m!Z! d dl@mAZ. d dl>mBZ# d dlCmAZ/ d dl1Z1d dlDm2Z2 d dlEmFZ3 eGZ4d dl5m9Z9 e7Z7yd dlmHZHmIZI W n8 ek
�r� G dd� deJ�ZId`dd�ZKdd� ZHY nX yd dlmLZM W n& ek
�r� G dd� deN�ZMY nX yd dlmOZO W n, ek
�r8 ejPejQB dfd d!�ZOY nX d d"lRmSZT eUeTd#��rXeTZSn,d d$lRmVZW G d%d&� d&eW�ZVG d'd(� d(eT�ZSyd d)lXmYZY W n ek
�r� d*d+� ZYY nX d dlZZZye[Z[W n* e\k
�r� d d,l]m^Z^ d-d.� Z[Y nX yej_Z_ej`Z`W nH eak
�rH e�b� �pd/Zcecd0k�r0d1Zdnd2Zdd3d4� Z_d5d6� Z`Y nX yd d7lemfZf W n@ ek
�r� d d8lgmhZhmiZi e�jd9�Zkd:d;� Zld<d=� ZfY nX yd d>lmmnZn W n" ek
�r� d d>lomnZn Y nX ejdd?� d@k �r�e2� jpZpnd dAlmmpZp yd dBlqmrZr W nd ek
�rn d dClqmsZs yd dDltmuZv W n ek
�rX dadFdG�ZvY nX G dHdI� dIes�ZrY nX yd dJlwmxZx W n ek
�r� dbdKdL�ZxY nX yd dMlqmyZy W n� ek
�r< yd dNlzm{Z| W n" ek
�r� d dNl}m{Z| Y nX yd dOl~mZm�Z�m�Z� W n ek
�r& Y nX G dPdQ� dQe��ZyY nX yd dRl�m�Z�m�Z� W nv ek
�r� e�jdSej��Z�dTdU� Z�G dVdW� dWe��Z�dcdXdY�Z�G dZd[� d[e��Z�G d\d]� d]e��Z�G d^d_� d_eN�Z�Y nX dS )d� )�absolute_importN� )�StringIO)�FileType)�urlparse�
urlunparse�urljoin�urlsplit�
urlunsplit)�urlretrieve�quote�unquote�url2pathname�pathname2url�ContentTooShortError� splittypec C s t | t�r| �d�} t| �S )Nzutf-8)�
isinstance�unicode�encode�_quote)�s� r �>/tmp/pip-unpacked-wheel-hv55ucu3/pip/_vendor/distlib/compat.pyr s
r ) �Request�urlopen�URLError� HTTPError�HTTPBasicAuthHandler�HTTPPasswordMgr�HTTPHandler�HTTPRedirectHandler�build_opener)�HTTPSHandler)�
HTMLParser)�ifilter)�ifilterfalse)�
TextIOWrapper)r r r r r
r r
r )
r r r r r r r r r r! )r r r )�filterfalse)�match_hostname�CertificateErrorc @ s e Zd ZdS )r) N)�__name__�
__module__�__qualname__r r r r r) ] s r) � c
C s� g }| sdS | � d�}|d |dd� }}|�d�}||krNtdt| � ��|sb| �� |�� kS |dkrv|�d� n>|�d �s�|�d �r�|�t�|�� n|�t�|�� d
d�� x|D ]}|�t�|�� q�W t�
dd
�|� d tj�} | �
|�S )zpMatching according to RFC 6125, section 6.4.3
http://tools.ietf.org/html/rfc6125#section-6.4.3
F�.r r- N�*z,too many wildcards in certificate DNS name: z[^.]+zxn--z\*z[^.]*z\Az\.z\Z)�split�countr) �repr�lower�append�
startswith�re�escape�replace�compile�join�
IGNORECASE�match)
�dn�hostnameZ
max_wildcardsZpats�partsZleftmost� remainder� wildcards�frag�patr r r �_dnsname_match` s(
rD c C s� | st d��g }| �dd�}x0|D ](\}}|dkr"t||�r@dS |�|� q"W |s�xF| �dd�D ]6}x0|D ](\}}|dkrjt||�r�dS |�|� qjW q`W t|�dkr�td |d
�tt|��f ��n*t|�dkr�td||d f ��ntd
��dS )a= Verify that *cert* (in decoded format as returned by
SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125
rules are followed, but IP addresses are not accepted for *hostname*.
CertificateError is raised on failure. On success, the function
returns nothing.
ztempty or no certificate, match_hostname needs a SSL socket or SSL context with either CERT_OPTIONAL or CERT_REQUIRED�subjectAltNamer �DNSN�subject�
commonNamer- z&hostname %r doesn't match either of %sz, zhostname %r doesn't match %rr z=no appropriate commonName or subjectAltName fields were found) �
ValueError�getrD r4 �lenr) r: �mapr2 )�certr>