U oÏ a¯ã@sðddlmZmZmZddlmZddlmZzddlm m Z Wn&e k rhddl m mZ YnXddddd d gZz,ed ƒZeeeƒs¤ed ƒZeeeƒs¤t‚Wnd ZYnXdZGdd„deƒZdd„Zdd„Zdd „Zdd„ZdS)é)Úabsolute_importÚdivisionÚunicode_literals)Ú ModuleType)Ú text_typeNÚ default_etreeÚMethodDispatcherÚisSurrogatePairÚsurrogatePairToCodepointÚmoduleFactoryFactoryÚsupports_lone_surrogatesz"\uD800"z u"\uD800"FTc@s"eZdZdZddd„Zdd„ZdS) rapDict 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. ©cCsvg}|D]B\}}t|ttttfƒr<|D]}| ||f¡q&q| ||f¡qt ||¡t|ƒt|ƒkslt ‚d|_ dS©N) Ú isinstanceÚlistÚtupleÚ frozensetÚsetÚappendÚdictÚ__init__ÚlenÚAssertionErrorÚdefault)ÚselfÚitemsÚ _dictEntriesÚnameÚvalueÚitemr r ú\C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_vendor\html5lib\_utils.pyr1s  zMethodDispatcher.__init__cCst |||j¡Sr)rÚgetr)rÚkeyr r r Ú __getitem__@szMethodDispatcher.__getitem__N)r )Ú__name__Ú __module__Ú __qualname__Ú__doc__rr#r r r r r$s cCsLt|ƒdkoJt|dƒdkoJt|dƒdkoJt|dƒdkoJt|dƒdkS)NéréØiÿÛééÜiÿß)rÚord)Údatar r r r Gs ÿÿþþcCs,dt|dƒddt|dƒd}|S)Nirr)ir*r+)r,)r-Úchar_valr r r r Msÿcsi‰‡‡fdd„}|S)NcsÞttjtdƒƒrd|j}n d|j}t| ¡ƒ}zˆ|||WStk rØt|ƒ}ˆ|f|ž|Ž}|j |¡dˆkrˆiˆ|<dˆ|kr iˆ||<dˆ||krÀiˆ|||<|ˆ|||<|YSXdS)NÚz _%s_factorys _%s_factoryrÚargsÚkwargs) rrr$ÚtyperrÚKeyErrorÚ__dict__Úupdate)Ú baseModuler0r1rÚ kwargs_tupleÚmodÚobjs©ÚfactoryÚ moduleCacher r Ú moduleFactoryYs$      z+moduleFactoryFactory..moduleFactoryr )r;r=r r:r r Vscsi‰‡‡fdd„}|S)Ncs2t|ƒt| ¡ƒf}|ˆkr*ˆ||Žˆ|<ˆ|Sr)rr)r0r1r"©ÚcacheÚfuncr r Úwrappedvszmemoize..wrappedr )r@rAr r>r ÚmemoizessrB)Ú __future__rrrÚtypesrZpip._vendor.sixrÚxml.etree.cElementTreeÚetreeÚ cElementTreerÚ ImportErrorÚxml.etree.ElementTreeÚ ElementTreeÚ__all__ÚevalÚ_xrrr rrr r r rBr r r r Ús0  þ   #