a
    [ŠÝg†  ã                   @   sÊ   d dl m Z  ddlmZ ddlmZ G dd„ de ƒZddd„Zd	d
„ Zdd„ Zdd„ Z	ee	ƒZ	dd„ Z
dd„ ZeeƒZdd„ ZeeƒZdd„ ZeeƒZdd„ ZeeƒZdd„ ZeeƒZG dd„ deƒZdS )é    )Úgreenleté   )ÚTestCase)Úfails_leakcheckc                   @   s<   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZeZ	dS )ÚgenletNc                 O   s   || _ || _d | _d S ©N)ÚargsÚkwdsÚchild)Úselfr   r	   © r   úr/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/greenlet/tests/test_generator_nested.pyÚ__init__   s    zgenlet.__init__c                 C   s   | j \}|| ji | j¤Ž d S r   )Úfnr   r	   )r   r   r   r   r   Úrun   s    z
genlet.runc                 C   s   | S r   r   ©r   r   r   r   Ú__iter__   s    zgenlet.__iter__c                 C   s
   || _ d S r   )r
   )r   r
   r   r   r   Ú	set_child   s    zgenlet.set_childc                 C   sP   | j r.| j }|j r$|}|j }d |_ q| ¡ }nt ¡ | _|  ¡ }| rH|S t‚d S r   )r
   Úswitchr   Ú
getcurrentÚparentÚStopIteration)r   r
   ÚtmpÚresultr   r   r   Ú__next__   s    

zgenlet.__next__)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   Únextr   r   r   r   r      s   r   c                 C   sT   t  ¡ }|dkrFt|tƒs"tdƒ‚|dkr6|j |¡ |j}|d8 }q| | ¡ d S )Nr   zyield outside a genletr   )r   r   Ú
isinstancer   ÚRuntimeErrorr   r   r   )ÚvalueÚlevelÚgr   r   r   ÚYield-   s    

r$   c                    s   G ‡ fdd„dt ƒ}|S )Nc                       s   e Zd Z” fZdS )zGenlet.<locals>.TheGenletN)r   r   r   r   r   ©Úfuncr   r   Ú	TheGenlet<   s   r'   )r   )r&   r'   r   r%   r   ÚGenlet;   s    r(   c                 c   s&   t | ƒD ]}| |d ¡ |V  qd S ©Nr   )ÚrangeÚappend©ÚnÚseenÚir   r   r   Úg1C   s    r0   c                 C   s(   t | ƒD ]}| |d ¡ t|ƒ qd S r)   )r*   r+   r$   r,   r   r   r   Úg2I   s    r1   c                 C   s   t | ƒ d S r   ©r$   )r/   r   r   r   ÚnestedQ   s    r3   c                 C   s(   t | ƒD ]}| |d ¡ t|ƒ qd S r)   )r*   r+   r3   r,   r   r   r   Úg3U   s    r4   c                 C   s2   | dkrd S t | d ƒD ]}t|ƒ qt| ƒ d S )Nr   r   )Úaxr$   ©r-   Úiir   r   r   Úa\   s
    
r8   c                    sP   t | ƒdkrD| D ]0‰ ‡ fdd„t‡ fdd„| D ƒƒD ƒ}|sJ ‚qnt| ƒ d S )Nr   c                    s   g | ]}t ˆ g| ƒ‘qS r   r2   )Ú.0Úp©Úer   r   Ú
<listcomp>i   ó    zperms.<locals>.<listcomp>c                    s   g | ]}|ˆ kr|‘qS r   r   )r9   Úxr;   r   r   r=   i   r>   )ÚlenÚpermsr$   )Úlr?   r   r;   r   rA   e   s
    $rA   c                 C   s*   t d| ƒD ]}t|ƒ t|| dƒ q
d S )Nr   é   )r*   r$   r6   r   r   r   Úgr1p   s    rD   c                 C   s   t | ƒD ]}| |¡ qd S r   )rD   r+   )r-   r.   r7   r   r   r   Úgr2x   s    rE   c                   @   s8   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zd	d
„ ZdS )ÚNestedGeneratorTestsc                 C   s2   g }t d|ƒD ]}| |¡ q|  |g d¢¡ d S )Né   )r   r   rC   é   é   é	   rH   é   )rE   r+   ÚassertEqual©r   r.   r7   r   r   r   Útest_layered_genlets€   s    z)NestedGeneratorTests.test_layered_genletsc                 C   sâ   t ttdƒƒƒ}t|ƒ}|  t|ƒd¡ |  g d¢|¡ |  g d¢|¡ g }tt ttdƒƒƒt ttdƒƒƒƒD ]}| |¡ qn|  |g d¢g d¢fg d¢g d¢fg d	¢g d
¢fg d¢g d¢fg d¢g d¢fg d¢g d¢fg¡ d S )NrH   é   )r   r   rC   rI   )rI   rC   r   r   rI   )r   r   rC   )r   r   rI   rC   )r   rC   r   )r   rC   r   rI   )r   r   rC   )r   rC   rI   r   )r   rC   r   )r   rI   r   rC   )rC   r   r   )r   rI   rC   r   )rC   r   r   )rA   Úlistr*   rL   r@   ZassertInÚzipr+   )r   Z	gen_permsÚpermutationsÚresr7   r   r   r   Útest_permutations†   s    &þþz&NestedGeneratorTests.test_permutationsc                 C   sT   t ttfD ]D}g }tdƒD ]}|d|ƒD ]}| |¡ q(q|  |dg d¢ ¡ q
d S )NrI   rG   )
r   r   rC   r   rI   rC   rH   rI   rG   rH   )r0   r1   r4   r*   r+   rL   )r   r#   r.   Ú_Újr   r   r   Útest_genlet_simple—   s    z'NestedGeneratorTests.test_genlet_simplec                 C   s$   zt dƒ W n ty   Y n0 d S )Né
   )r$   r    r   r   r   r   Útest_genlet_badŸ   s    z$NestedGeneratorTests.test_genlet_badc                 C   s    g }t dƒD ]}| |¡ qd S )NrG   )r5   r+   rM   r   r   r   Útest_nested_genlets¥   s    z(NestedGeneratorTests.test_nested_genletsN)	r   r   r   rN   r   rT   rW   rY   rZ   r   r   r   r   rF      s   
rF   N)r   )r   Ú r   Z	leakcheckr   r   r$   r(   r0   r1   r3   r4   r8   r5   rA   rD   rE   rF   r   r   r   r   Ú<module>   s(   '
