+
    -iN                     B    R t ^ RIHt . ROt^ RItR tR tRR ltR tR# )	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.
)FunctionTypeNc                   V P                   pV P                  pWJ pRV9   pRV9   pT;'       d    TpT;'       d    VR,          VR,          8H  pT;'       d/    \        P                  P	                  VR,          4      ;'       g    RpT;'       d    VP
                  VJ pV'       g   Rp	M3V'       d   V'       g   Rp	M V'       d   V'       g   Rp	MV'       g   Rp	MRp	WW3# )	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.pygetFrameInfor   )   s     ~~HI)M(II%G$$WHKKIj1Xl5KKH??:)>?GG4F??6??i#?	y	-
 ,,    c                J    \        V \        4      ;'       d    \        V R4      # )z(True if 'ob' is a class advisor functionpreviousMetaclass)
isinstancer   hasattr)obs   &r   isClassAdvisorr   N   s    b,'LLGB8K,LLr   c           
        V  Uu. uF  p\        VR\        V4      4      NK  	  ppVe   VP                  V4       \        V4      ^8X  d
   V^ ,          # \	        V4      p\        V4      ^8  d   \        RV 4      hV^ ,          # u upi )zEDetermine metaclass from 1+ bases and optional explicit __metaclass__	__class__zIncompatible metatypes)getattrtypeappendlenminimalBases	TypeError)basesexplicit_mcbmeta
candidatess   &&   r   determineMetaclassr-   S   s     7<<eGA{DG,eD< 	K 
4yA~Awd#J
:0%88 a=% =s   Bc                    . pV  FO  pV  F  p\        W24      '       g   K  W#Jg   K   K%  	  W!9   d   VP                  V4       VP                  V4       KQ  	  V# )z?Reduce a list of base classes to its ordered minimum equivalent)
issubclassremover$   )classesr,   mns   &   r   r&   r&   k   sX    JA!AJ 
 !!!$a   r   )r-   r   r   r&   )N)	__doc__typesr   __all__r   r   r   r-   r&    r   r   <module>r8      s1     "-JM
0r   