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

�Ke{����ddlZddlZddlZddlZddlZddlZddlmZ	eje	���
��jjjdz���Z
n#e$rddlmZe��Z
YnwxYwGd�dej��Zed?idd�d	d�d
d�dd�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd��Zed?id d�d!d�d"d�d#d�d$d�d%d�d&d�d'd�d(d�d)d�d*d�d+d�d,d�d-d�d.d�d/d�d0d�d1d�d2d3�d4d3��ZGd5�d6e��ZGd7�d8��ZGd9�d:e��Zd@d<�Zd@d=�Zd>�ZdS)A�N)�verbosezModules/getpath.py)�get_getpath_codeobjectc���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�MockGetPathTestsc�H��t��j|i|��d|_dS�N)�super�__init__�maxDiff)�self�a�kw�	__class__s   ��;/usr/local/apps/python3/lib/python3.11/test/test_getpath.pyr
zMockGetPathTests.__init__s*��������!�"�r�"�"�"������c	�"�	tdd���}|�d��|�d��|�d��t	dddddgd����}t||��}|�||��dS)	N�C:\Python\python.exe��argv0�real_executable�C:\Python\Lib\os.py�C:\Python\DLLs�	C:\Python���C:\Python\python98.zipr�
C:\Python\Libr��
executable�base_executable�prefix�exec_prefix�module_search_paths_set�module_search_paths��MockNTNamespace�add_known_xfile�add_known_file�
add_known_dir�dict�getpath�assertEqual�r�ns�expected�actuals    r�test_normal_win32z"MockGetPathTests.test_normal_win32s���6�
�)�3�
�
�
��	���2�3�3�3�
���0�1�1�1�
���*�+�+�+��.�3��$�$%�!�!�!�

�
�
����X�&�&������6�*�*�*�*�*rc�*�	tdd���}|�d��|�d��|�ddg��tdddddddgd��	��}t	||��}|�||��dS)
N�#C:\CPython\PCbuild\amd64\python.exer�C:\CPython\Lib\os.py�'C:\CPython\PCbuild\amd64\pybuilddir.txt��
C:\CPythonr�z%C:\CPython\PCbuild\amd64\python98.zipzC:\CPython\PCbuild\amd64�C:\CPython\Lib�rr r!r"�build_prefix�_is_python_buildr#r$�r&r'r(r*r+r,r-s    r�test_buildtree_win32z%MockGetPathTests.test_buildtree_win321s���2�
�8�B�
�
�
��	���A�B�B�B�
���1�2�2�2�
���D�r�d�K�K�K��=�B� �%�&��$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc��	tddd���}|�d��|�d��|�d��|�d��|�ddg��t	ddddddd	gd
����}t||��}|�||��dS)NrzC:\venv\Scripts\python.exe)r�ENV___PYVENV_LAUNCHER__rrrzC:\venv\pyvenv.cfgzhome = C:\Pythonrrr�rr!r"r �base_prefix�base_exec_prefixr#r$r%r-s    r�test_venv_win32z MockGetPathTests.test_venv_win32Ks��	��)�$A�3�
�
�
��
	���2�3�3�3�
���8�9�9�9�
���0�1�1�1�
���*�+�+�+�
���/��2
�	�	�	��4��$�3�$�)�$%�!�!�!�
�
�
����X�&�&������6�*�*�*�*�*rc�
�	d}t|d|�d�d|�d�di��}tdd|���}|�d��|�d��|�d	��td
gd����}t
||��}|�||��d
|dd<d
|dd<d|dd<td
gd����}t
||��}|�||��dS)Nz1HKLM\Software\Python\PythonCore\9.8-XY\PythonPathz\Path1�	path1-dirz
\Path1\Subdirznot-subdirsr)rr�winregrrr)rrFrrr)r#r$r�config�use_environmentr#r$r)�
MockWinregr&r'r(r)r*r+r,)r�hkeyrGr.r/r0s      r�test_registry_win32z$MockGetPathTests.test_registry_win32psq��	�
E����$�����k��$�$�$�m�
����
�)�3��
�
�
��
	���2�3�3�3�
���0�1�1�1�
���*�+�+�+��$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*+��8��&�'�23��8��.�/�.2��8��*�+��$%�!�!�!�
�
�
����X�&�&������6�*�*�*�*�*rc	�x�	tdd���}|�d��|�d��|�dd��|�d��|�d��tdddddgd��	��}t
||��}|�||��dS)
N�C:\LinkedFrom\python.exerrrrrrrr)r&r'�add_known_linkr(r)r*r+r,r-s    r�test_symlink_normal_win32z*MockGetPathTests.test_symlink_normal_win32�s���B�
�-�3�
�
�
��	���6�7�7�7�
���2�3�3�3�
���5�7N�O�O�O�
���0�1�1�1�
���*�+�+�+��2�7��$�$%�!�!�!�

�
�
����X�&�&������6�*�*�*�*�*rc��	tdd���}|�d��|�d��|�dd��|�d��|�ddg��t	dddddddgd	��
��}t||��}|�||��dS)NrNr3rr4r5r6r7rr8r:)r&r'rOr(r*r+r,r-s    r�test_symlink_buildtree_win32z-MockGetPathTests.test_symlink_buildtree_win32�s���>�
�-�B�
�
�
��	���6�7�7�7�
���A�B�B�B�
���5�7]�^�^�^�
���1�2�2�2�
���D�r�d�K�K�K��2�7� �%�&��$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc�,�	tddd���}|�d��|�d��|�ddg��tdddddddgd	��
��}t	||��}|�||��dS)NzC:\Out\python.exer7)rr�ENV_PYTHONHOMEr4zC:\Out\pybuilddir.txtr6zC:\r)zC:\Out\python98.zipzC:\Outr9r:r=r-s    r�test_buildtree_pythonhome_win32z0MockGetPathTests.test_buildtree_pythonhome_win32�s���O�
�&�0�(�
�
�
��
	���/�0�0�0�
���1�2�2�2�
���2�R�D�9�9�9��+�0� �%� ��$%�!�!�!�
�
�
��"��X�&�&������6�*�*�*�*�*rc	��	tdd���}|�d��|�d��tdddddgd����}t	||��}|�||��dS)Nrrrrr)rrrrr=r-s    r�test_no_dlls_win32z#MockGetPathTests.test_no_dlls_win32�s���:�
�)�3�
�
�
��	���2�3�3�3�
���0�1�1�1��.�3��$�$%�!�!�!�

�
�
����X�&�&������6�*�*�*�*�*rc	�$�	tddd���}|�d��|�d��|�d��t	dddddgd	��
��}t||��}|�||��dS)N�/usr�pythonz/usr/bin)�PREFIXr�ENV_PATH�/usr/bin/python�/usr/lib/python9.8/os.py�/usr/lib/python9.8/lib-dynloadr�z/usr/lib/python98.zipz/usr/lib/python9.8r_r��MockPosixNamespacer'r(r)r*r+r,r-s    r�test_normal_posixz"MockGetPathTests.test_normal_posix
s���2�
����
�
�
��
	���,�-�-�-�
���4�5�5�5�
���9�:�:�:��(�-���$%�!�!�!�

�
�
����X�&�&������6�*�*�*�*�*rc�~�	tdd���}|�d��|�d��|�ddg��|�d��|�d��t	ddddd	d
d
gd����}t||��}|�||��dS)
N�/home/cpython/python�
/usr/local�rr[�/usr/local/bin/python�/home/cpython/pybuilddir.txt�build/lib.linux-x86_64-9.8�/home/cpython/Lib/os.py�/home/cpython/lib-dynload�
/home/cpythonr��/usr/local/lib/python98.zip�/home/cpython/Libz(/home/cpython/build/lib.linux-x86_64-9.8�rr!r"r r;r<r#r$rar-s    r�test_buildpath_posixz%MockGetPathTests.test_buildpath_posix&s���	� �)��
�
�
��	���1�2�2�2�
���2�3�3�3�
���8�;W�:X�Y�Y�Y�
���3�4�4�4�
���4�5�5�5��-��$�2�(��$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc��	tddd���}|�d��|�d��|�d��|�d��|�d	d
g��t	dddddddgd��
��}t||��}|�||��dS)NrZrY�/venv/bin:/usr/bin�rr[r\r]�/venv/bin/pythonr^r_�/venv/pyvenv.cfg�home = /usr/binrr`rArar-s    r�test_venv_posixz MockGetPathTests.test_venv_posixGs��%�
���)�
�
�
��
	���,�-�-�-�
���-�.�.�.�
���4�5�5�5�
���9�:�:�:�
���,��/
�	�	�	��)���-��#�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc��	tddd���}|�d��|�d��|�dd��|�d��|�d��|�d	d
g��tdddddddgd��
��}t
||��}|�||��dS)NrZrYrtruz/usr/bin/python3rvr^r_rwrxrr`rA�rbr'rOr(r)r*r+r,r-s    r�test_venv_changed_name_posixz-MockGetPathTests.test_venv_changed_name_posixfs��%�
���)�
�
�
��
	���-�.�.�.�
���-�.�.�.�
���,�.@�A�A�A�
���4�5�5�5�
���9�:�:�:�
���,��/
�	�	�	��)���.��#�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc��	tddd���}|�d��|�d��|�dd��|�d��|�d��|�dd	g��tdd
d
dd
d
dgd��
��}t
||��}|�||��dS)NrvrYrtruz!/path/to/non-installed/bin/pythonz*/path/to/non-installed/lib/python9.8/os.py�0/path/to/non-installed/lib/python9.8/lib-dynloadrwzhome = /path/to/non-installedz/path/to/non-installedr)z'/path/to/non-installed/lib/python98.zipz$/path/to/non-installed/lib/python9.8r~rAr{r-s    r�&test_venv_non_installed_zip_path_posixz7MockGetPathTests.test_venv_non_installed_zip_path_posix�s ��O�
�$��)�
�
�
��
	���>�?�?�?�
���-�.�.�.�
���,�=�	?�	?�	?�
���F�G�G�G�
���K�L�L�L�
���,�,�/
�	�	�	��)�+�0�?�0�5�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc��	tddd���}|�d��|�d��|�d��|�d��|�d	d
g��t	dddddddgd��
��}t||��}|�||��dS)NrZrYrtruz/usr/bin/python9rvr^r_rwrxrr`rArar-s    r�!test_venv_changed_name_copy_posixz2MockGetPathTests.test_venv_changed_name_copy_posix�s��O�
���)�
�
�
��
	���-�.�.�.�
���-�.�.�.�
���4�5�5�5�
���9�:�:�:�
���,��/
�	�	�	��)���.��#�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc	�x�	tdd���}|�d��|�d��|�dd��|�d��|�d��tdddddgd��	��}t
||��}|�||��dS)
NrY�/linkfrom/python)r[rr]r^r_rr`rr{r-s    r�test_symlink_normal_posixz*MockGetPathTests.test_symlink_normal_posix�s���>�
��$�
�
�
��	���-�.�.�.�
���,�-�-�-�
���,�.?�@�@�@�
���4�5�5�5�
���9�:�:�:��)�.���$%�!�!�!�

�
�
����X�&�&������6�*�*�*�*�*rc���	tdd���}|�d��|�d��|�dd��|�d��|�ddg��|�d��|�d	��tddddd
ddgd��
��}t
||��}|�||��dS)Nr�rfrgrerhrirjrkrlrmrrnrqr{r-s    r�test_symlink_buildpath_posixz-MockGetPathTests.test_symlink_buildpath_posix�s&��	� �%��
�
�
��	���-�.�.�.�
���1�2�2�2�
���,�.D�E�E�E�
���2�3�3�3�
���8�;W�:X�Y�Y�Y�
���3�4�4�4�
���4�5�5�5��)��$�.�(��$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc	�$�	tddd���}|�d��|�d��|�d��t	dddddgd	��
��}t||��}|�||��dS)NrYr��lib64)r[r�
PLATLIBDIRr]z/usr/lib64/python9.8/os.py� /usr/lib64/python9.8/lib-dynloadr)z/usr/lib64/python98.zipz/usr/lib64/python9.8r�rrar-s    r�test_custom_platlibdir_posixz-MockGetPathTests.test_custom_platlibdir_posixs���8�
��$��
�
�
��
	���,�-�-�-�
���6�7�7�7�
���;�<�<�<��)�.���$%�!�!�!�

�
�
����X�&�&������6�*�*�*�*�*rc�\�	tdddddddd���}|�d��|�d��|�d��|�d	��t	dddddddgd
����}t||��}|�||��dS)N�darwin�\/Library/Frameworks/Python.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/Pythonr�1/Library/Frameworks/Python.framework/Versions/9.8�?/Library/Frameworks/Python.framework/Versions/9.8/bin/python9.8�8/Library/Frameworks/Python.framework/Versions/9.8/Python��os_namer�WITH_NEXT_FRAMEWORKr[�EXEC_PREFIXr@r�library�K/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8/lib-dynload�E/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8/os.py�zB/Library/Frameworks/Python.framework/Versions/9.8/lib/python98.zipz?/Library/Frameworks/Python.framework/Versions/9.8/lib/python9.8r�rA)rbr'r)r(r*r+r,r-s    r�test_framework_macosz%MockGetPathTests.test_framework_macoss���	�
 ��p� !�F�K�$e�z�N�	
�	
�	
��	���y�z�z�z�
���\�]�]�]�
���f�g�g�g�
���a�b�b�b�
�X�F�K�]�K�P�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc�f�	tddddddddddddd��
�
}|�d��|�d��|�d��|�d	��tdddddddgd
����}t	||��}|�||��dS)N�f/Library/Frameworks/DebugPython.framework/Versions/9.8/Resources/Python.app/Contents/MacOS/DebugPythonr�r�6/Library/Frameworks/DebugPython.framework/Versions/9.8�D/Library/Frameworks/DebugPython.framework/Versions/9.8/bin/python9.8�B/Library/Frameworks/DebugPython.framework/Versions/9.8/DebugPython)
rr�r�r[r�r@rr��
PYTHONPATHrT�ENV_PYTHONEXECUTABLE�executable_dir�
py_setpath�P/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8/lib-dynload�J/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8/os.py�zG/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python98.zipzD/Library/Frameworks/DebugPython.framework/Versions/9.8/lib/python9.8r�rA)rbr'r)r*r+r,r-s    r�test_alt_framework_macosz)MockGetPathTests.test_alt_framework_macosEs��	� �z�� !�K�P�$j�E�X���!%���
�
�
��	���D�	E�	E�	E�
���a�b�b�b�
���k�l�l�l�
���g�h�h�h��]�K�P�b�P�U�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc��	d}tddddd|�d�dd���}|�|��|�|�d	���|�|�d
���|�|�d���|�|�d���|�d��|�d��|�d
��|�d��|�|�d�dg��t	|�d�ddddddgd����}t||��}|�||��dS)N�/tmp/workdir/venvr�r�rr��/bin/pythonr�r��/bin�/lib�/lib/python9.8r�r�r��/pyvenv.cfgz<home = /Library/Frameworks/Python.framework/Versions/9.8/binr�rA�rbr)r'r(r*r+r,�r�	venv_pathr.r/r0s     r�test_venv_framework_macosz*MockGetPathTests.test_venv_framework_macosts���	�'�	�
��p� !�F�K�'0�$=�$=�$=�z�N�	
�	
�	
��	����#�#�#�
���I�+�+�+�,�,�,�
���I�+�+�+�,�,�,�
���I�5�5�5�6�6�6�
���i�4�4�4�5�5�5�
���y�z�z�z�
���\�]�]�]�
���f�g�g�g�
���b�c�c�c�
���Y�3�3�3�J�6
�	�	�	��#�0�0�0�F�K�]�K�P�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc��	d}tddddd|�d�dd���}|�|��|�|�d	���|�|�d
���|�|�d���|�|�d���|�d��|�d��|�d
��|�d��|�|�d�dg��t	|�d�ddddddgd����}t||��}|�||��dS)Nr�r�r�rr�r�r�r�r�r�r�r�r�r�r�zAhome = /Library/Frameworks/DebugPython.framework/Versions/9.8/binr�rAr�r�s     r�test_venv_alt_framework_macosz.MockGetPathTests.test_venv_alt_framework_macos�s���	�(�	�
��z� !�K�P�'0�$=�$=�$=�E�X�	
�	
�	
��	����#�#�#�
���I�+�+�+�,�,�,�
���I�+�+�+�,�,�,�
���I�5�5�5�6�6�6�
���i�4�4�4�5�5�5�
���D�	E�	E�	E�
���a�b�b�b�
���k�l�l�l�
���g�h�h�h�
���Y�3�3�3�O�6
�	�	�	��#�0�0�0�K�P�b�P�U�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc��	tddddd���}|�d��|�d��|�d��|�d��|�dd	g��t	ddddddd
gd����}t||��}|�||��dS)
Nr�r]rYz/framework/Python9.8/python)r�rr[r@rr^r_z/framework/Python9.8/pyvenv.cfgrxrr`rArar-s    r�test_venv_macosz MockGetPathTests.test_venv_macos�s��	�
 ��#��$A�-�
�
�
��	���,�-�-�-�
���8�9�9�9�
���4�5�5�5�
���9�:�:�:�
���;��>
�	�	�	��4���-��#�$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*rc	�~�	tddddd���}|�d��|�d��|�dd��|�d��|�d	��tddddd
gd����}t
||��}|�||��dS)
Nr�rYrZ�/linkfrom:/usr/binr�)r�r[rr\rr]r^r_rr`rr{r-s    r�test_symlink_normal_macosz*MockGetPathTests.test_symlink_normal_macos�s���?�
����)�.�

�
�
��	���-�.�.�.�
���,�-�-�-�
���,�.?�@�@�@�
���4�5�5�5�
���9�:�:�:��)�.���$%�!�!�!�

�
�
����X�&�&������6�*�*�*�*�*rc���	tddddd���}|�d��|�d��|�dd��|�d��|�d	d
g��|�d��|�d��tddddd
ddgd����}t
||��}|�||��dS)Nr�rZr�rfr�)r�rr\r[rrerhrizbuild/lib.macos-9.8rkrlrmr)rorpz!/home/cpython/build/lib.macos-9.8rqr{r-s    r�test_symlink_buildpath_macosz-MockGetPathTests.test_symlink_buildpath_macoss/��	� ���)��.�

�
�
��	���-�.�.�.�
���1�2�2�2�
���,�.D�E�E�E�
���2�3�3�3�
���8�;P�:Q�R�R�R�
���3�4�4�4�
���4�5�5�5��)��$�.�(��$%�!�!�!�

�

�

����X�&�&������6�*�*�*�*�*r)�__name__�
__module__�__qualname__r
r1r>rDrLrPrRrUrWrcrrryr|rr�r�r�r�r�r�r�r�r�r�r��
__classcell__�rs@rrrs�������������+�+�+�2+�+�+�4#+�#+�#+�J/+�/+�/+�b+�+�+�6+�+�+�8+�+�+�<+�+�+�.+�+�+�2+�+�+�B+�+�+�>+�+�+�@+�+�+�B+�+�+�>+�+�+�4!+�!+�!+�F+�+�+�2'+�'+�'+�R-+�-+�-+�^)+�)+�)+�V++�++�++�Z#+�#+�#+�J+�+�+�<%+�%+�%+�%+�%+�%+�%+rrr[r6r�r��VPATHr��
PYDEBUGEXT�
VERSION_MAJOR�	�
VERSION_MINOR��PYWINVER�
EXE_SUFFIXr\rTr�r@rr�rr�r�rGr;�venv_prefix�home�
platlibdir�
pythonpath�program_namer!r"rBrCrr �
stdlib_dir�platstdlib_dirr$r#�pythonpath_env�argv�	orig_argv�isolatedrIr�use_sitec���eZdZddd��fd�
Zdd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Z�xZS)r&N�rrHc�t��|�t��t���|d<d|d<d|d<d|d<d|d	<t	��j|i|��|r|g|dd
<|r|d�|��i|_i|_t��|_	g|_
dS)NrH�ntr��DLLsr�z9.8-XYr�z..\..r�r�)�update�DEFAULT_NAMESPACE�DEFAULT_CONFIG�copyr	r
�_files�_links�set�_dirs�	_warnings�rrrHr
rrs     �rr
zMockNTNamespace.__init__ls�������%�&�&�&�'�,�,�.�.��X����Y��#��\��#��Z�� ��W�
������!�"�r�"�"�"��	2�+0�'�D��N�;�'��	*���N�!�!�&�)�)�)��������U�U��
�����rc��t|pd��|j|���<|�|�d��d��dS)N��\r)�listr��casefoldr)�
rpartition�r�path�liness   rr(zMockNTNamespace.add_known_file}sM��'+�E�K�R�'8�'8���D�M�M�O�O�$����4�?�?�4�0�0��3�4�4�4�4�4rc�0�|�|��dSr)r(�rr�s  rr'zMockNTNamespace.add_known_xfile�s�����D�!�!�!�!�!rc�>�||j|���<dSr)r�r��rr��targets   rrOzMockNTNamespace.add_known_link�s��'-���D�M�M�O�O�$�$�$rc���|�d�����}|r9|j�|��|�d��d}|�7dSdS)Nr�r)�rstripr�r��addr��rr��ps   rr)zMockNTNamespace.add_known_dir�so���K�K����&�&�(�(���	&��J�N�N�1�������T�"�"�1�%�A��	&�	&�	&�	&�	&rc�`�	t||��S#t$rt|��d�wxYwr��getattr�AttributeError�KeyError�r�keys  r�__missing__zMockNTNamespace.__missing__��@��	*��4��%�%�%���	*�	*�	*��3�-�-�T�)�	*������-c�\�|�|��r|S|�d|��S)NzC:\Absolute��isabs�joinpathr�s  r�abspathzMockNTNamespace.abspath�s/���:�:�d���	��K��}�}�^�T�2�2�2rc�8�|�d��dS)Nr���r�r�s  r�basenamezMockNTNamespace.basename�s�����t�$�$�Q�'�'rc��|�d���d��d}|dd�dkr|dzS|S)Nr�rr�:�r�r�)rr��names   r�dirnamezMockNTNamespace.dirname�sF���{�{�4� � �+�+�D�1�1�!�4������8�s�?�?��$�;���rc�t�|����|�����Sr)r��endswith�rr��suffixs   r�	hassuffixzMockNTNamespace.hassuffix�s(���}�}���'�'����(9�(9�:�:�:rc��|dd�dkS)Nr�z:\r�r�s  rrzMockNTNamespace.isabs�s���A�a�C�y�E�!�!rc�h�trtd|d��|���|jvS�N�Check ifzis a dir)r�printr�r�r�s  r�isdirzMockNTNamespace.isdir�s1���	0��*�d�J�/�/�/��}�}���$�*�,�,rc�h�trtd|d��|���|jvS�Nrz	is a file)rrr�r�r�s  r�isfilezMockNTNamespace.isfile�s1���	1��*�d�K�0�0�0��}�}���$�+�-�-rc���trtd|d��|���}||jvo0|�d��dd���kS�Nrzis a module�.r�py�rrr�r�r�r�s  r�ismodulezMockNTNamespace.ismodule�sY���	3��*�d�M�2�2�2��}�}�����t�{�"�Q�t���s�';�';�A�'>�$�-�-�/�/�'Q�Qrc���trtd|d��|���}||jvo0|�d��dd���kS)Nrzis a executabler r�exer"r�s  r�isxfilezMockNTNamespace.isxfile�s\���	7��*�d�$5�6�6�6��}�}�����t�{�"�R�t���s�';�';�A�'>�%�.�.�BR�BR�'R�Rrc�B�tjtj|���Sr)�ntpath�normpath�joinr�s  rrzMockNTNamespace.joinpath�s����v�{�D�1�2�2�2rc�~�	|j|���S#t$rt|��d�wxYwr)r�r�r��FileNotFoundErrorr�s  r�	readlineszMockNTNamespace.readlines�sG��	4��;�t�}�}���/�/���	4�	4�	4�#�D�)�)�t�3�	4���s�!�<c�|�trtd|��	|j|���}n#t$r|cYSwxYw|�t��}n%|���|vrt
d���|�|�����|�||��S�NzRead link fromz
circular link)	rrr�r�r�r��OSErrorr��realpath�rr��_trail�links    rr1zMockNTNamespace.realpath�s����	*��"�D�)�)�)�	��;�t�}�}���/�D�D���	�	�	��K�K�K�	�����>��U�U�F�F�
�]�]�_�_��
&�
&��/�*�*�*��
�
�4�=�=�?�?�#�#�#��}�}�T�6�*�*�*s�9�A�Ac�j�|j�|��trt|��dSdSr�r��appendrr�r�messages  r�warnzMockNTNamespace.warn��9������g�&�&�&��	��'�N�N�N�N�N�	�	rr�r�r�r�r
r(r'rOr)r�rr	rrrrrr#r&rr-r1r:r�r�s@rr&r&kse�������!%�d��������"5�5�5�5�"�"�"�.�.�.�&�&�&�*�*�*�3�3�3�
(�(�(����;�;�;�"�"�"�-�-�-�
.�.�.�
R�R�R�S�S�S�3�3�3�4�4�4�+�+�+�+�������rr&c�F�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)rJ�HKLM�HKCUc�Z�d�|���D��|_i|_dS)Nc�>�i|]\}}|���|��Sr�)r�)�.0�k�vs   r�
<dictcomp>z'MockWinreg.__init__.<locals>.<dictcomp>�s&��>�>�>���A�Q�Z�Z�\�\�1�>�>�>r)�items�keys�open)rrGs  rr
zMockWinreg.__init__�s*��>�>������>�>�>��	���	�	�	rc��dS)Nz<MockWinreg>r��rs r�__repr__zMockWinreg.__repr__�s���~rc�<�t|t|����Sr)�
isinstance�type)r�others  r�__eq__zMockWinreg.__eq__�s���%��d���,�,�,rc�*�t|j��Sr)r�rHrJs r�	open_keyszMockWinreg.open_keys�s���D�I���rc���trtd|�d|�d���|�d|�����}||jvr(|j�|d��dz|j|<|St
���)Nz
OpenKeyEx(�, �)r�rr)rrr�rGrH�getr,)rrK�subkeyr�s    r�	OpenKeyExzMockWinreg.OpenKeyEx�s����	2��0�t�0�0�v�0�0�0�1�1�1��!�!��!�!�*�*�,�,���$�)���!�Y�]�]�3��2�2�Q�6�D�I�c�N��J��!�!�!rc���trtd|�d���|���}||jvrt	d���|j|xxdzcc<|j|s
|j|=dSdS)Nz	CloseKey(rU�key is not openr)rrr�rH�RuntimeError)rrKs  r�CloseKeyzMockWinreg.CloseKey�s����	'��%�d�%�%�%�&�&�&��}�}�����t�y� � ��0�1�1�1��	�$����1������y���	 ��	�$����	 �	 rc���trtd|�d|�d���|���}||jvrt	d���|�d���fd�t|j��D��}d�|D��|dd�<t|��D]"\}}||kr|����cS�#td���)	NzEnumKey(rTrUrZr�c�h��g|].}|�����|t���d���/Sr)�
startswith�len)rBrCr!s  �r�
<listcomp>z&MockWinreg.EnumKey.<locals>.<listcomp>s8���V�V�V�q����f�AU�AU�V�1�S��[�[�\�\�?�V�V�Vrc��g|]}d|v�|��	S)r�r��rBrCs  rraz&MockWinreg.EnumKey.<locals>.<listcomp>s��:�:�:�A�D��M�M�a�M�M�Mrzend of enumeration)
rrr�rHr[�sortedrG�	enumerate�removeprefixr0)rrK�i�subkeys�j�nr!s      @r�EnumKeyzMockWinreg.EnumKey�s�����	+��)�T�)�)�Q�)�)�)�*�*�*��}�}�����t�y� � ��0�1�1�1������V�V�V�V�F�4�9�,=�,=�V�V�V��:�:��:�:�:�����
��g�&�&�	.�	.�D�A�q��A�v�v��~�~�f�-�-�-�-�-���*�+�+�+rc�"�trtd|�d|�d���|���}||jvrt	d���|r|���}|�d|��}	|j|S#t$rt���wxYw)NzQueryValue(rTrUrZr�)rrr�rHr[rGr�r0)rrKrWs   r�
QueryValuezMockWinreg.QueryValues����	3��1��1�1��1�1�1�2�2�2��}�}�����t�y� � ��0�1�1�1��	'��_�_�&�&�F��&�&�f�&�&�D�	��9�T�?�"���	�	�	��)�)�O�	���s�(A5�5BN)
r�r�r��HKEY_LOCAL_MACHINE�HKEY_CURRENT_USERr
rKrPrRrXr\rkrmr�rrrJrJ�s�����������������-�-�-����"�"�"� � � �,�,�,�����rrJc���eZdZddd��fd�
Zdd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Z�xZS)rbNr�c���|�t��t���|d<d|d<d|d<d|d<t	��j|i|��|r|g|dd<|r|d�|��i|_t��|_i|_	t��|_
g|_dS)	NrH�posixr��libr�rr�r�)r�r�r�r�r	r
r�r��_xfilesr�r�r�r�s     �rr
zMockPosixNamespace.__init__s�������%�&�&�&�'�,�,�.�.��X��!��Y��"��\��&'��
"�#������!�"�r�"�"�"��	2�+0�'�D��N�;�'��	*���N�!�!�&�)�)�)�����u�u�������U�U��
�����rc��t|pd��|j|<|�|�d��d��dS)Nr��/r)r�r�r)r�r�s   rr(z!MockPosixNamespace.add_known_file-sE�� ���"�-�-���D�����4�?�?�3�/�/��2�3�3�3�3�3rc�d�|�|��|j�|��dSr)r(rtr�r�s  rr'z"MockPosixNamespace.add_known_xfile1s2�����D�!�!�!����������rc��||j|<dSr)r�r�s   rrOz!MockPosixNamespace.add_known_link5s��"���D���rc��|�d��}|r9|j�|��|�d��d}|�7dSdS�Nrvr)r�r�r�r�r�s   rr)z MockPosixNamespace.add_known_dir8sc���K�K������	%��J�N�N�1�������S�!�!�!�$�A��	%�	%�	%�	%�	%rc�`�	t||��S#t$rt|��d�wxYwrr�r�s  rr�zMockPosixNamespace.__missing__>r�rc�\�|�|��r|S|�d|��S)Nz	/Absoluterr�s  rrzMockPosixNamespace.abspathDs/���:�:�d���	��K��}�}�[�$�/�/�/rc�8�|�d��dS)Nrvrrr�s  rr	zMockPosixNamespace.basenameIs�����s�#�#�A�&�&rc�^�|�d���d��dSrzrr�s  rrzMockPosixNamespace.dirnameLs'���{�{�3���*�*�3�/�/��2�2rc�,�|�|��Sr)rrs   rrzMockPosixNamespace.hassuffixOs���}�}�V�$�$�$rc��|dd�dkS)Nrrrvr�r�s  rrzMockPosixNamespace.isabsRs���A�a�C�y�C��rc�D�trtd|d��||jvSr)rrr�r�s  rrzMockPosixNamespace.isdirUs)���	0��*�d�J�/�/�/��t�z�!�!rc�D�trtd|d��||jvSr)rrr�r�s  rrzMockPosixNamespace.isfileZs)���	1��*�d�K�0�0�0��t�{�"�"rc��trtd|d��||jvo|�d��ddkSr)rrr�r�r�s  rr#zMockPosixNamespace.ismodule_sD���	3��*�d�M�2�2�2��t�{�"�F�t���s�';�';�A�'>�$�'F�Frc�D�trtd|d��||jvS)Nrzis an xfile)rrrtr�s  rr&zMockPosixNamespace.isxfileds)���	3��*�d�M�2�2�2��t�|�#�#rc�B�tjtj|���Sr)�	posixpathr)r*r�s  rrzMockPosixNamespace.joinpathis���!�)�.�$�"7�8�8�8rc�Z�	|j|S#t$rt|��d�wxYwr)r�r�r,r�s  rr-zMockPosixNamespace.readlinesls?��	4��;�t�$�$���	4�	4�	4�#�D�)�)�t�3�	4���s��*c��trtd|��	|j|}n#t$r|cYSwxYw|�t	��}n||vrtd���|�|��|�||��Sr/)rrr�r�r�r0r�r1r2s    rr1zMockPosixNamespace.realpathrs����	*��"�D�)�)�)�	��;�t�$�D�D���	�	�	��K�K�K�	�����>��U�U�F�F�
�V�^�^��/�*�*�*��
�
�4�����}�}�T�6�*�*�*s�
'�6�6c�j�|j�|��trt|��dSdSrr6r8s  rr:zMockPosixNamespace.warn�r;rrr<r�s@rrbrbsb�������!%�d��������"4�4�4�4����#�#�#�%�%�%�*�*�*�0�0�0�
'�'�'�3�3�3�%�%�%� � � �"�"�"�
#�#�#�
G�G�G�
$�$�$�
9�9�9�4�4�4�+�+�+�+�������rrb�globalc
�~�g}t|��D]p}|dd�dkr�|dkrt||||d����6||vr6||||kr$|�|||||f���q|sdStd�|D����}dt	|��dz|zz}t
r||D]{\}}}|r:t
d�||�|��|||�����Bt
d	�||�|��|�����zdSdS)
Nr�__rH�r!c3�<K�|]\}}}t|��V��dSr�r`)rBrC�_s   r�	<genexpr>zdiff_dict.<locals>.<genexpr>�s.����+�+�7�1�a���A���+�+�+�+�+�+r� rz{}.{} -{!r}
{} +{!r}z{}.{} +{!r})	rd�	diff_dictr7�maxr`rr�format�ljust)	�before�afterr!�diffrC�max_k�indent�br
s	         rr�r��sz��
�D�
�F�^�^�2�2���R�a�R�5�D�=�=����=�=��f�Q�i��q��(�;�;�;�;����:�:�%��(�f�Q�i�/�/��K�K��F�1�I�u�Q�x�0�1�1�1�������+�+�d�+�+�+�+�+�E�
�C��K�K�!�O�e�+�
,�F��G��	G�	G�G�A�q�!��
G��-�4�4�V�Q�W�W�U�^�^�Q�PV�XY�Z�Z�[�[�[�[��m�*�*�6�1�7�7�5�>�>�1�E�E�F�F�F�F�G�G�	G�	Grc
�2�tr|sdStd�|D����}t|���d����D]�\}}|dd�dkr�|dkrt	||||d����9	|||kr?td�||�|��|||������n#t$rYnwxYwtd	�||�|��|������dS)
Nc3�4K�|]}t|��V��dSrr�rcs  rr�zdump_dict.<locals>.<genexpr>�s(����&�&�1��A���&�&�&�&�&�&rc��|dS)Nrr�)rgs r�<lambda>zdump_dict.<locals>.<lambda>�s
��A�a�D�r)r�rr�rHr�z{}.{} {!r} (was {!r})z
{}.{} {!r})	rr�rdrF�	dump_dictrr�r�r�)r�r�r!r�rCrDs      rr�r��s@����%�����&�&��&�&�&�&�&�E��u�{�{�}�}�.�.�9�9�9�>�>���1��R�a�R�5�D�=�=����=�=��f�Q�i��q��(�;�;�;�;��	��F�1�I�~�~��-�4�4�V�Q�W�W�U�^�^�Q�PV�WX�PY�Z�Z�[�[�[�����	�	�	��D�	����
�l�!�!�&�!�'�'�%�.�.�!�<�<�=�=�=�=�>�>s�A
C�
C�Cc���tj���}d}	tt���d}|rt	|���n9t|���n(#|rt	|���wt|���wxYw�fd�|D��S)NTFc
�r��i|]3}|�d�|��|d������4S)rH.)rV)rBrCr.s  �rrEzgetpath.<locals>.<dictcomp>�sK������
�	
�2�h�<���A�r�v�v�a��~�~�.�.���r)r��deepcopy�exec�SOURCEr�r�)r.rGr��faileds`   rr+r+�s����
�]�2�
�
�F�
�F�"��V�R�������	"��f�b�!�!�!�!��f�b�!�!�!�!���	"��f�b�!�!�!�!��f�b�!�!�!�!������������s�A�%A9r�)r�)r�r(�pathlibr��sys�unittest�test.supportr�Path�__file__�absolute�parent�
read_bytesr�r,�_testinternalcapir�TestCaserr*r�r�r&rJrbr�r�r+r�rr�<module>r�s�������
�
�
�
���������
�
�
�
����� � � � � � �&��g�l�8�$�$�-�-�/�/�6�=�D�G[�[�
g�
g�
i�
i�F�F���&�&�&�8�8�8�8�8�8�
#�
#�
%�
%�F�F�F�&����a+�a+�a+�a+�a+�x�(�a+�a+�a+�L�D����
�2������r��
�"�	�
�r���r�
��!���!���T���t���R���2������B�� 
�"�!�"�r�#�$�B�%�&�2�'�(
�B�)�*�4�+�,��-�.��/��4�����	
����t���t����	�
�4����
�����T���t���B���t���4������A���4�� 
��!�"�d�#�&�Q�'�(�A�)�*�Q�+��0l�l�l�l�l�d�l�l�l�^>�>�>�>�>�>�>�>�Bh�h�h�h�h��h�h�h�VG�G�G�G�,>�>�>�>�&����s�AA'�'A?�>A?