o Qa9 @sddlmZmZddlmZGdddeZGdddeZedkrndd d d d d Z ee Z e de ddde D] Z e de ddq:e dee ddZ e de ddde D] Z e de ddq]e ddSdS))absolute_importprint_function)BidirMapc@s eZdZddZddZeZdS)SortedDictIteratorcCs||_||_dSN) sorted_dictkeys)selfrr r //usr/lib/python3/dist-packages/S3/SortedDict.py__init__s zSortedDictIterator.__init__cCs"z|jdWStytw)Nr)r pop IndexError StopIterationr r r r __next__s  zSortedDictIterator.__next__N)__name__ __module__ __qualname__r rnextr r r r r srcs:eZdZidfddZddZddZfdd ZZS) SortedDictTcKstj||fi|||_dS)a WARNING: SortedDict() with ignore_case==True will drop entries differing only in capitalisation! Eg: SortedDict({'auckland':1, 'Auckland':2}).keys() => ['Auckland'] With ignore_case==False it's all right N)dictr ignore_case)r mappingrkwargsr r r r s zSortedDict.__init__csVt|}|jr%t|D]}||<q t}fdd|DSt|}|S)Ncsg|]}|qSr r ).0kxlat_mapr r 1sz#SortedDict.keys..)rr rrlowersorted)r r keylc_keysr rr r %s  zSortedDict.keyscCst||Sr)rr rr r r __iter__6szSortedDict.__iter__csLt|trt|jd}||D]}||||<q|Stt||}|S)z0Override to support the "get_slice" for python3 r) isinstanceslicerrr super __getitem__)r indexrr __class__r r r*9s  zSortedDict.__getitem__)rrrr r r%r* __classcell__r r r-r rs  r__main__)AWSActionamericaAucklandAmericaz8Wanted: Action, america, Auckland, AWS, [ignore case]zGot:  )endz%s,z [used: __iter__()]Fr&zDWanted: AWS, Action, America, Auckland, america, [case sensitive]z [used: keys()]N) __future__rrrobjectrrrrdsdprintr#r r r r r s&  *