Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/test/test_capi/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/test/test_capi/__pycache__/test_watchers.cpython-312.pyc

�

(Μg�L��&�ddlZddlmZmZddlmZmZejd�ZGd�dej�Z
Gd�dej�ZGd	�d
ej�ZGd�dej�Z
ed
k(rej�yy)�N)�contextmanager�	ExitStack)�catch_unraisable_exception�
import_helper�	_testcapic���eZdZdZdZdZefd�Zd�Zeefd��Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z y)�TestDictWatchersr��c�,�tj|�S�N)r�add_dict_watcher��self�kinds  �9/usr/local/lib/python3.12/test/test_capi/test_watchers.py�add_watcherzTestDictWatchers.add_watcher����)�)�$�/�/�c�.�tj|�yr
)r�clear_dict_watcher�r�
watcher_ids  r�
clear_watcherzTestDictWatchers.clear_watcher����$�$�Z�0rc#�K�|j|�}	|��|j|�y#|j|�wxYw�wr
�rr�rr�wids   r�watcherzTestDictWatchers.watcher�<�������t�$��	$��I����s�#��D���s�#���A�+�A�>�Ac�P�tj�}|j||�yr
)r�get_dict_watcher_events�assertEqual�r�expected�actuals   r�
assert_eventszTestDictWatchers.assert_eventss ���2�2�4�������*rc�0�tj||�yr
)r�
watch_dict�rr�ds   r�watchzTestDictWatchers.watch#������S�!�$rc�0�tj||�yr
)r�unwatch_dictr,s   r�unwatchzTestDictWatchers.unwatch&������s�A�&rc��i}|j�5}|j||�d|d<|jdg�ddd�y#1swYyxYw)N�bar�foo�new:foo:bar�r r.r)�rr-rs   r�test_set_new_itemz"TestDictWatchers.test_set_new_item)sC����
�\�\�^�s��J�J�s�A���A�e�H����
��/��^�^�s�*A�Ac��ddi}|j�5}|j||�d|d<|jdg�ddd�y#1swYyxYw)Nr6r5�bazzmod:foo:bazr8r9s   r�test_set_existing_itemz'TestDictWatchers.test_set_existing_item0sG��
�E�N��
�\�\�^�s��J�J�s�A���A�e�H����
��/��^�^�s�*A�Ac���i}ddi}|j�5}|j||�|j|�|jdg�ddd�y#1swYyxYw)Nr6r5�clone)r r.�updater))rr-�d2rs    r�
test_clonezTestDictWatchers.test_clone7sN�����U�^��
�\�\�^�s��J�J�s�A��
�H�H�R�L�����y�)��^�^�s�6A�Ac�~�i}|j�5}d|d<|jg�ddd�y#1swYyxYw)Nr5r6)r r)r9s   r�test_no_event_if_not_watchedz-TestDictWatchers.test_no_event_if_not_watched?s3����
�\�\�^�s��A�e�H����r�"��^�^�s�3�<c��ddi}|j�5}|j||�|d=|jdg�ddd�y#1swYyxYw�Nr6r5zdel:foor8r9s   r�test_delzTestDictWatchers.test_delEsE��
�E�N��
�\�\�^�s��J�J�s�A���%�����	�{�+��^�^�s�(A�Ac��ddi}|j�5}|j||�|jd�|jdg�ddd�y#1swYyxYwrF)r r.�popr)r9s   r�test_popzTestDictWatchers.test_popLsI��
�E�N��
�\�\�^�s��J�J�s�A��
�E�E�%�L����	�{�+��^�^�s�6A�Ac��ddi}|j�5}|j||�|j�|jdg�ddd�y#1swYyxYw)Nr6r5�clear)r r.rLr)r9s   r�
test_clearzTestDictWatchers.test_clearSsG��
�E�N��
�\�\�^�s��J�J�s�A��
�G�G�I�����y�)��^�^�s�5A�Ac��ddi}|j�5}|j||�~|jdg�ddd�y#1swYyxYw)Nr6r5�deallocr8r9s   r�test_dealloczTestDictWatchers.test_deallocZsA��
�E�N��
�\�\�^�s��J�J�s�A������	�{�+��^�^�s�&A�A
c���i}|j�5}|j||�d|d<|j||�d|d<|jdg�ddd�y#1swYyxYw)Nr5r6r<�hmmr7)r r.r2r)r9s   r�test_unwatchzTestDictWatchers.test_unwatchasZ����
�\�\�^�s��J�J�s�A���A�e�H��L�L��a� ��A�e�H����
��/��^�^�s�AA�A&c��i}|j|j��5}|j||�t�5}d|d<|j	d|j
j�|jt|j
j�d�ddd�|jg�ddd�y#1swY�#xYw#1swYyxYw)N�rr5r6z0PyDict_EVENT_ADDED watcher callback for <dict at�boom!)r �ERRORr.r�assertIn�
unraisable�objectr%�str�	exc_valuer)�rr-r�cms    r�
test_errorzTestDictWatchers.test_errorjs�����
�\�\�t�z�z�\�
*�c��J�J�s�A��+�-�� ��%���
�
�F��M�M�(�(��� � ��R�]�]�%<�%<�!=�w�G�
.�
���r�"�+�
*�-�-��+�
*�s#�C�AB9�C�9C	�>C�Cc�,�i}|j|j��5}|j||�t�5}~|j	t|jj�d�ddd�ddd�y#1swY�xYw#1swYyxYw)NrUrV)r rWr.rr%r[rYr\r]s    r�test_dealloc_errorz#TestDictWatchers.test_dealloc_errorwsp����
�\�\�t�z�z�\�
*�c��J�J�s�A��+�-���� � ��R�]�]�%<�%<�!=�w�G�.�+�
*�-�-��+�
*�s"�B
�1A>�-B
�>B	�B
�
Bc�:�i}i}|j�5}|j|j��5}|j||�|j||�d|d<d|d<|jddg�ddd�ddd�y#1swY�xYw#1swYyxYw)NrUr5r6r<rRr7�second)r �SECONDr.r))r�d1rA�wid1�wid2s     r�test_two_watchersz"TestDictWatchers.test_two_watcherss���
��
��
�\�\�^�t����4�;�;��/�4��
�
�4��$��
�
�4��$�!��5�	�!��5�	��"�"�M�8�#<�=�0��^�/�/���^�s#�B�AB�4B�B	�
B�Bc���|j�5}|jtd�5|j|d�ddd�ddd�y#1swY�xYw#1swYyxYw�NzCannot watch non-dictionaryr
�r �assertRaisesRegex�
ValueErrorr.�rrs  r�test_watch_non_dictz$TestDictWatchers.test_watch_non_dict�sH��
�\�\�^�s��'�'�
�4R�S��
�
�3��"�T��^�S�S���^��!�A�A�A�A	�A�A!c��i}|jtd�5|jd|�ddd�|jtd�5|jd|�ddd�y#1swY�;xYw#1swYyxYw�NzInvalid dict watcher ID -1���zInvalid dict watcher ID 8��rlrmr.�rr-s  r�"test_watch_out_of_range_watcher_idz3TestDictWatchers.test_watch_out_of_range_watcher_id�se����
�
#�
#�J�0M�
N��J�J�r�1��O�
�
#�
#�J�0L�
M��J�J�q�!��N�
M�O�
N��
M�
M���A&�
A2�&A/�2A;c��i}|jtd�5|jd|�ddd�y#1swYyxYw�NzNo dict watcher set for ID 1r
rurvs  r� test_watch_unassigned_watcher_idz1TestDictWatchers.test_watch_unassigned_watcher_id�s3����
�
#�
#�J�0O�
P��J�J�q�!��Q�
P�
P���5�>c���|j�5}|jtd�5|j|d�ddd�ddd�y#1swY�xYw#1swYyxYwrj�r rlrmr2rns  r�test_unwatch_non_dictz&TestDictWatchers.test_unwatch_non_dict�sH��
�\�\�^�s��'�'�
�4R�S����S�!�$�T��^�S�S���^�rpc��i}|jtd�5|jd|�ddd�|jtd�5|jd|�ddd�y#1swY�;xYw#1swYyxYwrr�rlrmr2rvs  r�$test_unwatch_out_of_range_watcher_idz5TestDictWatchers.test_unwatch_out_of_range_watcher_id�se����
�
#�
#�J�0M�
N��L�L��Q��O�
�
#�
#�J�0L�
M��L�L��A��N�
M�O�
N��
M�
M�rxc��i}|jtd�5|jd|�ddd�y#1swYyxYwrzr�rvs  r�"test_unwatch_unassigned_watcher_idz3TestDictWatchers.test_unwatch_unassigned_watcher_id�s3����
�
#�
#�J�0O�
P��L�L��A��Q�
P�
P�r|c���|jtd�5|jd�ddd�|jtd�5|jd�ddd�y#1swY�:xYw#1swYyxYwrr�rlrmr�rs r�"test_clear_out_of_range_watcher_idz3TestDictWatchers.test_clear_out_of_range_watcher_id�s`��
�
#�
#�J�0M�
N����r�"�O�
�
#�
#�J�0L�
M����q�!�N�
M�O�
N��
M�
M�s�A"�A.�"A+�.A7c�|�|jtd�5|jd�ddd�y#1swYyxYwrzr�r�s r� test_clear_unassigned_watcher_idz1TestDictWatchers.test_clear_unassigned_watcher_id��.��
�
#�
#�J�0O�
P����q�!�Q�
P�
P���2�;N)!�__name__�
__module__�__qualname__�EVENTSrWrdrrrr r)r.r2r:r=rBrDrGrJrMrPrSr_rarhrorwr{rr�r�r�r��rrr	r	s���
�F�
�E�
�F�%�0�1��!�$��$�+�%�'�0�0�*�#�,�,�*�,�0�#�H�	>�#�
��
%�
��
"�"rr	c��eZdZdZdZdZdZefd�Zd�Ze	efd��Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�TestTypeWatchersrr
rrtc�,�tj|�Sr
)r�add_type_watcherrs  rrzTestTypeWatchers.add_watcher�rrc�.�tj|�yr
)r�clear_type_watcherrs  rrzTestTypeWatchers.clear_watcher�rrc#�K�|j|�}	|��|j|�y#|j|�wxYw�wr
rrs   rr zTestTypeWatchers.watcher�r!r"c�P�tj�}|j||�yr
)r�get_type_modified_eventsr%r&s   rr)zTestTypeWatchers.assert_events�s ���3�3�5�������*rc�0�tj||�yr
)r�
watch_type�rr�ts   rr.zTestTypeWatchers.watch�r/rc�0�tj||�yr
)r�unwatch_typer�s   rr2zTestTypeWatchers.unwatch�r3rc��Gd�d�}|j�5}|j||�d|_|j|g�ddd�y#1swYyxYw)Nc��eZdZy)�+TestTypeWatchers.test_watch_type.<locals>.CN�r�r�r�r�rr�Cr����rr�r5�r r.r6r)�rr�rs   r�test_watch_typez TestTypeWatchers.test_watch_type�sA���
�
�\�\�^�s��J�J�s�A���A�E�����s�#��^�^�s�,A�Ac���Gd�d�}|j�5}|j||�d|_d|_|j	|g�ddd�y#1swYyxYw)Nc��eZdZy)�2TestTypeWatchers.test_event_aggregation.<locals>.CNr�r�rrr�r��r�rr�r5r<)r r.r6r5r)r�s   r�test_event_aggregationz'TestTypeWatchers.test_event_aggregation�sH���
�
�\�\�^�s��J�J�s�A���A�E��A�E�����s�#��^�^�s�3A�A c��Gd�d�}|j�5}|j||�d|_|j|jd�d|_|j||g�ddd�y#1swYyxYw)Nc��eZdZy)�:TestTypeWatchers.test_lookup_resets_aggregation.<locals>.CNr�r�rrr�r��r�rr�r5r<)r r.r6r%r5r)r�s   r�test_lookup_resets_aggregationz/TestTypeWatchers.test_lookup_resets_aggregation�s^���
�
�\�\�^�s��J�J�s�A���A�E����Q�U�U�E�*��A�E�����1�v�&��^�^�s�AA4�4A=c�F�Gd�d�}|j�5}|j||�d|_|j|jd�|j	|g�|j||�d|_|j	|g�ddd�y#1swYyxYw)Nc��eZdZy)�-TestTypeWatchers.test_unwatch_type.<locals>.CNr�r�rrr�r��r�rr�r5r<)r r.r6r%r)r2r5r�s   r�test_unwatch_typez"TestTypeWatchers.test_unwatch_type�sz���
�
�\�\�^�s��J�J�s�A���A�E����Q�U�U�E�*�����s�#��L�L��a� ��A�E�����s�#��^�^�s�A3B�B c�l�Gd�d�}|j�5}|j�5}|j||�d|_|j|jd�|j	|g�ddd�d|_|j	|g�ddd�y#1swY�+xYw#1swYyxYw)Nc��eZdZy)�.TestTypeWatchers.test_clear_watcher.<locals>.CNr�r�rrr�r��r�rr�r5r<)r r.r6r%r)r5)rr��_rs    r�test_clear_watcherz#TestTypeWatchers.test_clear_watcher�s����
�
�\�\�^�q�����3��
�
�3��"����� � �����.��"�"�A�3�'�	 �
�A�E�����s�#��^�����^�s#�B*�AB�4!B*�B'	�#B*�*B3c���Gd�d�}Gd�d|�}|j�5}|j||�d|_|j|g�ddd�y#1swYyxYw)Nc��eZdZy)�4TestTypeWatchers.test_watch_type_subclass.<locals>.CNr�r�rrr�r�r�rr�c��eZdZy)�4TestTypeWatchers.test_watch_type_subclass.<locals>.DNr�r�rr�Dr�
r�rr�r5r�)rr�r�rs    r�test_watch_type_subclassz)TestTypeWatchers.test_watch_type_subclasssI���
����
�\�\�^�s��J�J�s�A���A�E�����s�#��^�^�s�,A�A$c��Gd�d�}|j|j��5}|j||�t�5}d|_|j|jj|�|jt|jj�d�ddd�|jg�ddd�y#1swY�#xYw#1swYyxYw)Nc��eZdZy)�&TestTypeWatchers.test_error.<locals>.CNr�r�rrr�r�r�rr�rUr5rV)r rWr.rr6�assertIsrYrZr%r[r\r))rr�rr^s    rr_zTestTypeWatchers.test_errors����
�
�\�\�t�z�z�\�
*�c��J�J�s�A��+�-������
�
�b�m�m�2�2�A�6�� � ��R�]�]�%<�%<�!=�w�G�.�
���r�"�
+�
*�-�-��+�
*�s$�C�AC�!C�C	�C�Cc��Gd�d�}Gd�d�}|j�5}|j|j��5}|j||�|j||�|j||�d|_d|_|j
||gg�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��eZdZy)�.TestTypeWatchers.test_two_watchers.<locals>.C1Nr�r�rr�C1r�r�rr�c��eZdZy)�.TestTypeWatchers.test_two_watchers.<locals>.C2Nr�r�rr�C2r�r�rr�rUr5r<)r �WRAP�assertNotEqualr.r6rRr))rr�r�rfrgs     rrhz"TestTypeWatchers.test_two_watcherss�������
�\�\�^�t����4�9�9��-���#�#�D�$�/��
�
�4��$��
�
�4��$��������"�"�B���:�.�
.��^�-�-���^�s$�B8�AB,�B8�,B5	�1B8�8Cc�8�Gd�d�}t�5}d}||jdz
kr2|j|j��}||jdz
kr�2|j	||�d|_|j
|g�ddd�y#1swYyxYw)Nc��eZdZy)�-TestTypeWatchers.test_all_watchers.<locals>.CNr�r�rrr�r�*r�rr�rsr
r5)r�TYPE_MAX_WATCHERS�
enter_contextr r.r6r))rr��stack�last_wids    r�test_all_watchersz"TestTypeWatchers.test_all_watchers)s����
�
�[�E��H��T�3�3�a�7�7� �.�.�t�|�|�~�>���T�3�3�a�7�7��J�J�x��#��A�E�����s�#��[�[�s�AB�+B�Bc���|j�5}|jtd�5|j|d�ddd�ddd�y#1swY�xYw#1swYyxYw�NzCannot watch non-typer
rkrns  r�test_watch_non_typez$TestTypeWatchers.test_watch_non_type5sH��
�\�\�^�s��'�'�
�4L�M��
�
�3��"�N��^�M�M���^�rpc� �Gd�d�}|jtd�5|jd|�ddd�|jtd�5|j|j|�ddd�y#1swY�ExYw#1swYyxYw)Nc��eZdZy)�>TestTypeWatchers.test_watch_out_of_range_watcher_id.<locals>.CNr�r�rrr�r�;r�rr��Invalid type watcher ID -1rs�Invalid type watcher ID 8)rlrmr.r��rr�s  rrwz3TestTypeWatchers.test_watch_out_of_range_watcher_id:sk���
�
�
#�
#�J�0M�
N��J�J�r�1��O�
�
#�
#�J�0L�
M��J�J�t�-�-�q�1�N�
M�O�
N��
M�
M���A8�B�8B�B
c��Gd�d�}|jtd�5|jd|�ddd�y#1swYyxYw)Nc��eZdZy)�<TestTypeWatchers.test_watch_unassigned_watcher_id.<locals>.CNr�r�rrr�r�Br�rr��No type watcher set for ID 1r
rur�s  rr{z1TestTypeWatchers.test_watch_unassigned_watcher_idAs3���
�
�
#�
#�J�0O�
P��J�J�q�!��Q�
P�
P��	�=�Ac���|j�5}|jtd�5|j|d�ddd�ddd�y#1swY�xYw#1swYyxYwr�r~rns  r�test_unwatch_non_typez&TestTypeWatchers.test_unwatch_non_typeFsH��
�\�\�^�s��'�'�
�4L�M����S�!�$�N��^�M�M���^�rpc� �Gd�d�}|jtd�5|jd|�ddd�|jtd�5|j|j|�ddd�y#1swY�ExYw#1swYyxYw)Nc��eZdZy)�@TestTypeWatchers.test_unwatch_out_of_range_watcher_id.<locals>.CNr�r�rrr�r�Lr�rr�r�rsr�)rlrmr2r�r�s  rr�z5TestTypeWatchers.test_unwatch_out_of_range_watcher_idKsk���
�
�
#�
#�J�0M�
N��L�L��Q��O�
�
#�
#�J�0L�
M��L�L��/�/��3�N�
M�O�
N��
M�
M�r�c��Gd�d�}|jtd�5|jd|�ddd�y#1swYyxYw)Nc��eZdZy)�>TestTypeWatchers.test_unwatch_unassigned_watcher_id.<locals>.CNr�r�rrr�r�Sr�rr�r�r
r�r�s  rr�z3TestTypeWatchers.test_unwatch_unassigned_watcher_idRs3���
�
�
#�
#�J�0O�
P��L�L��A��Q�
P�
P�r�c��|jtd�5|jd�ddd�|jtd�5|j|j�ddd�y#1swY�DxYw#1swYyxYw)Nr�rsr�)rlrmrr�r�s rr�z3TestTypeWatchers.test_clear_out_of_range_watcher_idWsf��
�
#�
#�J�0M�
N����r�"�O�
�
#�
#�J�0L�
M����t�5�5�6�N�
M�O�
N��
M�
M�s�A,�A8�,A5�8Bc�|�|jtd�5|jd�ddd�y#1swYyxYw)Nr�r
r�r�s rr�z1TestTypeWatchers.test_clear_unassigned_watcher_id]r�r�c��|jtd�5t�5}t|jdz�D]!}|j|j
���#	ddd�ddd�y#1swY�xYw#1swYyxYw)Nzno more type watcher IDsr
)rl�RuntimeErrorr�ranger�r�r )rr�r�s   r�test_no_more_ids_availablez+TestTypeWatchers.test_no_more_ids_availableasf��
�
#�
#�L�2M�
N�����t�5�5��9�:�A��'�'�����7�;��O�
N����O�
N�s"�A=�=A1� A=�1A:	�6A=�=BN) r�r�r��TYPESrWr�r�rrrr r)r.r2r�r�r�r�r�r�r_rhr�r�rwr{r�r�r�r�r�r�r�rrr�r��s���
�E�
�E��D���$�0�1�� �$��$�+�%�'�$�$�	'�	$�$�$�#�
/�
$�#�
2��
%�
4��
7�"�8rr�c�F�eZdZed��Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zy	)
�TestCodeObjectWatchersc#�K�tj|�}	|��tj|�y#tj|�wxYw�wr
)r�add_code_watcher�clear_code_watcher)r�
which_watcherrs   r�code_watcherz#TestCodeObjectWatchers.code_watcheris<�����(�(��7��	.��I��(�(��-��I�(�(��-���A
�3�A
�A
�
A
c�,�|j|tjd��|j|tjd��|j|tjd��|j|tjd��y)Nrr
)r%r�#get_code_watcher_num_created_events�%get_code_watcher_num_destroyed_events)r�
exp_created_0�exp_destroyed_0�
exp_created_1�exp_destroyed_1s     r�assert_event_countsz*TestCodeObjectWatchers.assert_event_countsqs~������9�H�H��K�	M�����Y�L�L�Q�O�	Q�����9�H�H��K�	M�����Y�L�L�Q�O�	Qrc��|jdddd�tjddd�}|jdddd�~|jdddd�|jd�5|jdddd�tjddd�}|jdddd�~|jdddd�|jd�5|jdddd�tjddd�}|jdddd�~|jdddd�ddd�ddd�tjddd�}|jdddd�~|jdddd�y#1swY�RxYw#1swY�VxYw)	Nr�
test_watchers�dummy1�dummy2r
�dummy3r�dummy4)rr�
code_newemptyr�)r�co1�co2�co3�co4s     r�"test_code_object_events_dispatchedz9TestCodeObjectWatchers.test_code_object_events_dispatched|sz��� � ��A�q�!�,��%�%�o�x��C��� � ��A�q�!�,��� � ��A�q�!�,��
�
�q�
!��$�$�Q��1�a�0��)�)�/�8�Q�G�C��$�$�Q��1�a�0���$�$�Q��1�a�0��"�"�1�%��(�(��A�q�!�4��-�-�o�x��K���(�(��A�q�!�4���(�(��A�q�!�4�&�"� �%�%�o�x��C��� � ��A�q�!�,��� � ��A�q�!�,�&�%��"�
!�s&�&A&E>�AE2�!E>�2E;	�7E>�>Fc�l�|jd�5t�5}tjddd�}|j	|j
jd|���|j	t|j
j�d�ddd�ddd�y#1swY�xYw#1swYyxYw)Nrr�dummy0rz*PY_CODE_EVENT_CREATE watcher callback for rV)	r�rrrr%rYrZr[r\)rr^�cos   rr_z!TestCodeObjectWatchers.test_error�s���
�
�
�q�
!�+�-���,�,�_�h��J��� � ��M�M�(�(�@���G��� � ��R�]�]�%<�%<�!=�w�G�.�"�
!�-�-��"�
!�s#�B*�A0B�
B*�B'	�#B*�*B3c��tjddd�}|jd�5t�5}~|j	t|jj�d�ddd�ddd�y#1swY�xYw#1swYyxYw)NrrrrrV)rrr�rr%r[rYr\)rrr^s   rraz)TestCodeObjectWatchers.test_dealloc_error�sk��
�
$�
$�_�h��
B��
�
�
�q�
!�+�-���� � ��R�]�]�%<�%<�!=�w�G�.�"�
!�-�-��"�
!�s"�B�1A6�%B�6A?	�;B�Bc��|jtd�5tjd�ddd�|jtd�5tjd�ddd�y#1swY�>xYw#1swYyxYw)NzInvalid code watcher ID -1rszInvalid code watcher ID 8rt�rlrmrr�r�s rr�z9TestCodeObjectWatchers.test_clear_out_of_range_watcher_id��`��
�
#�
#�J�0M�
N��(�(��,�O�
�
#�
#�J�0L�
M��(�(��+�N�
M�O�
N��
M�
M���A*�A6�*A3�6A?c��|jtd�5tjd�ddd�y#1swYyxYw)NzNo code watcher set for ID 1r
rr�s rr�z7TestCodeObjectWatchers.test_clear_unassigned_watcher_id��.��
�
#�
#�J�0O�
P��(�(��+�Q�
P�
P���6�?c��|jtd�5tj�ddd�y#1swYyxYw)Nz"no more code watcher IDs available)rlr�r�allocate_too_many_code_watchersr�s r�test_allocate_too_many_watchersz6TestCodeObjectWatchers.test_allocate_too_many_watchers�s,��
�
#�
#�L�2W�
X��5�5�7�Y�
X�
X���5�>N)r�r�r�rr�rrr_rar�r�rr�rrr�r�hs;���.��.�	Q�-�B	H�H�,�,�8rr�c�F�eZdZed��Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zy	)
�TestFuncWatchersc#�K�tj|�}	d��tj|�y#tj|�wxYw�wr
)r�add_func_watcher�clear_func_watcher)r�funcrs   rrzTestFuncWatchers.add_watcher�s:�����(�(��.��	.���(�(��-��I�(�(��-�r�c�2��g��fd�}|j|�5d�}|jtj|df��t	|�}|j
j}||_|jtj||f��d}||_|jtj||f��d}tj||�|jtj||f��ddi}||_|jtj||f��ddi}tj||�|jtj||f��g�~|jtj|df��ddd�y#1swYyxYw)Nc�(���j|�yr
��append)�args�eventss �rr z=TestFuncWatchers.test_func_events_dispatched.<locals>.watcher�s����M�M�$�rc��yr
r�r�rr�myfuncz<TestFuncWatchers.test_func_events_dispatched.<locals>.myfunc�s��r)�{)��rr.r/)rrXr�PYFUNC_EVENT_CREATE�id�test_func_events_dispatched�__code__�PYFUNC_EVENT_MODIFY_CODE�__defaults__�PYFUNC_EVENT_MODIFY_DEFAULTS�set_func_defaults_via_capi�__kwdefaults__�PYFUNC_EVENT_MODIFY_KWDEFAULTS�set_func_kwdefaults_via_capi�PYFUNC_EVENT_DESTROY)rr r-�	myfunc_id�new_code�new_defaults�new_kwdefaultsr+s       @rr2z,TestFuncWatchers.test_func_events_dispatched�sg�����	 ��
�
�g�
&�
��M�M�9�8�8�&�$�G��P��6�
�I��7�7�@�@�H�&�F�O��M�M�9�=�=�v�x�P�RX�Y�!�L�".�F���M�M�9�A�A�6�<�X�Z`�a�!�L��0�0���F��M�M�9�A�A�6�<�X�Z`�a�$�c�]�N�$2�F�!��M�M�9�C�C�V�^�\�^d�e�$�c�]�N��2�2�6�>�J��M�M�9�C�C�V�^�\�^d�e��F���M�M�9�9�9�9�d�K�V�T�;'�
&�
&�s�E*F
�
Fc�0���g��fd�}g��fd�}|j|�5|j|�5d�}tj|df}|j|��|j|��ddd�ddd�y#1swY�xYw#1swYyxYw)Nc�(���j|�yr
r()r*�events0s �r�
first_watcherz>TestFuncWatchers.test_multiple_watchers.<locals>.first_watcher������N�N�4� rc�(���j|�yr
r()r*�events1s �r�second_watcherz?TestFuncWatchers.test_multiple_watchers.<locals>.second_watcher�rDrc��yr
r�r�rrr-z7TestFuncWatchers.test_multiple_watchers.<locals>.myfunc����r)rrr0rX)rrCrGr-�eventrBrFs     @@r�test_multiple_watchersz'TestFuncWatchers.test_multiple_watchers�s������	!���	!��
�
�m�
,��!�!�.�1��#�6�6���E���
�
�e�W�-��
�
�e�W�-�
2�-�
,�1�1��-�
,�s"�B�;B�/B�B		�B�Bc���Gd�dt���fd�}|j|�5t�5}d�}|j|jj
d|���ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��eZdZy)�;TestFuncWatchers.test_watcher_raises_error.<locals>.MyErrorNr�r�rr�MyErrorrN����rrOc����d���Nztesting 123r��r*rOs �rr z;TestFuncWatchers.test_watcher_raises_error.<locals>.watcher�����-�(�(rc��yr
r�r�rrr-z:TestFuncWatchers.test_watcher_raises_error.<locals>.myfuncrIrz-PyFunction_EVENT_CREATE watcher callback for )�	Exceptionrrr%rYrZ)rr r^r-rOs    @r�test_watcher_raises_errorz*TestFuncWatchers.test_watcher_raises_error�su���	�i�	�	)��
�
�g�
&�+�-���� � ��M�M�(�(�C�F�:�N��	.�'�
&�-�-��'�
&�s"�A<�-A0�A<�0A9	�5A<�<Bc���Gd�dt���fd�}d�}|j|�5t�5}~|j|jj
��ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��eZdZy)�CTestFuncWatchers.test_dealloc_watcher_raises_error.<locals>.MyErrorNr�r�rrrOrZrPrrOc����d��rRr�rSs �rr zCTestFuncWatchers.test_dealloc_watcher_raises_error.<locals>.watcherrTrc��yr
r�r�rrr-zBTestFuncWatchers.test_dealloc_watcher_raises_error.<locals>.myfuncs��r)rVrr�assertIsInstancerYr\)rr r-r^rOs    @r�!test_dealloc_watcher_raises_errorz2TestFuncWatchers.test_dealloc_watcher_raises_errorsk���	�i�	�	)�	��
�
�g�
&�+�-����%�%�b�m�m�&=�&=�w�G�.�'�
&�-�-��'�
&�s"�A:�(A.�A:�.A7	�3A:�:Bc��|jtd�5tjd�ddd�|jtd�5tjd�ddd�y#1swY�>xYw#1swYyxYw)Nzinvalid func watcher ID -1rszinvalid func watcher ID 8rt�rlrmrr$r�s rr�z3TestFuncWatchers.test_clear_out_of_range_watcher_idrrc��|jtd�5tjd�ddd�y#1swYyxYw)Nzno func watcher set for ID 1r
r`r�s rr�z1TestFuncWatchers.test_clear_unassigned_watcher_id%rrc��|jtd�5tj�ddd�y#1swYyxYw)Nzno more func watcher IDs)rlr�r�allocate_too_many_func_watchersr�s rrz0TestFuncWatchers.test_allocate_too_many_watchers)s,��
�
#�
#�L�2M�
N��5�5�7�O�
N�
N�rN)r�r�r�rrr2rKrWr^r�r�rr�rrr!r!�s:���.��.�"U�H.�$�"H� ,�,�8rr!�__main__)�unittest�
contextlibrr�test.supportrr�
import_moduler�TestCaser	r�r�r!r��mainr�rr�<module>rks����0�B�
(�M�'�'��4�	�i"�x�(�(�i"�Xn8�x�(�(�n8�bT8�X�.�.�T8�nl8�x�(�(�l8�^�z���H�M�M�O�r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists