U
    ,W
                     @   s   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
 dd ZG d	d
 d
eZeeG dd deZedZzddlmZ W n ek
r   Y nX edd  [eZdd Zde
fddZdde
fddZdddZdddZdS )zGlobal components support
    )implementer)AdapterRegistry)
Components)IComponentLookup)_BLANKc                 C   s
   t | |S N)getattr)Z
componentsZregistryName r	   ?/usr/lib/python3/dist-packages/zope/component/globalregistry.pyGAR   s    r   c                       s(   e Zd ZdZ fddZdd Z  ZS )GlobalAdapterRegistryz~A global adapter registry

    This adapter registry's main purpose is to be picklable in combination
    with a site manager.c                    s   || _ || _tt|   d S r   )
__parent____name__superr   __init__)selfparentname	__class__r	   r
   r       s    zGlobalAdapterRegistry.__init__c                 C   s   t | j| jffS r   )r   r   r   r   r	   r	   r
   
__reduce__%   s    z GlobalAdapterRegistry.__reduce__)r   
__module____qualname____doc__r   r   __classcell__r	   r	   r   r
   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )BaseGlobalComponentsc                 C   s   t | d| _t | d| _d S )Nadapters	utilities)r   r   r   r   r	   r	   r
   _init_registries+   s    z%BaseGlobalComponents._init_registriesc                 C   s   | j S r   )r   r   r	   r	   r
   r   /   s    zBaseGlobalComponents.__reduce__N)r   r   r   r   r   r	   r	   r	   r
   r   (   s   r   base)
addCleanUpc                   C   s
   t dS )Nr    )r    r   r	   r	   r	   r
   <lambda>:       r"   c                   C   s   t S r   )globalSiteManagerr	   r	   r	   r
   getGlobalSiteManager>   s    r%   Nc                 C   s   t j| ||dd d S NF)Zevent)r    ZregisterUtility)Z	componentprovidesr   r	   r	   r
   provideUtilityE   s    r(   c                 C   s   t j| |||dd d S r&   )r    ZregisterAdapter)factoryadaptsr'   r   r	   r	   r
   provideAdapterH   s    r+   c                 C   s   t j| ||dd d S r&   )r    ZregisterSubscriptionAdapter)r)   r*   r'   r	   r	   r
   provideSubscriptionAdapterK   s    r,   c                 C   s   t j| |dd d S r&   )r    ZregisterHandler)r)   r*   r	   r	   r
   provideHandlerN   s    r-   )NN)N)r   Zzope.interfacer   Zzope.interface.adapterr   Zzope.interface.registryr   Zzope.component.interfacesr   Zzope.component._compatr   r   r   r   r    Zzope.testing.cleanupr!   ImportErrorr$   r%   r(   r+   r,   r-   r	   r	   r	   r
   <module>   s,   

