3 ÝPf ã @ sü d dl mZmZmZ d dlZd dlmZ d dlmZ yd dl j jZW n e k rd d dlj jZY nX ddddd d dgZejd dko’ejd dkZyedƒZeeeƒs°edƒZW n dZY nX dZG dd„ deƒZdd„ Zdd„ Zdd „ Zdd„ ZdS )é )Úabsolute_importÚdivisionÚunicode_literalsN)Ú ModuleType)Ú text_typeÚ default_etreeÚMethodDispatcherÚisSurrogatePairÚsurrogatePairToCodepointÚmoduleFactoryFactoryÚsupports_lone_surrogatesÚPY27é é é z"\uD800"z u"\uD800"FTc @ s$ e Zd ZdZf fdd„Zdd„ ZdS )r ap Dict with 2 special properties: On initiation, keys that are lists, sets or tuples are converted to multiple keys so accessing any one of the items in the original list-like object returns the matching value md = MethodDispatcher({("foo", "bar"):"baz"}) md["foo"] == "baz" A default value which can be set through the default attribute. c C sj g }xN|D ]F\}}t |ttttfƒrBx*|D ]}|j||fƒ q*W q |j||fƒ q W tj| |ƒ d | _d S )N) Ú isinstanceÚlistÚtupleÚ frozensetÚsetÚappendÚdictÚ__init__Údefault)ÚselfÚitemsZ_dictEntriesÚnameÚvalueÚitem© r ú/usr/lib/python3.6/_utils.pyr 4 s zMethodDispatcher.__init__c C s t j| || jƒS )N)r Úgetr )r Úkeyr r r Ú__getitem__C s zMethodDispatcher.__getitem__N)Ú__name__Ú __module__Ú__qualname__Ú__doc__r r# r r r r r ' s c C sL t | ƒdkoJt| d ƒdkoJt| d ƒdkoJt| d ƒdkoJt| d ƒdkS )Nr r i Ø iÿÛ r i Ü iÿß )ÚlenÚord)Údatar r r r J s c C s, dt | d ƒd d t | d ƒd }|S )Ni r i Ø i r i Ü )r) )r* Zchar_valr r r r P s c s i ‰‡ ‡fdd„}|S )Nc sØ t tjtdƒƒrd| j }n d| j }t|jƒ ƒ}yˆ| | | S tk rÒ t|ƒ}ˆ | f|ž|Ž}|jj|ƒ dˆkr†i ˆ|<