File: //lib/python3.6/site-packages/past/builtins/__pycache__/misc.cpython-36.pyc
3
�c� � @ sx d dl mZ d dlZd dlZd dlZd dlmZmZmZ erJd dl m
Z
nd dlm
Z
er�d dlZd dlm
Z
dd� Z
d dlmZ dd � Zd
d� Zd dlmZ d
d� ZeZyd dlmZ W n ek
r� d dlmZ Y nX eZeZeZnVd dl Z d dl m
Z
e j
Z
e jZe jZe j!Z!e jZe jZe jZe jZe jZe jZe jZe�rPddd�Z!e�rpdd ddddddddg
Z"ng Z"dS )� )�unicode_literalsN)�PY2�PY3�exec_)�Mappingc O s
| ||�S )N� )�f�args�kwr r �/usr/lib/python3.6/misc.py�apply s r )�strc C s t t| f��S )zU
Return a byte-string of one character with ordinal i; 0 <= i <= 256
)�oldstr�bytes)�ir r r �chr s r c
sl t � t�rt �t�rtd��y�t � tj�rftj� �rft �tj�sTtdjt��d���t �t �rbdS d
S t �tj�r�tj��r�t � tj�s�tdjt� �d���t � t �r�dS dS � �k� �k S tk
�rf � �kr�dS td�tjt
tttt
fg}d }}x6t|�D ]*\}}t � |��r|}t �|��r|}�qW t||�dk�r\t � t
��rlt �t��rlt� jd ���S t �t
��r�t � t��r�t� �jd ��S t � t��r�x0t� ��D ]"\}}t||�} | dk�r�| S �q�W dS t � t
��r\t� �t��k�rtt� �t���S t� �fd
d�� D ��}
t� �fdd��D ��}|
|k�rJt|
|�S t� |
�| �S t||�S X dS )z�
cmp(x, y) -> integer
Return negative if x<y, zero if x==y, positive if x>y.
Python2 had looser comparison allowing cmp None and non Numerical types and collections.
Try to match the old behavior
zcannot compare sets using cmp()z.cannot compare float("nan"), {type_y} with cmp)Ztype_y� z.cannot compare {type_x}, float("nan") with cmp)Ztype_xr N�asciic 3 s* | ]"}|�ks� | �| kr|V qd S )Nr )�.0�a)�x�yr r � <genexpr>X s zcmp.<locals>.<genexpr>c 3 s* | ]"}|� ks� | �| kr|V qd S )Nr )r �b)r r r r r Y s ���r )�
isinstance�set� TypeError�numbers�Number�mathZisnan�format�type�int�dict�listr
r � enumerate�cmp�decode�zip�len�min)r r Z
type_orderZx_type_indexZy_type_indexr Z
type_matchZx_elemZy_elemZelem_cmp_valZx_keyZy_keyr )r r r r'