ó
    Ï›‘hÇ  ã                   ó@   • S r SSKJr  / SQrSSKrS rS rS	S jrS rg)
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)ÚdetermineMetaclassÚgetFrameInfoÚisClassAdvisorÚminimalBasesNc                 ó˜  • U R                   nU R                  nXL nSU;   nSU;   nU=(       a    UnU=(       a    US   US   :H  nU=(       a"    [        R                  R	                  US   5      =(       d    SnU=(       a    UR
                  UL nU(       d  Sn	O.U(       a
  U(       d  Sn	OU(       a
  U(       d  Sn	OU(       d  Sn	OSn	X—X4$ )	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
             ÚYC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\zope/interface/advice.pyr   r   )   sÀ   € ð �~‰~€HØ—‘€IàÐ)€MØ Ñ(€IØ˜IÑ%€Gà×$˜W€HØ×K˜I jÑ1°X¸lÑ5KÑK€Hà×?œŸ™Ÿ™¨°:Ñ)>Ó?×GÀ4€Fà×? 6§?¡?°iÐ#?Ðæà‰Þ	žyØ‰Þ	ž-Ø‰ÞØ‰ð
 ˆØ˜Ð,Ð,ó    c                 óH   • [        U [        5      =(       a    [        U S5      $ )z(True if 'ob' is a class advisor functionÚpreviousMetaclass)Ú
isinstancer   Úhasattr)Úobs    r   r   r   N   s   € ä�bœ,Ó'×L¬G°BÐ8KÓ,LÐLr   c           
      óþ   • U  Vs/ s H  n[        US[        U5      5      PM     nnUb  UR                  U5        [        U5      S:X  a  US   $ [	        U5      n[        U5      S:”  a  [        SU 5      eUS   $ s  snf )zEDetermine metaclass from 1+ bases and optional explicit __metaclass__Ú	__class__é   r   zIncompatible metatypes)ÚgetattrÚtypeÚappendÚlenr   Ú	TypeError)ÚbasesÚexplicit_mcÚbÚmetaÚ
candidatess        r   r   r   S   s‚   € ñ 7<Ó<²e°ŒG�A�{¤D¨£GÖ,±e€DÐ<àÑð 	�‰�KÔ ä
ˆ4ƒy�Aƒ~à�A‰wˆä˜dÓ#€Jä
ˆ:ƒ˜ÓäÐ0°%Ó8Ð8ð �a‰=Ðùò% =s   … A:c                 ó®   • / nU  HL  nU  H  n[        X25      (       d  M  X#Ld  M    M#     X!;   a  UR                  U5        UR                  U5        MN     U$ )z?Reduce a list of base classes to its ordered minimum equivalent)Ú
issubclassÚremover(   )Úclassesr/   ÚmÚns       r   r   r   k   sX   € à€JãˆÛˆAÜ˜!×Ó A¤JÚñ ð
 ‹Ø×!Ñ! !Ô$Ø×Ñ˜aÖ ñ ð Ðr   )N)	Ú__doc__Útypesr   Ú__all__r   r   r   r   r   © r   r   Ú<module>r:      s1   ðñõ ò€ó ò"-òJMô
ó0r   