Viewing File: /opt/hc_python/lib/python3.12/site-packages/greenlet/tests/__pycache__/test_tracing.cpython-312.pyc

�

`�*ji!��d�ddlZddlZddlZddlZddlmZddlmZexr=ejd��"dejd�j�vne	ed�dfZ
Gd	�d
e�ZGd�de
�ZGd
�de�ZGd�de
�Zd�ZGd�de�Zedk(rej(�yy)�N�)�TestCase)�PY312�OPTz-DNDEBUG�gettotalrefcountz1Broken on assertion-enabled builds of Python 3.12c��eZdZy)�	SomeErrorN)�__name__�
__module__�__qualname__���L/opt/hc_python/lib64/python3.12/site-packages/greenlet/tests/test_tracing.pyr	r	s��rr	c�*�eZdZdZdd�Zd�Zd�Zd�Zy)�GreenletTracerNc� �g|_||_y�N)�actions�error_on_trace)�selfrs  r�__init__zGreenletTracer.__init__s�����,��rc�^�|jj|�|jrt�yr)r�appendrr	�r�argss  r�__call__zGreenletTracer.__call__ s'�������D�!�����O�rc�N�tj|�|_|jSr)�greenlet�settrace�oldtracer�rs r�	__enter__zGreenletTracer.__enter__%s�� �)�)�$�/��
��|�|�rc�B�tj|j�yr)rrr rs  r�__exit__zGreenletTracer.__exit__)s�����$�-�-�(r)F�r
rrr rrr"r$r
rrrrs���H�-��
�)rrc�"�eZdZdZd�Zd�Zd�Zy)�TestGreenletTracingz*
    Tests of ``greenlet.settrace()``
    c	�v�tj�}d�}d�}t�5}tj|�}|j�tj|�}|j	t
|j�ddd�|j
d|ffd||ffd|ffd||ffg�y#1swY�0xYw)Nc��yrr
r
rr�dummyz:TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummy4s��rc��t��r)r	r
rr�dummyexcz=TestGreenletTracing.test_a_greenlet_tracing.<locals>.dummyexc6s
���+�r�switch�throw)r�
getcurrentrr-�assertRaisesr	�assertEqual)r�mainr*r,r�g1�g2s       r�test_a_greenlet_tracingz+TestGreenletTracing.test_a_greenlet_tracing2s����"�"�$��	�	��
���"�"�5�)�B��I�I�K��"�"�8�,�B����i����3�	�	
����
��b�z�"�
��D�z�"�
��b�z�"�
�r�4�j�!�	#
�	�
�
�s�AB/�/B8c�z��tj���fd�}tj|�}|j�td��5}|j	t
|j�|j
tj�d�ddd�|j
d�|ffg�y#1swY�!xYw)Nc�&���j�yr)r-)r2s�rr*zDTestGreenletTracing.test_b_exception_disables_tracing.<locals>.dummyHs����K�K�MrT)rr-)rr/r-rr0r	r1�gettrace)rr*�grr2s    @r�!test_b_exception_disables_tracingz5TestGreenletTracing.test_b_exception_disables_tracingFs�����"�"�$��	����e�$��	���
�
�4�
0�G����i����2����X�.�.�0�$�7�1�	
����
��a�y�!�#
�	�	1�
0�s
�AB1�1B:c�p�t�}|5tj|�ddd�y#1swYyxYwr)rrr�r�tracers  r�test_set_same_tracer_twicez.TestGreenletTracing.test_set_same_tracer_twiceTs'��
 �!��
����f�%��V�V�s�,�5N)r
rr�__doc__r5r:r>r
rrr'r'-s����(�&rr'c�(�eZdZdZd�Zd�Zd�Zd�Zy)�PythonTracerNc��g|_yr)rr!s rrzPythonTracer.__init__as	����rc�f�|jj||jjf�yr)rr�f_code�co_name)r�frame�event�args    rrzPythonTracer.__call__ds#�������U�E�L�L�$8�$8�9�:rc�N�tj|�|_|jSr)�sys�
setprofiler rr!s rr"zPythonTracer.__enter__hs�����t�,��
��|�|�rc�B�tj|j�yr)rJrKr rs  rr$zPythonTracer.__exit__ls�����t�}�}�%rr%r
rrrArA^s���H��;��&rrAc��y�N�*r
r
rr�tpt_callbackrPos��
rc��eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
je�d��Ze
je�d��Zy)
�TestPythonTracingz�
    Tests of the interaction of ``sys.settrace()``
    with greenlet facilities.

    NOTE: Most of this is probably CPython specific.
    Nc�~�t�5}t�ddd�|jgd��y#1swY�xYw)N)��returnr"��callrP�rUrP�rWr$��c_callr$)rArPr1)rrs  r�test_trace_events_trivialz+TestPythonTracing.test_trace_events_trivial|s2��
�^�w��N��	
����#
�	��^�s�3�<c�f�t�5}|j�ddd�|S#1swYSxYwr)rAr-�r�gletrs   r�
_trace_switchzTestPythonTracing._trace_switch�s'��
�^�w��K�K�M�������s�&�0c�N�|j|�}|j|gd��y)N)	rT)r[r`)rW�runrVrX�rUrb)�c_returnr`rYrZ)r`r1r^s   r�$_check_trace_events_func_already_setz6TestPythonTracing._check_trace_events_func_already_set�s'���$�$�T�*������
#
�
	rc�R�d�}|jtj|��y)Nc��t�Sr�rPr
rrrbzOTestPythonTracing.test_trace_events_into_greenlet_func_already_set.<locals>.run�s
���>�!r)rer)rrbs  r�0test_trace_events_into_greenlet_func_already_setzBTestPythonTracing.test_trace_events_into_greenlet_func_already_set�s"��	"�	
�1�1�(�2C�2C�C�2H�Irc�b�Gd�dtj�}|j|��y)Nc��eZdZd�Zy)�QTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set.<locals>.Xc��t�Srrhr!s rrbzUTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set.<locals>.X.run�s
��#�~�%rN�r
rrrbr
rr�Xrl�s��
&rro)rre)rros  r�4test_trace_events_into_greenlet_subclass_already_setzFTestPythonTracing.test_trace_events_into_greenlet_subclass_already_set�s&��	&��!�!�	&�	
�1�1�!�#�6rc��|j�t�|j�|j|jgd��y)N)rTrVrXrcrVrXrYrZ)r-rPr$r1r)rr9r=s   r�/_check_trace_events_from_greenlet_sets_profilerzATestPythonTracing._check_trace_events_from_greenlet_sets_profiler�s3��	���
�������������	*
�		rc�n��t���fd�}|jtj|���y)Nc�8���j�t�Sr�r"rP�r=s�rrbzQTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler.<locals>.run�s��������>�!r)rArrr)rrbr=s  @r�2test_trace_events_from_greenlet_func_sets_profilerzDTestPythonTracing.test_trace_events_from_greenlet_func_sets_profiler�s0������	"�	
�<�<�X�=N�=N�s�=S�=C�	Erc�~��t��G�fd�dtj�}|j|���y)Nc���eZdZ�fd�Zy)�STestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler.<locals>.Xc�8���j�t�Srrur<s �rrbzWTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler.<locals>.X.run�s���� � �"�#�~�%rNrnrvs�rrorz�s���
&rro)rArrr)rror=s  @r�6test_trace_events_from_greenlet_subclass_sets_profilerzHTestPythonTracing.test_trace_events_from_greenlet_subclass_sets_profiler�s0������	&��!�!�	&�
	
�<�<�Q�S�&�Irc�&����t��d�d���fd�}��fd�}tj|��tj|���j�}|j|d�t	�|j�j
gd��y)Nc�n���j�t��j�t�yrN)r"rPr-�r4r=s��r�g1_runzPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g1_run�s%��������N��I�I�K��N�rc�n��t��j�t��j�yr)rPr$r-�r3r=s��r�g2_runzPTestPythonTracing.test_trace_events_multiple_greenlets_switching.<locals>.g2_run�s ����N��O�O���N��I�I�KrrO)	rTrVrX�r[r�)rWr�rVrXrYrZ�rArr-r1rPr�rr�r��xr3r4r=s    @@@r�.test_trace_events_multiple_greenlets_switchingz@TestPythonTracing.test_trace_events_multiple_greenlets_switching�sy������
��
��	�	��
�
�v�
&��
�
�
�v�
&���I�I�K������B����������
*
�
	rc�f����t��d�d���fd�}��fd�}tj|��tj|���j��j��j�}|j|d�t	�|j�j
gd��y)Nc����tj�jj��j	�t��j�t�yrN)rr/�parentr-r"rPrs��rr�zYTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings.<locals>.g1_run�s@������!�(�(�/�/�1������N��I�I�K��N�rc����tj�jj�t	��j�t	��j�yr)rr/r�r-rPr$r�s��rr�zYTestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings.<locals>.g2_runs;������!�(�(�/�/�1��N��O�O���N��I�I�KrrO)rTrVrXr�rVrXrYrZr�r�s    @@@r�7test_trace_events_multiple_greenlets_switching_siblingszITestPythonTracing.test_trace_events_multiple_greenlets_switching_siblings�s�������
��
��	�	��
�
�v�
&��
�
�
�v�
&��	�	�	��	�	�	��
�I�I�K������B����������	*
�		r)r
rrr?�maxDiffr\r`rerirprrrwr|�unittest�skipIf�ASSERTION_BUILD_PY312r�r�r
rrrRrRrsz����G��&�
�J�7�
� E�J��X�_�_�+�,�#�-�#�J�X�_�_�+�,�/�-�/rrR�__main__)rJ�	sysconfigrr��rr�get_config_var�split�hasattrr��	Exceptionr	�objectrr'rArPrRr
r2r
rr�<module>r�s���
������
��#�9�#�#�E�*�6�	�2�)�2�2�5�9�?�?�A�A�
�S�,�
-�7�
��	�	�	�)�V�)�(.&�(�.&�b&�6�&�"�t��t�n�z���H�M�M�O�r
Back to Directory File Manager