+
    -i                         R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt RR.t]3tRR ltR tRR ltRR lt]P                   ]n         RtR tR# )z!Verify interface implementations
N)FunctionType)
MethodType)BrokenImplementation)BrokenMethodImplementation)DoesNotImplement)Invalid)MultipleInvalid)Method)fromFunction)
fromMethodverifyObjectverifyClassc                   VR8X  d   V P                   pMV P                  p. pV'       g)   V! V4      '       g   VP                  \        W4      4       V P	                  RR7       F  w  rg \        WWqV4       K  	  V'       d&   \        V4      ^8X  d
   V^ ,          h\        WV4      hR#   \         d   pTP                  T4        Rp?Kh  Rp?ii ; i)aH  
Verify that *candidate* might correctly provide *iface*.

This involves:

- Making sure the candidate claims that it provides the
  interface using ``iface.providedBy`` (unless *tentative* is `True`, in
  which case this step is skipped). This means that the candidate's class
  declares that it `implements <zope.interface.implementer>` the
  interface, or the candidate itself declares that it `provides
  <zope.interface.provider>`
  the interface

- Making sure the candidate defines all the necessary methods

- Making sure the methods have the correct signature (to the
  extent possible)

- Making sure the candidate defines all the necessary attributes

:return bool: Returns a true value if everything that could be
   checked passed.
:raises zope.interface.Invalid: If any of the previous
   conditions does not hold.

.. versionchanged:: 5.0
    If multiple methods or attributes are invalid, all such errors
    are collected and reported. Previously, only the first error was
    reported.  As a special case, if only one such error is present, it is
    raised alone, like before.
cT)allN)	implementedBy
providedByappendr   namesAndDescriptions_verify_elementr   lenr   )	iface	candidate	tentativevtypetesterexcsnamedesces	   &&&&     7/usr/lib/python3/dist-packages/zope/interface/verify.py_verifyr!   )   s    B |$$!!DVI..$U6700T0:
	E%@ ; t9>q'Me55  	KKNN	s   +B++C6CCc                 T    \        W14      p\        T\        4      '       g   R# \
        P                  ! T4      '       g   \
        P                  ! T4      '       d   R# \        T\        4      '       d;   \        T\        4      '       d   TR 8X  d   \        YPT^R7      pM\        YPTR7      pM\        T\        4      '       d+   \        TP                  4      \        J d   \        YPT4      pMA\        T\        4      '       d
   TR 8X  d   R# \        T4      '       g   \!        TRTT T4      hR# \#        TP%                  4       TP%                  4       4      pT'       d   \!        Y'YPT4      hR#   \         d.    \        T\        4      '       g   TR 8X  d    R# \	        YT4      hi ; i)r   N)r   imlevel)r   zimplementation is not a method)getattrAttributeError
isinstancer	   r   inspectismethoddescriptor	isbuiltinr   typer
   MethodTypes__func__r   propertycallabler   	_incompatgetSignatureInfo)r   r   r   r   r   attrmethmesss   &&&&&   r    r   r   a   sg   
;y' dF##!!$''7+<+<T+B+B 	$%%i&&5C<
  $BD  $7D 	4%%T]]|+$t,	D(	#	#
 	 ~~,0  	 T**,d.C.C.EFD(T)LL M  ;4((esl  #5	::;s   E/ /(F'F'c                    \        WVRR7      # )z>
Verify that the *candidate* might correctly provide *iface*.
r   r   r!   r   r   r   s   &&&r    r   r      s     5Yc::    c                     \        WVR R7      # )or5   r6   r7   s   &&&r    r   r      s    5Yc::r8   z*implementation requires too many argumentsc                 T   \        VR ,          4      \        V R ,          4      8  d   \        # \        VR,          4      \        V R,          4      8  d   VR,          '       g   R# V R,          '       d   VR,          '       g   R# V R,          '       d   VR,          '       g   R# R# R# )required
positionalvarargsz-implementation doesn't allow enough argumentskwargsz0implementation doesn't support keyword argumentsz1implementation doesn't support variable argumentsN)r   _MSG_TOO_MANY)r<   implementeds   &&r    r/   r/      s    
 ;z"#c(:*>&?? 
[&	'#h|.D*E	E	"">+h"7"7A	;y#9#9B $:r8   )FN)F)__doc__r'   systypesr   r   zope.interface.exceptionsr   r   r   r   r   zope.interface.interfacer	   r
   r   __all__r+   r!   r   r   r   r@   r/    r8   r    <module>rI      sw     
   : @ 6 - 5 + 1 /  n5pKM\;;  <Cr8   