o
    ,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yM   Y nw 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)
components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>:   s   
 r$   c                   C   s   t S r   )globalSiteManagerr   r   r   r   getGlobalSiteManager>   s   r&   Nc                 C      t j| ||dd d S NF)event)r"   registerUtility)	componentprovidesr   r   r   r   provideUtilityE      r-   c                 C   s   t j| |||dd d S r(   )r"   registerAdapter)factoryadaptsr,   r   r   r   r   provideAdapterH   s   r2   c                 C   r'   r(   )r"   registerSubscriptionAdapter)r0   r1   r,   r   r   r   provideSubscriptionAdapterK   r.   r4   c                 C   s   t j| |dd d S r(   )r"   registerHandler)r0   r1   r   r   r   provideHandlerN   s   r6   )NNr   )r   zope.interfacer   zope.interface.adapterr   zope.interface.registryr   zope.component.interfacesr   zope.component._compatr   r   r   r   r"   zope.testing.cleanupr#   ImportErrorr%   r&   r-   r2   r4   r6   r   r   r   r   <module>   s0   

