
    0hh5                        S SK r S SKrS SKrS SKrS SKrSrSr " S S\R                  5      r\	" \SS5      (       d8  \
" \5       H,  r\R                  S5      (       d  M  \S:w  d  M#  \" \\5        M.     \S	:X  a  \R                  " 5         gg)
    Nu  x|x|
foo bar|foo|bar|
 foo bar|foo|bar|
 foo bar |foo|bar|
foo   bar    bla     fasel|foo|bar|bla|fasel|
x y  z              xxxx|x|y|z|xxxx|
\x bar|\|x|bar|
\ x bar|\|x|bar|
\ bar|\|bar|
foo \x bar|foo|\|x|bar|
foo \ x bar|foo|\|x|bar|
foo \ bar|foo|\|bar|
foo "bar" bla|foo|"bar"|bla|
"foo" "bar" "bla"|"foo"|"bar"|"bla"|
"foo" bar "bla"|"foo"|bar|"bla"|
"foo" bar bla|"foo"|bar|bla|
foo 'bar' bla|foo|'bar'|bla|
'foo' 'bar' 'bla'|'foo'|'bar'|'bla'|
'foo' bar 'bla'|'foo'|bar|'bla'|
'foo' bar bla|'foo'|bar|bla|
blurb foo"bar"bar"fasel" baz|blurb|foo"bar"bar"fasel"|baz|
blurb foo'bar'bar'fasel' baz|blurb|foo'bar'bar'fasel'|baz|
""|""|
''|''|
foo "" bar|foo|""|bar|
foo '' bar|foo|''|bar|
foo "" "" "" bar|foo|""|""|""|bar|
foo '' '' '' bar|foo|''|''|''|bar|
\""|\|""|
"\"|"\"|
"foo\ bar"|"foo\ bar"|
"foo\\ bar"|"foo\\ bar"|
"foo\\ bar\"|"foo\\ bar\"|
"foo\\" bar\""|"foo\\"|bar|\|""|
"foo\\ bar\" dfadf"|"foo\\ bar\"|dfadf"|
"foo\\\ bar\" dfadf"|"foo\\\ bar\"|dfadf"|
"foo\\\x bar\" dfadf"|"foo\\\x bar\"|dfadf"|
"foo\x bar\" dfadf"|"foo\x bar\"|dfadf"|
\''|\|''|
'foo\ bar'|'foo\ bar'|
'foo\\ bar'|'foo\\ bar'|
"foo\\\x bar\" df'a\ 'df'|"foo\\\x bar\"|df'a|\|'df'|
\"foo"|\|"foo"|
\"foo"\x|\|"foo"|\|x|
"foo\x"|"foo\x"|
"foo\ "|"foo\ "|
foo\ xx|foo|\|xx|
foo\ x\x|foo|\|x|\|x|
foo\ x\x\""|foo|\|x|\|x|\|""|
"foo\ x\x"|"foo\ x\x"|
"foo\ x\x\\"|"foo\ x\x\\"|
"foo\ x\x\\""foobar"|"foo\ x\x\\"|"foobar"|
"foo\ x\x\\"\''"foobar"|"foo\ x\x\\"|\|''|"foobar"|
"foo\ x\x\\"\'"fo'obar"|"foo\ x\x\\"|\|'"fo'|obar"|
"foo\ x\x\\"\'"fo'obar" 'don'\''t'|"foo\ x\x\\"|\|'"fo'|obar"|'don'|\|''|t'|
'foo\ bar'|'foo\ bar'|
'foo\\ bar'|'foo\\ bar'|
foo\ bar|foo|\|bar|
foo#bar\nbaz|foobaz|
:-) ;-)|:|-|)|;|-|)|
áéíóú|á|é|í|ó|ú|
u1  x|x|
foo bar|foo|bar|
 foo bar|foo|bar|
 foo bar |foo|bar|
foo   bar    bla     fasel|foo|bar|bla|fasel|
x y  z              xxxx|x|y|z|xxxx|
\x bar|x|bar|
\ x bar| x|bar|
\ bar| bar|
foo \x bar|foo|x|bar|
foo \ x bar|foo| x|bar|
foo \ bar|foo| bar|
foo "bar" bla|foo|bar|bla|
"foo" "bar" "bla"|foo|bar|bla|
"foo" bar "bla"|foo|bar|bla|
"foo" bar bla|foo|bar|bla|
foo 'bar' bla|foo|bar|bla|
'foo' 'bar' 'bla'|foo|bar|bla|
'foo' bar 'bla'|foo|bar|bla|
'foo' bar bla|foo|bar|bla|
blurb foo"bar"bar"fasel" baz|blurb|foobarbarfasel|baz|
blurb foo'bar'bar'fasel' baz|blurb|foobarbarfasel|baz|
""||
''||
foo "" bar|foo||bar|
foo '' bar|foo||bar|
foo "" "" "" bar|foo||||bar|
foo '' '' '' bar|foo||||bar|
\"|"|
"\""|"|
"foo\ bar"|foo\ bar|
"foo\\ bar"|foo\ bar|
"foo\\ bar\""|foo\ bar"|
"foo\\" bar\"|foo\|bar"|
"foo\\ bar\" dfadf"|foo\ bar" dfadf|
"foo\\\ bar\" dfadf"|foo\\ bar" dfadf|
"foo\\\x bar\" dfadf"|foo\\x bar" dfadf|
"foo\x bar\" dfadf"|foo\x bar" dfadf|
\'|'|
'foo\ bar'|foo\ bar|
'foo\\ bar'|foo\\ bar|
"foo\\\x bar\" df'a\ 'df"|foo\\x bar" df'a\ 'df|
\"foo|"foo|
\"foo\x|"foox|
"foo\x"|foo\x|
"foo\ "|foo\ |
foo\ xx|foo xx|
foo\ x\x|foo xx|
foo\ x\x\"|foo xx"|
"foo\ x\x"|foo\ x\x|
"foo\ x\x\\"|foo\ x\x\|
"foo\ x\x\\""foobar"|foo\ x\x\foobar|
"foo\ x\x\\"\'"foobar"|foo\ x\x\'foobar|
"foo\ x\x\\"\'"fo'obar"|foo\ x\x\'fo'obar|
"foo\ x\x\\"\'"fo'obar" 'don'\''t'|foo\ x\x\'fo'obar|don't|
"foo\ x\x\\"\'"fo'obar" 'don'\''t' \\|foo\ x\x\'fo'obar|don't|\|
'foo\ bar'|foo\ bar|
'foo\\ bar'|foo\\ bar|
foo\ bar|foo bar|
foo#bar\nbaz|foo|baz|
:-) ;-)|:-)|;-)|
áéíóú|áéíóú|
c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)	ShlexTest   c                    [         R                  5        Vs/ s H  nUR                  S5      S S PM     snU l         [        R                  5        Vs/ s H  nUR                  S5      S S PM     snU l        U R                    H  nUS   R	                  SS5      US'   M     U R                   H  nUS   R	                  SS5      US'   M     g s  snf s  snf )N|r   z\n
)data
splitlinessplit
posix_datareplace)selfxitems      8/opt/python-3.13.8/usr/lib/python3.13/test/test_shlex.pysetUpShlexTest.setUp   s    "oo/1/ WWS\#2&/1	 %/$9$9$;=$;q 773<,$;=IID1gooeT2DG OOD1gooeT2DG $1=s   CCc                     [        [        U5      5       HJ  n[        R                  " X   S   US9nU R	                  XAU   SS  X   S   < SU< SX   SS  < 35        ML     g )Nr   comments   :  != )rangelenshlexr   assertEqual)r   r
   r   ils        r   	splitTestShlexTest.splitTest   s_    s4y!ADGAJ:AQQ"gaj!TWQR[:; "    c                     / n[         R                   " [        R                  " U5      5      nUR                  5       nU(       a*  UR	                  U5        UR                  5       nU(       a  M*  U$ N)r   ioStringIO	get_tokenappend)r   sretlextoks        r   oldSplitShlexTest.oldSplit   sO    kk"++a.)mmoJJsO--/C c 
r#   c                     U R                  [        5         [        R                  " S 5        S S S 5        g ! , (       d  f       g = fr%   )assertRaises
ValueErrorr   r   r   s    r   testSplitNoneShlexTest.testSplitNone   s(    z*KK +**s	   6
Ac                 8    U R                  U R                  SS9  g )NTr   )r!   r   r3   s    r   testSplitPosixShlexTest.testSplitPosix   s    t6r#   c                 *   [        [        U R                  5      5       Hq  nU R                  U R                  U   S   5      nU R	                  X R                  U   SS  U R                  U   S   < SU< SU R                  U   SS  < 35        Ms     g )Nr   r   r   r   )r   r   r
   r.   r   )r   r   r    s      r   
testCompatShlexTest.testCompat   s{    s499~&Adiil1o.AQ		!QR 0"iil1oq$))A,qr2BDE 'r#   c                     S Hu  nSU-  SU-  /nSSUSS/n[         R                  " US5       HF  u  pE[        R                  " USS	9nXVl        [	        U5      nU R                  X7S
U< SU< S35        MH     Mw     g )N)
&&&z|&;&;;&||r   z&|z;|z;;|echo hi %s echo byeecho hi%secho byeechohibyeFTTpunctuation_charsWhile splitting '' [ws=]	itertoolsproductr   whitespace_splitlistr   r   	delimitersrcrefsswsr*   results           r   testSyntaxSplitAmpersandAndPipe)ShlexTest.testSyntaxSplitAmpersandAndPipe   s    
8I(94&24C4FE:C#++C?KKd;%'"a  fCEr!JL	 @8r#   c                    S Hy  nSU-  SU-  SU-  /nSSUSS/n[         R                  " US5       HF  u  pE[        R                  " US	S
9nXVl        [	        U5      nU R                  X7SU< SU< S35        MH     M{     g )N);z;;r?   r@   rB   zecho hi%s echo byerC   rD   rE   rF   rG   TrH   rJ   rK   rL   rM   rR   s           r   testSyntaxSplitSemicolon"ShlexTest.testSyntaxSplitSemicolon   s     2I(94')3&24C 4FE:C#++C?KKd;%'"a  fCEr!JL	 @ 2r#   c                     S Hr  nSU-  SU-  SU-  /nSSUS/n[         R                  " US5       H@  u  pE[        R                  " US	S
9n[        U5      nU R	                  X7SU< SU< S35        MB     Mt     g )N)<r   zecho hi %s outzecho hi%s outzecho hi%soutrD   rE   outrG   TrH   rJ   rK   rL   )rN   rO   r   rQ   r   rR   s           r   testSyntaxSplitRedirect!ShlexTest.testSyntaxSplitRedirect   s     $I#i/"Y.!I-/C 4E2C#++C?KKd;a  fCEr!JL @ $r#   c           
          SS/n/ SQn[         R                  " US5       HF  u  p4[        R                  " USS9nXEl        [	        U5      nU R                  X&SU< SU< S	35        MH     g )
Nz( echo hi )z	(echo hi))(rD   rE   )rG   TrH   rJ   rK   rL   rM   )r   rT   rU   rV   rW   r*   rX   s          r   testSyntaxSplitParenShlexTest.testSyntaxSplitParen   si     &''];FBB$7A!#!WFS&?A2FH	 <r#   c                     Sn/ SQn[         R                   " USS9n[        U5      nU R                  X$SU-  5        / SQn[         R                   " USS9nSUl        [        U5      nU R                  X$SU-  5        g )	Nz~/a&&b-c --color=auto||d *.py?)z~/ar>   r>   zb-c--color=autorA   d*.py?r   rH   zWhile splitting '%s' [ws=False])z~/a&&b-crj   rA   rk   rl   TzWhile splitting '%s' [ws=True])r   rQ   r   rP   )r   rV   rU   r*   rX   s        r   testSyntaxSplitCustomShlexTest.testSyntaxSplitCustom   sw    -JKKc2a&G"&LM>KKc2!a&F&KLr#   c                    S/ SQ44 Hz  u  p[         R                   " USS9n/ n UR                  5       nXSR                  :X  a  O,US   UR                  ;   a  SnOSnUR	                  XV45        ML  U R                  XB5        M|     g )Nza && b || c))arp   )r=   c)brp   )rA   rq   )rq   rp   TrH   r   rq   rp   )r   r(   eofrI   r)   r   )r   sourceexpectedr*   observedttts          r   testTokenTypesShlexTest.testTokenTypes   s     "/";!<! F
 Fd;AHKKM:Q41...BB(  X0!! r#   c                     [         R                   " SSS9nU R                  SUR                  5        U R                  [	        U5      / SQ5        g )Na_b__c_rH   )rp   r}   rr   __rq   )r   assertNotIn	wordcharsr   rQ   r   r*   s     r   testPunctuationInWordChars$ShlexTest.testPunctuationInWordChars  s;    KKC8akk*a"<=r#   c                     [         R                   " SSS9nU R                  [        U5      / SQ5        [         R                   " SSS9nSUl        U R                  [        U5      / SQ5        g )Nza  && b  ||  cr>   rH   )rp   r=   rr   r   r   rq   T)rp   r=   rr   rA   rq   )r   r   rQ   rP   r   s     r   "testPunctuationWithWhitespaceSplit,ShlexTest.testPunctuationWithWhitespaceSplit  sZ    KK(C@ 	a"ABKK(C@! 	a"=>r#   c                     [         R                   " SSSS9nU R                  [        U5      / SQ5        [         R                   " SSSS9nU R                  [        U5      / SQ5        g )Nzf >"abc"TposixrI   )f>abcz
f >\"abc\")r   r   z"abc")r   r   rQ   r   s     r   testPunctuationWithPosix"ShlexTest.testPunctuationWithPosix$  sR     KK
$$Ga"34KKddKa"56r#   c                     / SQnS H5  n[         R                   " SSUS9n[        U5      nU R                  XA5        M7     / SQn[         R                   " SSS9nU R                  [        U5      U5        g )N) rf   r   rG   z'')abcTr   )''rf   r   rH   )r   rQ   r   )r   ru   punctr*   slists        r   testEmptyStringHandling!ShlexTest.testEmptyStringHandling,  sg     $"EHDEJAGEU- # &KKD9a(+r#   c                     SnS/n[         R                   " USS9nSUl        U R                  [        U5      U5        / SQn[         R                   " USS9nU R                  [        U5      U5        g )Nu   ℙƴ☂ℌøἤTrH   )u   ℙu   ƴu   ☂u   ℌ   øu   ἤ)r   rP   r   rQ   )r   rV   rU   r*   s       r   testUnicodeHandlingShlexTest.testUnicodeHandling8  sd    356KKd3!a#&JKKd3a#&r#   c                    [         R                  [         R                  -   S-   nSnSU-   nU R                  [        R
                  " S5      S5        U R                  [        R
                  " U5      U5        U R                  [        R
                  " S5      S5        U H/  nU R                  [        R
                  " SU-  5      S	U-  5        M1     U H/  nU R                  [        R
                  " S
U-  5      SU-  5        M1     g )Nz
@%_-+=:,./u   éàßz"`$\!r   r   ztest file namez'test file name'z
test%snamez'test%sname'ztest%s'name'z'test%s'"'"'name'"'"'')stringascii_lettersdigitsr   r   quote)r   safeunquotedunicode_sampleunsafeus        r   	testQuoteShlexTest.testQuoteE  s    ++fmm;lJ'N*R$/\2LA%568JKAU[[)9:+a/1  AU[[!);<9A=? r#   c                     SS/S4SS/S4/ SQS4S	S
/S44 HD  u  pU R                  US9   [        R                  " U5      nU R                  X25        S S S 5        MF     g ! , (       d  f       MX  = f)Nza rr   z'a ' brp   z bza ' b')rp    rr   za ' ' bz"azb"z	'"a' 'b"'command)subTestr   joinr   )r   split_commandr   joineds       r   testJoinShlexTest.testJoinT  sz    C[(#4[(#i(D\?+	'
"M g.M2  1 /.'
 /.s   (A  
A/	c                    U R                   U R                  -   nU HY  tp#U R                  US9   [        R                  " U5      n[        R
                  " U5      nU R                  X55        S S S 5        M[     g ! , (       d  f       Mm  = f)Nr   )r
   r   r   r   r   r   r   )r   all_datar   r   r   resplits         r   testJoinRoundtripShlexTest.testJoinRoundtrip_  sh    99t.'/#Gg.M2++f-  8 /. (0..s   >A::
B		c                     Sn[         R                   " US9nU R                  UR                  U5        U R                  [        5         SUl        S S S 5        g ! , (       d  f       g = f)Nz/|$%^rH   F)r   r   rI   r1   AttributeError)r   rI   shlex_instances      r   testPunctuationCharsReadOnly&ShlexTest.testPunctuationCharsReadOnlyg  sP    #7HI99;LM~./4N, /..s   A
A')r
   r   N)__name__
__module____qualname____firstlineno__r   r!   r.   r4   r7   r:   rY   r]   rb   rg   rm   ry   r   r   r   r   r   r   r   r   r   __static_attributes__ r#   r   r   r      sq    3;7EL"L LHM1(>
?7
,'?	295r#   r   r   testr:   __main__)r&   rN   r   r   unittestr
   r   TestCaser   getattrdirmethname
startswithdelattrr   mainr   r#   r   <module>r      s    	    
=~>
@c5!! c5N ugt$$	Nv&&8|+CIx( # zMMO r#   