HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/zope/interface/__pycache__/adapter.cpython-39.pyc
a

��_�^�@s:dZddlZddlmZddlmZddlmZddlmZddlmZddl	m
Z
dd	l	mZdd
l	mZddgZ
Gd
d�de�Ze�ZeGdd�de��ZeGdd�de��ZGdd�de�ZGdd�dee�Zee�Gdd�de��ZGdd�dee�Zee�Gdd�de��Zdd�Zdd�Zdd �Zd!d"�ZdS)#zAdapter management
�N)�implementer��
providedBy��	Interface)�ro)�IAdapterRegistry)�_normalize_name)�STRING_TYPES)�_use_c_impl�AdapterRegistry�VerifyingAdapterRegistryc@s~eZdZdZdZddd�Zdd�Zedd	�d
d	��Zdd�Z	d
d�Z
dd�Zddd�Zddd�Z
dd�Zd dd�Zdd�ZdS)!�BaseAdapterRegistry)	�lookup�queryMultiAdapter�lookup1�queryAdapter�adapter_hook�	lookupAll�names�
subscriptions�subscribersr�cCs$g|_g|_i|_|��||_dS�N)�	_adapters�_subscribers�	_provided�
_createLookup�	__bases__��self�basesrr�8/usr/lib/python3/dist-packages/zope/interface/adapter.py�__init__=s
zBaseAdapterRegistry.__init__cCs$||jd<t�|�|_|�|�dS�Nr)�__dict__r�changedrrrr"�	_setBasesls
zBaseAdapterRegistry._setBasescCs
|jdSr$)r%�r rrr"�<lambda>q�zBaseAdapterRegistry.<lambda>cCs
|�|�Sr)r'rrrr"r)rr*cCs.|�|�|_|jD]}t|j|�|j|<qdSr)�LookupClass�	_v_lookup�
_delegated�getattrr%)r �namerrr"rus
z!BaseAdapterRegistry._createLookupcCs|jd7_|j�|�dS�N�)�_generationr,r&�r �originally_changedrrr"r&zszBaseAdapterRegistry.changedcCst|t�std��|dur.|�||||�dStdd�|D��}t|�}t|�}|j}t|�|krn|�i�qV||}||f}|D]&}	|�	|	�}
|
dur�i}
|
||	<|
}q�|�	|�|ur�dS|||<|j
�	|d�d}||j
|<|dkr�|j�|�|�
|�dS)N�name is not a stringcSsg|]}t|��qSr��_convert_None_to_Interface��.0�rrrr"�
<listcomp>�r*z0BaseAdapterRegistry.register.<locals>.<listcomp>rr1)�
isinstancer
�
ValueError�
unregister�tupler	�lenr�append�getrr,�add_extendorr&)r �required�providedr/�value�order�byorder�
components�key�k�d�nrrr"�register~s6



zBaseAdapterRegistry.register�c
Csztdd�|D��}t|�}t|�}|j}t|�|kr8dS||}||f}|D] }|�|�}	|	durjdS|	}qN|�|�S)NcSsg|]}t|��qSrr6r8rrr"r;�r*z2BaseAdapterRegistry.registered.<locals>.<listcomp>)r?r	r@rrB)
r rDrEr/rGrHrIrJrKrLrrr"�
registered�s

zBaseAdapterRegistry.registeredNcCs2tdd�|D��}t|�}|j}|t|�kr0dS||}||f}g}	|D].}
|�|
�}|durfdS|	�||
f�|}qJ|�|�}|dur�dS|dur�||ur�dS||=|s�t|	�D] \}
}
|
|
}|r�q�q�|
|
=q�|r�|ds�|d=q�|j|d}|dk�r|j|=|j�|�n
||j|<|�	|�dS)NcSsg|]}t|��qSrr6r8rrr"r;�r*z2BaseAdapterRegistry.unregister.<locals>.<listcomp>F���r1r)
r?r@rrBrA�reversedrr,�remove_extendorr&)r rDrEr/rFrGrHrIrJ�lookupsrKrL�old�comprMrrr"r>�sD




zBaseAdapterRegistry.unregistercCs�tdd�|D��}d}t|�}|j}t|�|kr<|�i�q$||}||f}|D]&}	|�|	�}
|
durti}
|
||	<|
}qR|�|d�|f||<|dur�|j�|d�d}||j|<|dkr�|j�|�|�|�dS)NcSsg|]}t|��qSrr6r8rrr"r;�r*z1BaseAdapterRegistry.subscribe.<locals>.<listcomp>rOrrr1)	r?r@rrArBrr,rCr&)r rDrErFr/rGrHrIrJrKrLrMrrr"�	subscribe�s*


zBaseAdapterRegistry.subscribecsbtdd�|D��}t|�}|j}|t|�kr0dS||}||f}g}|D].}	|�|	�}
|
durfdS|�||	f�|
}qJ|�d�}|s�dS�dur�d}nt�fdd�|D��}||kr�dS|r�||d<nH|d=t|�D] \}
}	|
|	}
|
r�q�q�|
|	=q�|�r|d�s|d=q�|du�rT|j|t|�t|�}|dk�rT|j|=|j�|�|�	|�dS)NcSsg|]}t|��qSrr6r8rrr"r;r*z3BaseAdapterRegistry.unsubscribe.<locals>.<listcomp>rOrcsg|]}|�kr|�qSrr)r9�v�rFrr"r;r*rQr)
r?r@rrBrArRrr,rSr&)r rDrErFrGrHrIrJrTrKrLrU�newrVrMrrYr"�unsubscribe�sL





zBaseAdapterRegistry.unsubscribecCsGdd�d�}|S)Nc@seZdZiZdS)z2BaseAdapterRegistry.get.<locals>.XXXTwistedFakeOutN)�__name__�
__module__�__qualname__ZselfImpliedrrrr"�XXXTwistedFakeOut<sr_r)r �_r_rrr"rB;szBaseAdapterRegistry.get)r)rO)N)N)r\r]r^r-r2r#r'�propertyrrr&rNrPr>rWr[rBrrrr"r2s
/�#

0
<rcsfeZdZdd�Zddd�Zdd�Zdd	d
�Zddd�Zdd
d�Zd�fdd�	Z	dd�Z
dd�Z�ZS)�
LookupBasecCsi|_i|_i|_dSr)�_cache�_mcache�_scacher(rrr"r#FszLookupBase.__init__NcCs"|j��|j��|j��dSr)rc�clearrdre)r �ignoredrrr"r&Ks

zLookupBase.changedcCsL|j�|�}|dur"i}||j|<|rH|�|�}|durDi}|||<|}|Sr)rcrB)r rEr/�cache�crrr"�	_getcachePs

zLookupBase._getcacherOcCs�t|t�std��|�||�}t|�}t|�dkrD|�|dt�}n|�t|�t�}|tur�|�|||�}t|�dkr�|||d<n||t|�<|dur�|S|S)Nr5r1r)	r<r
r=rjr?r@rB�_not_in_mapping�_uncached_lookup�r rDrEr/�defaultrh�resultrrr"r]s
zLookupBase.lookupcCsTt|t�std��|�||�}|�|t�}|turD|�|f|||�S|durP|S|S�Nr5)r<r
r=rjrBrkrrmrrr"rss
zLookupBase.lookup1cCs|�||||�Sr)r)r �objectrEr/rnrrr"r�szLookupBase.queryAdapterc	szt|t�std��t|�}|�||�}|�|t�}|turJ|�|f||�}|durvt|t�rb|j	}||�}|durv|S|Srp)
r<r
r=rrjrBrkr�super�__self__)	r rErqr/rnrDrh�factoryro��	__class__rr"r�s

zLookupBase.adapter_hookcCsV|j�|�}|dur"i}||j|<t|�}|�|t�}|turR|�||�}|||<|Sr)rdrBr?rk�_uncached_lookupAll�r rDrErhrorrr"r�s
zLookupBase.lookupAllcCsV|j�|�}|dur"i}||j|<t|�}|�|t�}|turR|�||�}|||<|Sr)rerBr?rk�_uncached_subscriptionsrxrrr"r�s
zLookupBase.subscriptions)N)rON)rON)rON)rON)
r\r]r^r#r&rjrrrrrr�
__classcell__rrrur"rbCs



rbc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
VerifyingBasecCs4t�||�|jjdd�|_dd�|jD�|_dS)Nr1cSsg|]
}|j�qSr�r2r8rrr"r;�r*z)VerifyingBase.changed.<locals>.<listcomp>)�LookupBaseFallbackr&�	_registryr�
_verify_ro�_verify_generationsr3rrr"r&�szVerifyingBase.changedcCs$dd�|jD�|jkr |�d�dS)NcSsg|]
}|j�qSrr|r8rrr"r;�r*z)VerifyingBase._verify.<locals>.<listcomp>)rr�r&r(rrr"�_verify�s�zVerifyingBase._verifycCs|��t�|||�Sr)r�r}rj)r rEr/rrr"rj�szVerifyingBase._getcachecCs|��t�|||�Sr)r�r}r�r rDrErrr"r�szVerifyingBase.lookupAllcCs|��t�|||�Sr)r�r}rr�rrr"r�szVerifyingBase.subscriptionsN)r\r]r^r&r�rjrrrrrr"r{�s
r{cs�eZdZ�fdd�Zd�fdd�	Zdd�Zdd	�Zd
d�Zdd
�Zddd�Z	d�fdd�	Z
dd�Zdd�Zdd�Z
dd�Z�ZS)�AdapterLookupBasecs&||_i|_|��tt|���dSr)r~�	_required�init_extendorsrrr�r#)r �registryrurr"r#�szAdapterLookupBase.__init__NcsFtt|��d�|j��D]}|�}|dur|�|�q|j��dSr)rrr�r&r��keysr[rf)r rgr:rurr"r&�szAdapterLookupBase.changedcCs"i|_|jjD]}|�|�qdSr)�
_extendorsr~rrC)r �prrr"r��sz AdapterLookupBase.init_extendorscsP|j}�jD]>}|�|d�}�fdd�|D��g�fdd�|D�||<qdS)Nrcsg|]}��|�r|�qSr�ZisOrExtends�r9�e�rErr"r;r*z2AdapterLookupBase.add_extendor.<locals>.<listcomp>csg|]}��|�s|�qSrr�r�r�rr"r;r*�r�Z__iro__rB)r rEr��i�	extendorsrr�r"rC�s
���zAdapterLookupBase.add_extendorcs4|j}�jD]"}�fdd�|�|d�D�||<qdS)Ncsg|]}|�kr|�qSrrr�r�rr"r;s�z5AdapterLookupBase.remove_extendor.<locals>.<listcomp>rr�)r rEr�r�rr�r"rS	s
z!AdapterLookupBase.remove_extendorcGs6|j}|D]&}|��}||vr
|�|�d||<q
dSr0)r��weakrefrW)r rDZ_refsr:�refrrr"�
_subscribes
zAdapterLookupBase._subscriberOc
Cs~t|�}d}t|�}|jjD]R}|j}|t|�kr4q|jj�|�}|sHq||}	t|	|||d|�}|durqpq|j	|�|S�Nr)
r?r@r~rrr,r�rB�_lookupr�)
r rDrEr/rorGr�rHr�rIrrr"rls$�
z"AdapterLookupBase._uncached_lookupcsJ|�dd�|D�||�}|dur$|S|�fdd�|D��}|durF|S|S)NcSsg|]}t|��qSrr�r9�orrr"r;0r*z7AdapterLookupBase.queryMultiAdapter.<locals>.<listcomp>cs g|]}t|t�r|jn|�qSr)r<rrrsr�rurr"r;4r*)r)r �objectsrEr/rnrtrorurr"r/sz#AdapterLookupBase.queryMultiAdapterc	Cs~t|�}t|�}i}t|jj�D]F}|j}|t|�kr8q |jj�|�}|sLq ||}t	||||d|�q |j
|�t|���Sr�)r?r@rRr~rrr,r�rB�
_lookupAllr��items)	r rDrErGror�rHr�rIrrr"rw:s
z%AdapterLookupBase._uncached_lookupAllcCsdd�|�||�D�S)NcSsg|]}|d�qS)rr)r9rirrr"r;Mr*z+AdapterLookupBase.names.<locals>.<listcomp>)rr�rrr"rLszAdapterLookupBase.namesc	Cs�t|�}t|�}g}t|jj�D]X}|j}|t|�kr8q |durH|f}n|jj�|�}|dur`q t	||||d|d|�q |j
|�|S)NrOr)r?r@rRr~rrr,r�rB�_subscriptionsr�)r rDrErGror�rHr�rrr"ryOs"�
z)AdapterLookupBase._uncached_subscriptionscCsb|�dd�|D�|�}|dur6d}|D]}||�q&n(g}|D]}||�}|dur>|�|�q>|S)NcSsg|]}t|��qSrrr�rrr"r;gr*z1AdapterLookupBase.subscribers.<locals>.<listcomp>r)rrA)r r�rErroZsubscriptionZ
subscriberrrr"rfszAdapterLookupBase.subscribers)N)rO)rON)r\r]r^r#r&r�rCrSr�rlrrwrryrrzrrrur"r��s
r�c@seZdZdS)�
AdapterLookupN�r\r]r^rrrr"r�tsr�csJeZdZeZd�fdd�	Zdd�Zdd�Z�fdd	�Z�fd
d�Z	�Z
S)
rrcst��|_tt|��|�dSr)r��WeakKeyDictionary�_v_subregistriesrrrr#rrurr"r#|s
zAdapterRegistry.__init__cCsd|j|<dSr0�r��r r:rrr"�_addSubregistry�szAdapterRegistry._addSubregistrycCs||jvr|j|=dSrr�r�rrr"�_removeSubregistry�s
z"AdapterRegistry._removeSubregistrycsZ|j�dd�}|D]}||vr|�|�q|D]}||vr.|�|�q.tt|��|�dS)Nrr)r%rBr�r�rrrr')r r!rUr:rurr"r'�szAdapterRegistry._setBasescs.tt|��|�|j��D]}|�|�qdSr)rrrr&r�r�)r r4�subrurr"r&�szAdapterRegistry.changed)r)r\r]r^r�r+r#r�r�r'r&rzrrrur"rwsc@seZdZdS)�VerifyingAdapterLookupNr�rrrr"r��sr�c@seZdZeZdS)r
N)r\r]r^r�r+rrrr"r
�scCs|durtS|SdSrr)�xrrr"r7�sr7cCs�|j}||krR||jD]6}||�}|rt|||||d|�}	|	dur|	Sqn0|D]*}
||
�}|rV|�|�}	|	durV|	SqVdSr0)rB�__sro__r�)rI�specsrEr/r��l�components_get�spec�compsr:�ifacerrr"r��s

r�c
Csn|j}||krFt||j�D]&}||�}|rt|||||d|�qn$t|�D]}	||	�}|rN|�|�qNdSr0)rBrRr�r��update)
rIr�rEror�r�r�r�r�r�rrr"r��sr�c	Cs~|j}||krHt||j�D](}||�}	|	rt|	|||||d|�qn2t|�D](}
||
�}	|	rP|	�|�}	|	rP|�|	�qPdSr0)rBrRr�r��extend)rIr�rEr/ror�r�r�r�r�r�rrr"r��s
r�)�__doc__r�Zzope.interfacerrrrZzope.interface.interfacesrZzope.interface._compatr	r
r�__all__rqrrkrbr}r{r�r�rr�r
r7r�r�r�rrrr"�<module>s@�o$$