File: //lib/python3/dist-packages/zope/interface/__pycache__/declarations.cpython-312.pyc
�
$
x`1� � �� � 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$dAd!�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.� Z1d/� Z2d0� Z3e G d1� d2e
� � Z4 G d3� d4ee4� Z5d5� Z6d6� Z7d7� Z8 G d8� d9e� Z9d:� Z:d;� Z;ed<� � Z<ed=� � Z=e G d>� d?e� � Z>dBd@�Z? e� Z@ e>� ZAy)Ca� 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 �| � | j }| 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 = sG � � �"�"�J�!�/�/���%�%�L��l�0�0�1I�J�Q�N�O�J��� c � � e Zd Zd� Zd� Zy)�namedc � � || _ y �N)�name)�selfr"