U #IGZ@sddlmZmZmZddlZddlZddlZddlZejddkZ e dkZ e rddl m Z ddZdZd d ZGd d d e Zd dZnddZdZdd ZddZddZe sddZnddZddZeZdS))absolute_importdivisionprint_functionNZPyPy)IterableUserDictcCst|ttjfSN) isinstancetypetypesZ ClassTypeklassr /_compat.pyisclasssrr cCs|Sr) iteritemsdr r rrsrc@sTeZdZdZddZddZddZdd Zdd d Zd dZ dddZ ddZ d S) ReadOnlyDictz5 Best-effort read-only dict wrapper. cCs tddS)Nz6'mappingproxy' object does not support item assignment TypeError)selfkeyvalr r r __setitem__!szReadOnlyDict.__setitem__cCs tddS)Nz/'mappingproxy' object has no attribute 'update'AttributeErrorr_r r rupdate&szReadOnlyDict.updatecCs tddS)Nz4'mappingproxy' object does not support item deletionrrr r r __delitem__+szReadOnlyDict.__delitem__cCs tddS)Nz.'mappingproxy' object has no attribute 'clear'rrr r rclear0szReadOnlyDict.clearNcCs tddS)Nz,'mappingproxy' object has no attribute 'pop'rrrdefaultr r rpop5szReadOnlyDict.popcCs tddS)Nz0'mappingproxy' object has no attribute 'popitem'rr r r rpopitem:szReadOnlyDict.popitemcCs tddS)Nz3'mappingproxy' object has no attribute 'setdefault'rr"r r r setdefault?szReadOnlyDict.setdefaultcCsdt|jdS)Nz mappingproxy())reprdatar r r r__repr__DszReadOnlyDict.__repr__)N)N) __name__ __module__ __qualname____doc__rrrr!r$r%r&r*r r r rrs  rcCst}|j||Sr)rr)r)rresr r rmetadata_proxyHs r0cCs t|tSr)rr r r r rrNsclasscCs|Sr)itemsrr r rrSscCstt|Sr)r MappingProxyTypedictrr r rr0VscCs*zddl}|WStk r$YdSXdS)0 Moved into a function for testability. rN)ctypes ImportError)r6r r r import_ctypesZs r8cOstjdtdddS) We only warn on Python 3 because we are not aware of any concrete consequences of not setting the cell on Python 2. ziMissing ctypes. Some features like bare super() or accessing __class__ will not work with slots classes.r) stacklevelN)warningswarnRuntimeWarningargskwr r r just_warnfs rAcOsdS)r9Nr r>r r rrArscCsDtrdd}n2t}|dk r<|jj}|j|jf|_|j|_nt}|S)r5cSs||fdSr) __setstate__)Zcellvaluer r rset_closure_cell~sz/make_set_closure_cell..set_closure_cellN) PYPYr8Z pythonapiZ PyCell_SetZ py_objectZargtypesZc_intZrestyperA)rDr6r r rmake_set_closure_cellys  rF)Z __future__rrrplatformsysr r; version_infoZPY2Zpython_implementationrEUserDictrrZTYPErrr0r8rArFrDr r r rs.  ,