HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/test_importlib/__pycache__/test_threaded_import.cpython-311.pyc
�

��VcG'��X�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
ddlmZmZmZddl
mZmZejd���d	�Zd
�Zddd
dd�ZGd�d��ZGd�d��ZGd�dej��Zd�Zedkrej��dSdS)�N)�mock)�verbose)�forget)�TESTFN�unlink�rmtree)�
script_helper�threading_helperT)�modulec�F�	t|��dzr	ddl}ddl}nddl}ddl}|�dd��}n?#t$r2}|�|�d����Yd}~nd}~wwxYw|�tj����t|��|k}|r|�	��dSdS#|�tj����t|��|k}|r|�	��wwxYw)N�r��)
�len�modulefinder�random�	randrange�	Exception�append�with_traceback�	threading�	get_ident�set)	�N�done�
done_tasks�errorsrr�x�e�finisheds	         �<D:\Python311\Lib\test\test_importlib\test_threaded_import.py�taskr"sN����z�?�?�Q��	 ������M�M�M�M��M�M�M��������Q��"�"�����.�.�.��
�
�a�&�&�t�,�,�-�-�-�-�-�-�-�-�����.����	���)�-�/�/�0�0�0��z�?�?�a�'���	��H�H�J�J�J�J�J�	�	��	���)�-�/�/�0�0�0��z�?�?�a�'���	��H�H�J�J�J�J�	���s-�9<�C�
A8�(A3�.C�3A8�8C�AD c�@�tjdd���|��S)Nzos.register_at_forkT)�create)r�patch)�funcs r!�mock_register_at_forkr',s$��:�4�:�+�D�9�9�9�$�?�?�?�zaif 1:
        import time
        time.sleep(%(delay)s)
        x = 'a'
        import C
        zaif 1:
        import time
        time.sleep(%(delay)s)
        x = 'b'
        import D
        zimport Bzimport A)�A�B�C�Dc� �eZdZdZd�Zdd�ZdS)�FinderzIA dummy finder to detect concurrent access to its find_spec()
    method.c�R�d|_d|_tj��|_dS�Nr)�numcallsrr�Lock�lock��selfs r!�__init__zFinder.__init__Js#����
�����N�$�$��	�	�	r(Nc���tj��sJ�|j5|xjdz
c_ddd��n#1swxYwY|j}tjd��|dz|_dS)Nrg{�G�z�?)�imp�	lock_heldr3r1r�time�sleep)r5�name�path�targetrs     r!�	find_speczFinder.find_specOs����}������
�Y�	�	��M�M�Q��M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��F���
�4�����Q�����s
�:�>�>�NN)�__name__�
__module__�__qualname__�__doc__r6r?�r(r!r.r.FsA��������%�%�%�
	�	�	�	�	�	r(r.c��eZdZdZdd�ZdS)�FlushingFinderzMA dummy finder which flushes sys.path_importer_cache when it gets
    called.Nc�B�tj���dS�N)�sys�path_importer_cache�clear)r5r<r=r>s    r!r?zFlushingFinder.find_spec^s����%�%�'�'�'�'�'r(r@)rArBrCrDr?rEr(r!rGrGZs2��������(�(�(�(�(�(r(rGc�p�eZdZd�Zd�Zed���Zd�Zd�Zd�Z	d�Z
d�Zed	���Zd
�Z
d�ZdS)
�ThreadedImportTestsc�P�tj�dd��|_dS�Nr)rJ�modules�pop�
old_randomr4s r!�setUpzThreadedImportTests.setUpds���+�/�/�(�D�9�9����r(c�@�|j�|jtjd<dSdSrP)rSrJrQr4s r!�tearDownzThreadedImportTests.tearDowngs,���?�	4�$(�O�C�K��!�!�!�	4�	4r(c�4���	�
�tj��rtjd���t	j���dD�]U�trtd�dd���dD] }	tj	|=�#t$rY�wxYwg�
g�	����tj
��}tj���	�
fd�t!���D����5	ddd��n#1swxYwY��d	��}tj
��|z
}trtd
|dzzdd�
��dt%�	���d���}|��
|��|�||��trtd����WdS)Nz"can't run when import lock is held)��2rXrYrXrY�Tryingzthreads ...� )�end)rrc3�V�K�|]#}tjt����f���V��$dS))r>�argsN)r�Threadr")�.0�irrrrs  ����r!�	<genexpr>zAThreadedImportTests.check_parallel_module_init.<locals>.<genexpr>�sP�����0'�0'���$�D��4��V�7U�V�V�V�0'�0'�0'�0'�0'�0'r(iXz%.1f msg@�@T)�flushr\zdone: �/zOK.)r8r9�unittest�SkipTestr�Eventr�printrJrQ�KeyErrorrLr:�	monotonicr
�
start_threads�range�waitr�assertFalse�
assertTrue)r5�mock_os�modname�t0�	completed�dt�dbg_inforrrrs       @@@@r!�check_parallel_module_initz.ThreadedImportTests.check_parallel_module_initns�������=�?�?�	J��#�$H�I�I�I��� � ���	�	�A��
;��h��=�c�:�:�:�:�5�
�
�����G�,�,�������D������F��J��J�J�L�L�L���!�!�B�!�/�0'�0'�0'�0'�0'�0'�0'�"�1�X�X�0'�0'�0'�'�'�
�
��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	�'�*�*�I���!�!�B�&�B��
A��i�2�c�6�*�$�C�@�@�@�@��(+�J�������;�H����V�X�.�.�.��O�O�I�x�0�0�0��
��e�����3	�	s$�#
A1�1
A>�=A>�C*�*C.	�1C.	c�.�|���dSrI)rvr4s r!�test_parallel_module_initz-ThreadedImportTests.test_parallel_module_init�s���'�'�)�)�)�)�)r(c��t��}tj�d|��	|���|�|jd��|�|j|j��tj�	|��dS#tj�	|��wxYwr0)
r.rJ�	meta_path�insertrv�
assertGreaterr1�assertEqualr�remove)r5�finders  r!�test_parallel_meta_pathz+ThreadedImportTests.test_parallel_meta_path�s��������
���Q��'�'�'�	)��+�+�-�-�-����v���2�2�2����V�X�v��7�7�7��M� � ��(�(�(�(�(��C�M� � ��(�(�(�(���s�AB � !Cc���t���t��}�fd�}tj�d|��tj�|��	|�d��|���}|�	�j
d��|��j�j
��tj�
|��tj�
|��dS#tj�
|��tj�
|��wxYw)Nc�<����d��t�)N�)r?�ImportError)r=rs �r!�	path_hookz?ThreadedImportTests.test_parallel_path_hooks.<locals>.path_hook�s������R� � � ��r(rr�)r.rGrJ�
path_hooksr{rzrr?rvr|r1r}rr~)r5�flushing_finderr��numtestsrs    @r!�test_parallel_path_hooksz,ThreadedImportTests.test_parallel_path_hooks�s'�������)�*�*��	�	�	�	�	�	����a��+�+�+��
���_�-�-�-�	-��%�%�b�)�)�)��6�6�8�8�H����v���2�2�2����V�X�v��7�7�7��M� � ��1�1�1��N�!�!�)�,�,�,�,�,��
�M� � ��1�1�1��N�!�!�)�,�,�,�,���s�#A$D�AEc��	tjd=n#t$rYnwxYwddl}|�|jjj��dS)Nz+test.test_importlib.threaded_import_hangersr)rJrQri�+test.test_importlib.threaded_import_hangersrn�test_importlib�threaded_import_hangersr)r5�tests  r!�test_import_hangersz'ThreadedImportTests.test_import_hangers�sd��	���I�J�J���	�	�	��D�	����:�:�:�:�����,�D�K�L�L�L�L�Ls�
�
�c��	�d}tjt��|�tjt��tj�dt��|�tjj	t��t���D]�\}}|d|iz}ttj�
t|dz��d��5}|�|�d����ddd��n#1swxYwY|�t |����t#j��g�	�	fd�}�	fd�}t'j|�	��}t'j|�	��}|���|���|�
��|�
��|�t/�	��d
dh��dS)Ng�?r�delay�.py�wb�utf-8c�X��ddl}��t|dd����dS�Nrr)r)r�getattr)r)�resultss �r!�	import_abz<ThreadedImportTests.test_circular_imports.<locals>.import_ab��0����H�H�H��N�N�7�1�c�4�0�0�1�1�1�1�1r(c�X��ddl}��t|dd����dSr�)r*rr�)r*r�s �r!�	import_baz<ThreadedImportTests.test_circular_imports.<locals>.import_ba�r�r()r>�a�b)�os�mkdirr�
addCleanup�shutilrrJr=r{r~�circular_imports_modules�items�open�join�write�encoder�	importlib�invalidate_cachesrr_�startr}r)
r5r�r<�contents�fr�r��t1�t2r�s
         @r!�test_circular_importsz)ThreadedImportTests.test_circular_imports�s������
����������
�v�.�.�.������6�"�"�"��������0�0�0�6�<�<�>�>�	*�	*�N�D�(��7�E�"2�2�H��b�g�l�l�6�4�%�<�8�8�$�?�?�
2�1��������0�0�1�1�1�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2��O�O�F�D�)�)�)�)��#�%�%�%���	2�	2�	2�	2�	2�	2�	2�	2�	2�	2��
�Y�
/�
/�
/��
�
�Y�
/�
/�
/��
���
�
�
�
���
�
�
�
���	�	�	�
���	�	�	�����W����S�z�2�2�2�2�2s�,)D!�!D%	�(D%	c��d}tj�dtj��|�tjjtj��tdz}t|d��5}|�	|�
d����ddd��n#1swxYwY|�t|��|�tt��|�td��tj��t!t��tjt=dS)Nz�if 1:
            import threading
            def target():
                import random
            t = threading.Thread(target=target)
            t.start()
            t.join()
            t = Nonerr�r�r��__pycache__)rJr=r{r��curdirr�r~rr�r�r�rrrr�r��
__import__rQ)r5rp�code�filenamer�s     r!�test_side_effect_importz+ThreadedImportTests.test_side_effect_import�s/����	�����2�9�%�%�%���������3�3�3��E�>��
�(�D�
!�
!�	*�Q�
�G�G�D�K�K��(�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*������)�)�)������'�'�'�����
�.�.�.��#�%�%�%��6�����K����s�6)B+�+B/�2B/c��tj�tj�t��dd��}tj|��dS)N�partialzcfimport.py�r�r=r��dirname�__file__r	�assert_python_ok�r5�fns  r!�'test_concurrent_futures_circular_importz;ThreadedImportTests.test_concurrent_futures_circular_import�sC��
�W�\�\�"�'�/�/�(�3�3�#�]�4�4���&�r�*�*�*�*�*r(c��tj�tj�t��dd��}tj|��dS)Nr�zpool_in_threads.pyr�r�s  r!�)test_multiprocessing_pool_circular_importz=ThreadedImportTests.test_multiprocessing_pool_circular_importsD��
�W�\�\�"�'�/�/�(�3�3�#�%9�;�;���&�r�*�*�*�*�*r(N)rArBrCrTrVr'rvrxr�r�r�r�r�r�r�rEr(r!rNrNbs�������:�:�:�4�4�4�������B*�*�*�)�)�)�-�-�-�.M�M�M�$3�$3�$3�L� � ��� �*+�+�+�+�+�+�+�+r(rNc��tj��}tjtjg|�R�	tj��}tjt
j|��tjd��dS#t$rYdSwxYw)Ng�h㈵��>)	r
�threading_setupre�addModuleCleanup�threading_cleanuprJ�getswitchinterval�setswitchinterval�AttributeError)�thread_info�old_switchintervals  r!�setUpModuler�s���"�2�4�4�K���.�@�O�;�O�O�O�O�
� �2�4�4���!�#�"7�9K�L�L�L���d�#�#�#�#�#���
�
�
����
���s�AA9�9
B�B�__main__)�_impr8r�r�rJr:r�rrer�test.supportr�test.support.import_helperr�test.support.os_helperrrrr	r
�requires_working_threadingr"r'r�r.rG�TestCaserNr�rA�mainrEr(r!�<module>r�s�������	�	�	�	�����
�
�
�
�����
�
�
�
��������������� � � � � � �-�-�-�-�-�-�;�;�;�;�;�;�;�;�;�;�8�8�8�8�8�8�8�8�+��+�4�8�8�8�8����(@�@�@�
�
�
�	����"��������((�(�(�(�(�(�(�(�b+�b+�b+�b+�b+�(�+�b+�b+�b+�J
�
�
��z����H�M�O�O�O�O�O��r(