o
    h                     @   s~   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ dd fdd	Zd
d Zdd Z	G dd de j
ZG dd deZdS )    N)ABCInterface)ABCInterfaceClass)verifyClass)verifyObjectc                 C   s   dS )NT ifacer   r   W/var/www/html/venv/lib/python3.10/site-packages/zope/interface/common/tests/__init__.py<lambda>   s    r
   c                 c   s    t  }ttj}|rD|d}||v st|tsq	|| |t|j | |s,q	t |	 }|t |j
8 }|r@||fV  |sd S d S )Nr   )setlistr   Z
dependentspop
isinstancer   addextendZgetRegisteredConformersZ#_ABCInterfaceClass__ignored_classes)	predicateseenstackr   
registeredr   r   r	   iter_abc_interfaces   s$   


r   c                    s    fdd}t | t| d S )Nc                    s
   | j  kS N)
__module__r   moduler   r	   r   2   s   
z*add_abc_interface_tests.<locals>.predicate)add_verify_testsr   )clsr   r   r   r   r	   add_abc_interface_tests1   s   r   c           	   
   C   s   d | _ |D ]Z\}}|D ]S}||fdd}d|jdd|j|jdd|j}d| }||_t| |r=J |t| jft| || ||fdd}d	| }||_t| |rXJ t| || qqd S )
Nc                 S   s:   || j v s|j| j v r| d|  | | || d S )NzUnable to verify %s)UNVERIFIABLE__name__skipTestZ
assertTrueverify)selfstdlib_classr   r   r   r	   test;   s   
zadd_verify_tests.<locals>.testz{}_{}_{}_{}._Z
test_auto_c           
      S   s   ddl m} ddl m} ddl m} | t|j|dd|j ||}|j}| |d | || jvrT|| j	v}|j||d}	|	
| |	| | t|	| d S d S )Nr   )	Interface)implementedBy)roT)strict)Zzope.interfacer&   r'   r(   ZassertEqualtupleZ__sro__ZassertIsUNVERIFIABLE_RONON_STRICT_ROremoveappend)
r!   r"   r   r&   r'   r(   Z
implementsZsror)   Zisror   r   r	   test_roO   s"   



z!add_verify_tests.<locals>.test_roZtest_auto_ro_)	ZmaxDiffformatr   replacer   hasattrr   __dict__setattr)	r   Ziface_classes_iterr   Zregistered_classesr"   r#   suffixnamer0   r   r   r	   r   7   s*   	r   c                   @   s0   e Zd ZeeZdZdZdZdd Z	dd Z
dS )VerifyClassMixinr   c                 C   s   |S r   r   )r!   r   xr   r   r	   _adjust_object_before_verifyr   s   z-VerifyClassMixin._adjust_object_before_verifyc                 K   s   | j || ||fi |S r   )verifierr:   )r!   r   klasskwargsr   r   r	   r    u   s
   
zVerifyClassMixin.verifyN)r   r   __qualname__staticmethodr   r;   r   r-   r,   r:   r    r   r   r   r	   r8   l   s    r8   c                   @   s    e Zd ZeeZi Zdd ZdS )VerifyObjectMixinc              
   C   s   | j |}|s| j |}|s| j |j}|s|}|tju r)| dt|  z| }W n tyB } ztd| |d }~ww t	|drN| 
|j |S )NzCannot create zFailed to create instance of close)CONSTRUCTORSgetr   unittestZSkipTestr   str	Exception	TypeErrorr3   Z
addCleanuprA   )r!   r   r9   constructorresulter   r   r	   r:      s,   


z.VerifyObjectMixin._adjust_object_before_verifyN)r   r   r>   r?   r   r;   rB   r:   r   r   r   r	   r@   {   s    r@   )rD   Zzope.interface.commonr   r   Zzope.interface.verifyr   r   r   r   r   ZTestCaser8   r@   r   r   r   r	   <module>   s   5