python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_ntpath.cpython-312.pyc

ΑeddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	ddlm
Z
mZddlm
Z
ddlmZddlmZ	ddlZ	ej(dZ	ddlZdZd	Zd
ZdZGdd
ej8ZGddeZGddej>ej8Z GddeZ!e"dk(rejFyy#e$rdZYwxYw#e$rdZYwxYw#e$rdZYwxYw)N)cpython_only	os_helper)
TestFailed
is_emscripten)FakePath)test_genericpath)
TemporaryFileTFctjddj}tjtjtjg|_tj|_||dd}|s,tdjtjtj|}||||}|d|S)Nkernel32T)use_last_errorrz&failed to get short path name 0x{:08X})ctypesWinDLLGetShortPathNameW	c_wchar_pc_uint32argtypesrestypeOSErrorformatget_last_errorcreate_unicode_buffer)pathGSPN
result_lenresults    D/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_ntpath.py_getshortpathnamer#s}}Z=OO))6+;+;V__M
$a(
B!6&"7"7"9:<
<--j9$
3
kz""ct|tttjfr(tjtj|St|drtd|DS|S)N__iter__c3lK|],}tjtj|.ywN)ntpathnormcaseosfsdecode).0ps  r	<genexpr>z_norm.<locals>.<genexpr>3s!CV__R[[^4Cs24)

isinstancebytesstrr%PathLiker#r$r&hasattrtuple)rs r_normr0/sO$R[[12r{{4011	z	"CdCCCKrc	Z|jdd}t|}||k7rEt|t|k7r.tt	|dt	|dt	||jdd}|jdd}|jd	d
}|jdd}|jd
d}|jdd}tj|jd}|jddjd}tj5tjdtt|}dddt|t|k7r.tt	|dt	|dt|y#1swYOxYw)N\\\z should return: z but returned: z('z(b'z("z(b"z['z[b'z["z[b"z, 'z, b'z, "z, b"latin1asciibackslashreplaceignore)replaceevalr0rr,r%fsencodedecodeencodewarningscatch_warningssimplefilterDeprecationWarningrepr)fn
wantResult	gotResults   rtesterrE7sh	D&	!BRIY5#4i8H#HBZ#i.:;	;
D%	 B	D%	 B	D%	 B	D%	 B	E6	"B	E6	"B	R			)B	7.	/	6	6w	?B		 	 	"h(:;H	
ZE),,BZ$y/;<	<-s-&F!!F*ceZdZdZdZy)NtpathTestCasecb||k(st|t|k(ry|j||yr")r0assertEqual)selfpath1path2s   rassertPathEqualzNtpathTestCase.assertPathEqualPs+E>U5\U5\9&rcL|jt|t|yr")assertInr0)rJrpathsets   rassertPathInzNtpathTestCase.assertPathInUs

eDk5>2rN)__name__
__module____qualname__rMrQrrrGrGOs'
3rrGceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Ze
jej eddZe
jej edd
Ze
jej eddZe
jej eddZe
jej eddZe
jej eddZe
jej eddZej eddZej edej eddZdZej e
j:ddZdZej e ddZ!dZ"dZ#ejHe%ddZ&d Z'd!Z(ej e d"d#Z)ejHe*jVd$k7d%d&Z,ejHe*jVd$k7d'd(Z-ejHe*jVd$k7d)d*Z.ejHe*jVd$k7d+e/d,Z0ejHe1jdd-k7d.d/Z3ejHe1jdd-k(d0d1Z4y2)3
TestNtpathctddtddtddtddtd	d
tddtd
dtddtddtddy)Nzntpath.splitext("foo.ext"))foo.extzntpath.splitext("/foo/foo.ext"))z/foo/foorZzntpath.splitext(".ext"))rZzntpath.splitext("\foo.ext\foo"))z\foo.ext\foor[zntpath.splitext("foo.ext\"))zfoo.ext\r[zntpath.splitext("")r[r[zntpath.splitext("foo.bar.ext"))zfoo.barrZz!ntpath.splitext("xx/foo.bar.ext"))z
xx/foo.barrZz!ntpath.splitext("xx\foo.bar.ext"))z
xx\foo.barrZzntpath.splitext("c:a/b\c.d"))zc:a/b\cz.drErJs r
test_splitextzTestNtpath.test_splitextZsw+_=02FG(,724JK-/@A$h//1DE24JK35LM.0BCrctddtddtddtddtd	d
tddtd
dtddtddtddtddtddtddtddtddtdd td!d"td#d$y)%Nzntpath.splitdrive('')r\zntpath.splitdrive('foo'))r[rYzntpath.splitdrive('foo\bar'))r[foo\barzntpath.splitdrive('foo/bar'))r[foo/barzntpath.splitdrive('\'))r[r2zntpath.splitdrive('/'))r[/zntpath.splitdrive('\foo\bar'))r[\foo\barzntpath.splitdrive('/foo/bar'))r[/foo/barzntpath.splitdrive("c:foo\bar"))c:razntpath.splitdrive("c:foo/bar"))rfrbzntpath.splitdrive("c:\foo\bar"))rfrdzntpath.splitdrive("c:/foo/bar"))rfrezntpath.splitdrive('\\'))r3r[zntpath.splitdrive('//'))//r[z/ntpath.splitdrive("\\conky\mountpoint\foo\bar"))\\conky\mountpointrdz/ntpath.splitdrive("//conky/mountpoint/foo/bar"))//conky/mountpointrez-ntpath.splitdrive("\\?\UNC\server\share\dir"))\\?\UNC\server\sharez\dirz-ntpath.splitdrive("//?/UNC/server/share/dir"))//?/UNC/server/sharez/dirr]r^s rtest_splitdrivezTestNtpath.test_splitdrivefs&1);7.0@A-?(*5'302DE.0@A02DE/1BC24HI02DE*L9(*5E6	8@1	3D5	7>/	1rctddtddtddtddtd	d
tddtd
dtddtddtddtddtddtddtddtddtdd td!d"td#d$td%d&td'd(td)d*td+d,td-d.td/d0td1d2td3d4|jtjd5d6td7d8td9d:td;d<td=d>td?d@tdAdBtdCdDtdEdFtdGdHtdIdJtdKdLtdMdNtdOdPtdQdRtdSdTtdUdVtdWdXtdYdZtd[d\td]d^td_d`tdadbtdcddtdedftdgdhtdidjtdkdltdmdntdod(tdpdqtdrdstdtdutdvdwtdxdytdzd{y)|Nzntpath.splitroot(''))r[r[r[zntpath.splitroot('foo'))r[r[rYzntpath.splitroot('foo\bar'))r[r[razntpath.splitroot('foo/bar'))r[r[rbzntpath.splitroot('\'))r[r2r[zntpath.splitroot('/'))r[rcr[zntpath.splitroot('\foo\bar'))r[r2razntpath.splitroot('/foo/bar'))r[rcrbzntpath.splitroot("c:foo\bar"))rfr[razntpath.splitroot("c:foo/bar"))rfr[rbzntpath.splitroot("c:\foo\bar"))rfr2razntpath.splitroot("c:/foo/bar"))rfrcrbzntpath.splitroot('c:\\a'))rfr2\azntpath.splitroot('c:\\\a/b'))rfr2z\\a/bzntpath.splitroot('c:/\'))rfrcr2zntpath.splitroot('c:\/'))rfr2rczntpath.splitroot('/\a/b\/\'))z/\a/br2z/\zntpath.splitroot('\/a\b/\/'))z\/a\brcz\/zntpath.splitroot('\\'))r3r[r[zntpath.splitroot('//'))rgr[r[z.ntpath.splitroot("\\conky\mountpoint\foo\bar"))rhr2raz.ntpath.splitroot("//conky/mountpoint/foo/bar"))rircrbz/ntpath.splitroot("\\\conky\mountpoint\foo\bar"))z\\\conkyr2mountpoint\foo\barz/ntpath.splitroot("///conky/mountpoint/foo/bar"))z///conkyrcmountpoint/foo/barz/ntpath.splitroot("\\conky\\mountpoint\foo\bar"))z\\conky\r2roz/ntpath.splitroot("//conky//mountpoint/foo/bar"))z//conky/rcrpu//conky/MOUNTPOİNT/foo/bar)u//conky/MOUNTPOİNTrcrbzntpath.splitroot("//?/c:"))//?/c:r[r[zntpath.splitroot("//./c:"))z//./c:r[r[zntpath.splitroot("//?/c:/"))rqrcr[zntpath.splitroot("//?/c:/dir"))rqrcdirzntpath.splitroot("//?/UNC"))z//?/UNCr[r[zntpath.splitroot("//?/UNC/"))z//?/UNC/r[r[z#ntpath.splitroot("//?/UNC/server/"))z//?/UNC/server/r[r[z(ntpath.splitroot("//?/UNC/server/share"))rkr[r[z,ntpath.splitroot("//?/UNC/server/share/dir"))rkrcrrzIntpath.splitroot("//?/VOLUME{00000000-0000-0000-0000-000000000000}/spam"))z0//?/VOLUME{00000000-0000-0000-0000-000000000000}rcspamz&ntpath.splitroot("//?/BootPartition/"))z//?/BootPartitionrcr[z&ntpath.splitroot("//./BootPartition/"))z//./BootPartitionrcr[z&ntpath.splitroot("//./PhysicalDrive0"))z//./PhysicalDrive0r[r[zntpath.splitroot("//./nul"))z//./nulr[r[zntpath.splitroot("\\?\c:"))\\?\c:r[r[zntpath.splitroot("\\.\c:"))z\\.\c:r[r[zntpath.splitroot("\\?\c:\"))rtr2r[zntpath.splitroot("\\?\c:\dir"))rtr2rrzntpath.splitroot("\\?\UNC"))z\\?\UNCr[r[zntpath.splitroot("\\?\UNC\"))z\\?\UNC\r[r[z#ntpath.splitroot("\\?\UNC\server\"))z\\?\UNC\server\r[r[z(ntpath.splitroot("\\?\UNC\server\share"))rjr[r[z,ntpath.splitroot("\\?\UNC\server\share\dir"))rjr2rrzIntpath.splitroot("\\?\VOLUME{00000000-0000-0000-0000-000000000000}\spam"))z0\\?\VOLUME{00000000-0000-0000-0000-000000000000}r2rsz&ntpath.splitroot("\\?\BootPartition\"))z\\?\BootPartitionr2r[z&ntpath.splitroot("\\.\BootPartition\"))z\\.\BootPartitionr2r[z&ntpath.splitroot("\\.\PhysicalDrive0"))z\\.\PhysicalDrive0r[r[zntpath.splitroot("\\.\nul"))\\.\nulr[r[zntpath.splitroot("//")zntpath.splitroot("///"))z///r[r[zntpath.splitroot("///y"))z///yr[r[zntpath.splitroot("//x"))z//xr[r[zntpath.splitroot("//x/"))z//x/r[r[zntpath.splitroot(" :/foo"))z :rcrYzntpath.splitroot("/:/foo"))r[rcz:/foo)rErIr#	splitrootr^s rtest_splitrootzTestNtpath.test_splitroot~s%|4(/:-/CD,.AB'8&
6/1GH-/CD/1GH.0EF13KL/1GH	,.AB02IJ	*,=>*,=>02IJ02IJ	)+;<'8D:	<?5	7F9	;@3	5F<	>@6	8	
))*GH@	B	+-?@+-?@,.AB/1GH,.AB-/CD46QR9;[\=?cdZP	R79WX79WX79WX,.AB.0EF.0EF02IJ35OP/1GH13KL9;[\>4	6C9	;^T	V;=_`;=_`:<]^/1GH	'8(/:)+;<(/:)+;<	+-?@+-?@rctddtddtddtddtd	d
tddy)
Nzntpath.split("c:\foo\bar"))zc:\foobarz*ntpath.split("\\conky\mountpoint\foo\bar"))z\\conky\mountpoint\fooryzntpath.split("c:\"))c:\r[z#ntpath.split("\\conky\mountpoint\"))z\\conky\mountpoint\r[zntpath.split("c:/"))c:/r[z#ntpath.split("//conky/mountpoint/"))z//conky/mountpoint/r[r]r^s r
test_splitzTestNtpath.test_splitsP-/AB@4	6	%|48.	0	$k246QRrctddtddtddtddtddtddy)Nzntpath.isabs("c:\")z#ntpath.isabs("\\conky\mountpoint\")zntpath.isabs("\foo")zntpath.isabs("\foo\bar")z"ntpath.isabs("\\conky\mountpoint")zntpath.isabs("\\.\C:")r]r^s r
test_isabszTestNtpath.test_isabssF%q)8!<&*+Q/	6:*A.rcLtddtddtddy)Nz>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/spamr]r^s rtest_commonprefixzTestNtpath.test_commonprefixs,O	R	!L 	"rc	tddtddtddtddtdd	td
dtdd
tddtddtddtddtddtddtddtddtddtddtddtddtd dtd!d"td#d$td%d&td'd(td)d*td+d,td-d.td/d0td1d2td3d4td5d6td7d8td9d:td;d<td=d<td>d0td?d0td@d0tdAd0tdBd8tdCd8tdDd8tdEdFtdGdHtdIdJtdKdLdMD]}dND]}tdO|dP|dQ|tdRdStdTdStdUdStdVdWtdXdYtdZd[td\d]td^d_td`datdbdSy)cNzntpath.join("")r[zntpath.join("", "", "")zntpath.join("a")azntpath.join("/a")z/azntpath.join("\a")rnzntpath.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")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/y)
r[za/bz/a/brfzc: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/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')r])rJxys   r	test_joinzTestNtpath.test_joins "%("-!3'"D)#U+"D))73(%0+Y7-y9-y9-u5/=.
;%s+137%u-159'/3U;&-*J7+[9,j9)73,l;-{;*H5-}=.=79PQ8:PQ;=XY+V4,f5*H5-x8+X6.98:PQ9;QR:<RS+W5.=,h7/?S	:AW
:15q9
:	:	?A\]=?Z[;=XY;=TU:<TU79PQ0.A79NO:<TU=?Z[rc4tddtddtddtddtddtd	d
tddtd
dtddtddtddtddtddtddtddtddtddtddtd d!td"d#td$d%td&d'td(d)td*d+td,d-td.d/td0d1td2d1td3d1td4d1td5d6td7d8td9d:td;d<y)=Nz$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('')zntpath.normpath('/')r2zntpath.normpath('c:/')rzzntpath.normpath('/../.././..')zntpath.normpath('c:/../../..')zntpath.normpath('../.././..')..\..\..zntpath.normpath('K:../.././..')z
K:..\..\..zntpath.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('\\')r3r]r^s r
test_normpathzTestNtpath.test_normpath<s5v>)62.7*H5+X60(;-y9.	:3Y?&.%t,$d+%t,'0/6/8.<0-@-y98:PQ.
;3^DBDYZEG_`?K@,O5;PQ6;PQ8;PQ9;PQ	/?-{;+Y7(&1rctjtj}t	d|t	d|t	d|t	d|t	d|y)Nzntpath.realpath('.')zntpath.realpath('./.')z&ntpath.realpath('/'.join(['.'] * 100))zntpath.realpath('.\.')z&ntpath.realpath('\'.join(['.'] * 100)))r#normpathr%getcwdrErJexpecteds  rtest_realpath_curdirzTestNtpath.test_realpath_curdirfsM??299;/%x0'27B((38(Crctjtj}t	dtj
|t	dtj
tj
|t	dtj|ddzt	dtj
tj
|t	dtj|ddzy)Nzntpath.realpath('..')zntpath.realpath('../..')z&ntpath.realpath('/'.join(['..'] * 50))rr2zntpath.realpath('..\..')z&ntpath.realpath('\'.join(['..'] * 50)))r#rr%rrEdirname
splitdrivers  rtest_realpath_pardirzTestNtpath.test_realpath_pardirns??299;/&x(@A)~~fnnX67	97  *1-4	6*~~fnnX67	98  *1-4	6rzneed _getfinalpathnamectjtj}t	|dj|j
tj||j
tj|dztj||dz|jtj|dz||jtjtj|dztj|tjDchc]}|d	c}ttj z
}|j#j%}|j'tj|||j'|dztjtjdzdycc}w)Nwb1z:\spamFstrict)r#abspathrTESTFNopenclose
addCleanupunlinkr%symlinkrMrealpathr:stringascii_uppercaseset
listdrivespopr<rI)rJABSTFNcdrivesds     rtest_realpath_basiczTestNtpath.test_realpath_basiczsI	 0 01VT  "	((&1	((&3,7


66C<(V__Vc\:FCV__R[[#-FGV,	.
&,%;%;<QCs)<s2==??SSJJL!+Q/	
(*)9)9H)DUS	U=s"Gctjtj}t	j
|dz||j
tj||jttj|d|jttj|dzd|jttj|dzdy)NrTr2r)r#rrrr%rrrassertRaisesFileNotFoundErrorrrrJrs  rtest_realpath_strictzTestNtpath.test_realpath_stricts
	 0 01


6C<(	((&1+V__fTR+V__fslSWX'6??FX4EdSrctjtj}t	|dj|j
tj||j
tj|dztj|tj|dz|jtj|dz|y)Nrr)
r#rrrrrrrr%rrelpathrMrrs  rtest_realpath_relativez!TestNtpath.test_realpath_relatives	 0 01VT  "	((&1	((&3,7


66>>&3,78V__Vc\:FCrcH	tjtj}t	j
||j
tj|tj|5t	j
dt	jdt	jddt	jddt	jdt	jddt	jddt	jd	d
t	jddt	jd
dt	j|dzdt	jdd|jtjd|dz|jtjd|dz|jtjd
|dz|jtjd|dz|jtjd|dz|jtjd|dz|jtjd|dz|jtjd|dz|jtjdt	j|dz|jtjdt	j|dz|jtjdt	j|dz|jtjdt	j|dz|jtjdt	j|dz|jtjd t	j|dz|jtjd!t	j|dz|jtjd"t	j|dzdddy#1swYyxYw)#Nsubdirr	recursiverparentrJmissingbrokenz
broken\barbroken1zself\self\brokenbroken2z"subdir\parent\subdir\parent\brokenbroken3z\brokenbroken4zrecursive\..\brokenbroken5z\missingz
broken\fooz\missing\fooz\broken\barzbroken1\bazz\broken\bar\bazz\self\self\missingz$\subdir\parent\subdir\parent\missingsbrokens
broken\foosbroken1sbroken1\bazsbroken2sbroken3sbroken4sbroken5)r#rrrr%mkdirrrmtree
change_cwdchdirrrMrr:rs  rtest_realpath_broken_symlinksz(TestNtpath.test_realpath_broken_symlinkssu	 0 01
	((&1

!
!&
)0	DHHXHHXJJsK(JJtX&HHTNJJsF#JJy(+JJ}i0JJ*I6JJ<iHJJv
*I6JJ-y9  !:!'+!5
7  !?!'/!9
;
  !<!'.!8
:  !@!'*<!<
>  !;!'*?!?
A  !;!'*Q!Q
S  !;!'+!5
7  !;!'+!5
7
  !;!#Vk-A!B
D  !@!#Vo-E!F
H  !=!#Vn-D!E
G  !A!#V6H-H!I
K  !<!#V6K-K!L
N  !=!#V6]-]!^
`  !<!#Vk-A!B
D  !<!#Vk-A!B
D_0	D0	D0	Ds
.P!RR!cJtjtj}|j	tj
||j	tj
|dz|j	tj
|dz|j	tj
|dz|j	tj
|dz|j	tj
|dzt
j|||jtj||t
j|dz|dzt
j|dz|dz|dz|dzf}|jtj|dz||jtj|dz||jtj|dzd|D|jtj|dztj||jtj|d	ztj|d
zt
j|dz|dz|jtj|dztj|zdz|dz|jtj|dztj|zdz|t
jtj|d
z|dz|jtj|dz|dzt
jdtjtj|zdztj|zdz|dz|jtj|dz|dz|jtjtj||y)Nrrrrr1\xc3HK|]}tj|dyw)rN)r#join)r'rs  rr)z9TestNtpath.test_realpath_symlink_loops.<locals>.<genexpr>sA16;;q#.As "1\..1\..\xz\xr1\..\a\b..\r2)
r#rrrrrr%rrMrrQrbasename)rJrrs   rtest_realpath_symlink_loopsz&TestNtpath.test_realpath_symlink_loopss2	 0 01	((&1	((&3,7	((&3,7	((&3,7	((&3,7	((&3,7


66"V__V4f=


6C<#.


6C<#.SL&3,/&//&3,7B&//&3,7B&//&6/:AA	CV__Vg-=>#^^F3	5V__Vj-@A#^^F3e;	=


6C<#.V__Vi-?/5v/F.GIL.MN#c\	+	
&//&9*<,2OOF,C+DFI+JK"	$	

6??6*V3Vc\BV__Vc\:FSLI


6FOOFNN6,BCC"OOF3469:;AC<	IV__Vc\:FSLI	
V__V__V-DEvNrctjtj}|j	tj
||j	tj
|dz|j	tj
|dz|j	tj
|dz|j	tj
|dz|j	tj
|dzt
j|||jttj|dt
j|dz|dzt
j|dz|dz|jttj|dzd|jttj|dzd|jttj|dzd|jtj|d	zdtj||jttj|d
zdt
j|dz|dz|jttj|dztj|zdzd|jttj|dztj|zdzdt
jtj|d
z|dz|jttj|dzdt
jdtjtj|zdztj|zdz|dz|jttj|dzd|jttjtj|dy)NrrrrrTrrrrrrrrr2)r#rrrrrr%rrrrrMrrrs  r"test_realpath_symlink_loops_strictz-TestNtpath.test_realpath_symlink_loops_stricts	 0 01	((&1	((&3,7	((&3,7	((&3,7	((&3,7	((&3,7


66"'6??F4H


6C<#.


6C<#.'6??FSLN'6??FSLN'6??FVODQ	
V__Vg-=dK#^^F3	5'6??FZ4GPTU


6C<#.'6??FY4F/5v/F5GIL5M48		:	
'6?? 9,vv/FFL!%		'	

6??6*V3Vc\B'6??FSLN


6FOOFNN6,BCC"OOF3469:;AC<	I'6??FSLN	
'6??FOOF4K!%		'rctjtj}|j	tj
|dz|j	tj
d|zdz|j	tj
|dz|j	tj
|dzt
|dzd5}|jddddtj|dz|dzt
d|zdzd5}|jddddtjd|zdz|dz|jtj|dz|dz|jtj|dzd|zdzt
tj|dzd	5}|j|jddddt
tj|dzd	5}|j|jdddd|jtjd|zdzd|zdz|jtjd|zdzd|zdzy#1swYxYw#1swYxYw#1swYxYw#1swYxYw)
N3z\\?\z3.3linkz3.linkr01rb)r#rrrrrrwriter%rrMrrIread)rJrfs   rtest_realpath_symlink_prefixz'TestNtpath.test_realpath_symlink_prefix=sX	 0 01	((&3,7	(()f*<t*CD	((&7*:;	((&8*;<
&3,
%	
GGDM	


6C<'!12
)f$t+T
2	a
GGDM	


9v%,fx.?@V__Vg-=>#c\	+V__Vh->?&/$6	8&//&7"23T
:	-aQVVXt,	-
&//&8"34d
;	-qQVVXt,	-	
V__Y-?'-IJ&/#5	7V__Y-?(-JK&/$6	8-					-	-	-	-s0J
J">!J/	!J;J"J,/J8;Kctddy)Nzntpath.realpath('NUL')rr]r^s rtest_realpath_nulzTestNtpath.test_realpath_nul_s
'4rzneed _getshortpathnamecrtjtj}tj|tj
|t
j||jtj
|tj|d}t
j|t|}tj|d}tj|d}t|d5}|jdddd|j|tj|tj|5|j|tjddddtj|j!5|j|tjddddtj|5|j|tjddddy#1swYxYw#1swYxYw#1swYfxYw#1swYyxYw)NMyVeryLongDirectoryNamezfile.txtrscontent)r#rrrrrr%rrrrrrrMrrlower)rJr
test_dir_longtest_dir_shorttest_file_longtest_file_shortrs       rtest_realpath_cwdzTestNtpath.test_realpath_cwdcs	 0 01  
	((&1F,EF

*=9]J? ++njA
.$
'	 1
GGJ	 	
^V___-MN

!
!-
0	N  1LM	N

!
!-"5"5"7
8	N  1LM	N

!
!.
1	N  1LM	N	N	 	 
	N	N	N	N	N	Ns01H&H&H!&H-HH!H*-H6c\tj5}|jd|d<d|d<d|d<tddtdd	td
dtdd
tddtddtddtddtddtddtddtdd	tddtddtddtd d!td"d#td$d%td&d'dddy#1swYyxYw)(NryrYbaz1z{foobaz2z{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%)rEnvironmentVarGuardclearrErJenvs  rtest_expandvarszTestNtpath.test_expandvarss

*
*
,	DIIKCJ CK!CL-u52I>3X>3[A2J?/92I>/92G<2H=2J?3Y?2H=4h?9=I0(;3Y?7I4lC/	D	D	DsDD""D+zneed os_helper.FS_NONASCIIcd}tj5}|jtj}||d<d|z||<|dd|z|d|zd|z|dd|z|d	|zd
|z|dd|z|d
|zd
|z|dd|z|dj	|d|z|dd|z|dj	|d
|zdddy#1swYyxYw)Nc"td|z|y)Nzntpath.expandvars(%r)r])valuers  rcheckz2TestNtpath.test_expandvars_nonascii.<locals>.checks*U2H=rrshamz	$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)rrrFS_NONASCIIr)rJrrnonasciis    rtest_expandvars_nonasciiz#TestNtpath.test_expandvars_nonasciis	>

*
*
,	EIIK ,,H"CK!H,CM+x(23)h&	H(<=,( 23*x'h)>?+x(23)h&	H(<=,8 34*##H-{X/EF+w12)""8,j8.CD	E	E	EsC
C..C7ctddtj5}|jtddd|d<d|d<d	|d
<tddtdd
|d=tddtdd|jd
|d<d	|d
<tddtdd
tddtddtddtdd|jd|d<d
|d<d	|d
<tddtdd
|jd
|d<d|d
<tddtdd
dddy#1swYyxYw)Nzntpath.expanduser("test")testzntpath.expanduser("~test")z~testC:\	HOMEDRIVEz
Users\ericHOMEPATHericUSERNAMEz
C:\Users\testzntpath.expanduser("~")z
C:\Users\ericz
Users\testUSERPROFILEz"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:\HOMEidle)rErrrrs  rtest_expanduserzTestNtpath.test_expandusers{*F3

*
*
,*	@IIK/9%C+C
O$C
O/1BC+->?K /?+];IIK!2C
$C
O/1BC+->?9.
07,
.5.
03,
.
IIK CK!2C
$C
O/1BC+->?
IIK!2C
$C
O/9+->?U*	@*	@*	@sD*EEzabspath requires 'nt' modulec^tddtddtddtddtd	dtd
dtddtd
dtddtddtddtddtddtddtddtddtddtddtddtdd td!d td"d td#d td$d td%d&td'd(td)d(td*d(td+d(td,d(td-dtd.dtd/dtd0dtd1dtjtj5}td2|td3|d4ztd5|d6zt	j
|\}}td7|d8zdddy#1swYyxYw)9Nzntpath.abspath("C:\")rz-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")ruzntpath.abspath("C:\nul")zntpath.abspath("//..")r3zntpath.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/")rz#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)rErtemp_cwdrr#r)rJcwd_dirdrive_s    rtest_abspathzTestNtpath.test_abspaths	'0ACZ[ACZ[4:JK8:JK/*=0*=)L9*L9'6:(:>*:>+>B.>B0>B1>B+|D,~F.~F/7IJ17IJ27IJ47IJ57IJ1:MN2:OP4:OP5:OP7:OP8:OP/>,v6-v6/*=0*=


	 0 0
1	?W'1('E/:('E/:((1HE1,ego>	?	?	?s
AH##H,ctddtddtddtddtjtj5}t	j
|}tdd	|zd
ztdd	|zdzdddtd
dtddtddtddtddtddtddtddtddtddtd dtd!dtd"dtd#dy#1swYxYw)$Nzntpath.relpath("a")rz#ntpath.relpath(ntpath.abspath("a"))zntpath.relpath("a/b")rzntpath.relpath("../a/b")z..\a\bzntpath.relpath("a", "../b")rrnzntpath.relpath("a/b", "../c")z\a\bzntpath.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")rz(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")rz$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"))rErr	rr#r)rJr

currentdirs   rtest_relpathzTestNtpath.test_relpaths5$c*4c:&/):6


	 0 0
1	PW1J0&2CE2IJ2F:4Eh4NO	P	+[9;=TUQS^_)3/9;VW;UC4oF4lC57JK5G)3/+S1/53S9#	P	Ps:D??Ecd}fd}jttjg|tddg|tddg|tddg|tddg|dgd|ddgd|ddgd|ddgd|dd	gd|d
dgd|dd
gd|dd
gd|ddgd|ddgd|ddgd|ddgd|ddgd|ddgd|ddgd|tddg|dgd|ddgd|ddgd|ddgd|ddgd|ddgd|gdd|gd d|d!d"gd#|dgd|dd$gd|tdd%gjttjd&dgjttjd&d'gjttjd(dgjttjdd)gjttjdd*gjttjdd)gy)+NcBtd|zjdd|y)Nzntpath.commonpath(%r)r3r2)rEr8)pathsrs  rrz)TestNtpath.test_commonpath.<locals>.check$s"+e3<<VTJ
rc
j|tj|j|tj|Dcgc]}tj|c}ycc}wr")rr#
commonpathr%r:)excrr(rJs   rcheck_errorz/TestNtpath.test_commonpath.<locals>.check_error'sLc6#4#4e<c6#4#47<=!r{{1~=
?=sA&zC:\Program Filesz
Program FileszC:Program Filesz\Program FileszC:\Program Files\zC:\\Program FileszC:\Program Files\\zC:\.\Program FileszC:\Program Files\.rzC:\binzC:\Program Files\BarzC:\Program Files\FoozC:\ProjectszC:/Program Files/Barzc:/program files/barzc:\program fileszD:\Program Filesrsalotr[and\jamand\spamandzand\\jamz
and\spam\\z	and\.\jamz
.\and\spam)rrr)rrrz	C:and\jamz
C:and\spamzC:andz	spam\alotz
\spam\alotsC:\Program FileszProgram Files\Foos
Program FilessC:\Program Files\FoosProgram Files\Foo)r
ValueErrorr#r	TypeError)rJrrs`  rtest_commonpathzTestNtpath.test_commonpath#s		?
	
*f&7&7<J!4o FGJ!46G HIJ!2O DEJ2E FG
"#%89
"$78:MN
$&9:!	#
$&;<!	#
$&=>!	#
%'=>!	#
vy!6*
"I.7
"$<=!	#
')AB!	#
"N3V<
$n5v>
')?@!	#
')?@!	#
%'?@!	#	J!46I JK
vh
vv'
vv#
z;'/
|_-u5
}n-u5
/4
.6
|]+W5
rdB
r< "%J^ 45)V%6%6/1IJ	L)V%6%6/1EF	H)V%6%6+-EF	H)V%6%6.0IJ	L)V%6%6.0EF	H)V%6%6*,EF	Hrz&Emscripten cannot fstat unnamed files.c	*t5}t5}|jtj|j	|j	|jtj|j	|j	tjdk(r4|jt5tjdddddddddddy#1swYxYw#1swYxYw#1swYyxYw)Nwin32)
r	
assertTruer#sameopenfilefilenoassertFalsesysplatformrr)rJtf1tf2s   rtest_sameopenfilezTestNtpath.test_sameopenfilehs
_
	0]_
	0OOF//

cjjlKLV00szz|LM||w&&&w/0''B/0
	0
	0
	000
	0
	0
	0
	0s;D	B+C=C1C= D	1C:6C==D	D		Dc|jtjd|jtjd|jtjd|jtjd|jtjd|jtjd|jtjd|jtjd|jtjd	|jtjd
|jtjd|jtjdtj5}|jtj|dddtjd
k(r@tjd}tj|\}}tj|5|jtj|j|jtj|jddd|jtjd|jtjd|jtjd|jtjdyy#1swY_xYw#1swYxYw)Nrzrr{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#ismountrtemp_dirr&r'r(r%getenvrrrupper)rJrtest_cwdrrs     rtest_ismountzTestNtpath.test_ismountvs*v./v./u-.u-.}56}56w/0w/0v./v./~67~67



!	0QV^^A./	0<<7"yy.H ++H5KE4%%h/
@  
!>?  
!>?
@
OOFNN+>?@OOFNN+@ABOOFNN+?@AOOFNN+ABC!#	0	0
@
@s%MA%MMMc`|j|j|jy)z<Assert that two strings are equal ignoring case differences.N)rIr)rJs1s2s   r
assertEqualCIzTestNtpath.assertEqualCIsRXXZ0rzOS helpers require 'nt' modulectjtj}|t	j
|fD]Y}tj|}tj|d}tj|d}|j||[tjtj\}}|j|d|j|dtjtjj\}}	|j|||j|	dtjtjfD]}tj|}
|j!|
t"|jt%|
dtj|j}|j!|t&|jt%|dy)Nr)nt_getfinalpathnamer'
executabler%r:_getvolumepathnamer#rr7
_getdiskusageexec_prefix
assertGreaterr<rIprefixassertIsInstancer,lenr+)rJr;rvolume_path
path_drivevolume_path_drivecapfreeb_capb_free
final_pathb_final_paths            rtest_nt_helperszTestNtpath.test_nt_helperss
))#..9
J 77	>D//5K**403J & 1 1+ >q Az+<=		>$$S__5	T3"4#(()?)?)AB
v$61%ZZ0	5D--d3J!!*c2s:2//
>L!!,6s<0!4	5rr!z/Can only test junctions with creation on win32.cFtj5}tj|5tjdddl}	|j
dd|jtjd|jtjd|jtjdtjdddddddy#t$rtjdwxYw#1swY4xYw#1swYyxYw)Ntmpdirrtestjuncz!creating the test junction failed)rr/rr%r_winapiCreateJunctionrunittestSkipTestr#r#
isjunctionr&rMr)rJrrPs   rtest_isjunctionzTestNtpath.test_isjunctions



!	]Q%%a(
]"Q**8Z@ 1 1* =>  !2!28!<=$$V__Z%@&//RZB[\
]	]	]Q"++,OPPQ

]
]	]	]s;DDC)BDD)DDD	DD z#drive letters are a windows conceptctjjd}|t|dk7s|ddk7rt	j
d|j
tjjd|zy)NSystemDriver~:z'SystemDrive is not defined or malformedz\\.\)	r%environgetrBrRrSr&risfile)rJrs  rtest_isfile_driveletterz"TestNtpath.test_isfile_driveletters_

}-=CJ!OuQx3##$MNN	E(9:;rzwindows onlyct|jtjjd|jtjj	d|jtjjd|j
tjjdy)Nz\\.\CON)r&r%rr\isdirislinkr#existsr^s rtest_con_devicezTestNtpath.test_con_devicesl
34z23
34z23rzFast paths are only for win32c|jtjjtj
u|j
tjtjj|jtjjtju|j
tjtjj|jtjjtju|j
tjtjj|jtjjtju|j
tjtjjyr")r#r%rr_r9_path_isdirr&inspect
isfunctionr\_path_isfiler`_path_islinkra_path_existsr^s rtest_fast_paths_in_usez!TestNtpath.test_fast_paths_in_uses	


78++BGGMM:;"//9:++BGGNN;<"//9:++BGGNN;<"//9:++BGGNN;<rr9zDev Drives only exist on Win32c8|jtjtjd|jtjdd|jtjdd|jtjtjdd|jtjd|jt5tjddddy#1swYyxYw)N)TFr.rz2\\?\Volume{00000000-0000-0000-0000-000000000000}\\)rOr#
isdevdriverrr%listvolumesr&rrr9_path_isdevdriver^s rtest_isdevdrivezTestNtpath.test_isdevdrives	


f''	(8(89=I

f'',m<

f''-}=

f''(8(;<mL**+`ab


w
'	W UV	W	W	Ws1DDz'isdevdrive fallback only used off Win32ch|jtjtjyr")r&r#rmrrr^s rtest_isdevdrive_fallbackz#TestNtpath.test_isdevdrive_fallbacks#	
**9+;+;<=rN)5rRrSrTr_rlrwr|rrrrrrrskip_unless_symlinkrR
skipUnlessHAVE_GETFINALPATHNAMErrrrrrrrHAVE_GETSHORTPATHNAMErrrrrr9r
rrskipIfrr+r3r7rLr'r(rUr]rbrrjr%namerprrrUrrrWrWYs
D10XAt
S/"D\L(2TD
6""X.0HIUJ#U*""X.0HI	TJ#	T""X.0HIDJ#D""X.0HI5DJ#5Dn""X.0HI+OJ#+OZ""X.0HI('J#('T""X.0HI8J#8@X.0HI5J5X.0HIX.0HINJJN6D4X..0LMENE&-@bX;<)?=)?V:0CHJX__]$LM0N0"DH1X=>5?5:X__S\\W,._`
]a
]X__S\\W,.ST<U<X__S\\W,n=4>4X__S\\W,.MN=O=X__RWW_&FGWHWX__RWW_&OP>Q>rrWceZdZeZdgZy)NtCommonTestrN)rRrSrTr#
pathmodule
attributesrUrrrzrzsJJrrzceZdZeZdZdZdZdZdZ	dZ
dZdZd	Z
d
ZdZdZd
ZdZdZdZdZdZdZdZdZdZy)
PathLikeTestsc8tj|_ttj|_|jtj|jt|jdd5}|jddddy#1swYyxYw)Nxbrstest_ntpath.PathLikeTests)	rr	file_namer	file_pathrrrr)rJfiles  rsetUpzPathLikeTests.setUpsm"))!)"2"23	(($..9
$..$
*	5dJJ34	5	5	5s5BBch|j||j||jyr")rMrr)rJfuncs  r_check_functionzPathLikeTests._check_functions$T$..143GHrc
|j|jjtjdk(rK|jt
jdd|jt
jddyy)Nr!uΩΩuωΩzabcdef)rrr$r'r(rIr#r^s rtest_path_normcasez PathLikeTests.test_path_normcases]TYY//0<<7"V__^<gFV__\:LI#rcN|j|jjyr")rrisabsr^s rtest_path_isabszPathLikeTests.test_path_isabsTYY__-rc|j|jjdtdd|jjdddy)Nrbr)rIrrrr^s rtest_path_joinzPathLikeTests.test_path_joins;Xc]C@S#6	8rcN|j|jjyr")rrsplitr^s rtest_path_splitzPathLikeTests.test_path_splitrrcN|j|jjyr")rrsplitextr^s rtest_path_splitextz PathLikeTests.test_path_splitext!TYY//0rcN|j|jjyr")rrrr^s rtest_path_splitdrivez"PathLikeTests.test_path_splitdrive$TYY112rcN|j|jjyr")rrrvr^s rtest_path_splitrootz!PathLikeTests.test_path_splitroot'sTYY001rcN|j|jjyr")rrrr^s rtest_path_basenamez PathLikeTests.test_path_basename*rrcN|j|jjyr")rrrr^s rtest_path_dirnamezPathLikeTests.test_path_dirname-TYY../rcN|j|jjyr")rrr`r^s rtest_path_islinkzPathLikeTests.test_path_islink0sTYY--.rcN|j|jjyr")rrlexistsr^s rtest_path_lexistszPathLikeTests.test_path_lexists3rrcN|j|jjyr")rrr.r^s rtest_path_ismountzPathLikeTests.test_path_ismount6rrcN|j|jjyr")rr
expanduserr^s rtest_path_expanduserz"PathLikeTests.test_path_expanduser9rrcN|j|jjyr")rr
expandvarsr^s rtest_path_expandvarsz"PathLikeTests.test_path_expandvars<rrcN|j|jjyr")rrrr^s rtest_path_normpathz PathLikeTests.test_path_normpath?rrcN|j|jjyr")rrrr^s rtest_path_abspathzPathLikeTests.test_path_abspathBrrcN|j|jjyr")rrrr^s rtest_path_realpathz PathLikeTests.test_path_realpathErrcN|j|jjyr")rrrr^s rtest_path_relpathzPathLikeTests.test_path_relpathHrrc|jj|j|jg}|j	||jyr")rrrrrM)rJcommon_paths  rtest_path_commonpathz"PathLikeTests.test_path_commonpathKs7ii**DNNDNN+KL[$..9rcN|j|jjyr")rrr_r^s rtest_path_isdirzPathLikeTests.test_path_isdirOrrN)rRrSrTr#rrrrrrrrrrrrrrrrrrrrrrrrUrrr~r~swD5IJ.8.13210/00331010:.rr~__main__)$rer#r%rr'rRr=test.supportrrrrtest.support.os_helperrrrtempfiler	r9ImportErrorr:ruAttributeErrorr
rvrr0rETestCaserGrW
CommonTestrzr~rRmainrUrr<module>rs
	

02+!"
!
!#!
#<03X&&3b>b>J#..0A0A
M.NM.`zHMMOE"
B"!""!"s6CCC CCCC C*)C*