�
JDvc� � �v � d Z ddlmZ ddlmZ dZn
# e$ r dZY nw xY wg d�ZddlZd� Zdd
�Z d� Z
dd�Zd
� ZdS )aj Class advice.
This module was adapted from 'protocols.advice', part of the Python
Enterprise Application Kit (PEAK). Please notify the PEAK authors
(pje@telecommunity.com and tsarna@sarna.org) if bugs are found or
Zope-specific changes are required, so that the PEAK version of this module
can be kept in sync.
PEAK is a Python application framework that interoperates with (but does
not require) Zope 3 and Twisted. It provides tools for manipulating UML
models, object-relational persistence, aspect-oriented programming, and more.
Visit the PEAK home page at http://peak.telecommunity.com for more information.
� )�FunctionType�� ClassTypeFT)�addClassAdvisor�determineMetaclass�getFrameInfo�isClassAdvisor�minimalBasesNc � � | j }| j }||u }d|v }d|v }|o|}|o|d |d k }|r%t j � |d � � pd}|o|j |u }|sd} n|r|sd} n|r|sd} n|sd} nd} | |||fS ) z�Return (kind,module,locals,globals) for a frame
'kind' is one of "exec", "module", "class", "function call", or "unknown".
�
__module__�__name__N�exec�module�classz
function call�unknown)�f_locals� f_globals�sys�modules�get�__dict__)
�framer r �
sameNamespace� hasModule�hasName�sameNamer �namespaceIsModule�kinds
�7/usr/lib/python3/dist-packages/zope/interface/advice.pyr r . s� � � �~�H���I�� �)�M���(�I��I�%�G��$�W�H��I�I�j�1�8�L�3I�I�H�
�
?������:�)>�?�?�
G�4�F��?�6�?�i�#?��� ���� � �y� ���� � �-� ����
� ���� �����9�,�,� � c �b � �� � t rt d� � �t j |� � }t |� � \ }}}}|� d� � � t r|� dt � � �n|� dt � � �� �� fd�}� |_ � |_ ||d< |