Ë
    š”e»!  ã                   óÀ   — d Z g d¢Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d	e«      Z G d
„ de«      Z G d„ de«      Z G d„ de«      Z	 G d„ de
«      Zy)zInterface-specific exceptions
)ÚInvalidÚDoesNotImplementÚBrokenImplementationÚBrokenMethodImplementationÚMultipleInvalidÚBadImplementsÚInvalidInterfacec                   ó   — e Zd ZdZy)r   z A specification is violated
    N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú;/usr/lib/python3/dist-packages/zope/interface/exceptions.pyr   r      ó   „ òr   r   c                   óv   — e Zd ZdZdZeZdZdd„Ze	d„ «       Z
e	d„ «       Ze	d„ «       Ze	d	„ «       Zd
ZdZdZd„ Zy)Ú_TargetInvalidé    é   z<Not Given>Nc                 óP   — 	 | j                   |   S # | j                  $ r |cY S w xY w©N)ÚargsÚ_NOT_GIVEN_CATCH)ÚselfÚixÚdefaults      r   Ú_get_arg_or_defaultz"_TargetInvalid._get_arg_or_default8   s/   € ð	Ø—9‘9˜R‘=Ð øØ×$Ñ$ò 	ØŠNð	ús   ‚ ‘%¤%c                 ó8   — | j                  | j                  «      S r   )r   Ú_IX_INTERFACE©r   s    r   Ú	interfacez_TargetInvalid.interface>   s   € à×'Ñ'¨×(:Ñ(:Ó;Ð;r   c                 óN   — | j                  | j                  | j                  «      S r   )r   Ú
_IX_TARGETÚ
_NOT_GIVENr!   s    r   Útargetz_TargetInvalid.targetB   s   € à×'Ñ'¨¯©¸¿¹ÓIÐIr   c                 óZ   — | j                   }|| j                  u rydj                  |«      S )Nz	An objectzThe object {!r})r&   r%   Úformat)r   r&   s     r   Ú_str_subjectz_TargetInvalid._str_subjectZ   s+   € à—‘ˆØ�T—_‘_Ñ$ØØ ×'Ñ'¨Ó/Ð/r   c                 ó(   — d| j                   xs dz  S )Nz$has failed to implement interface %sz	<Unknown>)r"   r!   s    r   Ú_str_descriptionz_TargetInvalid._str_descriptiona   s   € à5Ø�N‰NÒ)˜kñ
ð 	
r   z: z	<unknown>ú.c                 ó�   — dj                  | j                  | j                  | j                  | j                  | j
                  «      S )Nz{} {}{}{}{})r(   r)   r+   Ú_str_conjunctionÚ_str_detailsÚ_str_trailerr!   s    r   Ú__str__z_TargetInvalid.__str__k   sB   € Ø×#Ñ#Ø×ÑØ×!Ñ!Ø×!Ñ!Ø×ÑØ×Ñó
ð 	
r   r   )r   r   r   r    r$   Ú
IndexErrorr   r%   r   Úpropertyr"   r&   r)   r+   r.   r/   r0   r1   r   r   r   r   r   "   s‰   „ ð €MØ€Jð "ÐØ€Jóð ñ<ó ð<ð ñJó ðJð. ñ0ó ð0ð ñ
ó ð
ð
 ÐØ€LØ€Ló
r   r   c                   ó   — e Zd ZdZdZy)r   a  
    DoesNotImplement(interface[, target])

    The *target* (optional) does not implement the *interface*.

    .. versionchanged:: 5.0.0
       Add the *target* argument and attribute, and change the resulting
       string value of this object accordingly.
    z.Does not declaratively implement the interfaceN)r   r   r   r   r/   r   r   r   r   r   u   s   „ ñð D�Lr   r   c                   óX   — e Zd ZdZej
                  dz   Zedz   Zed„ «       Z	ed„ «       Z
y)r   a[  
    BrokenImplementation(interface, name[, target])

    The *target* (optional) is missing the attribute *name*.

    .. versionchanged:: 5.0.0
       Add the *target* argument and attribute, and change the resulting
       string value of this object accordingly.

       The *name* can either be a simple string or a ``Attribute`` object.
    r   c                 ó    — | j                   d   S ©Nr   ©r   r!   s    r   ÚnamezBrokenImplementation.name“   ó   € à�y‰y˜‰|Ðr   c                 ó‚   — dt        | j                  t        «      rt        | j                  «      z  S | j                  z  S )Nz!The %s attribute was not provided)Ú
isinstancer9   ÚstrÚreprr!   s    r   r/   z!BrokenImplementation._str_details—   s8   € à2Ü)¨$¯)©)´SÔ9ŒD�—‘‹Oñ
ð 	
Ø?C¿y¹yñ
ð 	
r   N)r   r   r   r   r   r    Ú_IX_NAMEr$   r3   r9   r/   r   r   r   r   r   ƒ   sH   „ ñ
ð ×+Ñ+¨aÑ/€HØ˜A‘€Jàñó ðð ñ
ó ñ
r   r   c                   óh   — e Zd ZdZdZedz   Zedz   Zed„ «       Zed„ «       Z	e
d„ «       Zed„ «       Zy)	r   a¡  
    BrokenMethodImplementation(method, message[, implementation, interface, target])

    The *target* (optional) has a *method* in *implementation* that violates
    its contract in a way described by *mess*.

    .. versionchanged:: 5.0.0
       Add the *interface* and *target* argument and attribute,
       and change the resulting string value of this object accordingly.

       The *method* can either be a simple string or a ``Method`` object.

    .. versionchanged:: 5.0.0
       If *implementation* is given, then the *message* will have the
       string "implementation" replaced with an short but informative
       representation of *implementation*.

    é   r   c                 ó    — | j                   d   S )Nr   r8   r!   s    r   Úmethodz!BrokenMethodImplementation.method¶   r:   r   c                 ó    — | j                   d   S r7   r8   r!   s    r   ÚmesszBrokenMethodImplementation.messº   r:   r   c                 óB  ‡— dd l }	 |j                  }t        }	  || «      }	 | j                  }| ||«      z   S # t        $ r  |j                  }|j
                  Šˆfd„}Y ŒIw xY w# t        t        f$ r t        | «      cY S w xY w# t        $ r | j                  }Y Œnw xY w)Nr   c                 ó   •—  ‰| Ž S r   r   )ÚsigÚfs    €r   ú<lambda>zABrokenMethodImplementation.__implementation_str.<locals>.<lambda>É   s   ø€ ¡A s G€ r   )ÚinspectÚ	signaturer=   ÚAttributeErrorÚ
getargspecÚformatargspecÚ
ValueErrorÚ	TypeErrorr>   r   r   )ÚimplrK   rH   Ú	formatsigr9   rI   s        @r   Ú__implementation_strz/BrokenMethodImplementation.__implementation_str¾   s²   ø€ ó 	ð	,Ø×#Ñ#ˆCÜˆIð	Ù�d“)ˆCð	!Ø×$Ñ$ˆDð ‘i “nÑ$Ð$øô' ò 	,Ø×$Ñ$ˆCØ×%Ñ%ˆAÛ+ŠIð	,ûô œIÐ&ò 	ô
 ˜“:Òð	ûô ò 	!Ø—=‘=ŠDð	!ús1   ‡: šA& £B º&A#Á"A#Á&BÂBÂBÂBc                 óx  — | j                  | j                  | j                  «      }| j                  }|| j                  ur+d|v r'|j	                  dd«      }|| j                  |«      fz  }dj                  t        | j                  t        «      rt        | j                  «      |«      S | j                  |«      S )NÚimplementationz%rz)The contract of {} is violated because {})r   Ú_IX_IMPLr%   rE   ÚreplaceÚ/_BrokenMethodImplementation__implementation_strr(   r<   rC   r=   r>   )r   rR   Úmessages      r   r/   z'BrokenMethodImplementation._str_detailsÛ   s¥   € à×'Ñ'¨¯©°t·±ÓGˆØ—)‘)ˆØ�t—‘Ñ&Ð+;¸wÑ+FØ—o‘oÐ&6¸Ó=ˆGØ ×!:Ñ!:¸4Ó!@Ð BÑBˆGà:×AÑAÜ!+¨D¯K©K¼Ô!=ŒD�—‘ÓØó
ð 	
ØCGÇ;Á;Øó
ð 	
r   N)r   r   r   r   rW   r    r$   r3   rC   rE   ÚstaticmethodrY   r/   r   r   r   r   r   ž   so   „ ñð& €HØ˜q‘L€MØ Ñ"€Jàñó ðð ñó ðð ñ%ó ð%ð8 ñ

ó ñ

r   r   c                   óN   ‡ — e Zd ZdZdZˆ fd„Zed„ «       Zed„ «       ZdZ	dZ
ˆ xZS )r   zÏ
    The *target* has failed to implement the *interface* in
    multiple ways.

    The failures are described by *exceptions*, a collection of
    other `Invalid` instances.

    .. versionadded:: 5.0
    r   c                 ó:   •— t         ‰| �  ||t        |«      «       y r   )ÚsuperÚ__init__Útuple)r   r"   r&   Ú
exceptionsÚ	__class__s       €r   r_   zMultipleInvalid.__init__ö   s   ø€ Ü‰Ñ˜ F¬E°*Ó,=Õ>r   c                 ó    — | j                   d   S )NrA   r8   r!   s    r   ra   zMultipleInvalid.exceptionsù   r:   r   c                 óL   — ddj                  d„ | j                  D «       «      z   S )Nz
    c              3   ó†   K  — | ]9  }t        |t        «      r|j                  j                  «       n
t	        |«      –— Œ; y ­wr   )r<   r   r/   Ústripr=   )Ú.0Úxs     r   ú	<genexpr>z/MultipleInvalid._str_details.<locals>.<genexpr>  s7   è ø€ ò (
àô '1°´NÔ&CˆA�N‰N× Ñ Ô"ÌÈQËÓOñ(
ùs   ‚?A)Újoinra   r!   s    r   r/   zMultipleInvalid._str_detailsý   s-   € ð ˜(Ÿ-™-ñ (
à—_‘_ô(
ó 
ñ 
ð 	
r   ú:Ú )r   r   r   r   r   r_   r3   ra   r/   r.   r0   Ú__classcell__)rb   s   @r   r   r   é   sJ   ø„ ñð Ðô?ð ñó ðð ñ
ó ð
ð ÐØ„Lr   r   c                   ó   — e Zd ZdZy)r   z'The interface has invalid contents
    Nr
   r   r   r   r   r   
  r   r   r   c                   ó   — e Zd ZdZy)r   zŽAn implementation assertion is invalid

    because it doesn't contain an interface or a sequence of valid
    implementation assertions.
    Nr
   r   r   r   r   r     s   „ òr   r   N)r   Ú__all__Ú	Exceptionr   r   r   r   r   r   r   rQ   r   r   r   r   ú<module>rr      sz   ðñò
€ôˆiô ô
P
�Wô P
ôfD�~ô Dô
˜>ô 
ô6H
 ô H
ôV�nô ôB�yô ô�Iõ r   