B ÆO±Úéú.4ã@s†ddlmZmZddlmZddlZddddgZGdd „d ejj ƒZ Gd d„dejj ƒZ Gd d„de ƒZ Gd d„de ƒZ ddd„ZdS)é)ÚPicklerÚ Unpickler)ÚBytesIONÚShelfÚ BsdDbShelfÚDbfilenameShelfÚopenc@s4eZdZdd„ZeZZZZZZ dd„Z dS)Ú _ClosedDictcGs tdƒ‚dS)Nz!invalid operation on closed shelf)Ú ValueError)ÚselfÚargs©r ú)/opt/alt/python37/lib/python3.7/shelve.pyÚclosedEsz_ClosedDict.closedcCsdS)Nzr )r r r rÚ__repr__Isz_ClosedDict.__repr__N) Ú__name__Ú __module__Ú __qualname__rÚ__iter__Ú__len__Ú __getitem__Ú __setitem__Ú __delitem__Úkeysrr r r rr Bsr c@sxeZdZddd„Zdd„Zdd „Zd d „Zdd d „Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS) rNFúutf-8cCs.||_|dkrd}||_||_i|_||_dS)Né)ÚdictÚ _protocolÚ writebackÚcacheÚ keyencoding)r rÚprotocolrr r r rÚ__init__TszShelf.__init__ccs&x |j ¡D]}| |j¡Vq WdS)N)rrÚdecoder )r Úkr r rr^szShelf.__iter__cCs t|jƒS)N)Úlenr)r r r rrbsz Shelf.__len__cCs| |j¡|jkS)N)Úencoder r)r Úkeyr r rÚ __contains__eszShelf.__contains__cCs| |j¡|jkr||S|S)N)r&r r)r r'Údefaultr r rÚgethsz Shelf.getcCsZy|j|}WnFtk rTt|j| |j¡ƒ}t|ƒ ¡}|jrP||j|<YnX|S)N) rÚKeyErrorrrr&r rÚloadr)r r'ÚvalueÚfr r rrms zShelf.__getitem__cCsF|jr||j|<tƒ}t||jƒ}| |¡| ¡|j| |j ¡<dS)N) rrrrrÚdumpÚgetvaluerr&r )r r'r-r.Úpr r rrws    zShelf.__setitem__cCs6|j| |j¡=y |j|=Wntk r0YnXdS)N)rr&r rr+)r r'r r rrs  zShelf.__delitem__cCs|S)Nr )r r r rÚ __enter__†szShelf.__enter__cCs | ¡dS)N)Úclose)r Útyper-Ú tracebackr r rÚ__exit__‰szShelf.__exit__c Csf|jdkrdSz0| ¡y|j ¡Wntk r:YnXWdy tƒ|_Wnd|_YnXXdS)N)rÚsyncr3ÚAttributeErrorr )r r r rr3Œs   z Shelf.closecCst|dƒsdS| ¡dS)Nr)Úhasattrr3)r r r rÚ__del__s z Shelf.__del__cCsX|jr>|jr>d|_x|j ¡D]\}}|||<qWd|_i|_t|jdƒrT|j ¡dS)NFTr7)rrÚitemsr9rr7)r r'Úentryr r rr7¤s   z Shelf.sync)NFr)N)rrrr"rrr(r*rrrr2r6r3r:r7r r r rrMs   c@s>eZdZddd„Zdd„Zdd „Zd d „Zd d „Zdd„ZdS)rNFúutf-8cCst |||||¡dS)N)rr")r rr!rr r r rr"¼szBsdDbShelf.__init__cCs0|j |¡\}}t|ƒ}| |j¡t|ƒ ¡fS)N)rÚ set_locationrr#r rr,)r r'r-r.r r rr>ÀszBsdDbShelf.set_locationcCs.t|jƒ\}}t|ƒ}| |j¡t|ƒ ¡fS)N)Únextrrr#r rr,)r r'r-r.r r rr?ÅszBsdDbShelf.nextcCs.|j ¡\}}t|ƒ}| |j¡t|ƒ ¡fS)N)rÚpreviousrr#r rr,)r r'r-r.r r rr@ÊszBsdDbShelf.previouscCs.|j ¡\}}t|ƒ}| |j¡t|ƒ ¡fS)N)rÚfirstrr#r rr,)r r'r-r.r r rrAÏszBsdDbShelf.firstcCs.|j ¡\}}t|ƒ}| |j¡t|ƒ ¡fS)N)rÚlastrr#r rr,)r r'r-r.r r rrBÔszBsdDbShelf.last)NFr=) rrrr"r>r?r@rArBr r r rr¯s  c@seZdZddd„ZdS)rÚcNFcCs$ddl}t || ||¡||¡dS)Nr)Údbmrr"r)r ÚfilenameÚflagr!rrDr r rr"ászDbfilenameShelf.__init__)rCNF)rrrr"r r r rrÚsrCFcCst||||ƒS)N)r)rErFr!rr r rræs )rCNF)ÚpicklerrÚiorZcollections.abcÚ collectionsÚ__all__ÚabcÚMutableMappingr rrrrr r r rÚ;s   b+