�
JDvc1� � �2 � d Z dZddlZddlmZ ddlmZ ddlmZ ddlZddlm Z ddl
mZ dd l
mZ dd
l
m
Z
ddl
mZ ddl
mZ dd
lmZ ddlmZ ddlmZ g Zi ZdZdZd� Z G d� de� � Z G d� de� � Z G d� de� � Z G d� dee� � Zd� Zd� Z ed� � � Z!d� Z"d� Z#d � Z$dBd"�Z%d#� Z& G d$� d%e� � Z' G d&� d'e� � Z(d(� Z)d)� Z*d*� Z+ G d+� d,e� � Z,e,Z- ej. � � Z/d-� Z,d.e,_0 d/� Z1d0� Z2d1� Z3e G d2� d3e
� � � � Z4 G d4� d5ee4� � Z5d6� Z6d7� Z7d8� Z8 G d9� d:e� � Z9d;� Z:d<� Z;ed=� � � Z<ed>� � � Z=e G d?� d@e� � � � Z>dCdA�Z? e� � Z@ e>� � ZAdS )Da� Implementation of interface declarations
There are three flavors of declarations:
- Declarations are used to simply name declared interfaces.
- ImplementsDeclarations are used to express the interfaces that a
class implements (that instances of the class provides).
Implements specifications support inheriting interfaces.
- ProvidesDeclarations are used to express interfaces directly
provided by objects.
�restructuredtext� N)�FunctionType)�
MethodType)�
ModuleType)�addClassAdvisor)� Interface)�InterfaceClass)�SpecificationBase)�
Specification)�NameAndModuleComparisonMixin)�CLASS_TYPES)�PYTHON3)�_use_c_implzIClass advice impossible in Python3. Use the @%s class decorator instead.z\The %s API is deprecated, and will not work in Python3 Use the @%s class decorator instead.c �l � | j }| j }|j }||� |� � dz }|S )N� )�__self_class__�
__thisclass__�__mro__�index)�ob�
self_class�class_that_invoked_super�complete_mro�
next_classs �=/usr/lib/python3/dist-packages/zope/interface/declarations.py�_next_super_classr = sA � � �"�J�!�/���%�L��l�0�0�1I�J�J�Q�N�O�J��� c � � e Zd Zd� Zd� ZdS )�namedc � � || _ d S �N)�name)�selfr" |