3
,W @ s d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl m
Z
ddlmZ dd
dZ
dd
ZdddZdddZdddZd ddZdd Zdd Zdd ZdS )!zInterface utility functions
)alsoProvides)
IInterface)getGlobalSiteManager)ComponentLookupError)queryUtility)CLASS_TYPESN c C s| | sd|j |jf } tj|s6t|ts2t| ddS |dk r^|jtsRt|dt|| nt}t }|j
||| | dS )z@ Mark 'interface' as a named utilty providing 'iface_type'.
z%s.%szis not an interface or classNzis not an interface type)
__module____name__r
providedBy
isinstancer TypeErrorZextendsr r ZregisterUtility)id interfaceZ
iface_typeinfogsm r /usr/lib/python3.6/interface.pyprovideInterface s
r c C s t |d}|dkrt||S )z3Return interface or raise ComponentLookupError
N)queryInterfacer )contextr ifacer r r getInterface. s
r c C s t t| |S )z$Return an interface or ``None``
)r r )r defaultr r r r 7 s r c C s dd t | ||D S )zInterfaces search
c S s g | ]}|d qS ) r ).0
iface_utilr r r