+
    Bi                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
HtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ R	IHt  ^ RIt]	! ]4      tR
 tR t ! R R]P8                  4      t ! R R]P<                  ]P8                  4      t ! R R]P8                  4      t ]!R8X  d   ]PD                  ! 4        R# R#   ] d    Rt Li ; i)    N)partial)realpathabspathdirnamebasenameALLOW_MISSING)support)test_genericpath)import_helper)	os_helper)FakePathTESTFN)mockc                b    R\         9   pRpV \        P                  ! V4      ! V 4      .V,          # )z
On Windows, posixpath.abspath still returns paths with backslashes
instead of posix forward slashes. If this is the case, several tests
fail, so skip them.
\z'ABSTFN is not a posix path - tests fail)ABSTFNunittestskip)testfound_backslashmsgs   &  */usr/lib/python3.14/test/test_posixpath.py!skip_if_ABSTFN_contains_backslashr      s0     fnO
3C(--$T*+O<<    c                  0    \         P                  ! R V 4      # )kwargs)r	   subTests)
parameterss   *r   _parameterizer   &   s    Hj11r   c            	         a  ] tR t^*t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR t]P&                  R 4       t]P,                  ! ]RJ R4      R 4       t]P,                  ! ]RJ R4      R 4       tR t]P,                  ! ]P8                  R8H  R4      ]P<                  R 4       4       tR t R t!]P,                  ! ]P8                  R8H  R4      R 4       t"]P,                  ! ]P8                  R8H  R4      R 4       t#. R<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNRjNRkNRlNt$R t%]&]'! / RR /R](/4      R! 4       4       t)]&]'! / RR /R](/4      R" 4       4       t*]P&                  ]&]'! / R](/4      R# 4       4       4       t+]P&                  ]&R$ 4       4       t,R% t-]P&                  ]&]'! / R](/4      R& 4       4       4       t.]P&                  ]&]'! / R](/4      R' 4       4       4       t/]P&                  ]&R( 4       4       t0]P&                  ]&]'! RR /R](/4      R) 4       4       4       t1]P&                  ]&]'! / RR /R](/4      R* 4       4       4       t2]P&                  ]&]'! / RR /R](/4      R+ 4       4       4       t3]P&                  ]&]'! / R](/4      R, 4       4       4       t4]P&                  ]&]'! / RR /R](/4      R- 4       4       4       t5]P&                  ]&]'! / RR /R](/4      R. 4       4       4       t6]P&                  ]&]P,                  ! ]7Pp                  ]7Pr                  9  R/4      ]P,                  ! ]P8                  R08g  R14      R2 4       4       4       4       t:]P&                  ]&]P,                  ! ]7Pp                  ]7Pr                  9  R/4      ]P,                  ! ]P8                  R08g  R14      ]'! RR /R](/4      R3 4       4       4       4       4       t;]&]P&                  R4 4       4       t<]&R5 4       t=]P&                  ]&R6 4       4       t>]P&                  ]&R7 4       4       t?R8 t@R9 tAR: tBR;tCV tDR# )mPosixPathTestc                x    R F3  pV P                  \        P                  ! \        V,           4      4       K5  	  R# ) N)r#   12)assertFalse	posixpathlexistsr   )selfsuffixs   & r   setUpPosixPathTest.setUp,   s)    $FY..v?@ %r   c                   \         P                  pV P                  V! R RRR4      R4       V P                  V! R RR4      R4       V P                  V! RRR4      R	4       V P                  V! R
RRR4      R4       V P                  V! R
RR4      R4       V P                  V! RRR4      R4       V P                  V! RR4      R4       V P                  V! RRR4      R4       V P                  V! RR4      R4       V P                  V! RR4      R4       V P                  V! RR4      R4       V P                  V! RR4      R4       V P                  V! RRR4      R4       V P                  V! RRR4      R4       V P                  V! RR R4      R4       V P                  V! R!R4      R"4       V P                  V! R#R4      R"4       V P                  V! RR$R%4      R&4       V P                  V! RR$R'4      R'4       R(# ))/foobar/barbaz/bar/bazz/foo/bar/bazz/foo/zbar/zbaz/z/foo/bar/baz/   /foo   bars   /bars   bazs   /bar/bazs   /foo/bar/bazs   /foo/s   bar/s   baz/s   /foo/bar/baz/ar#   za/ba/bzb/a/b/b/cdza/b/c/dzb//cza/b//c/dzb/c//a/a/bz/a/z/bcz/b/cz/cN)r'   joinassertEqual)r)   fns   & r   	test_joinPosixPathTest.test_join0   s   ^^FE659:FFE51>JGVV4?KGVWf={KGVV4OHgw7?OPCt4CRt4Cu5Cv6D#u5D$v6C,y9C-z:C-y9D#v6E3v6Cs+v6Ct,t4r   c                   V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R	4      R4       R
# )/foo/bar/foo////foo
//foo//bar   /foo/bar   /   foo   ////foo
   //foo//barN)r.   r/   )rE   r#   )r#   rF   )////rF   )//foor/   )r3   r4   )rJ   r   )r   rK   )   ////rK   )   //foor4   )r?   r'   splitr)   s   &r   
test_splitPosixPathTest.test_splitH   s    4oF-y9/=3_E68HI57HI.<0-@46GH79KLr   c                :   V P                  \        P                  ! V4      W#34       V P                  \        P                  ! R V,           4      R V,           V34       V P                  \        P                  ! RV,           4      RV,           V34       V P                  \        P                  ! RV,           4      RV,           V34       V P                  \        P                  ! RV,           4      RV,           V34       V P                  \        P                  ! VR ,           4      W#,           R ,           R34       \        VR4      p\        VR4      p\        VR4      pV P                  \        P                  ! V4      W#34       V P                  \        P                  ! RV,           4      RV,           V34       V P                  \        P                  ! RV,           4      RV,           V34       V P                  \        P                  ! RV,           4      RV,           V34       V P                  \        P                  ! R	V,           4      R	V,           V34       V P                  \        P                  ! VR,           4      W#,           R,           R
34       R# )rE   zabc/zabc.def/z	/abc.def/r#   ASCIIrJ   s   abc/s   abc.def/s	   /abc.def/r   N)r?   r'   splitextbytes)r)   pathfilenameexts   &&&&r   splitextTestPosixPathTest.splitextTestU   s   ++D1H?C++C$J7#.#9NO++FTM: 8+S1	3++J,=>$x/5	7++K$,>?%0#6	8++D3J7".3.3	5 T7#7+C!++D1H?C++D4K8/3/	1++GdN;!H,c2	4++K$,>?%0#6	8++L4,?@&137	9++D4K8".4/5	7r   c                   V P                  R RR4       V P                  RRR4       V P                  RRR4       V P                  RRR	4       V P                  R
R
R4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       V P                  RRR4       R# )zfoo.barrF   z.barzfoo.boo.barzfoo.boozfoo.boo.biff.barzfoo.boo.biffz.csh.rcz.cshz.rcnodotsr#   z.cshrcz...manydotsz...manydots.extz.ext...z........N)r]   rS   s   &r   test_splitextPosixPathTest.test_splitextq   s    )UF3-F;,nfE)VU3(Hb1(Hb1-;+]FC#sB'$b)*j"5"b"%r   c                   \         P                  pV P                  V! R 4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R	4      R4       V P                  V! R
4      R4       V P                  V! R4      R4       V P                  V! R4      R4       V P                  V! R4      R 4       V P                  V! R4      R!4       V P                  V! R4      R"4       V P                  V! R4      R#4       V P                  V! R4      R$4       R# )%r#   r5   r7   r8   r;   r<   z/a/b///az///az///a/bc:/a/b\/a/b\a\br      a   /a   //as   ///aN)r#   r#   r#   )r#   r#   r5   )r#   r#   r7   )r#   r#   r8   )r#   rE   r5   )r#   rE   r7   )r#   rE   r8   )r#   //r5   )r#   rE   rf   )r#   rE   z//a/b)r#   r#   rg   )r#   r#   rh   )r#   r#   ri   )r   r   r   )r   r   rj   )r   rJ   rj   )r   s   //rj   )r   rJ   rl   )r'   	splitrootr?   r)   fs   & r   test_splitrootPosixPathTest.test_splitroot   s   2-3/5?36$454.16$457%67 	5?36$458&898&898&898&89314"235#456$677%89r   c                   V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R	4      R4       V P                  \        P                  ! R
4      R4       V P                  \        P                  ! R4      R4       R# )r#   FrE   Tr.   rD   foo/barr   rJ   r3   rI   s   foo/barN)assertIsr'   isabsrS   s   &r   
test_isabsPosixPathTest.test_isabs   s    ioob)51iooc*D1ioof-t4iooj148iooi0%8iooc*E2iood+T2ioog.5iook2D9iooj159r   c                   V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R	4      R
4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       R# )rD   r/   rE   r#   rF   rG   rH   rI   r4   rJ   r   rK   rL   rM   N)r?   r'   r   rS   s   &r   test_basenamePosixPathTest.test_basename   s   ++J7?++C0"5++E2E:++I6>++L95A++K8&A++D137++F3V<++J7@++M:FCr   c                   V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R	4      R
4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       R# )rD   r.   rE   rF   r#   rG   rN   rH   rO   rI   r3   rJ   rK   r   rL   rP   rM   rQ   N)r?   r'   r   rS   s   &r   test_dirnamePosixPathTest.test_dirname   s   **:6?**3/5**5126**95v>**<8'B**;7A**40$7**62C8**:6@**=98Dr   c                   V P                  \        P                  ! \        R ,           4      R4       V P                  \        P                  ! \        R,           4      R4       V P                  \        P                  \        R ,           4       \        \        R ,           R4      ;_uu_ 4       pVP                  R4       RRR4       V P                  \        P                  ! \        R ,           4      R4       \        P                  ! 4       '       Ed@   V P                  \        P                  \        R,           4       \        P                  ! \        R ,           \        R,           4       V P                  \        P                  ! \        R,           4      R4       \        P                  ! \        R ,           4       V P                  \        P                  ! \        R,           4      R4       V P                  \        P                  ! \        R,           4      R4       V P                  \        P                  ! \        R,           4      R4       R# R#   + '       g   i     EL; i)r$   Fr%   wbrK   NT)ru   r'   islinkr   r(   
addCleanupr   unlinkopenwritecan_symlinkossymlinkremoveexistsro   s   & r   test_islinkPosixPathTest.test_islink   sf   i&&v|4e<i''5u=	((&3,7&3,%%GGFO &i&&v|4e<  ""OOI,,fsl;JJv|Vc\2MM)**6C<8$?IIfsl#MM)**6C<8$?MM)**6C<8%@MM)++FSL94@ #	 &%%s   -II&	c                   V P                  \        P                  ! \        R ,           4      R4       V P                  \        P                  ! \        P
                  ! \        4      R,           4      R4       V P                  \        P                  ! \        R,           4      R4       V P                  \        P                  ! \        P
                  ! \        4      R,           4      R4       R# )u   F        N)ru   r'   r   r   r   fsencoderS   s   &r   test_islink_invalid_paths'PosixPathTest.test_islink_invalid_paths   s    i&&v'895Ai&&r{{6':W'DEuMi&&v7?i&&r{{6':W'DEuMr   c                Z   V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! \        R 4      4      R4       V P                  \        P                  ! \        R4      4      R4       R# )rE   TrJ   N)ru   r'   ismountr   rS   s   &r   test_ismountPosixPathTest.test_ismount   sn    i'',d3i''-t4i''6=i''7>r   c                V   V P                  \        P                  ! \        4      R 4        \        P
                  ! \        4       V P                  \        P                  ! \        4      R 4       \        P                  ! \        4       R#   \        P                  ! \        4       i ; i)FN)ru   r'   r   r   r   mkdirr   rmdirrS   s   &r   test_ismount_non_existent'PosixPathTest.test_ismount_non_existent   s^    i''/7	$HHVMM)++F3U;OOF#IOOF#s   AB B(c                6   V P                  \        P                  ! R 4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       R# )   /F   //    / N)ru   r'   r   rS   s   &r   test_ismount_invalid_paths(PosixPathTest.test_ismount_invalid_paths   sf    i''	2E:i''159i''0%8i''159r   c                    \         P                  ! R \        4       V P                  \        P
                  ! \        4      R4       \        P                  ! \        4       R#   \        P                  ! \        4       i ; i)rE   FN)r   r   r   ru   r'   r   r   r   rS   s   &r   test_ismount_symlinks#PosixPathTest.test_ismount_symlinks   sK    	%JJsF#MM)++F3U;V$IV$s   AA# #A?NzTest requires posix modulec                    \         P                  pR  p V\         n        V P                  \        P                  ! \
        4      R4       V\         n        R#   T\         n        i ; i)c                 f    ^ p^ pV \         8X  d   ^p^p\        P                  ! ^ W^ ^ ^ ^ ^ ^ ^ 3
4      # )r   )r   posixstat_resultrZ   st_inost_devs   &  r   
fake_lstat?PosixPathTest.test_ismount_different_device.<locals>.fake_lstat   sA    FFv~$$aAq!Q1%MNNr   TNr   lstatru   r'   r   r   r)   
save_lstatr   s   &  r   test_ismount_different_device+PosixPathTest.test_ismount_different_device   sG     XX
	O	"!BHMM)++F3T:!BHzBH   5A A$c                    \         P                  pR  p V\         n        V P                  \        P                  ! \
        4      R4       V\         n        R#   T\         n        i ; i)c                     ^ p^ pV P                  \        4      '       d   V \        8w  d   \        R4      hV \        8X  d   ^p^p\        P                  ! ^ W^ ^ ^ ^ ^ ^ ^ 3
4      # )r   z!Fake [Errno 13] Permission denied)
startswithr   OSErrorr   r   r   s   &  r   r   EPosixPathTest.test_ismount_directory_not_readable.<locals>.fake_lstat  sd    FFv&&46> ABBv~$$aAq!Q1%MNNr   TNr   r   s   &  r   #test_ismount_directory_not_readable1PosixPathTest.test_ismount_directory_not_readable  sG     XX

	O	"!BHMM)++F3T:!BHzBHr   c                X    V P                  \        P                  ! \        4      4       R # N)r&   r'   
isjunctionr   rS   s   &r   test_isjunctionPosixPathTest.test_isjunction  s    --f56r   win32zFast paths are not for win32c                   V P                  \        P                  P                  \        P
                  J 4       V P                  \        P                  ! \        P                  P                  4      4       V P                  \        P                  P                  \        P                  J 4       V P                  \        P                  ! \        P                  P                  4      4       R # r   )
assertTruer   rZ   rn   r   _path_splitroot_exr&   inspect
isfunctionnormpath_path_normpathrS   s   &r   test_fast_paths_in_use$PosixPathTest.test_fast_paths_in_use!  s    
 	))U-E-EEF++BGG,=,=>?((E,@,@@A++BGG,<,<=>r   c                    V P                  \        P                  ! R 4      R 4       V P                  \        P                  ! R4      R4       R# )rF   rK   N)r?   r'   
expanduserrS   s   &r   test_expanduserPosixPathTest.test_expanduser+  s8    --e4e<--f5v>r   c           
        \         P                  ! 4       ;_uu_ 4       pR VR&   V P                  \        P                  ! R4      R 4       RVR&   V P                  \        P                  ! R4      R 4       R
 F  pV P                  VR7      ;_uu_ 4        W!R&   V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       R	R	R	4       K  	  R	R	R	4       R	#   + '       g   i     K  ; i  + '       g   i     R	# ; i)z/home/victorHOME~z/home/victor/rE   )home~/z~/foor.   N)rE   r#   rm   ///)r   EnvironmentVarGuardr?   r'   r   subTest)r)   envr   s   &  r   test_expanduser_home_envvar)PosixPathTest.test_expanduser_home_envvar/  s    **,,(CKY11#6G *CKY11#6G,\\t\,,"&K$$Y%9%9#%>D$$Y%9%9$%?E$$Y%9%9'%BFK	 -, - -, -,, -,,s%   A6D5A7D!D5!D2,	D55E	vxworkszno home directory on VxWorksc                B   \         P                  ! R 4      pV P                  \        P                  ! R4      \
        4       V P                  \        P                  ! R4      \        4       \        P                  ! R4      R8w  d   V P                  \        P                  ! R4      R,           \        P                  ! R4      4       V P                  \        P                  ! R4      R,           \        P                  ! R4      4       V P                  \        P                  ! R4      \
        4       V P                  \        P                  ! R4      \
        4       V P                  \        P                  ! R	4      \        4       V P                  \        P                  ! R
4      \        4       \        P                  ! 4       ;_uu_ 4       pVR VP                  \        P                  ! 4       4      P                  pVP                  R4      ;'       g    RpV P                  \        P                  ! R4      V4       \        P                   P#                  VR\$        R7      ;_uu_ 4        \        P                   P#                  VR\$        R7      ;_uu_ 4        R F)  pV P                  \        P                  ! V4      V4       K+  	  RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)pwdr   s   ~/r   rE      ~rJ   z~root/z~foo/s   ~root/s   ~foo/r   getpwuid)side_effectgetpwnamN)r   z~/.localz
~vstinner/)r   import_moduleassertIsInstancer'   r   strrY   r?   r   r   r   r   getuidpw_dirrstripr   patchobjectKeyError)r)   r   r   r   rZ   s   &    r   test_expanduser_pwd!PosixPathTest.test_expanduser_pwd?  s#    ))%0i2248#>i22595A $+$$S)C/$$T* $$T*T1$$U+ 	i228<cBi227;SAi229=uEi228<eD**,,F<<		,33D;;s#**sDY11#6= ""3
"II""3
"II;D$$Y%9%9$%?F < J J -, JI JI -,,s=   B!L./K:	0K'K:	L'K72K:	:L
LL	c                   \         P                  ! R 4      p\        P                  ! VR4      pV! 4        Uu. uF  q3P                  NK  	  pp\        P
                  ! R4      '       d   RM^dp\        V4      V8  d=   \        P                  ! V4       VP                  R R7       WE^,          V) ^,          1 V F  pVP                  V4      pVP                  pVP                  R4      ;'       g    RpV P                  WcP                  R7      ;_uu_ 4        V P                  \        P                   ! RV,           4      V4       V P                  \        P                   ! \"        P$                  ! RV,           4      4      \"        P$                  ! V4      4       R	R	R	4       K  	  R	# u upi   + '       g   i     EK  ; i)
r   getpwallcpui  c                 "    V P                  4       # r   )isascii)names   &r   <lambda>4PosixPathTest.test_expanduser_pwd2.<locals>.<lambda>s  s
    r   )keyrE   )r   r   r   N)r   r   r	   get_attributepw_nameis_resource_enabledlenrandomshufflesortr   r   r   r   r?   r'   r   r   r   )r)   r   r   entrynamesmaxusersr   r   s   &       r   test_expanduser_pwd2"PosixPathTest.test_expanduser_pwd2h  sM    ))%0((j9,4J7J5J7"66u==43u:  NN5!JJ6J7k8)Q,./D LL&E<<D;;s#**sD4==  !5!5cDj!A4H  !5!5bkk#*6M!N!#T!24 >=  8 >==s   F+BF00Gc                   V P                    F  w  rV P                  V4      ;_uu_ 4        \        P                  ! V4      pV P	                  W24       R R R 4       VP                  R4      pVP                  R4      pV P                  V\        R7      ;_uu_ 4        \        P                  ! V4      pV P	                  W24       R R R 4       K  	  R #   + '       g   i     L; i  + '       g   i     K  ; i)Nzutf-8)type)NORMPATH_CASESr   r'   r   r?   encoderY   )r)   rZ   expectedresults   &   r   test_normpathPosixPathTest.test_normpath  s    "11NDd##"++D1  2 $ ;;w'Dw/Hd//"++D1  2 0/ 2## 0//s   (C(C%C"%C6strictTc                   V P                  \        R/ VB \        P                  ! 4       4       V P                  \        R/ VB \        P                  ! 4       4       V P                  \        RP	                  R .^d,          4      3/ VB \        P                  ! 4       4       V P                  \        R/ VB \        P
                  ! 4       4       V P                  \        R/ VB \        P
                  ! 4       4       V P                  \        RP	                  R.^d,          4      3/ VB \        P
                  ! 4       4       R# )	ra   rE      .rJ   N)ra   )z./.)r  )s   ./.)r?   r   r   getcwdr>   getcwdbr)   r   s   &&r   test_realpath_curdir"PosixPathTest.test_realpath_curdir  s     	00"))+>262BIIK@#((C53;"7B6BBIIKP1&12::<@3F3RZZ\B$))TFSL"9DVDbjjlSr   c           	        V P                  \        R/ VB \        \        P                  ! 4       4      4       V P                  \        R/ VB \        \        \        P                  ! 4       4      4      4       V P                  \        RP                  R .^d,          4      3/ VB R4       V P                  \        R/ VB \        \        P                  ! 4       4      4       V P                  \        R/ VB \        \        \        P                  ! 4       4      4      4       V P                  \        RP                  R.^d,          4      3/ VB R4       R# )	rb   rE      ..rJ   N)rb   )z../..)r  )s   ../..)r?   r   r   r   r  r>   r  r  s   &&r   test_realpath_pardir"PosixPathTest.test_realpath_pardir  s     	1&17299;3GH4V4ggbiik>R6ST#((D6C<"8CFCSI262GBJJL4IJ5f5wwrzz|?T7UV$))UGcM":EfEtLr   c                    \         P                  ! \        R ,           \        4       V P                  \	        \        3/ VB \        R ,           4       \
        P                  ! \        4       R#   \
        P                  ! \        4       i ; ir$   N)r   r   r   r?   r   r   r   r  s   &&r   test_realpath_basic!PosixPathTest.test_realpath_basic  sT    
	%JJvcz6*Xf77DV$IV$s   AA/ /Bc                X    \         P                  ! \        R ,           \        4       V P                  \        \
        \        RR7       V P                  \        \
        \        R,           RR7       \        P                  ! \        4       R#   \        P                  ! \        4       i ; i)r$   Tr  r%   N)r   r   r   assertRaisesFileNotFoundErrorr   r   r   rS   s   &r   test_realpath_strict"PosixPathTest.test_realpath_strict  sk    
	%JJvcz6*/6$O/6C<PTUV$IV$s   A/B B)c                   R pV P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       RpV P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       RpV P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       RpV P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       RpV P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       RpV P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       R	pV P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       R
pV P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       Rp\
        P                  R8X  d]   V P                  \        VRR7      V4       V P                  \        \        VRR7       V P                  \        V\        R7      V4       M[V P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       Rp\
        P                  R8X  d@   V P                  \        VRR7      V4       V P                  \        V\        R7      V4       M>V P                  \        \        VRR7       V P                  \        \        V\        R7       V P                  \        \        VRR7       Rp\
        P                  R8X  d]   V P                  \        VRR7      R4       V P                  \        \        VRR7       V P                  \        V\        R7      R4       M[V P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       Rp\
        P                  R8X  d@   V P                  \        VRR7      R4       V P                  \        V\        R7      R4       M>V P                  \        \        VRR7       V P                  \        \        V\        R7       V P                  \        \        VRR7       Rp\
        P                  R8X  d]   V P                  \        \        VRR7       V P                  \        \        VRR7       V P                  \        \        V\        R7       MV P                  \        VRR7      V4       \        P                  '       d@   V P                  \        \        VRR7       V P                  \        \        V\        R7       M>V P                  \        \        VRR7       V P                  \        V\        R7      V4       Rp\
        P                  R8X  d@   V P                  \        \        VRR7       V P                  \        \        V\        R7       MV P                  \        VRR7      V4       \        P                  '       dA   V P                  \        \        VRR7       V P                  \        \        V\        R7       R# V P                  \        \        VRR7       R# )r   Fr  Tr   z/nonexistent/x s   /nonexistent/x z/ /..s   / /..z/nonexistent/x /..s   /nonexistent/x /..r   r   u   /nonexistent/u   //..rE   u   /nonexistent//..z/nonexistentr   s   /nonexistent/N)r  
ValueErrorr   r   r  sysplatformr?   UnicodeEncodeErrorUnicodeDecodeErrorr	   is_wasir   )r)   rZ   s   & r   test_realpath_invalid_paths)PosixPathTest.test_realpath_invalid_paths  s   *hUC*hTB*h]K*hUC*hTB*h]K#*hUC+XtDI*h]K$*hUC+XtDI*h]K*hUC*hTB*h]K*hUC*hTB*h]K&*hUC+XtDI*h]K'*hUC+XtDI*h]K<<7"Xd594@/4MXd=A4H0(DO0(DN0(DW$<<7"Xd594@Xd=A4H0(DO0(DW+XtDI<<7"Xd593?/4MXd=A3G0(DO0(DN0(DW'<<7"Xd59>JXd=A>R0(DO0(DW+XtDI<<7"0(DO0(DN0(DWXd594@!!'8T$!G!!'8T-!P!!"3XtD!Q  $}!EtL#<<7"0(DO0(DWXd594@???gxdCgxmL/4Mr   c                D    \         P                  ! \        P                  ! \        R ,           4      \        4       V P                  \        \        3/ VB \        R ,           4       \        P                  ! \        4       R#   \        P                  ! \        4       i ; ir  )	r   r   r'   relpathr   r?   r   r   r   r  s   &&r   test_realpath_relative$PosixPathTest.test_realpath_relativeN  s_    	%JJy((4f=Xf77DV$IV$s   A%B Bc                *    \         P                  ! \        R ,           \        4       V P                  \	        R\        ,           3/ VB \
        R ,           4       \        P                  ! \        4       R#   \        P                  ! \        4       i ; i)r$   znonexistent/../N)r   r   r   r?   r   r   r   r   r  s   &&r   test_realpath_missing_pardir*PosixPathTest.test_realpath_missing_pardirX  s`    	%JJv|V,*V3>v>N V$IV$s   AA6 6Bc           	     
    \         P                  ! \        \        4       V P                  \	        \        4      \        4       \         P                  ! \        R ,           \        R,           4       \         P                  ! \        R,           \        R ,           4       V P                  \	        \        R ,           4      \        R ,           4       V P                  \	        \        R,           4      \        R,           4       V P                  \	        \        R,           4      \        R,           4       V P                  \	        \        R,           4      \        \        4      4       V P                  \	        \        R,           4      \        \        4      R,           4       \         P                  ! \        R,           \        R,           4       V P                  \	        \        R,           \        \        4      ,           R,           4      \        R,           4       V P                  \	        \        R,           \        \        4      ,           R ,           4      \        R ,           4       \         P                  ! \        \        4      R	,           \        R
,           4       V P                  \	        \        R
,           4      \        R	,           4       \         P                  ! R\        \        \        4      4      ,           R,           \        \        4      ,           R,           \        R,           4       V P                  \	        \        R,           4      \        R,           4       \        P                  ! \        \        4      4      ;_uu_ 4        V P                  \	        \        \        4      4      \        4       RRR4       \        P                  ! \        4       \        P                  ! \        R ,           4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R
,           4       R#   + '       g   i     L; i  \        P                  ! \        4       \        P                  ! \        R ,           4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R
,           4       i ; i)r$   r%   1/x1/..1/../x/xxy1/../r7   r5   ../rE   r=   N)
r   r   r   r?   r   r   r   r   
change_cwdr   rS   s   &r   test_realpath_symlink_loops)PosixPathTest.test_realpath_symlink_loopsc  s	   
"	)JJvv&Xf-v6JJvcz6#:.JJvcz6#:.XfSj16#:>XfSj16#:>XfUl3VE\BXfVm4gfoFXfXo6$8NOJJvcz6#:.XfWnx7G&G#&MN#c\+XfWnx7G&G#&MN#c\+ JJx'%/<XfSj16%<@JJux883>'(*-./5cz;XfSj16#:> %%gfo66  (6*:!;VD 7 V$VCZ(VCZ(VCZ(VCZ(VCZ( 76 V$VCZ(VCZ(VCZ(VCZ(VCZ(s%   NR -Q=4R =R	R CUc           	     	    \         P                  ! \        \        4       V P                  ! \        \
        \        3/ VB  \         P                  ! \        R ,           \        R,           4       \         P                  ! \        R,           \        R ,           4       V P                  ! \        \
        \        R ,           3/ VB  V P                  ! \        \
        \        R,           3/ VB  V P                  ! \        \
        \        R,           3/ VB  V P                  ! \        \
        \        R,           3/ VB  V P                  ! \        \
        \        R,           3/ VB  \         P                  ! \        R,           \        R,           4       V P                  ! \        \
        \        R,           \        \        4      ,           R,           3/ VB  V P                  ! \        \
        \        R,           \        \        4      ,           R ,           3/ VB  \         P                  ! \        \        4      R,           \        R	,           4       V P                  ! \        \
        \        R	,           3/ VB  \         P                  ! R
\        \        \        4      4      ,           R,           \        \        4      ,           R,           \        R,           4       V P                  ! \        \
        \        R,           3/ VB  \        P                  ! \        \        4      4      ;_uu_ 4        V P                  ! \        \
        \        \        4      3/ VB  RRR4       \        P                  ! \        4       \        P                  ! \        R ,           4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R	,           4       R#   + '       g   i     L; i  \        P                  ! \        4       \        P                  ! \        R ,           4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R	,           4       i ; i)r$   r%   r2  r3  r4  r6  r7  r8  r7   r5   r9  rE   r=   N)r   r   r   r  r   r   r   r   r   r:  r   r  s   &&r   "test_realpath_symlink_loops_strict0PosixPathTest.test_realpath_symlink_loops_strict  s    "	)JJvv&gxB6BJJvcz6#:.JJvcz6#:.gxFvFgxFvFgxHHgxI&IgxKFKJJvcz6#:.gx$Wnx/??#EQIOQgx$Wnx/??#EQIOQ JJx'%/<gxFvFJJux883>'(*-./5cz;gxFvF %%gfo66!!'8Xf5EPP 7 V$VCZ(VCZ(VCZ(VCZ(VCZ( 76 V$VCZ(VCZ(VCZ(VCZ(VCZ(s%   L'P0 )+PP0 P-	(P0 0CS1c                    \         P                  ! \        4       \         P                  ! R \	        \        4      ,           \        R,           4       \         P                  ! R\        R,           4       V P                  \        \        R,           3/ VB \        4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        4       R#   \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        4       i ; i)r9  z/selfzself/self/selfz/linkN)
r   r   r   r   r   r?   r   r   r   r   r  s   &&r   (test_realpath_repeated_indirect_symlinks6PosixPathTest.test_realpath_repeated_indirect_symlinks  s    
	$HHVJJux//'1ABJJ'')9:Xfw&6A&A6JVg-.Vg-.OOF# Vg-.Vg-.OOF#s   BC= =AEc                   ^
p \         P                  ! \        4       \        V4       FQ  p\         P                  ! RP                  RV,          .^
,          4      \        RV^,           ,          ,           4       KS  	  \         P                  ! R\        R,           4       V P                  \        \        RV,          ,           3/ VB \        4       \        P                  ! \        4      ;_uu_ 4        V P                  \        RV,          4      \        4       RRR4       \        V^,           4       F+  p\        P                  ! \        RV,          ,           4       K-  	  \        P                  ! \        4       R#   + '       g   i     Lm; i  \        T^,           4       F+  p\        P                  ! \        RT,          ,           4       K-  	  \        P                  ! \        4       i ; i)
   rE   z%dz/%dra   z/0N)r   r   r   ranger   r>   r?   r   r   r:  r   r   )r)   r   depthis   &&  r   test_realpath_deep_recursion*PosixPathTest.test_realpath_deep_recursion  s6    	$HHV5\

388TAXJO4fuA6NO "JJsFTM*Xfuu}&<GGP %%f--  $,!7@ . 519%  %!)!34 &OOF# .- 519%  %!)!34 &OOF#s%   C0F 4'F F  F	F AG0c           	     (    \         P                  ! \        4       \         P                  ! \        R ,           4       \         P                  ! \        R ,           \        R,           4       \        P
                  ! \        R,           4      ;_uu_ 4        V P                  \        R/ VB \        R,           4       RRR4       \        P                  ! \        R,           4       \        P                  ! \        R ,           4       \        P                  ! \        4       R#   + '       g   i     Ln; i  \        P                  ! \        R,           4       \        P                  ! \        R ,           4       \        P                  ! \        4       i ; i)z/y/kz/y/aN)r5   )
r   r   r   r   r   r:  r?   r   r   r   r  s   &&r   test_realpath_resolve_parents+PosixPathTest.test_realpath_resolve_parents  s    	$HHVHHVd]#JJv}ftm4%%ftm44  !8!8$*VO5 5 Vd]+OOFTM*OOF# 54 Vd]+OOFTM*OOF#s%   BD3 'D :D3  D0	+D3 3AFc           	         \         P                  ! \        4       \         P                  ! \        R ,           4       \         P                  ! \        R,           4       \         P                  ! \        R,           \        R,           4       V P	                  \        \        R,           3/ VB \        R ,           4       \        P                  ! \        \        4      4      ;_uu_ 4        V P	                  \        \        \        4      R,           3/ VB \        R ,           4       RRR4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R ,           4       \        P                  ! \        4       R#   + '       g   i     L; i  \        P                  ! \        R,           4       \        P                  ! \        R,           4       \        P                  ! \        R ,           4       \        P                  ! \        4       i ; i)rK  z/k/yz/link-yz
/link-y/..N)r   r   r   r   r?   r   r   r:  r   r   r   r   r  s   &&r   (test_realpath_resolve_before_normalizing6PosixPathTest.test_realpath_resolve_before_normalizing  sA   	$HHVHHVd]#HHVf_%JJv(:; Xf|&;FvFQUV%%gfo66  (6*:\*I!TV!T!'$0 7 Vi/0OOFVO,OOFTM*OOF# 76 Vi/0OOFVO,OOFTM*OOF#s%   C&F> (<F+$F> +F;	6F> >A?H=c           	         \         P                  ! \        4       \         P                  ! \        R ,           4       \         P                  ! \        \        R,           4       \        P
                  ! \        \        4      4      ;_uu_ 4        \        \        4      pV P                  \        VR,           3/ VB \        4       V P                  \        VR,           3/ VB \        R ,           4       RRR4       \        P                  ! \        R,           4       \        P                  ! \        R ,           4       \        P                  ! \        4       R#   + '       g   i     Ln; i  \        P                  ! \        R,           4       \        P                  ! \        R ,           4       \        P                  ! \        4       i ; i)rK  linkzlink/kN)r   r   r   r   r   r:  r   r   r?   r   r   r   )r)   r   bases   && r   test_realpath_resolve_first)PosixPathTest.test_realpath_resolve_first  s   	$HHVHHVd]#JJvv/%%gfo66'  $-!B6!BFK  $/!DV!DftmT 7
 Vf_-OOFTM*OOF# 76
 Vf_-OOFTM*OOF#s&   BE, A%E3E, E)	$E, ,AG
zCan't set symlink permissionsdarwinz1only macOS requires read permission to readlink()c                    \         P                  ! \        R ,           \        4       \         P                  ! \        ^ RR7       V P	                  \        \        4      \        4       V P	                  \        \        R,           4      \        R,           4       V P	                  \        \        R,           4      \        \        4      R,           4       V P	                  \        \        R,           4      \        4       \         P                  ! \        RRR7       \        P                  ! \        4       R#   \         P                  ! \        RRR7       \        P                  ! \        4       i ; i)r$   Ffollow_symlinksr.   /../foo/foo/..  N)	r   r   r   chmodr?   r   r   r   r   rS   s   &r    test_realpath_unreadable_symlink.PosixPathTest.test_realpath_unreadable_symlink  s    
		%JJvcz6*HHVUE:Xf-v6Xfvo6HXfy&8976?V;STXfy&896BHHVUE:V$ HHVUE:V$s   C;D6 69E/c                    \         P                  ! \        R ,           \        4       \         P                  ! \        ^ RR7       V P	                  \
        4      ;_uu_ 4        \        \        3/ VB  RRR4       V P	                  \
        4      ;_uu_ 4        \        \        R,           3/ VB 3 RRR4       V P	                  \
        4      ;_uu_ 4        \        \        R,           3/ VB  RRR4       V P	                  \
        4      ;_uu_ 4        \        \        R,           3/ VB  RRR4       \         P                  ! \        RRR7       \         P                  ! \        4       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  \         P                  ! \        RRR7       \         P                  ! \        4       i ; i)r$   FrX  Nr.   rZ  r[  r\  )r   r   r   r]  r  PermissionErrorr   r   r  s   &&r   'test_realpath_unreadable_symlink_strict5PosixPathTest.test_realpath_unreadable_symlink_strict/  s$   	JJvcz6*HHVUE:""?33*6* 4""?33&3F34 4""?33)+6v6 4""?33)+6v6 4 HHVUE:IIf 433333333 HHVUE:IIfsl   A F9 "E,3%F9 F 1%F9 F.%F9 F&+F9 ,E=	7	F9  F	F9 F#	F9 &F6	1F9 99G2c                    \         P                  ! \        4       \         P                  ! \        R ,           4       \         P                  ! \        ^ 4       V P	                  \        \        RR7      \        4       V P	                  \        \        RR7      \        4       V P	                  \        \        \        R7      \        4        \         P                  ! \        4       V P                  R4       V P	                  \        \        R ,           RR7      \        R ,           4       V P                  \        \
        \        R ,           RR7       V P                  \        \
        \        R ,           \        R7       V P	                  \        \        R,           RR7      \        R,           4       V P                  \        \
        \        R,           RR7       V P                  \        \
        \        R,           \        R7       \         P                  ! \        R4       \        P                  ! \        R ,           4       \        P                  ! \        4       R#   \         d     ELti ; i  \         P                  ! \        R4       \        P                  ! \        R ,           4       \        P                  ! \        4       i ; i)rK  Fr  TzCannot block permissionsz/missingr\  N)r   r   r   r]  r?   r   r   statskipTestra  r  r   r   rS   s   &r   "test_realpath_unreadable_directory0PosixPathTest.test_realpath_unreadable_directoryD  s   	$HHVHHVd]#HHVU#XfU;VDXfT:FCXf]CVL: 89XftmEB#d],ox$%)  +ox$%2  4 Xfz&9%H#j02ox*9L%)  +ox*9L%2  4 HHVU#OOFTM*OOF#+ # & HHVU#OOFTM*OOF#s2   C	I/ I &DI/ I,(I/ +I,,I/ /AKc                    \        \        R 4      ;_uu_ 4       pVP                  R4       RRR4       V P                  \	        \        RR7      \        4       V P                  \	        \        RR7      \        4       V P                  \	        \        \
        R7      \        4       V P                  \	        \        R,           RR7      \        4       V P                  \        \        \        R,           RR7       V P                  \        \        \        R,           \
        R7       V P                  \	        \        R,           RR7      \        4       V P                  \        \        \        R,           RR7       V P                  \        \        \        R,           \
        R7       V P                  \	        \        R,           RR7      \        \        4      4       V P                  \        \        \        R,           RR7       V P                  \        \        \        R,           \
        R7       V P                  \	        \        R	,           RR7      \        R	,           4       V P                  \        \        \        R	,           RR7       V P                  \        \        \        R	,           \
        R7       \        P                  ! \        4       R#   + '       g   i     EL; i  \        P                  ! \        4       i ; i)
wtest_posixpath wuz ereNFr  TrE   /./../subdir)r   r   r   r?   r   r   r  NotADirectoryErrorr   r   r   ro   s   & r   test_realpath_nonterminal_file,PosixPathTest.test_realpath_nonterminal_fileh  s   	%fc""a01 #XfU;VDXfT:FCXf]CVLXfsl5A6J0(FSLQUV0(FSL%2  4 XftmEBFK0(FTMRVW0(FTM%2  4 XfunUCWV_U0(FUNSWX0(FUN%2  4 Xfy&8GR[I[\0(FY<NW[\0(FY<N%2  4 V$5 #""4 V$s"   K' KJK' K$		K' 'Lc                0    \        \        R ,           R4      ;_uu_ 4       pVP                  R4       RRR4       \        P                  ! \        R ,           \        4       V P                  \        \        RR7      \        R ,           4       V P                  \        \        RR7      \        R ,           4       V P                  \        \        \        R7      \        R ,           4       V P                  \        \        R,           RR7      \        R ,           4       V P                  \        \        \        R,           RR7       V P                  \        \        \        R,           \        R7       V P                  \        \        R,           RR7      \        R ,           4       V P                  \        \        \        R,           RR7       V P                  \        \        \        R,           \        R7       V P                  \        \        R	,           RR7      \        \        4      4       V P                  \        \        \        R	,           RR7       V P                  \        \        \        R	,           \        R7       V P                  \        \        R
,           RR7      \        R,           4       V P                  \        \        \        R
,           RR7       V P                  \        \        \        R
,           \        R7       \        P                  ! \        4       \        P                  ! \        R ,           4       R#   + '       g   i     EL; i  \        P                  ! \        4       \        P                  ! \        R ,           4       i ; i)r$   rj  rk  NFr  TrE   rl  rm  rn  z1/subdir)r   r   r   r   r   r?   r   r   r  ro  r   r   r   ro   s   & r   )test_realpath_nonterminal_symlink_to_file7PosixPathTest.test_realpath_nonterminal_symlink_to_file  s_   	+fslC((A01 )JJv|V,XfU;Vc\JXfT:FSLIXf]CVc\RXfsl5A6C<P0(FSLQUV0(FSL%2  4 XftmEBFSLQ0(FTMRVW0(FTM%2  4 XfunUCWV_U0(FUNSWX0(FUN%2  4 Xfy&8GR\I\]0(FY<NW[\0(FY<N%2  4 V$Vc\*9 )((6 V$Vc\*s"   M MKM M		M =Nc                    \        \        R ,           R4      ;_uu_ 4       pVP                  R4       RRR4       \        P                  ! \        R ,           \        R,           4       \        P                  ! \        R,           \        4       V P                  \        \        RR7      \        R ,           4       V P                  \        \        RR7      \        R ,           4       V P                  \        \        RR7      \        R ,           4       V P                  \        \        R,           RR7      \        R ,           4       V P                  \        \        \        R,           RR7       V P                  \        \        \        R,           \        R7       V P                  \        \        R	,           RR7      \        R ,           4       V P                  \        \        \        R	,           RR7       V P                  \        \        \        R	,           \        R7       V P                  \        \        R
,           RR7      \        \        4      4       V P                  \        \        \        R
,           RR7       V P                  \        \        \        R
,           \        R7       V P                  \        \        R,           RR7      \        R,           4       V P                  \        \        \        R,           RR7       V P                  \        \        \        R,           \        R7       \        P                  ! \        4       \        P                  ! \        R,           4       \        P                  ! \        R ,           4       R#   + '       g   i     ELd; i  \        P                  ! \        4       \        P                  ! \        R,           4       \        P                  ! \        R ,           4       i ; i)r%   rj  rk  Nr$   Fr  TrE   rl  rm  rn  z2/subdir)r   r   r   r   r   r?   r   r  ro  r   r   r   r   ro   s   & r   5test_realpath_nonterminal_symlink_to_symlinks_to_fileCPosixPathTest.test_realpath_nonterminal_symlink_to_symlinks_to_file  s   	+fslC((A01 )JJv|Vc\2JJv|V,XfU;Vc\JXfT:FSLIXfT:FSLIXfsl5A6C<P0(FSLQUV0(FSL%2  4 XftmEBFSLQ0(FTMRVW0(FTM%2  4 XfunUCWV_U0(FUNSWX0(FUN%2  4 Xfy&8GR\I\]0(FY<NW[\0(FY<N%2  4 V$Vc\*Vc\*= )((8 V$Vc\*Vc\*s#   N" NK=N" N		N" "AP c                   \         P                  R  up\         n         \         P                  P                  \         P                  ! 4       4      R,          pV P	                  \
        \        P                  R4       V P	                  \        \        P                  R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! \        P                  ! R4      4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! RR4      RV,           R,           4       V P                  \        P                  ! RR	4      RV,           R
,           4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! R
R
4      R4       V\         n        R#   T\         n        i ; i)c                      R # )z/home/user/bar rz  r   r   r   ,PosixPathTest.test_relpath.<locals>.<lambda>  s    7Hr   Nr#   r5   r7   z../a/bz../br9  r;   z../cr<   r9   z../../ara   z/foo/bar/batz/x/y/zz../../../foo/bar/batrD   batrE   zfoo/bar/batz../../..r5  z../foo/bar/batz
../../../x)r   r  rZ   rR   r  	TypeErrorr'   r+  r"  r?   r   )r)   real_getcwdcurdirs   &  r   test_relpathPosixPathTest.test_relpath  s}   $&II/H bi	$WW]]299;/3Fi):):DAj)*;*;R@Y..s3S9Y..y/@/@/EFLY..u5u=Y..x8(CY..sF;U6\$=NOY..uf="6\&02Y..sE:IFY..sC8#>Y..~xHJ`aY..~zJERY..~sC]SY..sNCZPY..~tDFVWY..t^DlSY..sC8#>Y..tT:C@Y..vv>D#BIBIs   MM2 2M?c                R   \         P                  R  up\         n         \         P                  P                  \         P                  ! 4       4      R,          pV P	                  \
        \        P                  R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! \        P                  ! R4      4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! RR4      RV,           R,           4       V P                  \        P                  ! RR4      RV,           R	,           4       V P                  \        P                  ! RR
4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! RR4      R4       V P                  \        P                  ! R	R	4      R4       V P	                  \        \        P                  RR4       V P	                  \        \        P                  RR4       V\         n        R#   T\         n        i ; i)c                      R # )s   /home/user/barrz  rz  r   r   r   2PosixPathTest.test_relpath_bytes.<locals>.<lambda>  s    :Lr   r   rj   s   a/bs   ../a/bs   ../bs   ../rk   s   ../cs   /a/bs   b/cs   ../../ar  s   /foo/bar/bats   /x/y/zs   ../../../foo/bar/batrI   s   batrJ   s   foo/bar/bats   ../../..s   /xs   ../foo/bar/bats
   ../../../xs   bytesr   Nr}  )r   r  rZ   rR   r  r"  r'   r+  r?   r   r~  )r)   real_getcwdbr  s   &  r   test_relpath_bytes PosixPathTest.test_relpath_bytes  s   &(jj2L"rz	&WW]]2::<04Fj)*;*;SAY..t4d;Y..y/@/@/FGNY..v6?Y..y99EY..tW=#F]502Y..vw?#F]724Y..tV<jIY..tT:DAY..	JLcdY..LfUY..E~VY..t_E{SY..FHYZY..uoFVY..tT:DAY..ue<dCY..w@$Gi):):HeLi):):E8L%BJBJs   M-N N&c                  a  V 3R  lpV 3R lpS P                  \        \        P                  R4       S P                  \        \        P                  . 4       S P                  \        \        P                  \        . 4      4       V! \        RR.4       V! \        RR.4       V! R.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! R	R
.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! R.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! RR.R4       V! . R$OR4       V! . R%OR4       V! R.R4       V! RR.R4       V! \        RR.4       S P                  \        \        P                  RR.4       S P                  \        \        P                  RR.4       S P                  \        \        P                  R R.4       S P                  \        \        P                  RR!.4       S P                  \        \        P                  RR".4       S P                  \        \        P                  R#R!.4       R# )&c           
        < SP                  \        P                  ! V 4      V4       SP                  \        P                  ! V  Uu. uF  p\        P                  ! V4      NK  	  up4      \        P                  ! V4      4       R # u upi r   )r?   r'   
commonpathr   r   )pathsr  pr)   s   && r   check,PosixPathTest.test_commonpath.<locals>.check  s_    Y11%8(CY1152Q5a2;;q>52QR[[242Qs   Bc           
         < SP                  V \        P                  V4       SP                  T \        P                  V Uu. uF  p\        P                  ! V4      NK  	  up4       R # u upi r   )r  r'   r  r   r   )excr  r  r)   s   && r   check_error2PosixPathTest.test_commonpath.<locals>.check_error  sP    c9#7#7?c9#7#77<=u!r{{1~u=?=s   A*Nz/usrusrz
/usr/localz/usr/local/z/usr//localz//usr/localz/usr/./localz/./usr/localrE   z/devz	/usr/lib/z/usr/lib/python3z/usr/libz/usr/lib64/z
/usr/lib64spamalotr#   and/jamand/spamandzand//jamz
and/spam//z	and/./jamz
./and/spamz	spam/alotz
/spam/alots	   /usr/lib/zusr/lib/python3s   usr/lib/s   /usr/lib/python3s   usr/lib/python3zusr/lib/)r  r  r  )r  r  r  )r  r~  r'   r  r"  iter)r)   r  r  s   f  r   test_commonpathPosixPathTest.test_commonpath  s   	4	?
 	)Y%9%94@*i&:&:B?*i&:&:DHEJ0J0|nl+|\*L9}l+\:}m,l;}m,l;~~.=sFmS!vv${./<{M*F3z<(&1{L)62vhvv'vv#y*%u-z<(%0{L)51-r2,e4rdBr;$J\ 23)Y%9%9');<	>)Y%9%9'):;	=)Y%9%9&(:;	=)Y%9%9&(;<	>)Y%9%9&(:;	=)Y%9%9%':;	=r   rz  )r#   ra   )rE   rE   )rl  rE   )z/./rE   )z/.//.rE   )z
/./foo/barrD   )r.   r.   )rD   rD   )rm   rm   )r   rE   )z///foo/.//bar//rD   )z///foo/.//bar//.//..//.//baz///z/foo/baz)z///..//./foo/.//barrD   )ra   ra   )z.//.ra   )z	./foo/barrt   )rb   rb   )r9  rb   )../foor  )	../../foor  )z../foo/../barz../bar)z../../foo/../bar/./baz/boom/..../../bar/baz)rm  rE   )z/../rE   )z/..//rE   )z//.rm   )z//..rm   )//...r  )z//../foorO   )z//../../foorO   )rZ  r.   )z
/../../foor.   )z/../foo/../rE   )z/../foo/../barr0   )z/../../foo/../bar/./baz/boom/..r2   )z/../../foo/../bar/./baz/boom/.z/bar/baz/boom)zfoo/../bar/bazzbar/baz)zfoo/../../bar/bazz
../bar/baz)zfoo/../../../bar/bazr  )zfoo///../bar/.././../baz/boomz../baz/boom)zfoo/bar/../..///../../baz/boomz../../baz/boom)r[  rE   )z
/foo/../..rE   )z//foo/..rm   )z//foo/../..rm   )z	///foo/..rE   )z///foo/../..rE   )z
////foo/..rE   )z/////foo/..rE   )E__name__
__module____qualname____firstlineno__r+   rA   rT   r]   rc   rq   rw   rz   r}   r   r   r   r   r   r   skip_unless_symlinkr   r   skipIfr   r   r   r   r#  r$  r	   cpython_onlyr   r   r   r   r  r  r	  r   r   r   r  r  r  r  r(  r,  r/  r;  r>  rA  rH  rL  rO  rT  r   r]  supports_follow_symlinksr^  rb  rg  rp  rs  rv  r  r  r  __static_attributes____classdictcell____classdict__s   @r   r!   r!   *   s    A50M78&:4:DEA$N?$: ""% #% __Ud]$@A" B"" __Ud]$@A" B"*7 __S\\W,.LM?  N??L  __S\\Y.35%G5%GN __S\\Y.35454.333 	3 		3
 	3 	#3 	3 	!3 	3 	3 	(3 	83 	,3 	3 	3  	!!3" 	#3$ 	%3& 	'3( 	#)3* 	$+3, 	<-3. 	/30 	132 	334 	536 	738 	93: 	;3< 	=3> 	!?3@ 	A3B 	C3D 	E3F 	#G3H 	8I3J 	<K3L 	&M3N 	,O3P 	2Q3R 	9S3T 	=U3V 	W3X 	Y3Z 	[3\ 	]3^ 	_3` 	a3b 	c3d 	e3Nj
3 '2$'(M)BCT D 'T '2$'(M)BCM D 'M ""&2-01% 2 ' #% ""&% ' #%]N~ ""&2-01% 2 ' #% ""&2-01% 2 ' #% ""&%) ' #%)N ""&Hd#h%>?%) @ ' #%)N ""&2$'(M)BC
$ D ' #
$ ""&2$'(M)BC$ D ' #$" ""&2-01$ 2 ' #$$ ""&2$'(M)BC$ D ' #$4 ""&2$'(M)BC$ D ' #$" ""&__RXXR%@%@@Bab__S\\X-/bc
% d c ' #
% ""&__RXXR%@%@@Bab__S\\X-/bcHd#h%>? @ d c ' #
  '"" $ # ' $D '% '%< ""&+ ' #+@ ""& + ' # +D$6&<6= 6=r   r!   c                   "    ] tR tRt]t. ROtRtR# )PosixCommonTesti?  rz  N)r+  samefilesameopenfilesamestat)r  r  r  r  r'   
pathmodule
attributesr  rz  r   r   r  r  ?  s    JDJr   r  c                      a  ] tR tRt o ]tR tR tR tR t	R t
R tR tR	 tR
 tR tR tR tR tR tR tR tR tR t]! / RR/R]/4      R 4       tR tR tRtV tR# )PathLikeTestsiD  c                2   \         V n        \        \         4      V n        V P	                  \
        P                  V P                  4       \        V P                  R ^ 4      ;_uu_ 4       pVP                  R4       RRR4       R#   + '       g   i     R# ; i)xbs   test_posixpath.PathLikeTestsN)	r   	file_namer   	file_pathr   r   r   r   r   )r)   files   & r   r+   PathLikeTests.setUpH  s^    !&)	(($..9$..$**dJJ67 +***s   )BB	c                j    V P                  V! V P                  4      V! V P                  4      4       R # r   )r?   r  r  )r)   funcs   &&r   assertPathEqualPathLikeTests.assertPathEqualO  s$    dnn-tDNN/CDr   c                P    V P                  V P                  P                  4       R # r   )r  rZ   normcaserS   s   &r   test_path_normcase PathLikeTests.test_path_normcaseR      TYY//0r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   rv   rS   s   &r   test_path_isabsPathLikeTests.test_path_isabsU      TYY__-r   c                    V P                  V P                  P                  R \        R4      R4      V P                  P                  R RR4      4       R# )r5   r6   r=   N)r?   rZ   r>   r   rS   s   &r   test_path_joinPathLikeTests.test_path_joinX  s;    Xc]C@S#6	8r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   rR   rS   s   &r   test_path_splitPathLikeTests.test_path_split\  r  r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   rX   rS   s   &r   test_path_splitext PathLikeTests.test_path_splitext_  r  r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   
splitdriverS   s   &r   test_path_splitdrive"PathLikeTests.test_path_splitdriveb      TYY112r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   rn   rS   s   &r   test_path_splitroot!PathLikeTests.test_path_splitroote  s    TYY001r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r   rS   s   &r   test_path_basename PathLikeTests.test_path_basenameh  r  r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r   rS   s   &r   test_path_dirnamePathLikeTests.test_path_dirnamek      TYY../r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r   rS   s   &r   test_path_islinkPathLikeTests.test_path_islinkn  s    TYY--.r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r(   rS   s   &r   test_path_lexistsPathLikeTests.test_path_lexistsq  r  r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r   rS   s   &r   test_path_ismountPathLikeTests.test_path_ismountt  r  r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r   rS   s   &r   test_path_expanduser"PathLikeTests.test_path_expanduserw  r  r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   
expandvarsrS   s   &r   test_path_expandvars"PathLikeTests.test_path_expandvarsz  r  r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r   rS   s   &r   test_path_normpath PathLikeTests.test_path_normpath}  r  r   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r   rS   s   &r   test_path_abspathPathLikeTests.test_path_abspath  r  r   r  Tc                    V P                  V P                  P                  4       V P                  \        V P                  P                  3/ VB 4       R # r   )r  rZ   r   r   r  s   &&r   test_path_realpath PathLikeTests.test_path_realpath  s<    TYY//0WTYY%7%7B6BCr   c                P    V P                  V P                  P                  4       R # r   )r  rZ   r+  rS   s   &r   test_path_relpathPathLikeTests.test_path_relpath  r  r   c                    V P                   P                  V P                  V P                  .4      pV P	                  WP                  4       R # r   )rZ   r  r  r  r?   )r)   common_paths   & r   test_path_commonpath"PathLikeTests.test_path_commonpath  s5    ii**DNNDNN+KLnn5r   )r  r  N)r  r  r  r  r'   rZ   r+   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  s   @r   r  r  D  s     D8E1.8.13210/003310 2$'(M)BCD DD
06 6r   r  __main__)#r   r   r'   r   r#  r   	functoolsr   r   r   r   r   r   r   r	   r
   test.supportr   r   test.support.os_helperr   r   r   r   ImportErrorr   r   r   TestCaser!   
CommonTestr  r  r  mainrz  r   r   <module>r	     s     	   
   I I  ! & " 3  
=2R=H%% R=j E&1183D3D E
J6H%% J6Z ZMMO #  Es   C 	CC