3 6��X�� @s�ddlmZyddlmZWn ek r<ddlmZYnXe�ZGdd�de�ZGdd�de �Z dd �e j D�e _ Gd d �d e �Z d d �e j D�e _ d S)�)�RLock)� DictMixin)�Mappingc@s<eZdZdZdZdd�Zdd�Zdd�Zd d �Zd d �Z dS) �LazyDictz"Dictionary populated on first use.Nc CsB|jdkr4tj�z|jdkr&|j�Wdtj�X|j|j�S)N)�data� _fill_lock�acquire�_fill�release�upper)�self�key�r�/usr/lib/python3.6/lazy.py� __getitem__s    zLazyDict.__getitem__c Cs>|jdkr4tj�z|jdkr&|j�Wdtj�X||jkS)N)rrrr r )r r rrr� __contains__s    zLazyDict.__contains__c Cs>|jdkr4tj�z|jdkr&|j�Wdtj�Xt|j�S)N)rrrr r �iter)r rrr�__iter__$s    zLazyDict.__iter__c Cs>|jdkr4tj�z|jdkr&|j�Wdtj�Xt|j�S)N)rrrr r �len)r rrr�__len__.s    zLazyDict.__len__c Cs>|jdkr4tj�z|jdkr&|j�Wdtj�X|jj�S)N)rrrr r �keys)r rrrr8s    z LazyDict.keys) �__name__� __module__� __qualname__�__doc__rrrrrrrrrrr s    rc&@sjeZdZdZdddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'g&Zd+d)d*�Zd(S),�LazyListzList populated on first use.�__str__�__repr__� __unicode__�__hash__� __sizeof__�__cmp__�__lt__�__le__�__eq__�__ne__�__gt__�__ge__�append�count�index�extend�insert�pop�remove�reverse�sort�__add__�__radd__�__iadd__�__mul__�__rmul__�__imul__rr� __nonzero__r� __setitem__� __delitem__r� __reversed__Z __getslice__Z __setslice__Z __delslice__Ncs^�dkrt�SGdd�dt���g����fdd�}x�jD]}t�|||��q<W��}|S)Nc@s eZdZdS)z"LazyList.__new__.<locals>.LazyListN)rrrrrrrrWsrcs����fdd�}|S)Nc sdtj�z:t��dkr@tj|�j��x�jD]}t�|�q.WWdtj�Xt t��|f|�|�S)Nr) rrr�listr+r-�_props�delattrr �getattr)r �args�kw� method_name)r�cls� fill_iter�namerr�_lazy]s   z-LazyList.__new__.<locals>.lazy.<locals>._lazyr)rDrE)rrBrC)rDr�lazy\s zLazyList.__new__.<locals>.lazy)r;r<�setattr)rBrCrFrDZnew_listr)rrBrCr�__new__Ps zLazyList.__new__)N)rrrrr<rHrrrrrCs    rcCsg|]}tt|�r|�qSr)�hasattrr;)�.0�proprrr� <listcomp>rsrLc0@seZdZdZd5Zd6d3d4�Zd2S)7�LazySetzSet populated on first use.rrrrr r!r"r#r$r%r&r'rrr7rr8r9r�__sub__�__and__�__xor__�__or__�__rsub__�__rand__�__rxor__�__ror__�__isub__�__iand__�__ixor__�__ior__�add�clear�copy� difference�difference_update�discard� intersection�intersection_update� isdisjoint�issubset� issupersetr-r.�symmetric_difference�symmetric_difference_update�union�updateNcs^�dkrt�SGdd�dt���g����fdd�}x�jD]}t�|||��q<W��}|S)Nc@s eZdZdS)z LazySet.__new__.<locals>.LazySetN)rrrrrrrrM�srMcs����fdd�}|S)Nc srtj�zHt��dkrNx�j�D]}tj||�q Wx�jD]}t�|�q<WWdtj�Xt t��|f|�|�S)Nr) rrrr-�setrZr<r=r r>)r r?r@�irA)rMrBrCrDrrrE�s   z,LazySet.__new__.<locals>.lazy.<locals>._lazyr)rDrE)rMrBrC)rDrrF�s zLazySet.__new__.<locals>.lazy)rir<rG)rBrCrFrDZnew_setr)rMrBrCrrH�s zLazySet.__new__)0rrrrr r!r"r#r$r%r&r'rrr7rr8r9rrNrOrPrQrRrSrTrUrVrWrXrYrZr[r\r]r^r_r`rarbrcrdr-r.rerfrgrh)N)rrrrr<rHrrrrrMusrMcCsg|]}tt|�r|�qSr)rIri)rJrKrrrrL�sN)Z threadingr�UserDictr� ImportError� collectionsrrrr;rr<rirMrrrr�<module>s 6/3