403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.51
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python315/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python315/Lib/test/__pycache__/test_ntpath.cpython-315.pyc
R
>lqj�Nc��]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PH s]QHG	s	G
s
]QH,Gs]QH4Gs]QH4Gs]QH@Gs]QH,Gs]QHLGs]PHVs\O.P	s]PHjsP	sQsQ	sQ
sQsQQ
\O@2s!QQ\!2s"QQ\OF\O@2s$QQ\!2s%\&Q6Xc\ON2P!P!\cPsK�h9h\cP
sK�h9h\cP
sK�h9h)�)�ALL_BUT_LAST�
ALLOW_MISSING)�support)�	os_helper)�warnings_helper)�FakePath)�test_genericpath)�
TemporaryFilec��[OQP	Q5Oo[O[O[O,Um[OUmUUP]2oU%f.[QO[O222g[OU2oUVU2oUPU!)�kernel32)�use_last_errorz&failed to get short path name 0x{:08X})�ctypes�WinDLL�GetShortPathNameW�	c_wchar_p�c_uint32�argtypes�restype�OSError�format�get_last_error�create_unicode_buffer)�path�GSPN�
result_len�results&   �%C:\Python315\\Lib\test\test_ntpath.py�_getshortpathnamer's����}�}�Z��=�O�O���)�)�6�+;�+;�V�_�_�M��
�������$��a�(�
���B�!�6�&�"7�"7�"9�:�<�
<��-�-�j�9���$�
�3�
��k�z�"�"�c�,�[U[[[O12%c+[
O[OU22![UQ2%c,[9PIc,QU2DMJ	3!QU22!U!)�__iter__c3��SF �D0o[O[OU22w�	J2	P!3h�N)�ntpath�normcase�os�fsdecode)�.0�ps& r�	<genexpr>�_norm.<locals>.<genexpr>7s$��d���d��V�_�_�R�[�[��^�4�4�d�s�8?)
�
isinstance�bytes�strr%�PathLiker#r$r&�hasattr�tuple)rs&r�_normr13sh���$���R�[�[�1�2�2����r�{�{�4�0�1�1�	��z�	"�	"��u�C�d�C�u�u�C�u�C�d�C�C�C��Krc	���UOQQ2o[U2oV6wcV[U2[U26wc=[O[U28Q[U28Q[U2802gUOQQ2oUOQQ2oUOQQ	2oUOQ
Q2oUOQQ
2oUOQQ2o[OU2OQ2oUOQQ2OQ2o[O29^tt^2[OQ[2[U2oPPP2[U2[U26wc=[O[U28Q[U28Q[U2802gP!)%fhKg9h)�\�\\z should return: z but returned: z('z(b'z("z(b"z['z[b'z["z[b"z, 'z, b'z, "z, b"�latin1�ascii�backslashreplace�ignore)�replace�evalr1r�
TestFailedr-r%�fsencode�decode�encode�warnings�catch_warnings�simplefilter�DeprecationWarning�repr)�fn�
wantResult�	gotResults&& r�testerrG;sn��	���D�&�	!�B��R��I���5��#4��i�8H�#H�� � ��B���Z��#�i�.�":�;�	;�
���D�%�	 �B�	���D�%�	 �B�	���D�%�	 �B�	���D�%�	 �B�	���E�6�	"�B�	���E�6�	"�B�	���R��	�	��	)�B�	���7�.�	/�	6�	6�w�	?�B�	�	 �	 �	"�	"����h�(:�;���H�	�
#�
�Z��E�)�,�,�� � ��B���Z��$�y�/�";�<�	<�-�
#�	"�s�	'G�G	�G	c�6�[OQUP	Q5!)�kwargs)�_do_cleanups)r�subTests)�
parameterss*r�
_parameterizerMSs�����H�j�t�D�Drc�.`�\sQs]WsnQsQsQsUsP!)�NtpathTestCasec�l�V6Xf[U2[U26XcP!UOV2P!r")r1�assertEqual)�self�path1�path2s&&&r�assertPathEqual�NtpathTestCase.assertPathEqualXs'���>�U�5�\�U�5�\�9������&rc�P�UO[U2[U22P!r")�assertInr1)rRr�pathsets&&&r�assertPathIn�NtpathTestCase.assertPathIn]s���
�
�e�D�k�5��>�2r�)�__name__�
__module__�__qualname__�__firstlineno__rUrZ�__static_attributes__�__classdictcell__��
__classdict__s@rrOrOWs����'�
3�3rrOc	�`�\sQs]asnQsQsQsQsQsQs	Qs
QsQ	sQ
s
QsQsQ
sQsQsQsQsQsQsQsQs\O4\O8\Q2\-QP	-Q\-2Q222s \O4\O8\Q2Q22s!\O8\Q2Q2s"\O8\Q2\-QP	-Q\#-Q\-2Q22s$\O4\O8\Q2\-QP	-Q\#-Q\-2Q222s%\O4\O8\Q2Q22s&\O4\O8\Q2Q22s'\O4\O8\Q2Q22s(\O4\O8\Q2Q 22s)\O4\O8\Q2\-QP	-Q\#-Q\-2Q!222s*\O8\Q2Q"2s+\O8\Q2\O8\,Q#2Q$22s-\O8\Q2Q%2s.\O4\O8\Q2Q&22s/Q's0\O8\ObQ(2Q)2s2\3OhQ*2Q+2s5Q,s6\O8\7Q-2Q.2s8Q/s9Q0s:Q1s;Q2s<Q3s=Q4s>Q5s?Q6s@\O8\7Q72Q82sA\O�\CO�Q96gQ:2Q;2sEQ<sF\O�\CO�Q96gQ=2Q>2sG\O8\H\IQ?2Q@2QA2sJ\O�\CO�Q96gQB2QC2sK\O�\CO�Q96gQB2QD2sL\O�\CO�Q96gQE2\3O�QF22sN\O�\IO�QG6gQH2QI2sP\O�\IO�QG6HQJ2QK2sQQLsRUsSP!)M�
TestNtpathc��[QQ
2[QQ2[QQ2[QQ
2[QQ2[QQ2[QQ2[QQ2[QQ2[Q	Q2P!)zntpath.splitext("foo.ext")zntpath.splitext("/foo/foo.ext")zntpath.splitext(".ext")zntpath.splitext("\foo.ext\foo")zntpath.splitext("foo.ext\")zntpath.splitext("")zntpath.splitext("foo.bar.ext")z!ntpath.splitext("xx/foo.bar.ext")z!ntpath.splitext("xx\foo.bar.ext")zntpath.splitext("c:a/b\c.d"))�foo�.ext)z/foo/foori)ri�)z\foo.ext\foorj)zfoo.ext\rj�rjrj)zfoo.barri)z
xx/foo.barri)z
xx\foo.barri)zc:a/b\cz.d�rG�rRs&r�
test_splitext�TestNtpath.test_splitextbsw���+�_�=��0�2F�G��(�,�7��2�4J�K��-�/@�A��$�h�/��/�1D�E��2�4J�K��3�5L�M��.�0B�Crc��[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[Q	Q2[Q
Q2[QQ2[QQ2[Q
Q2[QQ 2[QQ!2[QQ"2[QQ#2P!)$zntpath.splitdrive('')zntpath.splitdrive('foo')zntpath.splitdrive('foo\bar')zntpath.splitdrive('foo/bar')zntpath.splitdrive('\')zntpath.splitdrive('/')zntpath.splitdrive('\foo\bar')zntpath.splitdrive('/foo/bar')zntpath.splitdrive("c:foo\bar")zntpath.splitdrive("c:foo/bar")zntpath.splitdrive("c:\foo\bar")zntpath.splitdrive("c:/foo/bar")zntpath.splitdrive('\\')zntpath.splitdrive('//')z/ntpath.splitdrive("\\conky\mountpoint\foo\bar")z/ntpath.splitdrive("//conky/mountpoint/foo/bar")z-ntpath.splitdrive("\\?\UNC\server\share\dir")z-ntpath.splitdrive("//?/UNC/server/share/dir")rk)rjrh)rj�foo\bar)rj�foo/bar)rjr3)rj�/)rj�\foo\bar)rj�/foo/bar)�c:rq)rvrr)rvrt)rvru)r4rj)�//rj)�\\conky\mountpointrt)�//conky/mountpointru)�\\?\UNC\server\share�\dir)�//?/UNC/server/share�/dirrlrms&r�test_splitdrive�TestNtpath.test_splitdrivens����&��1��)�;�7��.�0@�A��-��?��(�*�5��'��3��0�2D�E��.�0@�A��0�2D�E��/�1B�C��2�4H�I��0�2D�E��*�L�9��(�*�5��E�6�	8��@�1�	3��D�5�	7��>�/�	1rc��[OoUOUQ2Q2UOUQ2Q	2UOUQ2Q
2[OQ6XcHUO[UQ2UO[UQ2UO[UQ2P!UOUQ2Q2P!)�\\server\share\dir�\\server\share\dir�
\\�\�\��win32�
\\�\share\dir�\\server\�\dir�\\server\share\��\\�\�\�)�\\server\sharez\dir)�\\server\shares\dir)�	\\�\�u\�)�\\�\�s\�)r#�
splitdriverQ�sys�platform�assertRaises�UnicodeDecodeError)rRr�s& r�test_splitdrive_invalid_paths�(TestNtpath.test_splitdrive_invalid_paths�s����&�&�
�����$H�I�C�	E�����$I�J�E�	G�����$@�A�;�	=��<�<�7�"����0�*�>U�V����0�*�>V�W����0�*�>X�Y����Z�(?�@�;�
=rc��[QQ>2[QQ?2[QQ@2[QQA2[QQB2[QQC2[QQD2[QQE2[QQF2[Q	QG2[Q
QH2[QQI2[QQJ2[Q
QK2[QQL2[QQM2[QQN2[QQO2[QQP2[QQQ2[QQR2[QQS2[QQT2[QQU2[QQV2[QQW2UO[OQ2QX2[QQY2[QQZ2[QQ[2[QQ\2[QQ]2[Q Q^2[Q!Q_2[Q"Q`2[Q#Qa2[Q$Qb2[Q%Qc2[Q&Qd2[Q'Qe2[Q(Qf2[Q)Qg2[Q*Qh2[Q+Qi2[Q,Qj2[Q-Qk2[Q.Ql2[Q/Qm2[Q0Qn2[Q1Qo2[Q2Qp2[Q3Qq2[Q4Qr2[Q5Qs2[Q6Qt2[Q7QQ2[Q8Qu2[Q9Qv2[Q:Qw2[Q;Qx2[Q<Qy2[Q=Qz2P!){zntpath.splitroot('')zntpath.splitroot('foo')zntpath.splitroot('foo\bar')zntpath.splitroot('foo/bar')zntpath.splitroot('\')zntpath.splitroot('/')zntpath.splitroot('\foo\bar')zntpath.splitroot('/foo/bar')zntpath.splitroot("c:foo\bar")zntpath.splitroot("c:foo/bar")zntpath.splitroot("c:\foo\bar")zntpath.splitroot("c:/foo/bar")zntpath.splitroot('c:\\a')zntpath.splitroot('c:\\\a/b')zntpath.splitroot('c:/\')zntpath.splitroot('c:\/')zntpath.splitroot('/\a/b\/\')zntpath.splitroot('\/a\b/\/')zntpath.splitroot('\\')zntpath.splitroot('//')z.ntpath.splitroot("\\conky\mountpoint\foo\bar")z.ntpath.splitroot("//conky/mountpoint/foo/bar")z/ntpath.splitroot("\\\conky\mountpoint\foo\bar")z/ntpath.splitroot("///conky/mountpoint/foo/bar")z/ntpath.splitroot("\\conky\\mountpoint\foo\bar")z/ntpath.splitroot("//conky//mountpoint/foo/bar")u//conky/MOUNTPOİNT/foo/barzntpath.splitroot("//?/c:")zntpath.splitroot("//./c:")zntpath.splitroot("//?/c:/")zntpath.splitroot("//?/c:/dir")zntpath.splitroot("//?/UNC")zntpath.splitroot("//?/UNC/")z#ntpath.splitroot("//?/UNC/server/")z(ntpath.splitroot("//?/UNC/server/share")z,ntpath.splitroot("//?/UNC/server/share/dir")zIntpath.splitroot("//?/VOLUME{00000000-0000-0000-0000-000000000000}/spam")z&ntpath.splitroot("//?/BootPartition/")z&ntpath.splitroot("//./BootPartition/")z&ntpath.splitroot("//./PhysicalDrive0")zntpath.splitroot("//./nul")zntpath.splitroot("\\?\c:")zntpath.splitroot("\\.\c:")zntpath.splitroot("\\?\c:\")zntpath.splitroot("\\?\c:\dir")zntpath.splitroot("\\?\UNC")zntpath.splitroot("\\?\UNC\")z#ntpath.splitroot("\\?\UNC\server\")z(ntpath.splitroot("\\?\UNC\server\share")z,ntpath.splitroot("\\?\UNC\server\share\dir")zIntpath.splitroot("\\?\VOLUME{00000000-0000-0000-0000-000000000000}\spam")z&ntpath.splitroot("\\?\BootPartition\")z&ntpath.splitroot("\\.\BootPartition\")z&ntpath.splitroot("\\.\PhysicalDrive0")zntpath.splitroot("\\.\nul")zntpath.splitroot("//")zntpath.splitroot("///")zntpath.splitroot("///y")zntpath.splitroot("//x")zntpath.splitroot("//x/")zntpath.splitroot(" :/foo")zntpath.splitroot("/:/foo"))rjrjrj)rjrjrh)rjrjrq)rjrjrr)rjr3rj)rjrsrj)rjr3rq)rjrsrr)rvrjrq)rvrjrr)rvr3rq)rvrsrr)rvr3�\a)rvr3z\\a/b)rvrsr3)rvr3rs)z/\a/br3z/\)z\/a\brsz\/)r4rjrj)rwrjrj)rxr3rq)ryrsrr)z\\\conkyr3�mountpoint\foo\bar)z///conkyrs�mountpoint/foo/bar)z\\conky\r3r�)z//conky/rsr�)u//conky/MOUNTPOİNTrsrr)�//?/c:rjrj)z//./c:rjrj)r�rsrj)r�rs�dir)z//?/UNCrjrj)z//?/UNC/rjrj)z//?/UNC/server/rjrj)r|rjrj)r|rsr�)z0//?/VOLUME{00000000-0000-0000-0000-000000000000}rs�spam)z//?/BootPartitionrsrj)z//./BootPartitionrsrj)z//./PhysicalDrive0rjrj)z//./nulrjrj)�\\?\c:rjrj)z\\.\c:rjrj)r�r3rj)r�r3r�)z\\?\UNCrjrj)z\\?\UNC\rjrj)z\\?\UNC\server\rjrj)rzrjrj)rzr3r�)z0\\?\VOLUME{00000000-0000-0000-0000-000000000000}r3r�)z\\?\BootPartitionr3rj)z\\.\BootPartitionr3rj)z\\.\PhysicalDrive0rjrj)�\\.\nulrjrj)z///rjrj)z///yrjrj)z//xrjrj)z//x/rjrj)z :rsrh)rjrsz:/foo)rGrQr#�	splitrootrms&r�test_splitroot�TestNtpath.test_splitroot�s���%�|�4��(�/�:��-�/C�D��,�.A�B��'��8��&�
�6��/�1G�H��-�/C�D��/�1G�H��.�0E�F��1�3K�L��/�1G�H�	�,�.A�B��0�2I�J�	�*�,=�>��*�,=�>��0�2I�J��0�2I�J�	�)�+;�<��'��8��D�:�	<��?�5�	7��F�9�	;��@�3�	5��F�<�	>��@�6�	8�	
����)�)�*G�H�@�	B�	�+�-?�@��+�-?�@��,�.A�B��/�1G�H��,�.A�B��-�/C�D��4�6Q�R��9�;[�\��=�?c�d��Z�P�	R��7�9W�X��7�9W�X��7�9W�X��,�.A�B��.�0E�F��.�0E�F��0�2I�J��3�5O�P��/�1G�H��1�3K�L��9�;[�\��>�4�	6��C�9�	;��^�T�	V��;�=_�`��;�=_�`��:�<]�^��/�1G�H�	�'��8��(�/�:��)�+;�<��(�/�:��)�+;�<�	�+�-?�@��+�-?�@rc��[OoUOUQ2Q2UOUQ2Q	2UOUQ2Q
2[OQ6XcHUO[UQ2UO[UQ2UO[UQ2P!UOUQ2Q2P!)r�r�r�r�r�r�r�r�)r�r3zdir)r��\sdir)r�r3u�)r�r���)r#r�rQr�r�r�r�)rRr�s& r�test_splitroot_invalid_paths�'TestNtpath.test_splitroot_invalid_paths�s����$�$�	�����#G�H�G�	I�����#H�I�J�	L�����#?�@�?�	A��<�<�7�"����0�)�=T�U����0�)�=U�V����0�)�=W�X����Y�'>�?�@�
Brc��[QQ2[QQ2[QQ2[QQ	2[QQ
2[QQ2P!)zntpath.split("c:\foo\bar")z*ntpath.split("\\conky\mountpoint\foo\bar")zntpath.split("c:\")z#ntpath.split("\\conky\mountpoint\")zntpath.split("c:/")z#ntpath.split("//conky/mountpoint/"))�c:\foo�bar)z\\conky\mountpoint\foor�)�c:\rj)z\\conky\mountpoint\rj)�c:/rj)z//conky/mountpoint/rjrlrms&r�
test_split�TestNtpath.test_splitsP���-�/A�B��@�4�	6�	�%�|�4��8�.�	0�	�$�k�2��4�6Q�Rrc�r�[OoUOUQ2Q2UOUQ2Q2UOUQ2Q	2[OQ6Xc1UO[UQ2UO[UQ2P!UOUQ2Q
2P!)zc:\foo\barsc:\foo\baru
c:\�\�r�sc:\�\barsc:\foo\�sc:\�\�)�c:\foozbar)�c:\foosbar)�c:\�u�)�c:\���)r#�splitrQr�r�r�r�)rRr�s& r�test_split_invalid_paths�#TestNtpath.test_split_invalid_pathss�����������5�6�3�	5�����6�7�5�	7�����3�4�1�	3��<�<�7�"����0�%�9I�J����0�%�9I�J����U�#4�5�3�
5rc�(�[Q]2[Q]2[Q]2[Q]2[Q]2[Q]2[Q]2[Q]2[Q]2[Q	]2[Q
]2[Q]2P!)zntpath.isabs("foo\bar")zntpath.isabs("foo/bar")zntpath.isabs("c:\")zntpath.isabs("c:\foo\bar")zntpath.isabs("c:/foo/bar")z#ntpath.isabs("\\conky\mountpoint\")zntpath.isabs("\foo\bar")zntpath.isabs("/foo/bar")zntpath.isabs("c:foo\bar")zntpath.isabs("c:foo/bar")z"ntpath.isabs("\\conky\mountpoint")zntpath.isabs("\\.\C:")rlrms&r�
test_isabs�TestNtpath.test_isabss����)�1�-��(�!�,��%�q�)��-�q�1��+�Q�/��8�!�<�	�+�Q�/��)�1�-��+�Q�/��*�A�.�	�6��:��*�A�.rc��[OQ[129^tt^2UO2PPP2P!)%fhP!9h)z.*commonpath().*)r�check_warningsrB�do_test_commonprefixrms&r�test_commonprefix�TestNtpath.test_commonprefix-s6��
�
+�
+�-?�AS�,T�
U�
U��%�%�'�V�
U�
U�
U�s�A�A	�
A	c�P�[QQ2[QQ2[QQ2P!)z>ntpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"])z
/home/swenz;ntpath.commonprefix(["\home\swen\spam", "\home\swen\eggs"])z\home\swen\z;ntpath.commonprefix(["/home/swen/spam", "/home/swen/spam"])z/home/swen/spamrlrms&rr��TestNtpath.do_test_commonprefix1s,���O��	��R��	!��L� �	"rc�r�[QP2[QP2[QQ2[QQ2[QQ2[QQ	2[Q
Q2[QQ
2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[Q Q2[Q!Q"2[Q#Q$2[Q%Q&2[Q'Q(2[Q)Q*2[Q+Q,2[Q-Q.2[Q/Q02[Q1Q22[Q3Q42[Q5Q62[Q7Q82[Q9Q:2[Q;Q<2[Q=Q<2[Q>Q02[Q?Q02[Q@Q02[QAQ02[QBQ82[QCQ82[QDQ82[QEQF2[QGQH2[QIQJ2[QKQL2QpFD"oQqFDo[QMU8QNU8QO0U2J	J$	[QPQQ2[QRQQ2[QSQQ2[QTQU2[QVQW2[QXQY2[QZQ[2[Q\Q]2[Q^Q_2[Q`QQ2[QaQb2[QcQd2[QeQf2[QgQh2[QiQd2[QjQk2[QlQm2[QnQo2P!)rzntpath.join("")zntpath.join("", "", "")zntpath.join("a")�azntpath.join("/a")z/azntpath.join("\a")r�zntpath.join("a:")za:zntpath.join("a:", "\b")za:\bzntpath.join("a", "\b")z\bzntpath.join("a", "b", "c")za\b\czntpath.join("a\", "b", "c")zntpath.join("a", "b\", "c")zntpath.join("a", "b", "c\")za\b\c\zntpath.join("a", "b", "\c")z\czntpath.join("d:\", "\pleep")zd:\pleepzntpath.join("d:\", "a", "b")zd:\a\bzntpath.join('', 'a')z ntpath.join('', '', '', '', 'a')zntpath.join('a', '')za\z ntpath.join('a', '', '', '', '')zntpath.join('a\', '')z!ntpath.join('a\', '', '', '', '')zntpath.join('a/', '')za/zntpath.join('a/b', 'x/y')za/b\x/yzntpath.join('/a/b', 'x/y')z/a/b\x/yzntpath.join('/a/b/', 'x/y')z/a/b/x/yzntpath.join('c:', 'x/y')zc:x/yzntpath.join('c:a/b', 'x/y')z	c:a/b\x/yzntpath.join('c:a/b/', 'x/y')z	c:a/b/x/yzntpath.join('c:/', 'x/y')zc:/x/yzntpath.join('c:/a/b', 'x/y')z
c:/a/b\x/yzntpath.join('c:/a/b/', 'x/y')z
c:/a/b/x/yz&ntpath.join('//computer/share', 'x/y')z//computer/share\x/yz'ntpath.join('//computer/share/', 'x/y')z//computer/share/x/yz*ntpath.join('//computer/share/a/b', 'x/y')z//computer/share/a/b\x/yzntpath.join('a/b', '/x/y')z/x/yzntpath.join('/a/b', '/x/y')zntpath.join('c:', '/x/y')zntpath.join('c:a/b', '/x/y')zntpath.join('c:/', '/x/y')zntpath.join('c:/a/b', '/x/y')z'ntpath.join('//computer/share', '/x/y')z(ntpath.join('//computer/share/', '/x/y')z)ntpath.join('//computer/share/a', '/x/y')zntpath.join('c:', 'C:x/y')zC:x/yzntpath.join('c:a/b', 'C:x/y')z	C:a/b\x/yzntpath.join('c:/', 'C:x/y')zC:/x/yzntpath.join('c:/a/b', 'C:x/y')z
C:/a/b\x/yzntpath.join(z, �)z*ntpath.join('\\computer\share\', 'a', 'b')z\\computer\share\a\bz)ntpath.join('\\computer\share', 'a', 'b')z&ntpath.join('\\computer\share', 'a\b')z*ntpath.join('//computer/share/', 'a', 'b')z//computer/share/a\bz)ntpath.join('//computer/share', 'a', 'b')z//computer/share\a\bz&ntpath.join('//computer/share', 'a/b')z//computer/share\a/bzntpath.join('\\', 'computer')z
\\computerz#ntpath.join('\\computer\', 'share')z\\computer\sharez%ntpath.join('\\computer\share\', 'a')z\\computer\share\az'ntpath.join('\\computer\share\a\', 'b')zntpath.join('a', 'Z:b', 'c')zZ:b\czntpath.join('a', 'Z:\b', 'c')zZ:\b\czntpath.join('a', '\\b\c', 'd')z\\b\c\dzntpath.join('a', '\b', 'c')z\b\czntpath.join('Z:/a', '/b', 'c')z"ntpath.join('//?/Z:/a', '/b', 'c')z
\\?\Z:\b\czntpath.join('D:a', './c:b')z	D:a\.\c:bzntpath.join('D:/a', './c:b')z
D:\a\.\c:b)
rjza/bz/a/brvzc:a/br�zc:/a/bz//computer/sharez//computer/share/z//computer/share/a/b)zd:zd:x/yzd:/zd:/x/yz//machine/commonz//machine/common/z//machine/common/x/yrl)rR�x�ys&  r�	test_join�TestNtpath.test_join9s
��� �"�%��(�"�-��!�3�'��"�D�)��#�U�+��"�D�)��)�7�3��(�%�0��+�Y�7��-�y�9��-�y�9��-�{�;��-�u�5��/��=��.�
�;��%�s�+��1�3�7��%�u�-��1�5�9��'��/��3�U�;��&��-��*�J�7��+�[�9��,�j�9��)�7�3��,�l�;��-�{�;��*�H�5��-�}�=��.��=��7�9P�Q��8�:P�Q��;�=X�Y��+�V�4��,�f�5��*�H�5��-�x�8��+�X�6��.��9��8�:P�Q��9�;Q�R��:�<R�S��+�W�5��.��=��,�h�7��/��?�S�A�W����1�5�q�9�W�S�	�?�A\�]��=�?Z�[��;�=X�Y��;�=T�U��:�<T�U��7�9P�Q��0�.�A��7�9N�O��:�<T�U��=�?Z�[��-�x�8��/��<��2�M�B��-�x�8��/��<��3�6G�H��,�m�<��-��?rc��[OoUOUP2P2UOUQ2Q2UOUQ2Q2UOUQ2Q2UOUQ2Q2[OQ6XcQ	LQ
oUOUQ2U2[OQ6Xf[O
2Q6XckUOUQO
22QO
22UOUQO
22UO
22P!P!)
rjr�ABC�abc�ABCsabcuÄŁΨuäłψr�uωΩuωωuΩΩzutf-8)r#r$rQr�r��getfilesystemencodingr>)rRr$�expecteds&  r�
test_normcase�TestNtpath.test_normcase�s���?�?������"��r�*�����#���,�����%��%�0�����&�)�6�2�����"4�5�7I�J�%(�\�\�W�%<�>�.������.�1�8�<��<�<�7�"�c�&?�&?�&A�W�&L����X�&8�&?�&?�&A�B�/�6�6�8�
:����X�n�&;�&;�&=�>�%�_�_�.�
0�'Mrc�j�[OoUOUQ2Q2UOUQ2Q2UOUQ2Q2[OQ6XcEQ[[
]�Q22*oUOUU2UO22P!P!)zabcdefsabcdef��r�r��)r#r$rQr�r�r,�range�lower)rRr$rs&  r�test_normcase_invalid_paths�&TestNtpath.test_normcase_invalid_paths�s����?�?������,�/��>�����-�0�-�@�����(�+�X�6��<�<�7�"��E�%��S�/�2�2�D����X�d�^�T�Z�Z�\�:�#rc���[QQ2[QQ2[QQ2[QQ2[QQ2[QQ	2[Q
Q2[QQ
2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ 2[Q!Q"2[Q#Q$2[Q%Q&2[Q'Q(2[Q)Q*2[Q+Q,2[Q-Q.2[Q/Q02[Q1Q22[Q3Q42[Q5Q62[Q7Q82[Q9Q:2[Q;Q:2[Q<Q:2[Q=Q:2[Q>Q?2[Q@QA2[QBQC2[QDQE2[QFQG2P!)Hz$ntpath.normpath('A//////././//.//B')zA\Bzntpath.normpath('A/./B')zntpath.normpath('A/foo/../B')zntpath.normpath('C:A//B')zC:A\Bzntpath.normpath('D:A/./B')zD:A\Bzntpath.normpath('e:A/foo/../B')ze:A\Bzntpath.normpath('C:///A//B')zC:\A\Bzntpath.normpath('D:///A/./B')zD:\A\Bz"ntpath.normpath('e:///A/foo/../B')ze:\A\Bzntpath.normpath('..')�..zntpath.normpath('.')�.zntpath.normpath('c:.')rvzntpath.normpath('')zntpath.normpath('/')r3zntpath.normpath('c:/')r�zntpath.normpath('/../.././..')zntpath.normpath('c:/../../..')zntpath.normpath('/./a/b')�\a\bzntpath.normpath('c:/./a/b')zc:\a\bzntpath.normpath('../.././..')�..\..\..zntpath.normpath('K:../.././..')z
K:..\..\..zntpath.normpath('./a/b')�a\bzntpath.normpath('c:./a/b')zc:a\bzntpath.normpath('C:////a/b')zC:\a\bz'ntpath.normpath('//machine/share//a/b')z\\machine\share\a\bzntpath.normpath('\\.\NUL')�\\.\NULzntpath.normpath('\\?\D:/XY\Z')z\\?\D:/XY\Zz1ntpath.normpath('handbook/../../Tests/image.png')z..\Tests\image.pngz4ntpath.normpath('handbook/../../../Tests/image.png')z..\..\Tests\image.pngz.ntpath.normpath('handbook///../a/.././../b/c')z..\b\cz/ntpath.normpath('handbook/a/../..///../../b/c')z	..\..\b\cz$ntpath.normpath('//server/share/..')�\\server\share\z%ntpath.normpath('//server/share/../')z'ntpath.normpath('//server/share/../..')z(ntpath.normpath('//server/share/../../')zntpath.normpath('\\foo\\')z\\foo\\zntpath.normpath('\\foo\')z\\foo\zntpath.normpath('\\foo')z\\foozntpath.normpath('\\')r4z*ntpath.normpath('//?/UNC/server/share/..')z\\?\UNC\server\share\rlrms&r�
test_normpath�TestNtpath.test_normpath�s����5�v�>��)�6�2��.��7��*�H�5��+�X�6��0�(�;��-�y�9��.�	�:��3�Y�?��&��.��%�t�,��'��.��$�d�+��%�t�,��'��0��/��6��/��8��*�G�4��,�i�8��.��<��0�-�@��)�6�2��+�X�6��-�y�9��8�:P�Q��.�
�;��3�^�D��B�DY�Z��E�G_�`��?��K��@�,�O��5�;P�Q��6�;P�Q��8�;P�Q��9�;P�Q�	�/��?��-�{�;��+�Y�7��(�&�1��;�=Z�[rc�2�[OoUOUQ2Q2UOUQ2Q2UOUQ2Q2UOUQ2Q2UOUQ2Q2UOUQ2Q2[OQ	6Xc1UO[UQ
2UO[UQ2P!UOUQ
2Q
2UOUQ2Q2P!)
zfoosfoozfoo\..\barr�sfoo\..\barsbarr�u
�\..\foorhr���s�\..\foosfoo)r#�normpathrQr�r�r�r�)rRr�s& r�test_normpath_invalid_paths�&TestNtpath.test_normpath_invalid_paths�s����?�?������)�,�i�8�����*�-�z�:�����"4�5�u�=�����"5�6��?�����(�+�X�6�����"3�4�e�<��<�<�7�"����0�(�G�D����0�(�<L�M����X�g�.��8����X�&6�7��@rc���[O[O22o[	QU2[	QU2[	QU2[	QU2[	QU2P!)zntpath.realpath('.')zntpath.realpath('./.')z&ntpath.realpath('/'.join(['.'] * 100))zntpath.realpath('.\.')z&ntpath.realpath('\'.join(['.'] * 100))�r#r�r%�getcwdrG�rRr�s& r�test_realpath_curdir�TestNtpath.test_realpath_curdir�sM���?�?�2�9�9�;�/���%�x�0��'��2��7��B��(�(�3��8�(�Crc���[O[O22o[	QU2[	QU2[	QU2[	QU2[	QU2P!)z!ntpath.realpath('.', strict=True)z#ntpath.realpath('./.', strict=True)z3ntpath.realpath('/'.join(['.'] * 100), strict=True)z#ntpath.realpath('.\.', strict=True)z3ntpath.realpath('\'.join(['.'] * 100), strict=True)r�r�s& r�test_realpath_curdir_strict�&TestNtpath.test_realpath_curdir_strict�sM���?�?�2�9�9�;�/���2�H�=��4�h�?��D�h�O��5�x�@��E�x�Prc���[O[O22o[	QU2[	QU2[	QU2[	QU2[	QU2P!)z*ntpath.realpath('.', strict=ALLOW_MISSING)z,ntpath.realpath('./.', strict=ALLOW_MISSING)z<ntpath.realpath('/'.join(['.'] * 100), strict=ALLOW_MISSING)z,ntpath.realpath('.\.', strict=ALLOW_MISSING)z<ntpath.realpath('\'.join(['.'] * 100), strict=ALLOW_MISSING)r�r�s& r�test_realpath_curdir_missing_ok�*TestNtpath.test_realpath_curdir_missing_ok�s\���?�?�2�9�9�;�/���;��	��=��	��M��	��>��	��N��	rc�"�[O[O22o[	Q[O
U22[	Q[O
[O
U222[	Q[OU2]*Q*2[	Q[O
[O
U222[	Q[OU2]*Q*2P!)zntpath.realpath('..')zntpath.realpath('../..')z&ntpath.realpath('/'.join(['..'] * 50))r3zntpath.realpath('..\..')z&ntpath.realpath('\'.join(['..'] * 50))�r#r�r%r�rG�dirnamer�r�s& r�test_realpath_pardir�TestNtpath.test_realpath_pardir�s����?�?�2�9�9�;�/���&����x�(@�A��)��~�~�f�n�n�X�6�7�	9��7�� � ��*�1�-��4�	6��*��~�~�f�n�n�X�6�7�	9��8�� � ��*�1�-��4�	6rc�"�[O[O22o[	Q[O
U22[	Q[O
[O
U222[	Q[OU2]*Q*2[	Q[O
[O
U222[	Q[OU2]*Q*2P!)z"ntpath.realpath('..', strict=True)z%ntpath.realpath('../..', strict=True)z3ntpath.realpath('/'.join(['..'] * 50), strict=True)r3z%ntpath.realpath('..\..', strict=True)z3ntpath.realpath('\'.join(['..'] * 50), strict=True)r�r�s& r�test_realpath_pardir_strict�&TestNtpath.test_realpath_pardir_strict
s����?�?�2�9�9�;�/���3�V�^�^�H�5M�N��6��~�~�f�n�n�X�6�7�	9��D�� � ��*�1�-��4�	6��7��~�~�f�n�n�X�6�7�	9��E�� � ��*�1�-��4�	6rc�"�[O[O22o[	Q[O
U22[	Q[O
[O
U222[	Q[OU2]*Q*2[	Q[O
[O
U222[	Q[OU2]*Q*2P!)z+ntpath.realpath('..', strict=ALLOW_MISSING)z.ntpath.realpath('../..', strict=ALLOW_MISSING)z<ntpath.realpath('/'.join(['..'] * 50), strict=ALLOW_MISSING)r3z.ntpath.realpath('..\..', strict=ALLOW_MISSING)z<ntpath.realpath('\'.join(['..'] * 50), strict=ALLOW_MISSING)r�r�s& r�test_realpath_pardir_missing_ok�*TestNtpath.test_realpath_pardir_missing_oks����?�?�2�9�9�;�/���<��~�~�h�'�	)��?��~�~�f�n�n�X�6�7�	9��M�� � ��*�1�-��4�	6��@��~�~�f�n�n�X�6�7�	9��N�� � ��*�1�-��4�	6rzneed _getfinalpathname�strictc���[O[O2o[	UQ2O2UO
[OU2UO
[OUQ*2[OV"Q*2UO[OUQ*1-U@U2UO[O[OUQ*21-U@[OU22[OTt.tFDp3Q0jJ		to[[O 22*
oUO#2O%2oUO'[OUP
Q5U2U%cVUO)[*29^tt^2[O[OQ*1-U@PPP2P!UO'UQ*[O[OQ*1-U@2P!ttoh)%fhP!9h)�wb�1z:\�r�zspam)r#�abspathr�TESTFN�open�close�
addCleanup�unlinkr%�symlinkrU�realpathr<�string�ascii_uppercase�set�
listdrives�popr>rQr�r)rRrI�ABSTFN�c�drives�ds&&    r�test_realpath_basic�TestNtpath.test_realpath_basic#s������	� 0� 0�1���V�T�� � �"����	�(�(�&�1����	�(�(�&�3�,�7�
�
�
�6�C�<�(����V�_�_�V�c�\�D�V�D�f�M����V�_�_�R�[�[��#��-F�Q�&�Q����V�,�	.�
&,�%;�%;�<�%;��C�s�)�%;�<�s�2�=�=�?�?S�S���J�J�L���!���������5�9�1�=���"�"�7�+�+����	� 0� 0�8� ;�*�"(�*�,�+�
���V�h�.� &���	�0@�0@�8�0K� V�v� V�
X��=�,�+�+�s�;I�.I�I/	�'I/	c�v�[O[O2o[O
UQ*U2UO
[OU2UO[[OUP	Q5UO[[OUQ*P	Q5P!)r�r��2)r#rrrr%rrrr��FileNotFoundErrorr�rRr
s& r�test_realpath_strict�TestNtpath.test_realpath_strict@s{��
���	� 0� 0�1��
�
�
�6�C�<��(����	�(�(�&�1����+�V�_�_�f�T��R����+�V�_�_�f�s�l�SW��Xrc�T	�[Oo[O[O2o[
OU2oUQ*oUOUUP
Q5U2UO[V[Q5UO[VP	Q5UO[V[Q5UQ*oUOUUP
Q5U2UO[V[Q5UO[VP	Q5UO[V[Q5UQ*oUOUUP
Q5U2UO[V[Q5UO[VP	Q5UO[V[Q5UQ*oUOUUP
Q5U2UO[V[Q5UO[VP	Q5UO[V[Q5UQ*oUOUUP
Q5[
O22UOUU[Q5[
O22UOUUP	Q5[
O22UOUU[Q5[
O22UQ*oUOUUP
Q5[
O22UOUU[Q5[
O22UOUUP	Q5[
O22UOUU[Q5[
O22UQ*oUOUUP
Q5UQ*2UO[V[Q5UO[VP	Q5UOUU[Q5UQ*2UQ	*oUOUUP
Q5UQ
*2UO[V[Q5UO[VP	Q5UOUU[Q5UQ
*2P!)�r��z\nonexistent\xs\nonexistent\xz\..s\..z\nonexistent\x\..z\nonexistents\nonexistent\x\..s\nonexistent)r#rrrrr%r<rQr�rrrr��getcwdb)rRrr
�ABSTFNbrs&    r�test_realpath_invalid_paths�&TestNtpath.test_realpath_invalid_pathsKs����?�?�����	� 0� 0�1���+�+�f�%����������$�u�5�t�<����'�8�,��G����'�8�$��?����'�8�-��H��� ������$�u�5�t�<����'�8�,��G����'�8�$��?����'�8�-��H��.�.������$�u�5�t�<����'�8�,��G����'�8�$��?����'�8�-��H��0�0������$�u�5�t�<����'�8�,��G����'�8�$��?����'�8�-��H��
�"������$�u�5�r�y�y�{�C�����$�|�<�b�i�i�k�J�����$�t�4�b�i�i�k�B�����$�}�=�r�y�y�{�K���$������$�u�5�r�z�z�|�D�����$�|�<�b�j�j�l�K�����$�t�4�b�j�j�l�C�����$�}�=�r�z�z�|�L��2�2������$�u�5�v��7O�P����'�8�,��G����'�8�$��?�����$�}�=�v��?W�X��4�4������$�u�5�w�AQ�7Q�R����'�8�,��G����'�8�$��?�����$�}�=�w�IY�?Y�Zrc��[Oo[O[O2o[
OU2oUQ*oUO[V%1-U@UQ*oUO[V%1-U@UQ*oUO[V%1-U@UQ*oUO[V%1-U@P!)r�s\nonexistent\�s�\..s\nonexistent\�\..)	r#rrrrr%r<r�r�)rRrIrr
rrs&&    r�#test_realpath_invalid_unicode_paths�.TestNtpath.test_realpath_invalid_unicode_paths{s����?�?�����	� 0� 0�1���+�+�f�%���� �����,�h�G��G��/�/�����,�h�G��G���$�����,�h�G��G��3�3�����,�h�G��Grc���[O[O2o[	UQ2O2UO
[OU2UO
[OUQ*2[OU[OUQ*22UO[OUQ*1-U@U2P!)r�r�)
r#rrrrrrrr%r�relpathrUr)rRrIr
s&& r�test_realpath_relative�!TestNtpath.test_realpath_relative�s������	� 0� 0�1���V�T�� � �"����	�(�(�&�1����	�(�(�&�3�,�7�
�
�
�6�6�>�>�&�3�,�7�8����V�_�_�V�c�\�D�V�D�f�Mrc	�B
�[O[O2o[O
U2UO
[OU2[OU29^tt^2[O
Q2[OQ2[OQQ2[OQQ2[OQ2[OQQ2[OQQ2[OQQ	2[OQ
Q2[OQQ
2[OUQ*Q2[OQQ2UO[OQ2UQ*2UO[OQ2UQ*2UO[OQ	2UQ*2UO[OQ2UQ*2UO[OQ2UQ*2UO[OQ
2UQ*2UO[OQ2UQ*2UO[OQ2UQ*2UO[OQ2[OUQ*22UO[OQ2[OUQ*22UO[OQ2[OUQ*22UO[OQ2[OUQ*22UO[OQ2[OUQ*22UO[OQ2[OUQ*22UO[OQ 2[OUQ*22UO[OQ!2[OUQ*22PPP2P!)%fhP!9h)"�subdirr��	recursiver��parentrR�missing�brokenz
broken\bar�broken1zself\self\broken�broken2z"subdir\parent\subdir\parent\broken�broken3�\broken�broken4zrecursive\..\broken�broken5z\missingz
broken\fooz\missing\fooz\broken\barzbroken1\bazz\broken\bar\bazz\self\self\missingz$\subdir\parent\subdir\parent\missingsbrokens
broken\foosbroken1sbroken1\bazsbroken2sbroken3sbroken4sbroken5)r#rrrr%�mkdirr�rmtree�
change_cwd�chdirrrUrr<rs& r�test_realpath_broken_symlinks�(TestNtpath.test_realpath_broken_symlinks�sn�����	� 0� 0�1��
��������	�(�(�&�1�
�
!�
!�&�
)�
)��H�H�X���H�H�X���J�J�s�K�(��J�J�t�X�&��H�H�T�N��J�J�s�F�#��J�J�y�(�+��J�J�}�i�0��J�J�*�I�6��J�J�<�i�H��J�J�v�
�*�I�6��J�J�-�y�9�� � �����!:�!'�+�!5�
7�� � �����!?�!'�/�!9�
;�
� � �����!<�!'�.�!8�
:�� � �����!@�!'�*<�!<�
>�� � �����!;�!'�*?�!?�
A�� � �����!;�!'�*Q�!Q�
S�� � �����!;�!'�+�!5�
7�� � �����!;�!'�+�!5�
7�
� � �����!;�!#���V�k�-A�!B�
D�� � �����!@�!#���V�o�-E�!F�
H�� � �����!=�!#���V�n�-D�!E�
G�� � �����!A�!#���V�6H�-H�!I�
K�� � �����!<�!#���V�6K�-K�!L�
N�� � �����!=�!#���V�6]�-]�!^�
`�� � �����!<�!#���V�k�-A�!B�
D�� � �����!<�!#���V�k�-A�!B�
D�_*�
)�
)�
)�s�:R	T
�
T	�T	c�	�[O[O2oUO	[O
U2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2[OV2UO[OU2U2[OUQ*UQ*2[OUQ*UQ*2UQ*UQ*1oUO[OUQ*2U2UO[OUQ*2U2UO[OUQ*2QU22UO[OUQ*2[OU22UO[OUQ*2[OU2Q	*2[OUQ
*UQ*2UO[OUQ*[OU2*Q*2UQ
*2UO[OUQ*[OU2*Q*2U2[O[OU2Q*UQ*2UO[OUQ*2UQ*2[OQ
[O[OU22*Q*[OU2*Q*UQ*2UO[OUQ*2UQ*2UO[O[OU22U2P!)r�rr�rr��1\xc3�\�SF �Do[OUQ2w�	J	P!3h)r�)r#�join)r'�rs& rr)�9TestNtpath.test_realpath_symlink_loops.<locals>.<genexpr>�s������1�6�;�;�q�#�.�.��s�%,�1\..�1\..\x�\xr��1\..\r��..\r3)
r#rrrrrr%rrUrrZr��basename)rRr
r�s&  r�test_realpath_symlink_loops�&TestNtpath.test_realpath_symlink_loops�s0�����	� 0� 0�1�����	�(�(�&�1����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7�
�
�
�6�"����V�_�_�V�4�f�=�
�
�
�6�C�<��#��.�
�
�
�6�C�<��#��.��S�L�&�3�,�/�����&�/�/�&�3�,�7��B����&�/�/�&�3�,�7��B����&�/�/�&�6�/�:�A��A�	C����V�_�_�V�g�-=�>�#�^�^�F�3�	5����V�_�_�V�j�-@�A�#�^�^�F�3�e�;�	=�
�
�
�6�C�<��#��.����V�_�_�V�i�-?�/5���v�/F�.G�IL�.M�N�#�c�\�	+�	
���&�/�/�&�9�*<�,2�O�O�F�,C�+D�FI�+J�K�"�	$�	�
�
�6�?�?�6�*�V�3�V�c�\�B����V�_�_�V�c�\�:�F�S�L�I�
�
�
�6�F�O�O�F�N�N�6�,B�C�C���"�O�O�F�3�4�69�:�;A�C�<�	I����V�_�_�V�c�\�:�F�S�L�I�	
���V�_�_�V�_�_�V�-D�E�v�Nrc��[O[O2oUO	[O
U2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2[OV2UO[[OU[Q5UO[[OUP	Q5[OUQ*UQ*2[OUQ*UQ*2UO[[OUQ*[Q5UO[[OUQ*P	Q5UO[[OUQ*[Q5UO[[OUQ*P	Q5UO[[OUQ*[Q5UO[[OUQ*P	Q5UO[OUQ*[Q5[OU22UO[OUQ*P	Q5[OU22UO[OUQ*[Q5[OU2Q	*2UO[[OUQ*P	Q5[OUQ
*UQ*2UO[OUQ*[OU2*Q*[Q5UQ
*2UO[[OUQ*[OU2*Q*P	Q5UO[[OUQ*[OU2*Q*[Q5UO[[OUQ*[OU2*Q*P	Q5[O[OU2Q*UQ*2UO[[OUQ*[Q5UO[[OUQ*P	Q5[OQ
[O[OU22*Q*[OU2*Q*UQ*2UO[[OUQ*[Q5UO[[OUQ*P	Q5UO[[O[OU2[Q5UO[[O[OU2P	Q5P!)r�rr�rr�r�r:r?r@rAr�rBr�rCr3)r#rrrrrr%rr�rrrrUr�rDrs& r�"test_realpath_symlink_loops_strict�-TestNtpath.test_realpath_symlink_loops_strict�s������	� 0� 0�1�����	�(�(�&�1����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7�
�
�
�6�"����'�6�?�?�F�<��P����'�6�?�?�F�4��H�
�
�
�6�C�<��#��.�
�
�
�6�C�<��#��.����'�6�?�?�F�S�L���V����'�6�?�?�F�S�L���N����'�6�?�?�F�S�L���V����'�6�?�?�F�S�L���N����'�6�?�?�F�V�O�L��Y����'�6�?�?�F�V�O�D��Q�	
���V�_�_�V�g�-=�l�S�#�^�^�F�3�	5����V�_�_�V�g�-=�d�K�#�^�^�F�3�	5����V�_�_�V�j�-@��V�#�^�^�F�3�e�;�	=����'�6�?�?�F�Z�4G�PT��U�
�
�
�6�C�<��#��.����V�_�_�V�i�-?�/5���v�/F�.G�IL�.M�4@�B�$�c�\�	+�	
���'�6�?�?�F�Y�4F�/5���v�/F�5G�IL�5M�48�	�	:�	
���'�6�?�?� �9�,�v���v�/F�F��L�!-�	�	/�	
���'�6�?�?� �9�,�v���v�/F�F��L�!%�	�	'�	�
�
�6�?�?�6�*�V�3�V�c�\�B����'�6�?�?�F�S�L���V����'�6�?�?�F�S�L���N�
�
�
�6�F�O�O�F�N�N�6�,B�C�C���"�O�O�F�3�4�69�:�;A�C�<�	I����'�6�?�?�F�S�L���V����'�6�?�?�F�S�L���N�	
���'�6�?�?�F�O�O�F�4K�!-�	�	/����'�6�?�?�F�O�O�F�4K�!%�	�	'rc�	�[O[O2oUO	[O
U2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2UO	[O
UQ*2[OV2UO[[OU[Q5[OUQ*UQ*2[OUQ*UQ*2UO[[OUQ*[Q5UO[[OUQ*[Q5UO[[OUQ*[Q5UO[OUQ*2[OU22UO[OUQ	*2[OU2Q
*2[OUQ*UQ*2UO[OUQ*[OU2*Q*2UQ*2UO[[OUQ*[OU2*Q*[Q5[O[OU2Q*UQ*2UO[[OUQ*[Q5[OQ
[O[OU22*Q*[OU2*Q*UQ*2UO[[OUQ*[Q5UO[[O[OU2[Q5P!)r�rr�rr�r�r�r:r?r@rArBr�rCr3)r#rrrrrr%rr�rrrrUr�rDrs& r�!test_realpath_symlink_loops_raise�,TestNtpath.test_realpath_symlink_loops_raise=sR�����	� 0� 0�1�����	�(�(�&�1����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7����	�(�(�&�3�,�7�
�
�
�6�"����'�6�?�?�F�=��Q�
�
�
�6�C�<��#��.�
�
�
�6�C�<��#��.����'�6�?�?�F�S�L�#0�	�	2����'�6�?�?�F�S�L�#0�	�	2����'�6�?�?�F�V�O�#0�	�	2�
	
���V�_�_�V�g�-=�>�#�^�^�F�3�	5����V�_�_�V�j�-@�A�#�^�^�F�3�e�;�	=�	�
�
�6�C�<��#��.����V�_�_�V�i�-?�/5���v�/F�.G�IL�.M�N�#�c�\�	+�	
����V�_�_��Y������!8�8�3�>� �	�	"�
	�
�
�6�?�?�6�*�V�3�V�c�\�B����'�6�?�?�F�S�L�#0�	�	2�	�
�
�6�F�O�O�F�N�N�6�,B�C�C�������0�1�36�7�8>���	F����'�6�?�?�F�S�L�#0�	�	2�	
���'�6�?�?�F�O�O�F�4K�#0�	�	2rc��[O[O2oUO	[O
UQ*2UO	[O
QU*Q*2UO	[O
UQ*2UO	[O
UQ*2[
UQ*Q29^tt^2oUOQ2PPP2[OUQ*UQ*2[
QU*Q*Q29^tt^2oUOQ2PPP2[OQU*Q*UQ*2UO[OUQ*1-U@UQ*2UO[OUQ*1-U@QU*Q*2[
[OUQ*2Q29^tt^2oUOUO2Q2PPP2[
[OUQ*2Q29^tt^2oUOUO2Q2PPP2UO[OQU*Q*1-U@QU*Q*2UO[OQU*Q*1-U@QU*Q*2P!)%fhCKK9h)%fhCK�9h)%fhCK9h)%fhK�9h)	�3z\\?\z3.�3linkz3.linkr��0�1�rb)r#rrrrrr�writer%rrUrrQ�read)rRrIr
�fs&&  r�test_realpath_symlink_prefix�'TestNtpath.test_realpath_symlink_prefixssc�����	� 0� 0�1�����	�(�(�&�3�,�7����	�(�(�)�f�*<�t�*C�D����	�(�(�&�7�*:�;����	�(�(�&�8�*;�<�
�&�3�,��
%�
%��
�G�G�D�M�&�
�
�
�6�C�<��'�!1�2�
�)�f�$�t�+�T�
2�
2�a�
�G�G�D�M�3�
�
�
�9�v�%��,�f�x�.?�@����V�_�_�V�g�-=�H��H�#�c�\�	+����V�_�_�V�h�->�I�&�I�&��/�$�6�	8��&�/�/�&�7�"2�3�T�
:�
:�a����Q�V�V�X�t�,�;�
�&�/�/�&�8�"3�4�d�
;�
;�q����Q�V�V�X�t�,�<�	
���V�_�_�Y��-?�'�-I�T�V�T�&��/�#�5�	7����V�_�_�Y��-?�(�-J�U�f�U�&��/�$�6�	8�-&�
%�
%��3�
2�
2��;�
:�
:��
;�
;�sH�$L8�M�-!M �!M4�8M		�M		�M	�M	� M1	�)M1	�4N	�=N	c��[QQ2[QQ2[QQ2[QQ2[QQ2P!)zntpath.realpath('NUL')r�z$ntpath.realpath('NUL', strict=False)z#ntpath.realpath('NUL', strict=True)z+ntpath.realpath('NUL', strict=ALL_BUT_LAST)z,ntpath.realpath('NUL', strict=ALLOW_MISSING)rlrms&r�test_realpath_nul�TestNtpath.test_realpath_nul�s9���'��4��5�z�B��4�j�A��<�j�I��=�z�Jrzneed _getshortpathnamec��[O[O2o[OU2[O
U2[OU2UO[O
U2[OUQ2o[OU2[U2o[OUQ2o[OUQ2o[UQ29^tt^2oUOQ2PPP2UOU[OU22-QP	-Q[-Q[ -1FCD oUO"Q-U@9^tt^2[O$U29^tt^2UOU[OQ-U@2PPP2[O$UO'229^tt^2UOU[OQ-U@2PPP2[O$U29^tt^2UOU[OQ-U@2PPP2PPP2CJ#	P!)%fhCKs9h)%fhK�9h)%fhK�9h)%fhKY9h)%fhCJ�9h)�MyVeryLongDirectoryName�file.txtr��contentr�r\)r])r#rrrrr4r%r3rr<rrrSrUrrr�subTestr5r�)rRr
�
test_dir_long�test_dir_short�test_file_long�test_file_shortrUrIs&       r�test_realpath_cwd�TestNtpath.test_realpath_cwd�s������	� 0� 0�1������ ����� �
��������	�(�(�&�1����F�,E�F�
�
�����*�=�9�����]�J�?�� �+�+�n�j�A��
�.�$�
'�
'�1�
�G�G�J��(�	
���^�V�_�_�_�-M�N��8�T�*�X�|�,D�x�Q^�F_�_�F����'��'�'��)�)�-�8�8��(�(�&����=�f�=�?�9��)�)�-�*=�*=�*?�@�@��(�(�&����=�f�=�?�A��)�)�.�9�9��(�(�&����=�f�=�?�:�(�'�`�(�
'�
'��9�8��A�@��:�9��(�'�'�s~�I>�6K	�(J
�=4K	�1(J%
�&K	�?(J8
�'K	�>J	�J	�J"�J"�K	�%J5�.J5�0K	�8K�K�K	�K
�K
c�"�[O[O2o[OU2[O
U2[OU2UO[O
U2[OUQ2o[OUQ2o[UQ29^tt^2oUOQ2PPP2[OQQQUQ,[OQ5oUO%c[ O"Q2gUO%U[OU22[OQ
UQQ,[OQ5oUO%c[ O"Q
2gUO%U[OU22P!)%fhCK9h[&c[ O"Q	2gh9h)zLongFileName123.txtzLONGFI~1.TXTr�r^z
fsutil.exe�file�setShortName)�
creationflagszfailed to set short namez8the filesystem seems to lack support for short filenamesz
icacls.exez/denyz*S-1-5-32-545:(S)z&failed to deny access to the test file)r#rrrrr4r%r3rr<rrS�
subprocess�run�DETACHED_PROCESS�
returncode�unittest�SkipTestrU�AssertionError)rRr
�	test_filercrUr(s&     r�test_realpath_permission�#TestNtpath.test_realpath_permission�s�������!1�!1�2������ ����� �
��������	�(�(�&�1��K�K��(=�>�	� �+�+�f�n�=��
�)�T�
"�
"�a�
�G�G�J��#�

�N�N�
�6�>�9�n�M�$�5�5�
��
�<�<�<��#�#�$>�?�?�	`�� � ��F�O�O�O�,L�M�
�N�N�
�9�g�/B�C�$�5�5�
��

�<�<�<��#�#�$L�M�M����Y�����(H�I�;#�
"�
"�� �	`��#�#�$^�_�_�	`�s$�
G�8&G,�G)	�!G)	�,	H�6Hc��	```�[On[O[O2nRO[OR2RO[ORQ*2RO[ORQ*2RO[ORQ*2RO[ORQ*2RO[ORQ*2RO[ORQ*2RO[ORQ*2[OR2[ORQ*2[RQ*Q	2O2[RQ
*Q	2O2[OQRQ*2[OQ
RQ*2[OQRQ*2[OQRQ*2Q0UUU1QkkoRO[OR22P
[[ P	,oUQUQ2UQUQ2UQP
[,Q2UQ[ P	,["2UQUQ2UQUQ2UQ
UQ2UQUQ2UQUQ2UQUQ2UQUQ2UQP
[,Q2UQ[ P	,["2UQUQ2UQUQ2UQ UQ2UQ!UQ2UQ"UQ2UQP
[[ ,Q#2UQP	,["2UQ$P
[[ ,Q#2UQ$P	,["2UQ%P
[,Q&2UQ%[ P	,["2UQ'UQ2UQ(P
[[ ,Q#2UQ(P	,["2UQ)P
[[ ,Q#2UQ)P	,["2UQ*P
[,Q&2UQ*[ P	,["2UQ+UQ2UQP
,Q2UQ[[ P	,[$[&O(2UQ,P
,Q2UQ,[[ P	,[$[&O(2UQ-P
,Q.2UQ-[[ P	,[$[&O(2UQ/UQ2P!)1r}z/filez
/dir/file2z/linkz/link2z/brokenz/cycler{z\filer�z
\dir\file2rgz\linkr�z\link2�nonexistentr0�cyclez\cyclec�:�UOQQ2o[U[2%cvUdPgUOQ[O2oSFDFoROUQ59^tt^2RO
RVQ5RU*2PPP2JH	P!SFD{oROUQ59^tt^2ROU29^tt^2oRVQ5PPP2Ud'RO
WOOU2PPP2J}	P!)%fhJ�9h)%fhK\9h)%fhJ�9h)rsr3)�moder�)
r9r+r-r%�sepr_rQr��	exception�errno)	r�modesr�r{rx�cmr
rrRs	&&&&  ���r�check�,TestNtpath.test_realpath_mode.<locals>.checks����<�<��T�*�D��(�C�(�(��}�$�}�#�+�+�C����8��!�D����4��0�0��(�(��$�)D�)/�(�):�<�1�0�"�
"�D����4��0�0�!�.�.�x�8�8�B�$�T�7�9� �,� �,�,�R�\�\�-?�-?��G�	1�0�"�	1�0�0��9�8��1�0�0�sH�1!D$	�E	�
D8
�$E	�0&E	�$D5
�-D5
�8E�E�E	�E
�E
zfile/z
file/file2z/file/file2zfile/.z
file/../link2zdir/z	dir/file2�linkzlink/z
link/file2zlink/.zlink/../link�link2zlink2/zlink2/file2z/nonexistentznonexistent/znonexistent/filez/nonexistent/fileznonexistent/../linkr,zbroken/zbroken/filezbroken/../linkzcycle/z
cycle/filez/cycle/filez
cycle/../linkr")r#rrrrr�rmdirrr%r3rrr�enterContextr5rrrrr{�EINVAL)rRr~�	all_modesr
rsf  @@r�test_realpath_mode�TestNtpath.test_realpath_mode�s	����?�?�����	� 0� 0�1�����	����0����	����&��9����	�(�(�&�7�*:�;����	�(�(�&�<�*?�@����	�(�(�&�7�*:�;����	�(�(�&�8�*;�<����	�(�(�&�9�*<�=����	�(�(�&�8�*;�<�
�����
����'�!�"��V�h�
��%�+�+�-��V�n�
$�d�+�1�1�3�
�
�
�6�6�H�,�-�
�
�
�5�&�9�,�-�
�
�
�=�&�:�"5�6�
�
�
�7�F�Y�.�/�	H�	H�"	
���)�.�.�v�6�7��M�<��>�	�
�f�i��)�
�g�y�'�*�
�l�U�M�2�M�B�
�l�\�4�0�2C�D�
�h�	�7�+�
�o�y�&�1�
�e�Y��'�
�f�i��(�
�k�9�l�3�
�f�i��)�
�g�y�'�*�
�l�U�M�2�M�B�
�l�\�4�0�2C�D�
�h�	�7�+�
�n�i��1�
�g�y�&�)�
�h�	�6�*�
�m�Y��5�
�m�e�]�L�A�>�R�
�m�d�V�%6�7�
�n�u�m�\�B�N�S�
�n�t�f�&7�8�
� �5�-�"8�:M�N�
� �<��"6�8I�J�
�#�Y��8�
�h��
�|�<�n�M�
�h��� 1�2�
�i�%���=�~�N�
�i�$��!2�3�
�m�e�]�3�5H�I�
�m�l�D�1�3D�E�
��	�7�3�
�g��w��)�
�g�
�|�T�:�G�U�\�\�R�
�h����*�
�h���d�;�W�e�l�l�S�
�l�U�G�]�3�
�l�]�L�$�?��%�,�,�W�
�o�y�'�2rc��[O29^tt^2oUO2QUQ$QUQ$QUQ$[QQ2[QQ2[Q	Q
2[QQ2[Q
Q2[QQ2[QQ2[QQ2[QQ2[QQ
2[QQ2[QQ2[QQ
2[QQ
2[QQ2[QQ 2[Q!Q"2[Q#Q$2[Q%Q&2PPP2P!)%fhP!9h)'r�rh�baz1z{foo�baz2z{foo}zntpath.expandvars("foo")zntpath.expandvars("$foo bar")zbar barzntpath.expandvars("${foo}bar")�barbarzntpath.expandvars("$[foo]bar")z	$[foo]barzntpath.expandvars("$bar bar")z$bar barzntpath.expandvars("$?bar")z$?barzntpath.expandvars("$foo}bar")zbar}barzntpath.expandvars("${foo")z${foozntpath.expandvars("${{foo}}")zbaz1}zntpath.expandvars("$foo$foo")zntpath.expandvars("$bar$bar")z$bar$barzntpath.expandvars("%foo% bar")zntpath.expandvars("%foo%bar")zntpath.expandvars("%foo%%foo%")z$ntpath.expandvars("%%foo%%foo%foo%")z%foo%foobarzntpath.expandvars("%?bar%")z%?bar%zntpath.expandvars("%foo%%bar")zbar%barz ntpath.expandvars("'%foo%'%bar")z'%foo%'%barzntpath.expandvars("bar'%foo%")z	bar'%foo%)r�EnvironmentVarGuard�clearrG�rR�envs& r�test_expandvars�TestNtpath.test_expandvarsGs��
�
*�
*�
,�
,���I�I�K��C��J� �C��K�!�C��L��-�u�5��2�I�>��3�X�>��3�[�A��2�J�?��/��9��2�I�>��/��9��2�G�<��2�H�=��2�J�?��3�Y�?��2�H�=��4�h�?��9�=�I��0�(�;��3�Y�?��7��I��4�l�C�/-�
,�
,�
,�s�DD-�-D>	�6D>	zneed os_helper.FS_NONASCIIc��Qo[O29^tt^2oUO2[OoV2Q$QU*V#$UQQU*2UQU*QU*2UQQU*2UQU*Q	U*2UQ
QU*2UQU*QU*2UQ
QU*2UQO	U2QU*2UQQU*2UQO	U2Q	U*2PPP2P!)%fhP!9h)c�.�[QU*U2P!)zntpath.expandvars(%r)rl)�valuer�s&&rr~�2TestNtpath.test_expandvars_nonascii.<locals>.checkcs���*�U�2�H�=rr��hamz	$spam barz%s barz$%s barz
${spam}barz%sbarz${%s}barzham%sbarz	$spam}barz%s}barz$%s}barz
%spam% barz%{}% barz	ham%s barz	%spam%barz%{}%bar)rr�r��FS_NONASCIIr)rRr~r��nonasciis&   r�test_expandvars_nonascii�#TestNtpath.test_expandvars_nonasciias	��	>�
�
*�
*�
,�
,���I�I�K� �,�,�H�"��K�!�H�,�C�M��+�x�(�2�3��)�h�&�	�H�(<�=��,��(� 2�3��*�x�'��h�)>�?��+�x�(�2�3��)�h�&�	�H�(<�=��,��8� 3�4��*�#�#�H�-�{�X�/E�F��+�w��1�2��)�"�"�8�,�j�8�.C�D�-�
,�
,�
,�s�DD/�/E	�8E	�cpuc�b�[Oo[O29^tt^2oUO	2QUQ$QoUOUQU*2QU*2UOUQU*2QU*2UOUQU*Q*2QU*Q*2UOUQU*2QU*2UOUQ	U*2Q
U*2PPP2P!)%fhP!9h)�B�Ai��z%A%z%A%A�BAz''z%%�%z$$�$)r#�
expandvarsrr�r�rQ)rRr�r��ns&   r�test_expandvars_large� TestNtpath.test_expandvars_largeus����&�&�
�
�
*�
*�
,�
,���I�I�K��C��H��A����Z��a��0�#�a�%�8����Z��q��1�4��6�:����Z��Q���
�6��Q����E����Z��Q��/��Q��7����Z��Q��/��Q��7�-�
,�
,�
,�s�C$D�D.	�&D.	c���[QQ2[O29^tt^2oUO2[QQ2QUQ$QUQ$QUQ	$[QQ
2[QQ2UQ[QQ
2[QQ2UO2QUQ$QUQ	$[QQ
2[QQ2[QQ2[QQ2[QQ2[QQ2UO2QUQ$QUQ$QUQ	$[QQ
2[QQ2UO2QUQ$QUQ	$[QQ2[QQ2PPP2P!)%fhP!9h)zntpath.expanduser("test")�testzntpath.expanduser("~test")z~test�C:\�	HOMEDRIVEz
Users\eric�HOMEPATH�eric�USERNAMEz
C:\Users\testzntpath.expanduser("~")z
C:\Users\ericz
Users\test�USERPROFILEz"ntpath.expanduser("~test\foo\bar")zC:\Users\test\foo\barz"ntpath.expanduser("~test/foo/bar")zC:\Users\test/foo/barzntpath.expanduser("~\foo\bar")zC:\Users\eric\foo\barzntpath.expanduser("~/foo/bar")zC:\Users\eric/foo/barzF:\�HOME�idle)rGrr�r�r�s& r�test_expanduser�TestNtpath.test_expanduser�st���*�F�3�
�
*�
*�
,�
,���I�I�K��/��9�%�C���+�C�
�O�$�C�
�O��/�1B�C��+�->�?��K� ��/��?��+�]�;��I�I�K�!2�C�
��$�C�
�O��/�1B�C��+�->�?��9�.�
0��7�,�
.��5�.�
0��3�,�
.�
�I�I�K� �C��K�!2�C�
��$�C�
�O��/�1B�C��+�->�?�
�I�I�K�!2�C�
��$�C�
�O��/��9��+�->�?�U-�
,�
,�
,�s�D*E�E0	�(E0	zabspath requires 'nt' modulec��[QQ2[QQ2[QQ2[QQ2[QQ2[Q	Q
2[QQ
2[QQ
2[QQ
2UO[O[OQ222[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ 2[Q!Q 2[Q"Q 2[Q#Q 2[Q$Q 2[Q%Q&2[Q'Q(2[Q)Q(2[Q*Q(2[Q+Q(2[Q,Q(2[Q-Q
2[Q.Q2[Q/Q2[Q0Q2[Q1Q2[
O[
O29^tt^2o[Q2U2[Q3UQ4*2[Q5UQ6*2[OU2vq#[Q7UQ8*2PPP2P!)%fhP!9h)9zntpath.abspath("C:\")r�z-ntpath.abspath("\\?\C:////spam////eggs. . .")z\\?\C:\spam\eggsz-ntpath.abspath("\\.\C:////spam////eggs. . .")z\\.\C:\spam\eggsz#ntpath.abspath("//spam//eggs. . .")z\\spam\eggsz#ntpath.abspath("\\spam\\eggs. . .")zntpath.abspath("C:/spam. . .")zC:\spamzntpath.abspath("C:\spam. . .")zntpath.abspath("C:/nul")r�zntpath.abspath("C:\nul")zC:spamzntpath.abspath("//..")r4zntpath.abspath("//../")z\\..\zntpath.abspath("//../..")zntpath.abspath("//../../")z\\..\..\zntpath.abspath("//../../../")zntpath.abspath("//../../../..")z ntpath.abspath("//../../../../")zntpath.abspath("//server")z\\serverzntpath.abspath("//server/")z	\\server\zntpath.abspath("//server/..")zntpath.abspath("//server/../")z\\server\..\z ntpath.abspath("//server/../..")z!ntpath.abspath("//server/../../")z#ntpath.abspath("//server/../../..")z$ntpath.abspath("//server/../../../")z ntpath.abspath("//server/share")z\\server\sharez!ntpath.abspath("//server/share/")r�z#ntpath.abspath("//server/share/..")z$ntpath.abspath("//server/share/../")z&ntpath.abspath("//server/share/../..")z'ntpath.abspath("//server/share/../../")zntpath.abspath("C:\nul. . .")zntpath.abspath("//... . .")zntpath.abspath("//.. . . .")zntpath.abspath("//../... . .")zntpath.abspath("//../.. . . .")zntpath.abspath("")zntpath.abspath(" ")z\ zntpath.abspath("?")z\?zntpath.abspath("/abc/")z\abc)	rG�
assertTruer#�isabsrr�temp_cwdrr�)rR�cwd_dir�drive�_s&   r�test_abspath�TestNtpath.test_abspath�s"���'��0��A�CZ�[��A�CZ�[��4�:J�K��8�:J�K��/�*�=��0�*�=��)�L�9��*�L�9�������V�^�^�H�%=�>�?��'�6�:��(�:�>��*�:�>��+�>�B��.�>�B��0�>�B��1�>�B��+�|�D��,�~�F��.�~�F��/�7I�J��1�7I�J��2�7I�J��4�7I�J��5�7I�J��1�:M�N��2�:O�P��4�:O�P��5�:O�P��7�:O�P��8�:O�P��/��>��,�v�6��-�v�6��/�*�=��0�*�=�
�
�
�	� 0� 0�
1�
1�W��'��1��(�'�E�/�:��(�'�E�/�:��(�(��1�H�E��,�e�g�o�>�2�
1�
1�
1�s�AI3�3J	�<J	c��[Oo[OQ6Xc�UO	UQ2[O
UQ2Q22UO	UQ2[O
UQ2Q22UO	UQ2Q2UO	UQ	2Q
2UO	UQ2Q2UO	UQ2Q2UO	UQ
2Q2UO	UQ2Q2UO	UQ2Q2UO	UQ2Q2[OQ6Xc1UO
[UQ2UO
[UQ2P!UO	UQ2Q2UO	UQ2Q2P!)r�zC:zC:rsC:sC:rz:spamz:\spams:spams:\spamr�r�zc:\foo\..\barzc:\barsc:\foo\..\barsc:\barr�u
c:\�\..\foor�r�sc:\�\..\foosc:\foo)r#rr�r�rQr<r�r�)rRrs& r�test_abspath_invalid_paths�%TestNtpath.test_abspath_invalid_paths�sh���.�.���<�<�7�"����W�X�.����G�D�M�6�0R�S����W�Y�/����W�U�^�W�1U�V����W�[�1�=�A����W�\�2�N�C������/��?������0�.�A�����!7�8�)�D�����!8�9�:�F������.��=�����!6�7��C��<�<�7�"����0�'�;�G����0�'�;O�P����W�[�1�;�?����W�%9�:�J�Grc���[QQ2[QQ2[QQ2[QQ2[O[O29^tt^2o[O
U2o[QQU*Q	*2[Q
QU*Q*2PPP2[QQ
2[QQ2[QQ
2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[QQ2[Q Q2[Q!Q2[Q"Q2P!)%fhK�9h)#zntpath.relpath("a")r�z#ntpath.relpath(ntpath.abspath("a"))zntpath.relpath("a/b")r�zntpath.relpath("../a/b")z..\a\bzntpath.relpath("a", "../b")rCr�zntpath.relpath("a/b", "../c")r�zntpath.relpath("a", "b/c")z..\..\az*ntpath.relpath("c:/foo/bar/bat", "c:/x/y")z..\..\foo\bar\batz@ntpath.relpath("//conky/mountpoint/a", "//conky/mountpoint/b/c")zntpath.relpath("a", "a")r�z(ntpath.relpath("/foo/bar/bat", "/x/y/z")z..\..\..\foo\bar\batz*ntpath.relpath("/foo/bar/bat", "/foo/bar")�batz#ntpath.relpath("/foo/bar/bat", "/")zfoo\bar\batz#ntpath.relpath("/", "/foo/bar/bat")r�z$ntpath.relpath("/foo/bar/bat", "/x")z..\foo\bar\batz$ntpath.relpath("/x", "/foo/bar/bat")z
..\..\..\xzntpath.relpath("/", "/")zntpath.relpath("/a", "/a")zntpath.relpath("/a/b", "/a/b")z"ntpath.relpath("c:/foo", "C:/FOO"))rGrr�rr#rD)rRr��
currentdirs&  r�test_relpath�TestNtpath.test_relpath�s-���$�c�*��4�c�:��&��/��)�:�6�
�
�
�	� 0� 0�
1�
1�W�����1�J��0�&��2C�E�2I�J��2�F�:�4E�h�4N�O�2�	�+�[�9��;�=T�U��Q�S^�_��)�3�/��9�;V�W��;�U�C��4�o�F��4�l�C��5�7J�K��5��G��)�3�/��+�S�1��/��5��3�S�9�#2�
1�s�AE�E+	�$E+	c��`�QoU1QkoRO[[OP2RO[[O,2RO[[O[,22UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQ,Q2UQQ,Q2UQ	Q,Q2UQ	Q	,Q2UQ
Q,Q2UQQ
,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQQ,Q2UQ,Q2UQQ,Q2UQQ,P2UQQ,Q2UQ Q!,Q2UQ"Q#,Q2U,Q.NP2U,Q/NQ2UQ$Q%,Q&2UP,P2UPQ',P2UPQ(,Q2RO[[OQ)Q,2RO[[OQ)Q*,2RO[[OQ+Q,2RO[[OQQ,,2RO[[OQQ-,2RO[[OQQ,,2P!)0c�N�[QU*OQQ2U2P!)zntpath.commonpath(%r)r4r3)rGr9)�pathsr�s&&rr~�)TestNtpath.test_commonpath.<locals>.check
s"���+�e�3�<�<�V�T�J��
rc�
:�RO[U[OU2RO[U[OUPPP/*2RO[S[OSTt,tFDo[O
U2MJ	to2RO[S[OUPPP/*Tt,tFDo[O
U2MJ	to2P!ttohttohr")�assertRaisesRegex�
ValueErrorr#�
commonpathr%r<)r�r�r(rRs&& �r�check_error�/TestNtpath.test_commonpath.<locals>.check_errors�����"�"�:�x��9J�9J�E�R��"�"�:�x��9J�9J�E�RV�TV�RV�K�X��"�"�:�x��9J�9J�<A�#B�E�q�B�K�K��N�E�#B�
D��"�"�:�x��9J�9J�<A�$�B�$�K�#H�K�q�B�K�K��N�K�#H�
J��$C��#Hs�<!C;�!DzC:\FoozC:Fooz%Can't mix absolute and relative pathsz\FoozPaths don't have the same drive�Fooz%Can't mix rooted and not-rooted pathszC:\Foo\zC:\\FoozC:\Foo\\zC:\.\FoozC:\Foo\.r�zC:\bazzC:\Barz
C:\Foo\Bazz
C:\Foo\BarzC:\BazzC:\Bar\z
C:/Foo/Bazz
c:/foo/bazz
c:/foo/barr�zD:\FoozD:Foor��alot�and\jam�and\spam�andzand\\jamz
and\spam\\z	and\.\jamz
.\and\spamz	C:and\jamz
C:and\spamzC:andz	spam\alotz
\spam\alotsC:\FoozFoo\BazsFoos
C:\Foo\BazsFoo\Baz)r�r�r�)r�r�r�)r��	TypeErrorr#r�r��iter)rRr~r�sf  r�test_commonpath�TestNtpath.test_commonpaths$���	�	J�	
���)�V�%6�%6��=����*�f�&7�&7��<����*�f�&7�&7��b��B�	�Y��(�*Q�R��Y��(�*K�L��Y��&�(I�J��W�g�&�(I�J��W�e�$�&G�H��W�e�$�&M�N�
�y�k�9�%�
�y�)�$�i�0�
�{�I�&�	�2�
�{�K�(�)�4�
�{�M�*�I�6�
�|�\�*�I�6�
�v�y�!�6�*�
�y�)�$�f�-�
�y�.�)�9�5�
�~�~�.�	�:�
�y�)�$�f�-�
�{�I�&��/�
�~�|�,�i�8�
�~�|�,�i�8�
�|�^�,�i�8�	�Y�	�*�,M�N��Y��(�*K�L��W�g�&�(I�J�
�v�h���
�v�v���'�
�v�v���#�
�z�;�'��/�
�|�_�-�u�5�
�}�n�-�u�5�
�/��4�
�.��6�
�|�]�+�W�5�
�r�d�B��
�r�<� �"�%�	�R��(�*Q�R����)�V�%6�%6��^�8T�U����)�V�%6�%6��Z�8P�Q����)�V�%6�%6���8P�Q����)�V�%6�%6��O�8T�U����)�V�%6�%6��K�8P�Q����)�V�%6�%6���8P�Qrc��[29^tt^2o[29^tt^2oUO[OUO	2UO	222UO[OUO	2UO	222[OQ6Xc>UO[29^tt^2[OPP2PPP2PPP2PPP2P!)%fhK"9h)%fhK-9h)%fhP!9h)r�)
r	r�r#�sameopenfile�fileno�assertFalser�r�r�r)rR�tf1�tf2s&  r�test_sameopenfile�TestNtpath.test_sameopenfileQs���
�_�_��]�_�_���O�O�F�/�/��
�
��c�j�j�l�K�L����V�0�0�����s�z�z�|�L�M��|�|�w�&��&�&�w�/�/��'�'��B�/�0�&5�_�_�0�/��&5�_��_�_�_�sS�D6�BD#	�D#	�D
�6D#	�>D6�D �D �D#	�#D3
�,D3
�.D6�6E	�?E	c�2�UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ	22UO[OQ
22UO[OQ22[O29^tt^2oUO[OU22PPP2[OQ6XCcR[OQ
2o[OU2vq4[OU29^tt^2UO[OUO222UO[OUO222PPP2UO[OQ22UO[OQ22UO[OQ22UO[OQ22P!P!)%fhCKz9h)%fhK�9h)r�r�r�zC:/z\\.\c:\z\\.\C:\sc:\sC:\sc:/sC:/s\\.\c:\s\\.\C:\r��
SystemRootz\\localhost\c$z\\localhost\c$\s\\localhost\c$s\\localhost\c$\)r�r#�ismountr�temp_dirr�r�r�r%�getenvr�r5r��upper)rRr�test_cwdr�rs&    r�test_ismount�TestNtpath.test_ismount^s��������v�.�/�������v�.�/�������u�-�.�������u�-�.�������}�5�6�������}�5�6�������w�/�0�������w�/�0�������v�.�/�������v�.�/�������~�6�7�������~�6�7�
�
�
�
!�
!�Q����V�^�^�A�.�/�"��<�<�7�"��y�y��.�H� �+�+�H�5�K�E��%�%�h�/�/�� � �������
�!>�?�� � �������
�!>�?�0�
�O�O�F�N�N�+>�?�@��O�O�F�N�N�+@�A�B��O�O�F�N�N�+?�@�A��O�O�F�N�N�+A�B�C�!#�"�
!�
!��0�/�s%�&M2�+A'N�2N	�;N	�N	�N	c��[OoUOUQ22[OQ6XcHUO[UQ2UO[UQ2UO[UQ2P!UOUQ22UOUQ22UOUQ22P!)r�r�zc:\sc:\r�)r#r�r�r�r�r�r�r�)rRr�s& r�test_ismount_invalid_paths�%TestNtpath.test_ismount_invalid_paths�s����.�.�������.�/��<�<�7�"����j�'�:�>����j�'�;�?����0�'�;�G����W�Z�0�1����W�[�1�2����W�[�1�2rc�v�UO[OP22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ	22UO[OQ
22UO[OQ22UO[OQ22UO[OQ
22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[OQ 22UO[OQ!22UO[OQ"22UO[OQ#22UO[OQ$22UO[OQ%22UO[OQ&22UO[OQ'22UO[OQ(22UO[OQ)22UO[OQ*22P!)+rjr�r�rsruzfoo.zfoo zoozfoo*barzfoo?barzfoo"barzfoo<barzfoo>barzfoo:barzfoo|bar�nul�aux�prn�conzconin$zconout$�COM1�LPT9ucom¹ucom²ulpt³zNUL.txtzPRN  z	AUX  .txtzCOM1:barzLPT9   :barzbar.com9zbar.lpt9zc:/bar/baz/NULzc:/NUL/bar/bazz//./NULr�.s..�/s/foo/barsfoo.snul)r�r#�
isreservedr�rms&r�test_isreserved�TestNtpath.test_isreserved�s�������*�*�2�.�/�����*�*�3�/�0�����*�*�4�0�1�����*�*�3�/�0�����*�*�:�6�7�����)�)�&�1�2�����)�)�&�1�2�����)�)�&�1�2�����)�)�)�4�5�����)�)�)�4�5�����)�)�)�4�5�����)�)�)�4�5�����)�)�)�4�5�����)�)�)�4�5�����)�)�)�4�5�����)�)�%�0�1�����)�)�%�0�1�����)�)�%�0�1�����)�)�%�0�1�����)�)�(�3�4�����)�)�)�4�5�����)�)�&�1�2�����)�)�&�1�2�����)�)�)�4�5�����)�)�)�4�5�����)�)�)�4�5�	
����)�)�)�4�5�����)�)�'�2�3�����)�)�+�6�7�����)�)�*�5�6�����)�)�-�8�9�	
����*�*�:�6�7�����*�*�:�6�7�����)�)�*:�;�<�����)�)�*:�;�<�����*�*�9�5�6�����*�*�3�/�0�����*�*�4�0�1�����*�*�5�1�2�����*�*�4�0�1�����*�*�;�7�8�����)�)�'�2�3�����)�)�&�1�2rc�d�UOUO2UO22P!)z<Assert that two strings are equal ignoring case differences.)rQr�)rR�s1�s2s&&&r�
assertEqualCI�TestNtpath.assertEqualCI�s���������R�X�X�Z�0rzOS helpers require 'nt' modulec��[O[O2oU[O
U21FDdo[OU2o[OU2]*o[OU2]*oUOVE2Jf	[O[O2vqgUOU]2UOU]2[O[OO22vq�UOV�2UOU	]2[O[O1FD�o[OU2o
UO!U
["2UO[%U
2]2[OUO22oUO!U[&2UO[%U2]2J�	P!)r)�nt�_getfinalpathnamer��
executabler%r<�_getvolumepathnamer#r�r��
_getdiskusage�exec_prefix�
assertGreaterr>rQ�prefix�assertIsInstancer-�lenr,)rRr�r�volume_path�
path_drive�volume_path_drive�cap�free�b_cap�b_free�
final_path�b_final_paths&           r�test_nt_helpers�TestNtpath.test_nt_helpers�st��
�)�)�#�.�.�9�
�����J� 7�7�D��/�/��5�K��*�*�4�0��3�J� &� 1� 1�+� >�q� A�����z�=�	8��$�$�S�_�_�5�	�����3��"����4��#��(�(����)?�)?�)A�B�
������$����6�1�%��Z�Z����0�D��-�-�d�3�J��!�!�*�c�2����s�:���2��/�/����
�>�L��!�!�,��6����s�<�0�!�4�1rr�z/Can only test junctions with creation on win32.c
��[O29^tt^2o[OU29^tt^2[OQ2]PHoUO
QQ2UO[OQ22UO[OQ22UO[OQ2[OQ22PPP2PPP2P![c[OQ2gh9h)%fhK?9h)%fhP!9h)�tmpdir�testjuncz!creating the test junction failed)rr�r5r%r3�_winapi�CreateJunctionrrnror�r#�
isjunctionr�rUr)rRrrs&  r�test_isjunction�TestNtpath.test_isjunction�s���
�
�
�
!�
!�Q��%�%�a�(�(�����"��Q��*�*�8�Z�@����� 1� 1�*� =�>�� � ��!2�!2�8�!<�=��$�$�V�_�_�Z�%@�&�/�/�RZ�B[�\�)�"�
!���Q�"�+�+�,O�P�P�Q��
)�(��"�
!�
!�sM�D:�D'	�D�,BD'	�0D:�	D$�D$�$D'	�'D7
�0D7
�2D:�:E	�E	c���[OoUOUQ2P
2UOUQ2P
2UOUQ2P
2UOUQ2P
2P!)u/tmp�abcdss
/tmp�abcdsz
/tmpabcdss
/tmpabcds)r#�isfile�assertIs)rRrs& r�test_isfile_invalid_paths�$TestNtpath.test_isfile_invalid_paths�sZ�������
�
�f�.�/��7��
�
�f�-�.��6��
�
�f�_�-�u�5��
�
�f�-�.��6rz#drive letters are a windows conceptc� �[OOQ2oUd[U2]6wfU]*Q6wc[O
Q2gUO
[OOQU*22P!)�SystemDrive�:z'SystemDrive is not defined or malformedz\\.\)	r%�environ�getrrnror�rr)rRr�s& r�test_isfile_driveletter�"TestNtpath.test_isfile_driveletter�s_���
�
���}�-���=�C��J�!�O�u�Q�x�3���#�#�$M�N�N���������	�E�(9�:�;r�pipezneed os.pipe()c�<�[O2vqUO[OU22[O
U2[O
U2P![O
S2[O
S2h9hr")r%r%r�r#rr)rR�pr�pws&  r�test_isfile_anonymous_pipe�%TestNtpath.test_isfile_anonymous_pipes[��������	����V�]�]�2�.�/��H�H�R�L��H�H�R�L��
�H�H�R�L��H�H�R�L�s�%A-�-.Bzwindows onlyc
��]PHoQ[O20oUOUUO]]]]]]2oUO[OU22UOU2P!SOS2h9h)rz//./PIPE/python_isfile_test_)	rr%�getpid�CreateNamedPipe�PIPE_ACCESS_INBOUNDr�r#r�CloseHandle)rRr�
named_pipe�hs&   r�test_isfile_named_pipe�!TestNtpath.test_isfile_named_pipesx���3�B�I�I�K�=�A�
��#�#�J�$+�$?�$?�$%�q�!�Q��1�
6��	#����V�]�]�:�6�7�����"��G����"�s�%A9�9Bc�x�UO[OOQ22UO[OO	Q22UO[OOQ22UO
[OOQ22P!)z\\.\CON)r�r%rr�isdir�islinkr��existsrms&r�test_con_device�TestNtpath.test_con_devicesl����������
�3�4���������z�2�3���������
�3�4���������z�2�3rzFast paths are only for win32c�h�UO[OO[O
I2UO
[O[OO22UO[OO[OI2UO
[O[OO22UO[OO[OI2UO
[O[OO22UO[OO[OI2UO
[O[OO22UO[OO[O I2UO
[O[OO22UO[OO"[O$I2UO
[O[OO"22UO[OO&[O(I2UO
[O[OO&22UO[OO*[O,I2UO
[O[OO*22P!r")r�r%rr�r��_path_splitroot_exr��inspect�
isfunctionr��_path_normpathr5�_path_isdirr�_path_isfiler6�_path_islinkr�_path_isjunctionr7�_path_exists�lexists�
_path_lexistsrms&r�test_fast_paths_in_use�!TestNtpath.test_fast_paths_in_use"s��	
������)�)�R�-B�-B�B�C�����+�+�B�G�G�,=�,=�>�?�������(�(�B�,=�,=�=�>�����+�+�B�G�G�,<�,<�=�>�������
�
����7�8�����+�+�B�G�G�M�M�:�;���������"�/�/�9�:�����+�+�B�G�G�N�N�;�<���������"�/�/�9�:�����+�+�B�G�G�N�N�;�<�������*�*�b�.A�.A�A�B�����+�+�B�G�G�,>�,>�?�@���������"�/�/�9�:�����+�+�B�G�G�N�N�;�<���������2�+;�+;�;�<�����+�+�B�G�G�O�O�<�=rr�zDev Drives only exist on Win32c�r�UO[O[O2Q2UO[OQ2Q2UO[OQ2Q2UO[O[
O2]*2Q2UO[OQ22UO[29^tt^2[OQ2PPP2P!)%fhP!9h)Tr�r�z2\\?\Volume{00000000-0000-0000-0000-000000000000}\\)TF)rXr#�
isdevdriverrr%�listvolumesr�r�rr��_path_isdevdriverms&r�test_isdevdrive�TestNtpath.test_isdevdrive9s���	
�
�
�f�'�'�	�(8�(8�9�=�I��
�
�f�'�'��,�m�<��
�
�f�'�'��-�}�=��
�
�f�'�'����(8��(;�<�m�L�����*�*�+`�a�b�
�
�
�w�
'�
'���� U�V�(�
'�
'�
'�s�D%�%D6	�.D6	z'isdevdrive fallback only used off Win32c�n�UO[O[O22P!r")r�r#rIrrrms&r�test_isdevdrive_fallback�#TestNtpath.test_isdevdrive_fallbackHs#��	
����*�*�9�+;�+;�<�=rr\)Tr]r^r_r`rnr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�skip_unless_symlinkrn�
skipUnless�HAVE_GETFINALPATHNAMErMrrrrrr!r%r7rErHrKrVrY�HAVE_GETSHORTPATHNAMErdrrr�r�r�r�r�requires_resourcer�r�r�r�r�r�r�r�r�r�r�r�r�skipIfr�r�rrr#r/r%r)r2r8�cpython_onlyrF�namerLrOrarbrcs@rrfrfas�����
D�1�0=� XA�tB� 
S�
5�/�$(�"�O@�b
0�;�.\�`
A�D�Q��
6�
6�6��"�"�
���.�0H�I��2��$�'�(�M�)B�C�X�D�J�#�X�4�"�"�
���.�0H�I�Y�J�#�Y����.�0H�I�-[�J�-[�^���.�0H�I��2��$�'�(�L�)A�H�m�C\�]�H�^�J�H��"�"�
���.�0H�I��2��$�'�(�L�)A�H�m�C\�]�N�^�J�#�N��"�"�
���.�0H�I�5D�J�#�5D�n�"�"�
���.�0H�I�+O�J�#�+O�Z�"�"�
���.�0H�I�;'�J�#�;'�z�"�"�
���.�0H�I�22�J�#�22�h�"�"�
���.�0H�I��2��$�'�(�L�)A�H�m�C\�]�8�^�J�#�8�@���.�0H�I�K�J�K����.�0H�I�
���.�0H�I�!?�J�J�!?�F���.�0H�I�*J�J�*J�X�"�"�
���.�0H�I�S3�J�#�S3�jD�4����.�.�0L�M�E�N�E�&
���u�%�
8�&�
8�-@�b����;�<�*?�=�*?�XH�(:�0CR�J0�"D�H
3�63�p1�����=�>�5�?�5�:�_�_�S�\�\�W�,�._�`�
]�a�
]�7��_�_�S�\�\�W�,�.S�T�<�U�<������V�,�.>�?��@���_�_�S�\�\�W�,�n�=�	#�>�	#��_�_�S�\�\�W�,�n�=�4�>�4��_�_�S�\�\�W�,�.M�N����>��O�>�*�_�_�R�W�W��_�&F�G�W�H�W��_�_�R�W�W��_�&O�P�>�Q�>rrfc�"�\sQsQs\sQ,sQsP!)�NtCommonTestiNr$r\)r]r^r_r`r#�
pathmodule�
attributesrar\rrrZrZNs���J���JrrZc�`�\sQsQsn\sQsQsQsQs	Qs
QsQsQ	s
Q
sQsQsQ
sQsQsQsQsQsQsQsQsQsQsQsUsP!)�
PathLikeTestsiSc�\�[OUm[[O2UmUO[OUO2[UOQ]29^tt^2oUOQ2PPP2P!)%fhP!9h)�xbstest_ntpath.PathLikeTests)	rr�	file_namer�	file_pathrrrrS)rRrgs& r�setUp�PathLikeTests.setUpWsj��"�)�)���!�)�"2�"2�3������	�(�(�$�.�.�9�
�$�.�.�$��
*�
*�d��J�J�3�4�+�
*�
*�
*�s�>B�B+	�#B+	c�l�UOUUO2UUO22P!r")rUrbra)rR�funcs&&r�_check_function�PathLikeTests._check_function^s$�����T�$�.�.�1�4����3G�Hrc�R�UOUOO2P!r")rgrr$rms&r�test_path_normcase� PathLikeTests.test_path_normcasea������T�Y�Y�/�/�0rc�R�UOUOO2P!r")rgrr�rms&r�test_path_isabs�PathLikeTests.test_path_isabsd������T�Y�Y�_�_�-rc��UOUOOQ[Q2Q2UOOQQQ22P!)r��br)rQrr<rrms&r�test_path_join�PathLikeTests.test_path_joings;�����������X�c�]�C�@�������S�#�6�	8rc�R�UOUOO2P!r")rgrr�rms&r�test_path_split�PathLikeTests.test_path_splitkrprc�R�UOUOO2P!r")rgr�splitextrms&r�test_path_splitext� PathLikeTests.test_path_splitextnrlrc�R�UOUOO2P!r")rgrr�rms&r�test_path_splitdrive�"PathLikeTests.test_path_splitdriveq������T�Y�Y�1�1�2rc�R�UOUOO2P!r")rgrr�rms&r�test_path_splitroot�!PathLikeTests.test_path_splitrootts�����T�Y�Y�0�0�1rc�R�UOUOO2P!r")rgrrDrms&r�test_path_basename� PathLikeTests.test_path_basenamewrlrc�R�UOUOO2P!r")rgrr�rms&r�test_path_dirname�PathLikeTests.test_path_dirnamez������T�Y�Y�.�.�/rc�R�UOUOO2P!r")rgrr6rms&r�test_path_islink�PathLikeTests.test_path_islink}s�����T�Y�Y�-�-�.rc�R�UOUOO2P!r")rgrrDrms&r�test_path_lexists�PathLikeTests.test_path_lexists�r�rc�R�UOUOO2P!r")rgrr�rms&r�test_path_ismount�PathLikeTests.test_path_ismount�r�rc�R�UOUOO2P!r")rgr�
expanduserrms&r�test_path_expanduser�"PathLikeTests.test_path_expanduser�rrc�R�UOUOO2P!r")rgrr�rms&r�test_path_expandvars�"PathLikeTests.test_path_expandvars�rrc�R�UOUOO2P!r")rgrr�rms&r�test_path_normpath� PathLikeTests.test_path_normpath�rlrc�R�UOUOO2P!r")rgrrrms&r�test_path_abspath�PathLikeTests.test_path_abspath�r�rc�R�UOUOO2P!r")rgrrrms&r�test_path_realpath� PathLikeTests.test_path_realpath�rlrc�R�UOUOO2P!r")rgrr$rms&r�test_path_relpath�PathLikeTests.test_path_relpath�r�rc��UOOUOUO,2oUO	VO2P!r")rr�rbrarU)rR�common_paths& r�test_path_commonpath�"PathLikeTests.test_path_commonpath�s5���i�i�*�*�D�N�N�D�N�N�+K�L�����[�.�.�9rc�R�UOUOO2P!r")rgrr5rms&r�test_path_isdir�PathLikeTests.test_path_isdir�rpr)rarb)r]r^r_r`r#rrcrgrjrnrsrvrzr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�rarbrcs@rr^r^Ss~�����D�5�I�1�.�8�.�1�3�2�1�0�/�0�0�3�3�1�0�1�0�:�.�.rr^�__main__)(r{r<r#r%rrjr�rnr?rrr�r�test.supportrr�test.support.os_helperrr�tempfiler	r��ImportErrorr�rS�AttributeErrorr
rTrr1rGrM�TestCaserOrf�
CommonTestrZr^r]�mainr\rr�<module>r�s ����
�	�
��
���.��"�(�+�!�"��
�!�
���!��#��!��
#��<�0E�3�X�&�&�3�j>��j>�Z/�#�.�.��0A�0A��
J.�N�J.�Z�z���M�M�O���W4��
�B����"�!��"���"�!��"�sH�C �C/�'C>� C,�&C,�+C,�/C;�5C;�:C;�>D
�D
�	D


Youez - 2016 - github.com/yon3zu
LinuXploit