Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_site.cpython-311.pyc
�

�Kero��*�dZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	m
Z
mZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZdd	lmZejjrejd
���ddl Z e j!duZ"da#d�Z$d�Z%Gd
�dej&��Z'Gd�de(��Z)Gd�dej&��Z*Gd�dej&��Z+Gd�dej&��Z,e-dkrej.��dSdS)zTests for 'site'.

Tests assume the initial paths in sys.path once the interpreter has begun
executing have not been removed.

�N)�support)�	os_helper)�
socket_helper)�captured_stderr)�TESTFN�EnvironmentVarGuard�
change_cwd)�mock)�copyzPython was invoked with -Sc��tjdd�atjr�t
j�tj��sw	tjtj��tj	tj��dS#t$r)}tjdtj�d|�����d}~wwxYwdSdS)Nz&unable to create user site directory (z): )
�sys�path�OLD_SYS_PATH�site�ENABLE_USER_SITE�os�isdir�	USER_SITE�makedirs�
addsitedir�PermissionError�unittest�SkipTest)�excs �8/usr/local/apps/python3/lib/python3.11/test/test_site.py�setUpModuler,s����8�A�A�A�;�L���=�R�W�]�]�4�>�%B�%B�=�	=��K���'�'�'��O�D�N�+�+�+�+�+���	=�	=�	=��#�#�'+�~�~�~�s�s�%<�=�=�
=�����	=����
=�=�=�=s�<B	�	
B<�$B7�7B<c�2�ttjdd�<dS�N)rr
r��r�tearDownModuler!;s���C�H�Q�Q�Q�K�K�Kr c��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	de
fd	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zejed��d���Zejejd��ej��d�����Zejed��d���Zejed��d���Zd�Zejed��d���Zd�ZdS)�HelperFunctionsTestsz Tests for helper functions.
    c��tjdd�|_tj|_tj|_tj|_	tj|_ttj��|_dS)zSave a copy of sys.pathN)r
r�sys_pathr�	USER_BASE�old_baser�old_site�PREFIXES�old_prefixes�	sysconfig�_CONFIG_VARS�
original_varsr�old_vars��selfs r�setUpzHelperFunctionsTests.setUpCsP���������
����
����
� �M���&�3����Y�3�4�4��
�
�
r c�Z�|jtjdd�<|jt_|jt_|jt_	|j
t_tj�Dtj�
��tj�|j��dSdS�zRestore sys.pathN)r%r
rr'rr&r(rr*r)r-r+r,�clear�updater.r/s r�tearDownzHelperFunctionsTests.tearDownLs���m����������������)��
�!%�!3�	���!�-��"�(�(�*�*�*��"�)�)�$�-�8�8�8�8�8�.�-r c��d}tjj|�}tj|�\}}|�tj�|��|��|tj�|��kr|�||��dS|�tj�|��|��dS)N)�	Beginning�End)rr�joinr�makepath�assertEqual�abspath�normcase)r0�
path_parts�original_dir�abs_dir�norm_dirs     r�
test_makepathz"HelperFunctionsTests.test_makepathXs���*�
��w�|�Z�0�� �M�:�6������������6�6��@�@�@��2�7�+�+�L�9�9�9�9����W�h�/�/�/�/�/����R�W�-�-�g�6�6��A�A�A�A�Ar c��tj��}d�tjD��D]}|�|||�d|�����dS)Nc��g|]=}|�tj�|���#tj|��d��>S)�)rr�existsrr;)�.0rs  r�
<listcomp>z;HelperFunctionsTests.test_init_pathinfo.<locals>.<listcomp>gsQ��:�:�:���:�$&�G�N�N�4�$8�$8�:�d�m�D�)�)�!�,�:�:�:r z> from sys.path not found in set returned by _init_pathinfo(): )r�_init_pathinfor
r�assertIn)r0�dir_set�entrys   r�test_init_pathinfoz'HelperFunctionsTests.test_init_pathinfoes{���%�'�'��:�:���:�:�:�	H�	H�E��M�M�%��7<�u�u�g�g�G�
H�
H�
H�
H�	H�	Hr c�J�|�|jtjd|jz��|�t	j|j��dtj��|�tj�
|j����dS)z>Contain common code for testing results of reading a .pth filez%s not in sys.modulesrN)rK�importedr
�modulesrr;�
good_dir_pathr�assertFalserrG�bad_dir_path�r0�pth_files  r�pth_file_testsz#HelperFunctionsTests.pth_file_testsms����
�
�h�'���-��0A�A�	C�	C�	C��
�
�d�m�H�$:�;�;�A�>���I�I�I���������(=�>�>�?�?�?�?�?r c�T�t��}|�d���	|���tj|j|jt����|�|��|���dS#|���wxYw�NT)�prep)	�PthFile�cleanup�creater�
addpackage�base_dir�filename�setrWrUs  r�test_addpackagez$HelperFunctionsTests.test_addpackagets���
�9�9�����d��#�#�#�	��O�O�����O�H�-�x�/@�#�%�%�H�H�H�����)�)�)����������H���������s�AB�B'�.c�B��tj�|��}|dz}tj�||���t	�dd���5}|��fd���|�|��ddd��n#1swxYwY||fS)N�.pth�w�utf-8)�encodingc�,��tj���Sr)r�remove)�pth_fns�r�<lambda>z/HelperFunctionsTests.make_pth.<locals>.<lambda>�s���B�I�f�$5�$5�r )rrr=r:�open�
addCleanup�write)r0�contents�pth_dir�pth_name�pth_basenamerVrks      @r�make_pthzHelperFunctionsTests.make_pth�s�����'�/�/�'�*�*���&�(������g�|�4�4��
�&�#��
0�
0�
0�	%�H��O�O�5�5�5�5�6�6�6��N�N�8�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%���$�$s�.B�B�Bc	��|�d��\}}t��5}tj||t	����ddd��n#1swxYwY|�|���d��|�|���tjtj
�||������|�|���d��|�|���d��|�|���d��dS)Nzimport bad-syntax
zline 1�	Tracebackzimport bad-syntax�SyntaxError�rtrrr^ra�assertRegex�getvalue�re�escaperrr:�r0rqrk�err_outs    r�!test_addpackage_import_bad_syntaxz6HelperFunctionsTests.test_addpackage_import_bad_syntax�sb���-�-�(=�>�>����
�
�
�	4�'��O�G�V�S�U�U�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�����)�)�+�+�X�6�6�6�����)�)�+�+��I�b�g�l�l�7�F�3�3�4�4�	6�	6�	6�
	
����)�)�+�+�[�9�9�9�����)�)�+�+�-A�B�B�B�����)�)�+�+�]�;�;�;�;�;��#A�A�Ac	�f�|�d��\}}t��5}tj||t	����ddd��n#1swxYwY|�|���d��|�|���tjtj
�||������|�|���d��|�|���d��dS)Nzrandompath
import nosuchmodule
zline 2rv�ModuleNotFoundErrorrxr}s    r�test_addpackage_import_bad_execz4HelperFunctionsTests.test_addpackage_import_bad_exec�s@���-�-�(K�L�L����
�
�
�	4�'��O�G�V�S�U�U�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�����)�)�+�+�X�6�6�6�����)�)�+�+��I�b�g�l�l�7�F�3�3�4�4�	6�	6�	6�	
����)�)�+�+�[�9�9�9�����)�)�+�+�-B�C�C�C�C�Cr�c��|�d��\}}tj||t����}|�|t����dS)Nz

  

)rtrr^rar<)r0rqrk�known_pathss    r�test_addpackage_empty_linesz0HelperFunctionsTests.test_addpackage_empty_lines�sN���-�-��5�5�����o�g�v�s�u�u�=�=������c�e�e�,�,�,�,�,r c	��|�d��\}}t��5}|�tj||t������ddd��n#1swxYwYd|_|�|���d��tj
D]-}t|t��r|�
d|���.dS)Nzabcdef
�zabcdef)rtrrSrr^ra�maxDiffr<rzr
r�
isinstance�str�assertNotIn)r0rqrkr~rs     r�#test_addpackage_import_bad_pth_filez8HelperFunctionsTests.test_addpackage_import_bad_pth_file�s���-�-��7�7����
�
�
�	F�'����T�_�W�f�c�e�e�D�D�E�E�E�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F��������)�)�+�+�R�0�0�0��H�	5�	5�D��$��$�$�
5�� � ��t�4�4�4��	5�	5s�6A)�)A-�0A-c�H�t��}|�d���	|���tj|jt
����|�|��|���dS#|���wxYwrY)r[r\r]rrr_rarWrUs  r�test_addsitedirz$HelperFunctionsTests.test_addsitedir�s����9�9�����d��#�#�#�	��O�O�����O�H�-�s�u�u�5�5�5�����)�)�)����������H���������s�AB�B!c�v�|�tj��tj����dSr)r<r�_getuserbaser+r/s r�test__getuserbasez&HelperFunctionsTests.test__getuserbase�s0������*�,�,�i�.D�.F�.F�G�G�G�G�Gr zneed user sitec�4�tjdkrtjrd}ntjdz}|�tj�tj	tj
������tjd|����dS)N�darwin�osx_framework_user�_user�purelib)
r
�platform�
_frameworkr�namer<r�normpathr�	_get_pathr�r+�get_path)r0�schemes  r�
test_get_pathz"HelperFunctionsTests.test_get_path�s����<�8�#�#���#�)�F�F��W�w�&�F������)�)�$�.��9J�9L�9L�*M�*M�N�N�"�+�I�v�>�>�	@�	@�	@�	@�	@r z<requires access to PEP 370 user-site (site.ENABLE_USER_SITE)c�N�tj�tj��}|�|tj��tj���}tj
tjdd|zg|���}|�|d��tj���}tj
tjddd|zg|���}|tj
��dkr|�|d��n|�|dd��tj���}d|d	<tj
tjdd|zg|���}|tj
��dkr|�|d��n|�|dd
��tj���}d|d<tj
tjdd
g|���}|�|dd��dS)N�-cz$import sys; sys.exit(%r in sys.path)��envrFz-srz%User site still added to path with -s�1�PYTHONNOUSERSITEz3User site still added to path with PYTHONNOUSERSITEz/tmp�PYTHONUSERBASEz=import sys, site; sys.exit(site.USER_BASE.startswith("/tmp"))z#User base not set by PYTHONUSERBASE)rrr�rrrKr
�environr�
subprocess�call�
executabler<�getsitepackages)r0�usersiter��rcs    r�
test_s_optionz"HelperFunctionsTests.test_s_option�s!��
�7�#�#�D�N�3�3���
�
�h���)�)�)��j�o�o����
�_�c�n�d�2�X�=�?������	
����Q�����j�o�o����
�_�c�n�d�D�2�X�=�?�������t�+�-�-�a�0�0�0����R��#�#�#�#����R��$K�L�L�L��j�o�o����"%����
�_�c�n�d�2�X�=�?�������t�+�-�-�a�0�0�0����R��#�#�#�#����R��M�
O�
O�
O��j�o�o���� &����
�_�c�n�d�K�M������	
����Q�=�	?�	?�	?�	?�	?r c��dt_tj��}|�tj|��dt_ddl}d|_t
��5}d|d<|�tj���d��tj����ddd��dS#1swxYwYdS)Nr�xoxor�)	rr&�getuserbaser<r+r,r�
assertTrue�
startswith)r0�	user_baser+r�s    r�test_getuserbasez%HelperFunctionsTests.test_getuserbase�s������$�&�&�	�	
������3�3�3��������!%�	��
 �
"�
"�	0�g�(.�G�$�%��O�O�D�,�.�.�9�9�&�A�A� �,�.�.�
0�
0�
0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s�%AC�C�
Cc�d�dt_dt_tj��}|�tj|��|�|�tj��|��|�tjtj����dSr)rrr&�getusersitepackagesr<r�r�r�)r0�	user_sites  r�test_getusersitepackagesz-HelperFunctionsTests.test_getusersitepackagess����������,�.�.�	�	
������3�3�3����	�,�,�T�^�<�<�i�H�H�H�������)9�);�);�<�<�<�<�<r c���dgt_tj��}tjdk�r	t
jdkr�|�t|��d��tj	�
dt
jdt
jdd�zd��}|�|d|��n#|�t|��d��tj	�
dddt
jdd�zd��}|�|d	|��dS|�t|��d��|�|dd��tj	�
ddd��}|�tj	�|d��tj	�|����dS)
Nr��/�lib�zpython%d.%dz
site-packagesrrF���)
rr)r�r�sepr
�
platlibdirr<�lenrr:�version_infor>)r0�dirs�wanteds   r�test_getsitepackagesz)HelperFunctionsTests.test_getsitepackagess������
��#�%�%��
�6�S�=�=��~��&�&�� � ��T���A�.�.�.�����f�c�n�&3�c�6F�r��r�6J�&J�&5�7�7��� � ��a��&�1�1�1�1�� � ��T���A�.�.�.��W�\�\�&�%�"/�#�2B�2�A�2�2F�"F�"1�3�3�F�
���T�"�X�v�.�.�.�.�.�
���S��Y�Y��*�*�*����T�!�W�f�-�-�-��W�\�\�&�%��A�A�F����R�W�-�-�d�1�g�6�6��W�-�-�f�5�5�
7�
7�
7�
7�
7r c���dt_dt_t��5}t	jdd���5|d=|d=tj��}|�|�dtj
z��|��tj��}|�|�|��|��ddd��n#1swxYwYddd��n#1swxYwYt	jdd���5}tj�td	��5}tjtd
d��5t��}tj|��|�|��|���|�|��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nzos.path.expanduserc��|Srr)rs rrlz=HelperFunctionsTests.test_no_home_directory.<locals>.<lambda>=s��4�r r��APPDATA�~z
os.path.isdirF)�return_valuerrT)rrr&rr
�patchr�r�r�rr�r��objectr�	swap_attrra�addusersitepackages�assert_called_once_with�assert_not_calledrS)r0r�r�r��
mock_isdir�mock_addsitedirr�s       r�test_no_home_directoryz+HelperFunctionsTests.test_no_home_directory4s#��
������
 �
"�
"�	H�g�
�Z�,�.?�.?�
@�
@�	H�	H��(�)��	�"��(�*�*�I��O�O�I�0�0��r�v��>�>�%�
'�
'�
'��0�2�2�I��O�O�I�0�0��;�;�Y�G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H��Z��e�
<�
<�
<�	*�
�
�Z�
�
�t�\�
2�
2�	*�6E�
�
�t�%7��
>�
>�	*�	*��%�%�K��$�[�1�1�1��.�.�y�9�9�9��-�-�/�/�/����[�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s��C-�BC�
C-�C	�C-�C	�C-�-C1�4C1�&G,�4G�A!F=�1G�=G�G�G�G�G,�G	�G,�G	�G,�,G0�3G0c��d}d|dzfdfD]�\}}tjdtj|�����5tjdtj����5tj|��|�tj	�
��|��ddd��n#1swxYwYddd��n#1swxYwY��dS)Nzbla-bla-blaT�
)Fr�z	sys.flags)�verbosez
sys.stderr)r
r��Mock�io�StringIOr�_tracer<r
�stderrrz)r0�messager��outs    r�
test_tracezHelperFunctionsTests.test_traceVsH����!�7�T�>�2�K�?�	=�	=�L�G�S���K���7�)C�)C�)C�D�D�
=�
=��J�|�R�[�]�]�;�;�
=�
=���G�$�$�$�� � ���!4�!4�!6�!6��<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=��	=�	=s6�'C
� AB3�'C
�3B7�7C
�:B7�;C
�
C	�C	N) �__name__�
__module__�__qualname__�__doc__r1r6rCrNrWrbrrtrr�r�r�r�r�r�
skipUnless�
HAS_USER_SITEr�rrr�requires_subprocessr�r�r�r�r�r�rr rr#r#?s��������5�5�5�
9�
9�
9�B�B�B�H�H�H�@�@�@�
�
�
�*-�v�%�%�%�%�
<�
<�
<�
D�
D�
D�-�-�-�	5�	5�	5����H�H�H��X���(8�9�9�@�@�:�9�@��X���.�1>�?�?� �W� �"�"�%?�%?�#�"�?�?�%?�N�X���(8�9�9�0�0�:�9�0�"�X���(8�9�9�=�=�:�9�=�7�7�7�2�X���(8�9�9�*�*�:�9�*�B=�=�=�=�=r r#c�0�eZdZdZedddfd�Zd�Zd
d�Zd	S)r[z/Helper class for handling testing of .pth files�time�__testdir__�__badc��|dz|_tj�d��|_tj�|j|j��|_||_||_||_	tj�|j|j��|_
tj�|j|j	��|_dS)zInitialize instance variablesrer�N)r`rrr=r_r:�	file_pathrP�good_dirname�bad_dirnamerRrT)r0�
filename_baserPr�r�s     r�__init__zPthFile.__init__bs���&��.��
������+�+��
�����d�m�T�]�C�C��� ��
�(���&����W�\�\�$�-��9J�K�K����G�L�L����8H�I�I����r c��t|jd��}	td|���td|���td|jz|���t|j|���t|j|���|���n#|���wxYwtj|j	��dS)aoCreate a .pth file with a comment, blank lines, an ``import
        <self.imported>``, a line with self.good_dirname, and a line with
        self.bad_dirname.

        Creation of the directory for self.good_dir_path (based off of
        self.good_dirname) is also performed.

        Make sure to call self.cleanup() to undo anything done by this method.

        rfz#import @bad module name��filer�z	import %sN)
rmr��printrPr�r��closer�mkdirrR)r0�FILEs  rr]zPthFile.createns����D�N�C�(�(��	��,�4�8�8�8�8��$�T�"�"�"�"��+��
�-�D�9�9�9�9��$�#�$�/�/�/�/��$�"��.�.�.�.��J�J�L�L�L�L��D�J�J�L�L�L�L����
���#�$�$�$�$�$s�A'B�B)Fc�B�tj�|j��rtj|j��|rCt
j�|j��|_	|j	rt
j|j=n |j	r|j	t
j|j<tj�|j
��rtj|j
��tj�|j��rtj|j��dSdS)z�Make sure that the .pth file is deleted, self.imported is not in
        sys.modules, and that both self.good_dirname and self.bad_dirname are
        not existing directories.N)
rrrGr�rjr
rQ�getrP�imported_modulerR�rmdirrT)r0rZs  rr\zPthFile.cleanup�s����7�>�>�$�.�)�)�	&��I�d�n�%�%�%��	B�#&�;�?�?�4�=�#A�#A�D� ��#�
/��K��
�.���#�
B�-1�-A���D�M�*�
�7�>�>�$�,�-�-�	)��H�T�'�(�(�(�
�7�>�>�$�+�,�,�	(��H�T�&�'�'�'�'�'�	(�	(r N)F)r�r�r�r�rr�r]r\rr rr[r[_s_������9�9�%+�f�!.�G�
J�
J�
J�
J�%�%�%�,(�(�(�(�(�(r r[c�*�eZdZdZd�Zd�Zd�Zd�Zej	d��d���Z
d�Zd	�Zd
�Z
d�Zej�d��ejjejeejd
��d��d�������ZdS)�ImportSideEffectTestsz(Test side-effects from importing 'site'.c�8�tjdd�|_dS)zMake a copy of sys.pathN)r
rr%r/s rr1zImportSideEffectTests.setUp�s���������
�
�
r c�2�|jtjdd�<dSr3)r%r
rr/s rr6zImportSideEffectTests.tearDown�s���m��������r c��dtjd_tj��|�tjdj��dS)z�Test for __cached__ is None.

        Regarding to PEP 3147, __cached__ can be None.

        See also: https://bugs.python.org/issue30167
        N�test)r
rQ�
__cached__r�	abs_paths�assertIsNoner/s r�test_abs_paths_cached_Nonez0ImportSideEffectTests.test_abs_paths_cached_None�sE��*.���F��&���������#�+�f�-�8�9�9�9�9�9r c��tj��t��}tjD]-}|�||��|�|���.dSr)r�removeduppathsrar
rr��add)r0�
seen_pathsrs   r�test_no_duplicate_pathsz-ImportSideEffectTests.test_no_duplicate_paths�sb��	
������U�U�
��H�	!�	!�D����T�:�.�.�.��N�N�4� � � � �	!�	!r ztest not implementedc��dSrrr/s r�test_add_build_dirz(ImportSideEffectTests.test_add_build_dir�s	��
	
�r c��|�ttd����|�ttd����dS)N�quit�exit�r��hasattr�builtinsr/s r�test_setting_quitz'ImportSideEffectTests.test_setting_quit�s@�������&�1�1�2�2�2������&�1�1�2�2�2�2�2r c��|�ttd����|�ttd����|�ttd����dS)N�	copyright�credits�licenserr/s r�test_setting_copyrightz,ImportSideEffectTests.test_setting_copyright�s\�������+�6�6�7�7�7������)�4�4�5�5�5������)�4�4�5�5�5�5�5r c�V�|�ttd����dS)N�helprr/s r�test_setting_helpz'ImportSideEffectTests.test_setting_help�s$�������&�1�1�2�2�2�2�2r c�|�dtjvr-	ddl}|�d��dS#t$rYdSwxYwdS)N�
sitecustomizerz(sitecustomize not imported automatically)r
rQr�fail�ImportError)r0rs  r�test_sitecustomize_executedz1ImportSideEffectTests.test_sitecustomize_executed�sh���#�+�-�-�
F�$�$�$�$��	�	�D�E�E�E�E�E���
�
�
����
����.�-s�+�
9�9�network�HTTPSHandlerz$need SSL support to download licensec�P�tj���d}tj�|d���}|�tjj��	tj	|��5tj�
|��5}|���}ddd��n#1swxYwYddd��n#1swxYwYn(#tjj
$r}|j}Yd}~nd}~wwxYw|�|dd|z���dS)NrF�HEAD)�method��zCan't find )�msg)r�_Printer__data�split�urllib�request�Requestrn�
urlcleanupr�transient_internet�urlopen�getcode�error�	HTTPError�coder<)r0�url�req�datar2�es      r�test_license_exists_at_urlz0ImportSideEffectTests.test_license_exists_at_url�s����$�*�*�,�,�Q�/���n�$�$�S��$�8�8�������1�2�2�2�	��1�#�6�6�
*�
*��^�+�+�C�0�0�*�D��<�<�>�>�D�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*����|�%�	�	�	��6�D�D�D�D�D�D�����	��������s�
��(;��<�<�<�<�<s`�+C#�? C�C�4C�C	�C�C	�C�C#�C�C#�C�C#�#D�7D�DN)r�r�r�r�r1r6rr	r�skiprrrrrrr�requires_resource�system_must_validate_certr�rr)r*r7rr rr�r��s-������2�2�$�$�$�$�$�$�	:�	:�	:�!�!�!��X�]�)�*�*�
�
�+�*�
�3�3�3�
6�6�6�3�3�3�F�F�F�
�\�#�#�I�.�.�	�\�+��X�������@�@�?�A�A�
=�
=�A�A�,�+�/�.�
=�
=�
=r r�c���eZdZej��d���Zej��d���Zej��d���Zej��d���ZdS)�StartupImportTestsc	��tjtjdddddgtjdd���}|���d	}|�|jd	t|����tj
|��}|D]p}tjtj
�tj|��d
����}|r(|�dt#|���d|�����qtjtjdddd
ddgtjtjdd���}|���\}}|�|jd	||f��tj
|��}|�d|��hd�}|�|�|��|��|�d||��|�d||��hd��tj��}	|�|�|	��|��dS)Nz-X�utf8�-Ir�z!import sys; print(repr(sys.path))rg�surrogateescape)�stdoutrh�errorsrz*.pthzfound z .pth files in: z-vz#import sys; print(set(sys.modules)))rAr�rhrBr>�
re._parser�re._compiler�
re._constantsr{�_sre�locale�copyreg>
�heapq�types�keyword�reprlib�weakref�operator�	functools�	itertools�collections�_collections)r��Popenr
r��PIPE�communicater<�
returncode�repr�ast�literal_eval�globrrr:r|�skipTestr�rKrS�intersectionr��
difference�builtin_module_names)
r0�popenrA�isolated_pathsr�	pth_filesr�rQ�re_mods�collection_modss
          r�test_startup_importsz'StartupImportTests.test_startup_imports�sH��� �#�.�$���"&�(K�"M�(2��*1�(9�	;�;�;��
�"�"�$�$�Q�'������)�1�d�6�l�l�;�;�;��)�&�1�1��
#�	O�	O�D��	�"�'�,�,�t�{�4�/@�/@�'�"J�"J�K�K�I��
O��
�
�M�s�9�~�~�M�M�t�M�M�N�N�N��� �#�.�$���d�"&�(M�"O�(2��(2��*1�(9�;�;�;���*�*�,�,��������)�1�v�v�.>�?�?�?��"�6�*�*���
�
�f�g�&�&�&�P�O�O������-�-�g�6�6��?�?�?�	
����7�F�3�3�3�	
����G�V�4�4�4����'�J�s�'?�@�@�	�	
����-�-�o�>�>��G�G�G�G�Gr c��tjtjddg�����}|�|d��dS)Nr��9import sys; sys.exit(hasattr(sys, "__interactivehook__"))z''__interactivehook__' not added by site�r�rSr
r��waitr��r0�rs  r�test_startup_interactivehookz/StartupImportTests.test_startup_interactivehooksL����c�n�d�G�I�
J�
J�JN�$�&�&�	
�����D�E�E�E�E�Er c��tjtjdddg�����}|�|d��dS)Nr?r�rfz,'__interactivehook__' added in isolated mode)r�rSr
r�rhrSris  r�%test_startup_interactivehook_isolatedz8StartupImportTests.test_startup_interactivehook_isolated$sR��
��c�n�d�D�G�I�
J�
J�JN�$�&�&�	
�����J�K�K�K�K�Kr c��tjtjdddg�����}|�|d��dS)Nr?r�zYimport site, sys; site.enablerlcompleter(); sys.exit(hasattr(sys, "__interactivehook__"))z6'__interactivehook__' not added by enablerlcompleter()rgris  r�.test_startup_interactivehook_isolated_explicitzAStartupImportTests.test_startup_interactivehook_isolated_explicit+sS��
��c�n�d�D�g�i�
j�
j�jn�jn�jp�jp�	
�����S�T�T�T�T�Tr N)	r�r�r�rr�rdrkrmrorr rr<r<�s������� �W� �"�"�0H�0H�#�"�0H�d!�W� �"�"�F�F�#�"�F�
!�W� �"�"�L�L�#�"�L�!�W� �"�"�U�U�#�"�U�U�Ur r<c��eZdZejdkrdd�Zndd�Zd�Zej��d���Z	ej��d���Z
ej��d���Zej��d	���Zd
S)�
_pthFileTests�win32Tc
��ddl}tj��}|�tj|��tj�|tj�	tj��d��}|�tj
��}tj�|tj�	|��d��}tjtj|��tj||��t!jtj�tj�	|��dd����D]X}tj|tj�|tj�	|��d�����Y|r)tj�|��ddz}	n(tj�|��ddz}	t%|	d��5}
|D]}t'||
����	ddd��n#1swxYwY|S)NrrFzvcruntime*.dll�._pthrfr�)�_winapi�tempfile�mkdtemprnr�rmtreerrr:r(r
r��GetModuleFileName�	dllhandle�shutilrrZ�splitextrmr�)r0�lines�exe_pthru�temp_dir�exe_file�dll_src_file�dll_file�fn�	_pth_file�f�lines            r�_create_underpth_exez"_pthFileTests._create_underpth_exe5s���N�N�N��'�)�)�H��O�O�I�,�h�7�7�7��w�|�|�H�b�g�m�m�C�N�.K�.K�A�.N�O�O�H�"�4�4�S�]�C�C�L��w�|�|�H�b�g�m�m�L�.I�.I�!�.L�M�M�H��K����1�1�1��K��h�/�/�/��i�����R�W�]�]�<�-H�-H��-K�M]� ^� ^�_�_�
N�
N����B�����X�r�w�}�}�R�7H�7H��7K� L� L�M�M�M�M��
D��G�,�,�X�6�6�q�9�G�C�	�	��G�,�,�X�6�6�q�9�G�C�	��i��%�%�
(��!�(�(�D��$�Q�'�'�'�'�'�(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��Os�,I�I�Ic��|stjd���tj��}|�t
j|��tj�	|tj�
tj��d��}tj
tj|��|dz}t|d��5}|D]}t||����	ddd��n#1swxYwY|S)Nz1library ._pth file not supported on this platformrFrtrfr�)rrrvrwrnrrxrrr:r(r
r��symlinkrmr�)r0r}r~rr�r�r�r�s        rr�z"_pthFileTests._create_underpth_exeIs���
]��'�([�\�\�\��'�)�)�H��O�O�I�,�h�7�7�7��w�|�|�H�b�g�m�m�C�N�.K�.K�A�.N�O�O�H��J�s�~�x�0�0�0� �7�*�I��i��%�%�
(��!�(�(�D��$�Q�'�'�'�'�'�(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��Os�C/�/C3�6C3c���g}|D]c}|r|ddkr�tj�tj�||����}|�|���d|S)Nr�#)rrr=r:�append)r0�
sys_prefixr}r%r��abs_paths      r�"_calc_sys_path_for_underpth_nositez0_pthFileTests._calc_sys_path_for_underpth_nositeVsj�����	&�	&�D��
�4��7�c�>�>���w���r�w�|�|�J��'E�'E�F�F�H��O�O�H�%�%�%�%��r c��tjj}tj�tj��}ddgtj�d�d�}|�|��}|�	tj�|��|��}tj|ddgdd�	��}|����
d
��}|�|d��|�||d��dS)
Nz#.z# ..rcz..r��Cimport sys; print("\n".join(sys.path) if sys.flags.no_site else "")rgr@)rhrBr��sys.flags.no_site was False�sys.path is incorrect)rr�
STDLIB_DIRrr�dirnamer
r�r�r�r��check_output�rstripr(r�r<)r0�libpath�
exe_prefix�	pth_linesr�r%�output�actual_sys_paths        r�test_underpth_basicz!_pthFileTests.test_underpth_basic_s���,�)���W�_�_�S�^�4�4�
��6�8�C�H�8�c�8�4�8�	��,�,�Y�7�7���:�:��G�O�O�H�%�%������(�(�D�R�*
��$5�7�7�7��!�-�-�/�/�/�/��5�5������)F�G�G�G������#�	
�	
�	
�	
�	
r c����tjj�tj�tj��}dg�fd�td��D���d�d�}|�	|��}|�
tj�|��|��}tj���}d|d<d�
|tjtjd	����|d	<t!j|d
dg|dd
���}|����d��}|�|d��|�||d��dS)N�fake-path-namec���g|]}���Srr�rH�_r�s  �rrIz;_pthFileTests.test_underpth_nosite_file.<locals>.<listcomp>z����
*�
*�
*�!�g�
*�
*�
*r r%r��	# comment�from-env�
PYTHONPATHz{}{}{}�PATHr�r�rgr@)r�rhrBr�r�r�)rrr�rrr�r
r��ranger�r�r�r�format�pathsep�getenvr�r�r�r(r�r<)	r0r�r�r�r%r�r�r�r�s	        @r�test_underpth_nosite_filez'_pthFileTests.test_underpth_nosite_filetsm����,�)���W�_�_�S�^�4�4�
��
�
*�
*�
*�
*�u�S�z�z�
*�
*�
*�
�
�
�
�	
�	��,�,�Y�7�7���:�:��G�O�O�H�%�%������j�o�o����&��L���o�o�j�"�*�b�i��>O�>O�P�P��F���(�(�D�R�*
��W�->�@�@�@��!�-�-�/�/�/�/��5�5������)F�G�G�G������#�	
�	
�	
�	
�	
r c
���tjj�tj�tj��}|�dg�fd�td��D���d�d�d���}tj�|��}tj
���}d|d<d	�|tj
d
����|d
<tj|ddtj�|d���d
��d
tj�|d���d�g|���}|�|d��dS)Nr�c���g|]}���Srrr�s  �rrIz4_pthFileTests.test_underpth_file.<locals>.<listcomp>�r�r r%r�r��import siter�r��{};{}r�r��/import sys; sys.exit(not sys.flags.no_site and � in sys.path and �L not in sys.path and all("\r" not in p and "\n" not in p for p in sys.path))r�r��rrr�rrr�r
r�r�r�r�rr�r�r�r�r:r��r0r�r�r�r�r�r�s      @r�test_underpth_filez _pthFileTests.test_underpth_file�sT����,�)���W�_�_�S�^�4�4�
��,�,��.
�
*�
*�
*�
*�u�S�z�z�
*�
*�
*�.
�
�.
�
�	.
�

�.
�����W�_�_�X�.�.�
��j�o�o����&��L���n�n�Z���6�1B�1B�C�C��F��
�_�h�������Z�)9�:�:�:�:��������Z��4�4�4�4�
�������	
����3�4�4�4�4�4r c
���tjj�tj�tj��}|�dg�fd�td��D���d�d�d�d���}tj�|��}tj
���}d	|d
<d�|tj
d����|d<tj|d
dtj�|d���d��dtj�|d	���d�g|���}|�|d��dS)Nr�c���g|]}���Srrr�s  �rrIz8_pthFileTests.test_underpth_dll_file.<locals>.<listcomp>�r�r r%r�r�r�F)r~r�r�r�r�r�r�r�r�r�r�r�r�s      @r�test_underpth_dll_filez$_pthFileTests.test_underpth_dll_file�s^����,�)���W�_�_�S�^�4�4�
��,�,��.
�
*�
*�
*�
*�u�S�z�z�
*�
*�
*�.
�
�.
�
�	.
�

�.
��
-�����W�_�_�X�.�.�
��j�o�o����&��L���n�n�Z���6�1B�1B�C�C��F��
�_�h�������Z�)9�:�:�:�:��������Z��4�4�4�4�
�������	
����3�4�4�4�4�4r N)T)
r�r�r�r
r�r�r�rr�r�r�r�r�rr rrqrq2s�������
�|�w���	�	�	�	�	�(	�	�	�	����!�W� �"�"�
�
�#�"�
�(!�W� �"�"�
�
�#�"�
�8!�W� �"�"�5�5�#�"�5�0!�W� �"�"�5�5�#�"�5�5�5r rq�__main__)/r�r�test.supportrrrrr�test.support.os_helperrrr	rXr�	encodingsrZr�rr{r{r�r
r+rv�urllib.errorr)�urllib.requestr
r�flags�no_siterrrr�rrr!�TestCaser#r�r[r�r<rqr��mainrr r�<module>r�s�������������������"�"�"�"�"�"�&�&�&�&�&�&�(�(�(�(�(�(�J�J�J�J�J�J�J�J�J�J�
�
�
�
�������������	�	�	�	�	�	�	�	�	�	�	�	�
�
�
�
�����
�
�
�
�����������������������������
�9��:�
�(�
�8�
9�
9�9�������t�+�
���=�=�=����]=�]=�]=�]=�]=�8�,�]=�]=�]=�@	5(�5(�5(�5(�5(�f�5(�5(�5(�nP=�P=�P=�P=�P=�H�-�P=�P=�P=�fGU�GU�GU�GU�GU��*�GU�GU�GU�RO5�O5�O5�O5�O5�H�%�O5�O5�O5�d�z����H�M�O�O�O�O�O��r