grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛfßã@s®dZdddddgZiZddd„Zdd„ZzeWnek rDYnXd d „Zeeeeƒd d „Zd Z dd„Z dd„Z dd„Z dd„Z iZiZiZdd„Zdd„Zdd„ZdS)z¤Helper to provide extensibility for pickle. This is only useful to add pickle support for extension types defined in C, not for instances of user-defined classes. ÚpickleÚ constructorÚ add_extensionÚremove_extensionÚclear_extension_cacheNcCs,t|ƒstdƒ‚|t|<|dk r(t|ƒdS)Nz$reduction functions must be callable)ÚcallableÚ TypeErrorÚdispatch_tabler)Úob_typeÚpickle_functionÚconstructor_ob©r ú,/opt/alt/python38/lib64/python3.8/copyreg.pyr s cCst|ƒstdƒ‚dS)Nzconstructors must be callable)rr)Úobjectr r r rscCst|j|jffS©N)ÚcomplexÚrealÚimag)Úcr r r Úpickle_complex"srcCs<|tkrt |¡}n$| ||¡}|jtjkr8| ||¡|Sr)rÚ__new__Ú__init__)ÚclsÚbaseÚstateÚobjr r r Ú_reconstructor)s     ric Csü|dks t‚|j}|jD]}t|dƒr|jt@sq:qt}|tkrHd}n"||krbtd|j›d�ƒ‚||ƒ}|||f}z |j }Wn\t k rÚt |ddƒr²td|j›d|›�ƒd‚z |j }Wnt k rÔd}YnXYnX|ƒ}|rðt ||fSt |fSdS)NéÚ __flags__zcannot pickle z objectÚ __slots__zf object: a class that defines __slots__ without defining __getstate__ cannot be pickled with protocol )ÚAssertionErrorÚ __class__Ú__mro__ÚhasattrrÚ _HEAPTYPErrÚ__name__Ú __getstate__ÚAttributeErrorÚgetattrÚ__dict__r)ÚselfÚprotorrrÚargsÚgetstateÚdictr r r Ú _reduce_ex6s6     ý  r.cGs|j|f|žŽSr©r)rr+r r r Ú __newobj__Zsr0cCs|j|f|ž|ŽS)zUsed by pickle protocol 4, instead of __newobj__ to allow classes with keyword-only arguments to be pickled correctly. r/)rr+Úkwargsr r r Ú __newobj_ex__]sr2cCsØ|j d¡}|dk r|Sg}t|dƒs(n”|jD]Œ}d|jkr.|jd}t|tƒrV|f}|D]^}|dkrjqZqZ| d¡r®| d¡s®|j  d¡}|r¢|  d||f¡q¸|  |¡qZ|  |¡qZq.z ||_ Wn YnX|S)a›Return a list of slot names for a given class. This needs to find slots defined by the class and its bases, so we can't simply return the __slots__ attribute. We must walk down the Method Resolution Order and concatenate the __slots__ of each class found there. (This assumes classes don't modify their __slots__ attribute to misrepresent their slots after the class is defined.) Ú __slotnames__Nr)r(Ú __weakref__Ú__Ú_z_%s%s) r(Úgetr"r!Ú isinstanceÚstrÚ startswithÚendswithr$ÚlstripÚappendr3)rÚnamesrÚslotsÚnameÚstrippedr r r Ú _slotnamescs2         rBcCsšt|ƒ}d|krdks&ntdƒ‚||f}t |¡|krNt |¡|krNdS|tkrjtd|t|fƒ‚|tkr†td|t|fƒ‚|t|<|t|<dS)zRegister an extension code.éiÿÿÿzcode out of rangeNz)key %s is already registered with code %sz$code %s is already in use for key %s)ÚintÚ ValueErrorÚ_extension_registryr7Ú_inverted_registry©Úmoduler@ÚcodeÚkeyr r r r¥s$ ÿ ÿ ÿcCsR||f}t |¡|ks$t |¡|kr4td||fƒ‚t|=t|=|tkrNt|=dS)z0Unregister an extension code. For testing only.z%key %s is not registered with code %sN)rFr7rGrEÚ_extension_cacherHr r r r·s ÿÿcCs t ¡dSr)rLÚclearr r r r rÃs)N)Ú__doc__Ú__all__rrrrÚ NameErrorrrr#r.r0r2rBrFrGrLrrrr r r r Ús4ÿ   $<