o
    ,ò¿W6  ã                   @   sf   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 G dd„ deeƒZG d	d
„ d
e
ƒZdS )zPersistent component managers
é    )Ú
Persistent)ÚPersistentMapping)ÚPersistentList)ÚVerifyingAdapterRegistry)Ú
Componentsc                       s4   e Zd Z‡ fdd„Z‡ fdd„Z‡ fdd„Z‡  ZS )ÚPersistentAdapterRegistryc                    s"   || u rd| _ tt| ƒ |¡ d S )NT)Ú
_p_changedÚsuperr   Úchanged)ÚselfÚoriginally_changed©Ú	__class__© úC/usr/lib/python3/dist-packages/zope/component/persistentregistry.pyr
      s   z!PersistentAdapterRegistry.changedc                    s:   t t| ƒ ¡  ¡ }| jD ]}| |d¡ q| dd ¡ |S )Nr   Úro)r	   r   Ú__getstate__ÚcopyÚ
_delegatedÚpop)r   ÚstateÚnamer   r   r   r      s
   
z&PersistentAdapterRegistry.__getstate__c                    s:   |  dd¡}tt| ƒ |¡ |  ¡  || _| j | ¡ d S )NÚ	__bases__r   )r   r	   r   Ú__setstate__Ú_createLookupr   Ú	_v_lookupr
   )r   r   Úbasesr   r   r   r   $   s
   z&PersistentAdapterRegistry.__setstate__)Ú__name__Ú
__module__Ú__qualname__r
   r   r   Ú__classcell__r   r   r   r   r      s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚPersistentComponentsc                 C   s   t ƒ | _t ƒ | _d S ©N)r   ÚadaptersÚ	utilities©r   r   r   r   Ú_init_registries.   s   z%PersistentComponents._init_registriesc                 C   s$   t ƒ | _t ƒ | _tƒ | _tƒ | _d S r"   )r   Ú_utility_registrationsÚ_adapter_registrationsr   Ú_subscription_registrationsÚ_handler_registrationsr%   r   r   r   Ú_init_registrations2   s   z(PersistentComponents._init_registrationsN)r   r   r   r&   r+   r   r   r   r   r!   ,   s    r!   N)Ú__doc__Ú
persistentr   Úpersistent.mappingr   Úpersistent.listr   Úzope.interface.adapterr   Úzope.interface.registryr   r   r!   r   r   r   r   Ú<module>   s   