î “Reñ ã @s¼ddlmZmZmZddlmZyddljjZ Wn$e k rhddl jj Z YnXdddddgZ Gd d„deƒZd d„Zd d„Zd d„ZdS) é)Úabsolute_importÚdivisionÚunicode_literals)Ú ModuleTypeNÚ default_etreeÚMethodDispatcherÚisSurrogatePairÚsurrogatePairToCodepointÚmoduleFactoryFactoryc@s1eZdZdZfdd„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. cCs’g}xl|D]d\}}t|ƒttttfkr^x7|D]}|j||fƒq>Wq |j||fƒq Wtj||ƒd|_dS)N) ÚtypeÚlistÚtupleÚ frozensetÚsetÚappendÚdictÚ__init__Údefault)ÚselfÚitemsÚ _dictEntriesÚnameÚvalueÚitem©rú5/tmp/pip-ztkk0jow-build/pip/_vendor/html5lib/utils.pyrs zMethodDispatcher.__init__cCstj|||jƒS)N)rÚgetr)rÚkeyrrrÚ __getitem__*szMethodDispatcher.__getitem__N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrrrs cCsht|ƒdkogt|dƒdkogt|dƒdkogt|dƒdkogt|dƒdkS)NériØiÿÛéiÜiÿß)ÚlenÚord)Údatarrrr1s,cCs2dt|dƒddt|dƒd}|S)NiriØir$iÜ)r&)r'Úchar_valrrrr 7scsi‰‡‡fdd†}|S)Ncs‰ttjtdƒƒr(d|j}n d|j}|ˆkrIˆ|St|ƒ}ˆ|||Ž}|jj|ƒ|ˆ|<|SdS)NÚz _%s_factorys _%s_factory)Ú isinstancerrr Ú__dict__Úupdate)Ú baseModuleÚargsÚkwargsrÚmodÚobjs)ÚfactoryÚ moduleCacherrÚ moduleFactoryCs    z+moduleFactoryFactory..moduleFactoryr)r2r4r)r2r3rr @s)Ú __future__rrrÚtypesrÚxml.etree.cElementTreeÚetreeÚ cElementTreerÚ ImportErrorÚxml.etree.ElementTreeÚ ElementTreeÚ__all__rrrr r rrrrÚs   "