Plan 9 from Bell Labs’s /usr/web/sources/contrib/stallion/root/sys/lib/python2.7/copy_reg.pyo

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


�`^c@s�dZddlmZdddddgZiZdd�Zd	�Zye	Wne
k
ranXd
�Zee	ee	�d�ZdZ
d�Zd�Zd�ZiZiZiZd�Zd�Zd�ZdS(s�Helper to provide extensibility for pickle/cPickle.

This is only useful to add pickle support for extension types defined in
C, not for instances of user-defined classes.
i�(t	ClassTypetpickletconstructort
add_extensiontremove_extensiontclear_extension_cachecCsft|�tkr!td��nt|d�s?td��n|t|<|dk	rbt|�ndS(Ns-copy_reg is not intended for use with classest__call__s$reduction functions must be callable(ttypet
_ClassTypet	TypeErrorthasattrtdispatch_tabletNoneR(tob_typetpickle_functiontconstructor_ob((s/sys/lib/python2.7/copy_reg.pyRs
cCs"t|d�std��ndS(NRsconstructors must be callable(R
R	(tobject((s/sys/lib/python2.7/copy_reg.pyRscCst|j|jffS(N(tcomplextrealtimag(tc((s/sys/lib/python2.7/copy_reg.pytpickle_complex'scCsY|tkrtj|�}n7|j||�}|jtjkrU|j||�n|S(N(Rt__new__t__init__(tclstbasetstatetobj((s/sys/lib/python2.7/copy_reg.pyt_reconstructor.sii	cCs&x;|jjD]'}t|d�r
|jt@r
Pq
q
Wt}|tkrSd}n.||jkrutd|j�n||�}|j||f}y
|j	}WnYt
k
r�t|dd�r�td��ny
|j}Wqt
k
r�d}qXn
X|�}|rt
||fSt
|fSdS(Nt	__flags__scan't pickle %s objectst	__slots__sNa class that defines __slots__ without defining __getstate__ cannot be pickled(t	__class__t__mro__R
Rt	_HEAPTYPERRR	t__name__t__getstate__tAttributeErrortgetattrt__dict__R(tselftprotoRRtargstgetstatetdict((s/sys/lib/python2.7/copy_reg.pyt
_reduce_ex;s.	



	
cGs|j||�S(N(R(RR)((s/sys/lib/python2.7/copy_reg.pyt
__newobj__\scCs|jjd�}|dk	r"|Sg}t|d�s:n�x�|jD]�}d|jkrD|jd}t|t�r�|f}nxl|D]a}|dkr�q�q�|jd�r�|jd�r�|j	d|j
|f�q�|j	|�q�WqDqDWy
||_WnnX|S(	s�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.)
    t
__slotnames__RR&t__weakref__t__s_%s%sN(s__dict__s__weakref__(R&tgetRR
R t
isinstancet
basestringt
startswithtendswithtappendR"R.(RtnamesRtslotstname((s/sys/lib/python2.7/copy_reg.pyt
_slotnames_s,


cCs�t|�}d|ko#dkns4td�n||f}tj|�|krntj|�|krndS|tkr�td|t|f��n|tkr�td|t|f��n|t|<|t|<dS(sRegister an extension code.ii�scode out of rangeNs)key %s is already registered with code %ss$code %s is already in use for key %s(tintt
ValueErrort_extension_registryR1t_inverted_registry(tmoduleR9tcodetkey((s/sys/lib/python2.7/copy_reg.pyR�s
cCsw||f}tj|�|ks6tj|�|krOtd||f��nt|=t|=|tkrst|=ndS(s0Unregister an extension code.  For testing only.s%key %s is not registered with code %sN(R=R1R>R<t_extension_cache(R?R9R@RA((s/sys/lib/python2.7/copy_reg.pyR�scCstj�dS(N(RBtclear(((s/sys/lib/python2.7/copy_reg.pyR�sNi(t__doc__ttypesRRt__all__RRRRRt	NameErrorRRR!R,R-R:R=R>RBRRR(((s/sys/lib/python2.7/copy_reg.pyt<module>s.
	
				!		8		

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].