File: //usr/lib/python3/dist-packages/twisted/python/__pycache__/components.cpython-38.pyc
U
W[�7 � @ s
d Z ddlmZmZmZ ddlmZmZ ddlm Z ddl
mZ ddlm
Z
ddlmZ e � Zdadd � Zd
d� Zdd
� Zdd� Zee� dd� ZeZeG dd� d��ZeG dd� d��ZG dd� de�Zd dd�ZG dd� de�ZG dd� de�Zd ddddddgZ dS )!a�
Component architecture for Twisted, based on Zope3 components.
Using the Zope3 API directly is strongly recommended. Everything
you need is in the top-level of the zope.interface package, e.g.::
from zope.interface import Interface, implementer
class IFoo(Interface):
pass
@implementer(IFoo)
class Foo:
print(IFoo.implementedBy(Foo)) # True
print(IFoo.providedBy(Foo())) # True
L{twisted.python.components.registerAdapter} from this module may be used to
add to Twisted's global adapter registry.
L{twisted.python.components.proxyForInterface} is a factory for classes
which allow access to only the parts of another class defined by a specified
interface.
� )�division�absolute_import�print_function)� interface�declarations)�AdapterRegistry)�NativeStringIO)�reflect)� _oldStylec G sx t }|std��t|tj�s&t�|�}|D ],}|�|g|�}|dk r*ts*t d|f ��q*|D ]}|�
|g|d| � q\dS )a
Register an adapter class.
An adapter class is expected to implement the given interface, by
adapting instances implementing 'origInterface'. An adapter class's
__init__ method should accept one parameter, an instance implementing
'origInterface'.
zYou need to pass an InterfaceNz'an adapter (%s) was already registered.� )�globalRegistry�AssertionError�
isinstancer �InterfaceClassr �
implementedByZ
registered�ALLOW_DUPLICATES�
ValueError�register)ZadapterFactoryZ
origInterfaceZinterfaceClasses�self�interfaceClass�factory� r �;/usr/lib/python3/dist-packages/twisted/python/components.py�registerAdapter2 s
r c C s6 t }t| tj�st�| �} |�| |�}|dkr2|}|S )z�Return registered adapter for a given class and interface.
Note that is tied to the *Twisted* global registry, and will
thus not find adapters registered elsewhere.
N)r r r r r r �lookup1)Z
fromInterfaceZtoInterface�defaultr r r r r �getAdapterFactoryJ s
r c s"