Ë
   NëÖ½R'§ã                   ó¦  — d dl Zd dlmc mZ d dlZd dlmZm	Z	m
Z
mZ ej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d	„ «       Zej                  j                  d
„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zej                  j                  d„ «       Zy)é    N)ÚAsyncEventBusÚEventÚMemoryTaskQueueÚ
TaskStatusc               ƒ   óP  ‡K  — t        «       } g Šdt        dd fˆfd„}| j                  d|«       | j                  dddi«      ƒ d {  –—†  t	        ‰«      }d}||k(  }|söt        j                  d|fd||f«      d	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	d
t        j                  «       v st        j                  ‰«      rt        j                  ‰«      nd
t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}‰d   }|j                  }d}||k(  }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}‰d   }|j                  }ddi}||k(  }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y 7 �Œ\­w)NÚeventÚreturnc              “   ó0   •K  — ‰j                  | «       y ­w©N©Úappend©r   Úreceiveds    €ú:/home/oem/CyberBrain26-unified/tests/test_control_plane.pyÚhandlerz6test_event_emission_single_subscriber.<locals>.handler   ó   øè ø€ Ø�‰˜Õùó   ƒz
test.eventÚxé   ©ú==©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenr   ©Úpy0Úpy1Úpy3Úpy6úassert %(py8)sÚpy8r   )z,%(py3)s
{%(py3)s = %(py1)s.name
} == %(py6)s)r   r   r   )z/%(py3)s
{%(py3)s = %(py1)s.payload
} == %(py6)s)r   r   Ú	subscribeÚpublishr   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚnameÚpayload)	Úbusr   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9Ú@py_assert0r   s	           @r   Ú%test_event_emission_single_subscriberr4      s±  øè ø€ ä
‹/€CØ€HðœUð  tõ ð ‡M�M�, Ô(Ø
�+‰+�l S¨! HÓ
-×-Ð-äˆx‹=Ð˜AÐˆ=˜AÑ××Õˆ=˜A×××××ÑŒ3××ÓŒ3×××××Òˆx××Óˆx××Ôˆ=××Ò˜A××××××ÓØ�A‰;Ð+ˆ;×ÑÐ+˜|Ð+Ð˜|Ñ+×+×+Õ+Ð˜|×+×+Ó+ˆ;×+×+Ò+Ð×+×+Ò+˜|×+×+×+×+×+×+Õ+Ø�A‰;Ð*ˆ;×ÑÐ* 3¨ (Ð*Ð (Ñ*×*×*Õ*Ð (×*×*Ó*ˆ;×*×*Ò*Ð×*×*Ò* (×*×*×*×*×*×*Ö*ð	 .ûs   ƒAJ&ÁJ#ÁIJ&c               ƒ   ó\  ‡	K  — t        «       } g Š	dt        dt        fˆ	fd„}dt        dt        fˆ	fd„}| j                  d|«       | j                  d|«       | j	                  dddi«      ƒ d {  –—† }t        ‰	«      }dd	h}||k(  }|söt        j                  d
|fd||f«      dt        j                  «       v st        j                  t
        «      rt        j                  t
        «      nddt        j                  «       v st        j                  ‰	«      rt        j                  ‰	«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}t        ‰	«      }d}||k(  }|söt        j                  d
|fd||f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  ‰	«      rt        j                  ‰	«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}t        |«      }ddh}||k(  }|söt        j                  d
|fd||f«      dt        j                  «       v st        j                  t
        «      rt        j                  t
        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y 7 �Œ:­w)Nr   r	   c              “   ó0   •K  — ‰j                  d«       y­w)NÚh1Úr1r   ©r   Úorders    €r   r7   z0test_multiple_subscribers_all_called.<locals>.h1   ó   øè ø€ Ø�‰�TÔØùr   c              “   ó0   •K  — ‰j                  d«       y­w)NÚh2Úr2r   r9   s    €r   r=   z0test_multiple_subscribers_all_called.<locals>.h2   r;   r   ÚeÚkÚvr7   r=   r   r   Úsetr:   r   r   r    é   r   r8   r>   Úresults)r   r   Ústrr!   r"   rB   r#   r$   r%   r&   r'   r(   r)   r*   r   )
r-   r7   r=   rD   r.   r/   r0   r1   r2   r:   s
            @r   Ú$test_multiple_subscribers_all_calledrF      s  øè ø€ ä
‹/€CØ€Eðœð ¤#õ ðœð ¤#õ ð ‡M�M�#�rÔØ‡M�M�#�rÔØ—K‘K  c¨3 ZÓ0×0€Gäˆu‹:Ð%˜$ ˜Ð%ˆ:˜Ñ%×%×%Õ%ˆ:˜×%×%×%×%×%Ñ%Œ3×%×%Ó%Œ3×%×%×%×%×%Ò%ˆu×%×%Ó%ˆu×%×%Ô%ˆ:×%×%Ò%˜×%×%×%×%×%×%Ó%Üˆu‹:Ð˜Ðˆ:˜‰?××Õˆ:˜×××××ÑŒ3××ÓŒ3×××××Òˆu××Óˆu××Ôˆ:××Ò˜××××××ÓÜˆw‹<Ð'˜D $˜<Ð'ˆ<˜<Ñ'×'×'Õ'ˆ<˜<×'×'×'×'×'Ñ'Œ3×'×'Ó'Œ3×'×'×'×'×'Ò'ˆw×'×'Ó'ˆw×'×'Ô'ˆ<×'×'Ò'˜<×'×'×'×'×'×'Ô'ð	 1ûs   ƒA,N,Á/N)Á0L:N,c               ƒ   ó"  K  — t        «       } dt        dd fd„}dt        dt        fd„}| j                  d|«       | j                  d|«       | j	                  di «      ƒ d {  –—† }d}||v }|s™t        j                  d|fd||f«      t        j                  |«      d	t        j                  «       v st        j                  |«      rt        j                  |«      nd	d
œz  }dd|iz  }t        t        j                  |«      «      ‚d x}}y 7 Œª­w)Nr   r	   c              “   ó    K  — t        d«      ‚­w)NÚboom)ÚRuntimeError©r   s    r   Úbadz/test_handler_exception_is_isolated.<locals>.bad0   s   è ø€ Ü˜6Ó"Ð"ùó   ‚c              “   ó   K  — y­w)NÚok© rK   s    r   Úgoodz0test_handler_exception_is_isolated.<locals>.good3   s	   è ø€ Øùó   ‚r?   rO   )Úin)z%(py1)s in %(py3)srD   )r   r   úassert %(py5)sÚpy5)r   r   rE   r!   r"   r#   r$   r(   r%   r&   r'   r)   r*   )r-   rL   rQ   rD   r3   r.   Ú@py_format4Ú@py_format6s           r   Ú"test_handler_exception_is_isolatedrX   ,   sÁ   è ø€ ä
‹/€Cð#œð # 4ó #ðœ%ð ¤Có ð ‡M�M�#�sÔØ‡M�M�#�tÔØ—K‘K  RÓ(×(€GàÐˆ4�7ˆ?××Õˆ4�7××Óˆ4×××××Ð�7××Ó�7××××××Ôð )ús   ‚A DÁ"DÁ#B+Dc            	   ƒ   óf  ‡K  — t        «       } g Šdt        dd fˆfd„}| j                  d|«       | j                  }d} |||«      }d}||u }|�st	        j
                  d|fd||f«      dt        j                  «       v st	        j                  | «      rt	        j                  | «      ndt	        j                  |«      t	        j                  |«      d	t        j                  «       v st	        j                  |«      rt	        j                  |«      nd	t	        j                  |«      t	        j                  |«      d
œz  }dd|iz  }t        t	        j                  |«      «      ‚d x}x}x}x}}| j                  }d} ||«      }	d}|	|k(  }
|
sÕt	        j
                  d|
fd|	|f«      dt        j                  «       v st	        j                  | «      rt	        j                  | «      ndt	        j                  |«      t	        j                  |«      t	        j                  |	«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}x}x}	x}
}| j                  di «      ƒ d {  –—†  g }‰|k(  }|s™t	        j
                  d|fd‰|f«      dt        j                  «       v st	        j                  ‰«      rt	        j                  ‰«      ndt	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}}y 7 Œ«­w)Nr   r	   c              “   ó0   •K  — ‰j                  | «       y ­wr   r   r   s    €r   r   z0test_unsubscribe_stops_delivery.<locals>.handlerB   r   r   r?   T©Úis)z[%(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.unsubscribe
}(%(py4)s, %(py5)s)
} is %(py10)sr-   r   )r   Úpy2Úpy4rU   Úpy7Úpy10zassert %(py12)sÚpy12r   r   )zQ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.subscribers
}(%(py4)s)
} == %(py9)s©r   r]   r^   r   Úpy9úassert %(py11)sÚpy11©z%(py0)s == %(py3)sr   ©r   r   rT   rU   )r   r   r!   Úunsubscriber#   r$   r%   r&   r'   r(   r)   r*   Úsubscribersr"   )r-   r   Ú@py_assert1Ú@py_assert3Ú@py_assert6Ú@py_assert9Ú@py_assert8Ú@py_format11Ú@py_format13r/   Ú@py_assert7Ú@py_format10Ú@py_format12r.   rV   rW   r   s                   @r   Útest_unsubscribe_stops_deliveryrt   =   sò  øè ø€ ä
‹/€CØ€HðœUð  tõ ð ‡M�M�#�wÔØ�?‰?Ð0˜3Ð0‰?˜3 Ó(Ð0¨DÐ0Ð(¨DÐ0×0×0Ö0Ð(¨D×0×0×0×0×0Ñ0ˆ3×0×0Ó0ˆ3×0×0Ô0ˆ?×0×0Ò0˜3×0×0×0×0×0Ð0 ×0×0Ó0 ×0×0Ô0Ð(×0×0Ò0¨D×0×0×0×0×0×0×0Ø�?‰?Ð$˜3Ð$‰?˜3ÓÐ$ 1Ð$Ð 1Ñ$×$×$Õ$Ð 1×$×$×$×$×$Ñ$ˆ3×$×$Ó$ˆ3×$×$Ô$ˆ?×$×$Ò$˜3×$×$Ò$Ð×$×$Ò$ 1×$×$×$×$×$×$×$à
�+‰+�c˜2Ó
×ÐØÐˆ8�r‰>××Õˆ8�r×××××Ñˆ8××Óˆ8××Ô�r××××××Òð ús   ƒJ L1ÊL/ÊB,L1c               ƒ   ó˜  K  — t        «       } dt        dd fd„}dt        dd fd„}| j                  d|«       | j                  d|«       | j                  }d} ||«      }||g}||k(  }|sÕt	        j
                  d|fd||f«      dt        j                  «       v st	        j                  | «      rt	        j                  | «      ndt	        j                  |«      t	        j                  |«      t	        j                  |«      t	        j                  |«      d	œz  }d
d|iz  }	t        t	        j                  |	«      «      ‚d x}x}x}x}}y ­w)Nr   r	   c              “   ó   K  — y ­wr   rP   rK   s    r   r7   z*test_routing_lists_subscribers.<locals>.h1Q   ó   è ø� ùrR   c              “   ó   K  — y ­wr   rP   rK   s    r   r=   z*test_routing_lists_subscribers.<locals>.h2S   rw   rR   r?   r   )zM%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.routing
}(%(py4)s)
} == %(py9)sr-   rb   rd   re   )r   r   r!   Úroutingr#   r$   r%   r&   r'   r(   r)   r*   )
r-   r7   r=   rj   rk   r/   rn   rq   rr   rs   s
             r   Útest_routing_lists_subscribersrz   M   sß   è ø€ ä
‹/€Cà+œÐ+ $Ó+à+œÐ+ $Ó+à‡M�M�#�rÔØ‡M�M�#�rÔØ�;‰;Ð'�sÐ'‰;�sÓÐ'  B˜xÐ'Ð˜xÑ'×'×'Õ'Ð˜x×'×'×'×'×'Ñ'ˆ3×'×'Ó'ˆ3×'×'Ô'ˆ;×'×'Ò'�s×'×'Ò'Ð×'×'Ò'˜x×'×'×'×'×'×'×'Ð'ùs   ‚EE
c            	   ƒ   óü
  K  — t        «       } dt        fd„}| j                  |«      }| j                  |«      }d }||u}|s™t	        j
                  d|fd||f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}}|j                  }t        j                  }||u }	|	söt	        j
                  d	|	fd
||f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |«      dœz  }
dd|
iz  }t        t	        j                  |«      «      ‚d x}x}	}| j                  «       ƒ d {  –—†  |j                  }t        j                   }||u }	|	söt	        j
                  d	|	fd||f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |«      dœz  }
dd|
iz  }t        t	        j                  |«      «      ‚d x}x}	}|j"                  }d}||k(  }	|	s­t	        j
                  d|	fd||f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}x}	}| j                  } ||«      }t        j                   }||u }|�sKt	        j
                  d	|fd||f«      dt        j                  «       v st	        j                  | «      rt	        j                  | «      ndt	        j                  |«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}x}x}}y 7 �Œj­w)Nr	   c               “   ó   K  — y­w)Né*   rP   rP   ó    r   Úworkz5test_memory_task_queue_status_lifecycle.<locals>.work^   s	   è ø€ ØùrR   ©úis not©z%(py0)s is not %(py3)sÚrecordrg   rT   rU   r[   )zK%(py2)s
{%(py2)s = %(py0)s.status
} is %(py6)s
{%(py6)s = %(py4)s.PENDING
}r   ©r   r]   r^   r   r   r    ©zM%(py2)s
{%(py2)s = %(py0)s.status
} is %(py6)s
{%(py6)s = %(py4)s.COMPLETED
}r}   r   )z.%(py2)s
{%(py2)s = %(py0)s.result
} == %(py5)s©r   r]   rU   úassert %(py7)sr_   )zk%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.status
}(%(py3)s)
} is %(py9)s
{%(py9)s = %(py7)s.COMPLETED
}ÚqueueÚtask_id)r   r]   r   rU   r_   rc   rd   re   )r   ÚintÚenqueueÚgetr#   r$   r%   r&   r'   r(   r)   r*   Ústatusr   ÚPENDINGÚrunÚ	COMPLETEDÚresult)rˆ   r   r‰   rƒ   r.   rj   rV   rW   r/   rk   r1   r2   r0   Ú@py_format8rn   rl   rr   rs   s                     r   Ú'test_memory_task_queue_status_lifecycler“   Z   s  è ø€ äÓ€Eðœó ð �m‰m˜DÓ!€GØ�Y‰Y�wÓ€FØÐˆ6˜Ð××Õˆ6˜×××××Ñˆ6××Óˆ6××Ô˜××××××ÑØ�=‰=Ð.œJ×.Ñ.Ð.ˆ=Ð.Ð.×.×.Õ.ˆ=Ð.×.×.×.×.×.Ñ.ˆ6×.×.Ó.ˆ6×.×.Ô.ˆ=×.×.×.×.×.Ð.œJ×.×.Ó.œJ×.×.Ô.Ð.×.×.×.×.×.×.Ó.à
�)‰)‹+×Ðà�=‰=Ð0œJ×0Ñ0Ð0ˆ=Ð0Ð0×0×0Õ0ˆ=Ð0×0×0×0×0×0Ñ0ˆ6×0×0Ó0ˆ6×0×0Ô0ˆ=×0×0×0×0×0Ð0œJ×0×0Ó0œJ×0×0Ô0Ð0×0×0×0×0×0×0Ó0Ø�=‰=Ð˜BÐˆ=˜BÑ××Õˆ=˜B×××××Ñˆ6××Óˆ6××Ôˆ=××Ò˜B××××××ÓØ�<‰<Ð8‰<˜Ó Ð8¤J×$8Ñ$8Ð8Ð Ð$8Ð8×8×8Ö8Ð Ð$8×8×8×8×8×8Ñ8ˆ5×8×8Ó8ˆ5×8×8Ô8ˆ<×8×8×8×8×8Ð8˜×8×8Ó8˜×8×8Ô8Ð ×8×8×8×8×8Ð8¤J×8×8Ó8¤J×8×8Ô8Ð$8×8×8×8×8×8×8Ö8ð	 ûs   ‚HU<ÈU9ÈM*U<c               ƒ   ó	  K  — t        «       } dt        fd„}| j                  |«      }| j                  «       ƒ d {  –—†  | j	                  |«      }d }||u}|s™t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }t        j                  }||u }	|	söt        j                  d	|	fd
||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}	}|j                   }t#        |t$        «      }|�sddt        j                  «       v st        j                  t"        «      rt        j                  t"        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t$        «      rt        j                  t$        «      ndt        j                  |«      dœz  }
t        t        j                  |
«      «      ‚d x}}|j                   }t'        |«      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  t&        «      rt        j                  t&        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y 7 �ŒO­w)Nr	   c               “   ó    K  — t        d«      ‚­w)NÚkaboom)Ú
ValueErrorrP   r~   r   rI   z5test_memory_task_queue_failure_captured.<locals>.boomq   s   è ø€ Ü˜Ó"Ð"ùrM   r€   r‚   rƒ   rg   rT   rU   r[   ©zJ%(py2)s
{%(py2)s = %(py0)s.status
} is %(py6)s
{%(py6)s = %(py4)s.FAILED
}r   r„   r   r    zPassert %(py6)s
{%(py6)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.error
}, %(py4)s)
}Ú
isinstancer—   )r   r   r   r^   r   r–   r   )zK%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.error
})
} == %(py8)srE   )r   r   r   rU   r    zassert %(py10)sr`   )r   rŠ   r‹   r�   rŒ   r#   r$   r%   r&   r'   r(   r)   r*   r�   r   ÚFAILEDÚerrorr™   r—   rE   )rˆ   rI   r‰   rƒ   r.   rj   rV   rW   r/   rk   r1   r2   r0   rq   rl   ro   s                   r   Ú'test_memory_task_queue_failure_capturedrœ   m   sz  è ø€ äÓ€Eð#œó #ð �m‰m˜DÓ!€GØ
�)‰)‹+×Ðà�Y‰Y�wÓ€FØÐˆ6˜Ð××Õˆ6˜×××××Ñˆ6××Óˆ6××Ô˜××××××ÑØ�=‰=Ð-œJ×-Ñ-Ð-ˆ=Ð-Ð-×-×-Õ-ˆ=Ð-×-×-×-×-×-Ñ-ˆ6×-×-Ó-ˆ6×-×-Ô-ˆ=×-×-×-×-×-Ð-œJ×-×-Ó-œJ×-×-Ô-Ð-×-×-×-×-×-×-Ó-Ø—l‘lÐ/Œ:�l¤JÓ/Ð/Ò/×/×/×/×/Õ/Œ:×/×/Ó/Œ:×/×/×/×/×/Ò/�f×/×/Ó/�f×/×/Ô/�l×/×/×/×/×/Ð/¤J×/×/Ó/¤J×/×/Ô/Ð/×/×/×/×/×/Ò/Ø�|‰|Ð(Œ3ˆ|ÓÐ( Ð(Ð Ñ(×(×(Ö(Ð ×(×(×(×(×(Ñ(Œ3×(×(Ó(Œ3×(×(×(×(×(Ò(ˆv×(×(Ó(ˆv×(×(Ô(ˆ|×(×(Ò(Ð×(×(Ò( ×(×(×(×(×(×(Ö(ð ûs   ‚9R»R
¼QRc               ƒ   ó®  K  — t        d¬«      } dt        dt        fd„}t        d«      D �cg c]  }| j                  ||«      ‘Œ }}|D �cg c]  }| j	                  |«      ‘Œ }}| j                  «       ƒ d {  –—†  d„ |D «       }t        |«      }|s•dd	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	t        j                  |«      t        j                  |«      d
œz  }t        t        j                  |«      «      ‚d x}}|D �	cg c]  }	|	j                  ‘Œ }
}	g d¢}|
|k(  }|slt        j                  d|fd|
|f«      t        j                  |
«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}
x}}y c c}w c c}w 7 �ŒUc c}	w ­w)NrC   )Úmax_concurrencyÚvaluer	   c              “   ó   K  — | S ­wr   rP   )rŸ   s    r   Úechoz3test_memory_task_queue_multiple_tasks.<locals>.echo‚   s   è ø€ Øˆùs   ‚é   c              3   óT   K  — | ]   }|j                   t        j                  u –— Œ" y ­wr   )r�   r   r�   )Ú.0Úrs     r   ú	<genexpr>z8test_memory_task_queue_multiple_tasks.<locals>.<genexpr>‰   s   è ø€ ÒA°Aˆq�x‰xœ:×/Ñ/Ô/ÑAùs   ‚&(z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úall)r   r]   r^   )r   r   rC   r   )z%(py1)s == %(py4)s)r   r^   zassert %(py6)sr   )r   rŠ   Úranger‹   rŒ   r�   r§   r%   r&   r#   r'   r(   r)   r*   r‘   r$   )rˆ   r¡   ÚiÚidsÚtidÚrecordsrj   rk   Ú@py_format5r¥   r3   r.   r1   s                r   Ú%test_memory_task_queue_multiple_tasksr®   ~   s?  è ø€ ä¨AÔ.€Eðœ#ð ¤#ó ô ,1°«8Ö
4 aˆ5�=‰=˜˜qÕ!Ð
4€CÐ
4Ø),Ö- #ˆu�y‰y˜�~Ð-€GÐ-Ø
�)‰)‹+×ÐáA¸ÔAÐAŒ3ÐAÓAÐAÑA×A×A×A×AÕAŒ3×A×AÓAŒ3×A×AÔAÐA×A×AÒAÐA×A×A×A×A×AÒAØ%Ö&˜ˆA�H‹HÐ&Ð3Ð&ª)Ð3Ð&¨)Ñ3×3×3Õ3Ð&¨)×3×3Ó3Ð&×3×3Ò3¨)×3×3×3×3×3×3Ô3ùò 5ùÚ-Øûò 'ùs<   ‚*G¬GÁGÁGÁ#GÁ8GÁ9B7GÄ0GÅBGÇGc               ƒ   óè  ‡‡‡K  — t        «       Šg Šd
ˆˆfd„} d
ˆfd„Š‰j                  | «       ‰j                  «       ƒ d {  –—†  dg}‰|k(  }|s™t        j                  d|fd‰|f«      dt        j                  «       v st        j                  ‰«      rt        j                  ‰«      ndt        j                  |«      dœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}}y 7 Œ¬­w)Nc               “   ó0   •K  — ‰ j                  ‰«       y ­wr   )r‹   )rˆ   Ústep_twos   €€r   Ústep_onez>test_memory_task_queue_drains_newly_enqueued.<locals>.step_one’   s   øè ø€ Ø�‰�hÕùr   c               “   ó0   •K  — ‰ j                  d«       y ­w)NÚtwor   )Úcaptureds   €r   r±   z>test_memory_task_queue_drains_newly_enqueued.<locals>.step_two•   r   r   r´   r   rf   rµ   rg   rT   rU   ©r	   N)r   r‹   r�   r#   r$   r%   r&   r'   r(   r)   r*   )r²   r.   rj   rV   rW   rµ   rˆ   r±   s        @@@r   Ú,test_memory_task_queue_drains_newly_enqueuedr·   �   s�   úè ø€ äÓ€EØ€Hö õð 
‡M�M�(ÔØ
�)‰)‹+×Ðð �wÐˆ8�wÑ××Õˆ8�w×××××Ñˆ8××Óˆ8××Ô�w××××××Òð	 ús   …>C2ÁC0ÁB-C2c               ƒ   ó@	  ‡K  — t        d¬«      } g Šdt        fˆfd„}| j                  |«      }| j                  |«      }d}||u}|s™t	        j
                  d|fd||f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      d	œz  }d
d|iz  }t        t	        j                  |«      «      ‚dx}}| j                  |«      ƒ d{  –—† }d}||k(  }|s™t	        j
                  d|fd||f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      d	œz  }d
d|iz  }t        t	        j                  |«      «      ‚dx}}|j                  }t        j                  }	||	u }
|
söt	        j
                  d|
fd||	f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |	«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}x}
}	t!        ‰«      }d}	||	k(  }|söt	        j
                  d|fd||	f«      dt        j                  «       v st	        j                  t         «      rt	        j                  t         «      nddt        j                  «       v st	        j                  ‰«      rt	        j                  ‰«      ndt	        j                  |«      t	        j                  |	«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}x}}	|j"                  }d}||k(  }
|
s­t	        j
                  d|
fd||f«      dt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚dx}x}
}y7 �Œ¢­w)zATask that fails twice then succeeds should complete with retries.r¢   ©Úmax_retriesr	   c               “   ób   •K  — ‰ j                  d«       t        ‰ «      dk  rt        d«      ‚y­w)Nr   r¢   Ú	transientÚ	recovered)r   r   r—   ©Úattemptss   €r   Úflakyz4test_memory_task_queue_retry_succeeds.<locals>.flaky¦   s-   øè ø€ Ø�‰˜ÔÜˆx‹=˜1ÒÜ˜[Ó)Ð)Øùs   ƒ,/Nr€   r‚   rƒ   rg   rT   rU   r½   r   rf   r‘   r[   r…   r   r„   r   r    r   r   r¿   r   ©z0%(py2)s
{%(py2)s = %(py0)s.attempts
} == %(py5)sr†   r‡   r_   )r   rE   r‹   rŒ   r#   r$   r%   r&   r'   r(   r)   r*   Údispatchr�   r   r�   r   r¿   )rˆ   rÀ   r‰   rƒ   r.   rj   rV   rW   r‘   r/   rk   r1   r2   r0   r’   r¿   s                  @r   Ú%test_memory_task_queue_retry_succeedsrÃ       s˜  øè ø€ ô ¨Ô*€EØ€Hðœõ ð �m‰m˜EÓ"€GØ�Y‰Y�wÓ€FØÐˆ6˜Ð××Õˆ6˜×××××Ñˆ6××Óˆ6××Ô˜××××××Ñà—>‘> &Ó)×)€FØ Ð ˆ6�[Ñ × × Õ ˆ6�[× × × × × Ñ ˆ6× × Ó ˆ6× × Ô �[× × × × × × Ñ Ø�=‰=Ð0œJ×0Ñ0Ð0ˆ=Ð0Ð0×0×0Õ0ˆ=Ð0×0×0×0×0×0Ñ0ˆ6×0×0Ó0ˆ6×0×0Ô0ˆ=×0×0×0×0×0Ð0œJ×0×0Ó0œJ×0×0Ô0Ð0×0×0×0×0×0×0Ó0Üˆx‹=Ð˜AÐˆ=˜AÑ××Õˆ=˜A×××××ÑŒ3××ÓŒ3×××××Òˆx××Óˆx××Ôˆ=××Ò˜A××××××ÓØ�?‰?Ð˜aÐˆ?˜aÑ××Õˆ?˜a×××××Ñˆ6××Óˆ6××Ôˆ?××Ò˜a××××××Ôð	 *ûs   ƒC6RÃ9RÃ:N"Rc               ƒ   óJ  ‡K  — t        d¬«      } g Šdˆfd„}| j                  |«      }| j                  |«      }d}||u}|s™t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }d	d
|iz  }t        t        j                  |«      «      ‚dx}}t        j                  t        d¬«      5  | j                  |«      ƒ d{  –—†  ddd«       |j                  }t         j"                  }||u }	|	söt        j                  d|	fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚dx}x}	}t%        ‰«      }d}||k(  }|söt        j                  d|fd||f«      dt        j                  «       v st        j                  t$        «      rt        j                  t$        «      nddt        j                  «       v st        j                  ‰«      rt        j                  ‰«      ndt        j                  |«      t        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚dx}x}}|j&                  }d}||k(  }	|	s­t        j                  d|	fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚dx}x}	}y7 �Œ# 1 sw Y   �ŒxY w­w)z8Task that always fails should exhaust retries and raise.rC   r¹   Nc               “   óD   •K  — ‰ j                  d«       t        d«      ‚­w)Nr   Ú	permanent)r   rJ   r¾   s   €r   Úalways_failsz@test_memory_task_queue_retry_max_exhausted.<locals>.always_fails½   s   øè ø€ Ø�‰˜ÔÜ˜;Ó'Ð'ùs   ƒ r€   r‚   rƒ   rg   rT   rU   rÆ   )Úmatchr[   r˜   r   r„   r   r    r¢   r   r   r   r¿   r   rÁ   r†   r‡   r_   r¶   )r   r‹   rŒ   r#   r$   r%   r&   r'   r(   r)   r*   ÚpytestÚraisesrJ   rÂ   r�   r   rš   r   r¿   )rˆ   rÇ   r‰   rƒ   r.   rj   rV   rW   r/   rk   r1   r2   r0   r’   r¿   s                 @r   Ú*test_memory_task_queue_retry_max_exhaustedrË   ·   s\  øè ø€ ô ¨Ô*€EØ€Hõ(ð �m‰m˜LÓ)€GØ�Y‰Y�wÓ€FØÐˆ6˜Ð××Õˆ6˜×××××Ñˆ6××Óˆ6××Ô˜××××××Ñä	�‰”|¨;Ô	7ñ %Ø�n‰n˜VÓ$×$Ð$÷%à�=‰=Ð-œJ×-Ñ-Ð-ˆ=Ð-Ð-×-×-Õ-ˆ=Ð-×-×-×-×-×-Ñ-ˆ6×-×-Ó-ˆ6×-×-Ô-ˆ=×-×-×-×-×-Ð-œJ×-×-Ó-œJ×-×-Ô-Ð-×-×-×-×-×-×-Ó-Üˆx‹=Ð˜AÐˆ=˜AÑ××Õˆ=˜A×××××ÑŒ3××ÓŒ3×××××Òˆx××Óˆx××Ôˆ=××Ò˜A××××××ÓØ�?‰?Ð˜aÐˆ?˜aÑ××Õˆ?˜a×××××Ñˆ6××Óˆ6××Ôˆ?××Ò˜a××××××Ôð 	%ù÷%ñ %üs1   ƒC7P#Ã:PÄPÄPÄK?P#ÐPÐP ÐP#)Úbuiltinsr%   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter#   rÉ   Úcyberbrain26.control_planer   r   r   r   ÚmarkÚasyncior4   rF   rX   rt   rz   r“   rœ   r®   r·   rÃ   rË   rP   r~   r   ú<module>rÓ      s\  ðß  „ ƒç XÓ Xð ‡�×Ññ+ó ð+ð ‡�×Ññ(ó ð(ð* ‡�×Ññó ðð  ‡�×Ññó ðð ‡�×Ññ	(ó ð	(ð ‡�×Ññ9ó ð9ð$ ‡�×Ññ)ó ð)ð  ‡�×Ññ4ó ð4ð ‡�×Ññó ðð$ ‡�×Ññ ó ð ð, ‡�×Ññ ó ñ r~   