ó
    Ï›‘h  ã                   óž   • S SK Jr   " S S5      r " S S5      r " S S5      r S SKJr  \R                  rg! \ a     " S	 S
5      r gf = f)é    )Ú_should_attempt_c_optimizationsc                   ó*   • \ rS rSrSrS rS rS rSrg)ÚOptimizationTestMixiné   zBMixin testing that C optimizations are used when appropriate.
    c                 ó   • [         e)zMReturn the implementation in use, without 'Py' or 'Fallback' suffix.
        ©ÚNotImplementedError©Úselfs    ÚaC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\zope/interface/tests/__init__.pyÚ_getTargetClassÚ%OptimizationTestMixin._getTargetClass   ó
   € ô "Ð!ó    c                 ó   • [         e)z3Return the fallback Python implementation.
        r   r
   s    r   Ú_getFallbackClassÚ'OptimizationTestMixin._getFallbackClass   s
   € ô "Ð!r   c                 ó¨   • U R                  5       nU R                  5       n[        5       (       a  U R                  X5        g U R	                  X5        g ©N)r   r   r   ÚassertIsNotÚassertIs)r   ÚusedÚfallbacks      r   Útest_optimizationsÚ(OptimizationTestMixin.test_optimizations   sA   € Ø×#Ñ#Ó%ˆØ×)Ñ)Ó+ˆä*×,Ñ,Ø×Ñ˜TÕ,à�M‰M˜$Õ)r   © N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Ú__static_attributes__r   r   r   r   r      s   † ñò"ò
"õ*r   r   c                   ó    • \ rS rSrS rS rSrg)ÚSubclassableMixiné   c                 ó   • [         e)zLReturn the implementation in use without 'Py' or 'Fallback' suffix.
        r   r
   s    r   r   Ú!SubclassableMixin._getTargetClass!   r   r   c                 ó:   • U R                  5       n " S SU5      ng )Nc                   ó   • \ rS rSrSrg)Ú4SubclassableMixin.test_can_subclass.<locals>.Derivedé)   r   N)r   r   r   r    r"   r   r   r   ÚDerivedr*   )   s   † Úr   r,   )r   )r   Úklassr,   s      r   Útest_can_subclassÚ#SubclassableMixin.test_can_subclass&   s   € Ø×$Ñ$Ó&ˆô	�eõ 	r   r   N)r   r   r   r    r   r.   r"   r   r   r   r$   r$      s   † ò"õ
r   r$   c                   ó@   • \ rS rSrSrS rS r\\\	\
4r\S 5       rSrg)ÚMissingSomeAttrsé-   zë
Helper for tests that raises a specific exception
for attributes that are missing. This is usually not
an AttributeError, and this object is used to test that
those errors are not improperly caught and treated like
an AttributeError.
c                 ó^   • Xl         [        R                  U S5      nUR                  U5        g )NÚ__dict__)Ú_MissingSomeAttrs__exc_kindÚobjectÚ__getattribute__Úupdate)r   Úexc_kindÚother_attrsÚds       r   Ú__init__ÚMissingSomeAttrs.__init__6   s%   € Ø"ŒÜ×#Ñ# D¨*Ó5ˆØ	�‰�Õr   c                 ój   • [         R                  U S5      n X!   $ ! [         a    US   " U5      ef = f)Nr4   r5   )r6   r7   ÚKeyError)r   Únamer;   s      r   r7   Ú!MissingSomeAttrs.__getattribute__;   s@   € ä×#Ñ# D¨*Ó5ˆð	9Ø‘7ˆNøÜó 	9ØÐ1Ò2°4Ó8Ð8ð	9ús   ˜ œ2c                 óÖ  • [        U[        5      (       d   eX4;  d   eU R                   HW  nU " U40 UD6nUR                  U5       nU" U5        SSS5        UR	                  WR
                  R                  S   U5        MY     U " [        40 UD6n U" U5        g! , (       d  f       NR= f! [         a%  nUR                  U[        U5      5         SnAgSnAf[         a     gf = f)a¸  
Loop through various exceptions, calling *test_func* inside a
``assertRaises`` block.

:param test_func: A callable of one argument, the instance of this
    class.
:param str expected_missing: The attribute that should fail with the
    exception.  This is used to ensure that we're testing the path we
    think we are.
:param other_attrs: Attributes that should be provided on the test
    object.  Must not contain *expected_missing*.
Nr   )
Ú
isinstanceÚstrÚEXCEPTION_CLASSESÚassertRaisesÚassertEqualÚ	exceptionÚargsÚAttributeErrorÚassertNotInÚ	Exception)	ÚclsÚunittestÚ	test_funcÚexpected_missingr:   ÚexcÚobÚexÚes	            r   Útest_raisesÚMissingSomeAttrs.test_raisesJ   sÛ   € ô Ð*¬C×0Ñ0Ð0Ð0ØÓ2Ð2Ð2Ø×(Ô(ˆCÙ�SÑ(˜KÑ(ˆBØ×&Ñ& sÔ+¨rÙ˜"”÷ ,ð × Ñ  §¡×!2Ñ!2°1Ñ!5Ð7GÖHñ )ñ ”Ñ/ ;Ñ/ˆð	Ù�b�M÷ ,Õ+ûô ó 	;Ø× Ñ Ð!1´3°q³6×:Ñ:ûÜó 	Ùð	ús*   Á	BÂB. Â
B+	Â.
C(Â8CÃC(Ã'C()Ú
__exc_kindN)r   r   r   r    r!   r<   r7   Ú	TypeErrorÚRuntimeErrorÚBaseExceptionÚ
ValueErrorrE   ÚclassmethodrU   r"   r   r   r   r1   r1   -   s;   † ñòò
9ð 	ØØØð	Ðð ñó ór   r1   )Úcleanupc                   ó"   • \ rS rSrS r\=rrSrg)ÚCleanUpé|   c                 ó   • g r   r   r
   s    r   ÚcleanUpÚCleanUp.cleanUp}   s   € Ør   r   N)r   r   r   r    rb   ÚsetUpÚtearDownr"   r   r   r   r_   r_   |   s   † ò	ð #Ð"ˆ“r   r_   N)	Úzope.interface._compatr   r   r$   r1   Úzope.testingr]   r_   ÚImportErrorr   r   r   Ú<module>ri      sU   ðÝ B÷*ñ *÷6ñ ÷<ñ <ðV
Ý$ð �o‰o�Gøð ó #÷#ó #ð#ús   ¦9 ¹AÁA