
    9i                         S r SSKJr  SSKJr  SSKJrJrJrJ	r	J
r
JrJrJrJrJr  SSKJrJrJr  S r " S S\R*                  5      rg	)
zD
Fixer for:
(a,)* *b (,c)* [,] = s
for (a,)* *b (,c)* [,] in d: ...
    )
fixer_base)count)
AssignCommaCallNewlineNameNumbertokensymsNodeLeaf)indentationsuitify	commatizec                 `   / n [        U 5      n[        U5      nU S:  a  [        [        R
                  [        U5      [        [        R                  [        [        R                  S5      [        [        R                  [        [        R                  S5      [        U5      /5      [        [        R                  S5      /5      /5      nUR                  U5        UR                  [        [        R                   SSS95        [        [        R
                  [        [        R                  SSS9[        U5      [        [        R                  [        [        R                  S5      [        [        R                  U S:  a  [        U5      O[        SS	5      [        [        R                  S5      US:  a=  [        [        R"                  [        [        R$                  S
5      [        U5      /5      O[        SS	5      /5      [        [        R                  S5      [        [        R                  S5      /5      /5      nUR                  U5        US:  Ga  UR                  [        [        R                   SSS95        [        [        R
                  [        USS9[        [        R                  [        [        R                  S5      [        [        R                  [        [        R"                  [        [        R$                  S
5      [        U5      /5      [        [        R                  S5      /5      [        [        R                  S5      /5      /5      n	UR                  U	5        [        [        R&                  U5      n
U
$ ! [         a    [        U 5      n[        U5      n GNf = f)z
Accepts num_pre and num_post, which are counts of values
before and after the starg (not including the starg)
Returns a source fit for Assign() from fixer_util
r   [:]+ prefix    -)unicode	NameErrorstrr   r   powerr	   trailerr   r   LSQB	subscriptCOLONr
   RSQBappendPLUSfactorMINUS
arith_expr)num_prenum_postLISTNAMEITERNAMEchildrenprepostpre_part	main_part	post_partsources              a/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/libpasteurize/fixes/fix_unpacking.pyassignment_sourcer7      s    Hgx  {

T(^T$,,ejjZ^I_aefjftftw{  }B  }H  }H  JN  xO  QW  X[  Q\  w]  b^  `d  ej  eo  eo  qu  `v  Iw  6x  %y  z!UZZd;<TZZ$uzz4"EtH~W[\`\h\hkopupzpz  }A  lB  DH  IM  IW  IW  ip  st  it  Z`  ad  Ze  z~  @  BE  zF  HL  MR  MX  MX  Z^  H_  _g  jk  _k  ae  fj  fq  fq  tx  y~  yD  yD  FJ  tK  MS  TX  MY  sZ  a[  qu  vw  y|  q}  Y~  D  AE  FK  FP  FP  RV  AW  Y]  ^c  ^h  ^h  jn  Yo  kp  Xq  "r  sIOOI!|UZZd;<d8D&A4W[\a\f\fhlWmostx  uC  uC  FJ  KO  KV  KV  Y]  ^c  ^i  ^i  ko  Yp  rx  y}  r~  X  F@  BF  GL  GR  GR  TX  BY  EZ  p[  ]a  bg  bl  bl  nr  ]s  Wt  Du  &v  w		"$//8,FM!  'l8}s   N	 	 N-,N-c                   *    \ rS rSrSrS rS rS rSrg)FixUnpacking*   a9  
    expl=expr_stmt< testlist_star_expr<
        pre=(any ',')*
            star_expr< '*' name=NAME >
        post=(',' any)* [','] > '=' source=any > |
    impl=for_stmt< 'for' lst=exprlist<
        pre=(any ',')*
            star_expr< '*' name=NAME >
        post=(',' any)* [','] > 'in' it=any ':' suite=any>c           	        ^ U4S jS 5       u  p4pVU Vs/ s H2  owR                   [        R                  :X  d  M"  UR                  5       PM4     nnSUl        U Vs/ s H2  owR                   [        R                  :X  d  M"  UR                  5       PM4     nn[        X4R                  5       /-   U-   5       Vs/ s H  owR                  5       PM     nnUR                  [        5       5        SUl        [        [        U R                  5      [        [        S5      UR                  5       /5      5      n	[        U[        [        U5      [        U5      U R                  U R                  5      5      n
X4$ s  snf s  snf s  snf )Nc              3   F   >#    U  H  nTR                  U5      v   M     g 7fNget.0nresultss     r6   	<genexpr>4FixUnpacking.fix_explicit_context.<locals>.<genexpr>7   s     "a;`a7;;q>>;`   !)r0   namer1   r5   r   r   list)typer   NAMEcloner   r   r&   r   r   r	   r-   r   r7   lenr.   )selfnoderC   r0   rG   r1   r5   rB   target
setup_line
power_lines     `        r6   fix_explicit_context!FixUnpacking.fix_explicit_context6   s   "a;`"a4"%>#Q5::)=yqwwy#>#'@4a66UZZ+?		4@%.sjjl^/Cd/J%KL%K'')%KL 	egD/d7mfllnEU1VW
F$5c#hD	4==Z^ZgZg$hi
%% ?@Ls   !E4E4!E9 E97E>c           	      0  ^ U4S jS 5       u  p4pVU Vs/ s H2  owR                   [        R                  :X  d  M"  UR                  5       PM4     nnSUl        U Vs/ s H2  owR                   [        R                  :X  d  M"  UR                  5       PM4     nn[        X4R                  5       /-   U-   5       Vs/ s H  owR                  5       PM     nnUR                  [        5       5        UR                  5       n	SU	l        [        [        U R                  5      [        [        S5      [        U R                  5      /5      5      n
[        U[        [        U5      [        U5      U R                  U R                  5      5      nX4$ s  snf s  snf s  snf )zG
Only example of the implicit context is
a for loop, so only fix that.
c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr=   r>   r@   s     r6   rD   4FixUnpacking.fix_implicit_context.<locals>.<genexpr>I   s     Y7X!w{{1~~7XrF   )r0   rG   r1   itr   r   rH   )rI   r   rJ   rK   r   r   r&   r   r   r	   r-   r   r.   r7   rL   )rM   rN   rC   r0   rG   r1   rW   rB   rO   r5   rP   rQ   s     `         r6   fix_implicit_context!FixUnpacking.fix_implicit_contextD   s+   
 Z7XY4"%>#Q5::)=yqwwy#>#'@4a66UZZ+?		4@%.sjjl^/Cd/J%KL%K'')%KL 	egD/d7md4==FYEZ1[\
F$5c#hD	4==Z^ZgZg$hi
%% ?@Ls   !F	F	!F F7Fc                 P   U R                  S5      U l        U R                  S5      U l        UR                  S5      UR                  S5      pCUb  U R	                  X5      u  pVUR
                  Ul        [        UR                  5      Ul        UR                  [        5       5        UR                  nUR                  5       nUR                  X5        UR                  X5        gUGb7  U R                  X5      u  pV[        U5        UR                   V	s/ s H$  oR                  [         R"                  :X  d  M"  U	PM&     sn	S   n
SUl        U
R                  S   R$                  Ul        [        U
R                  S	   5      U
R                  S	   l        U
R                  S	[        5       5        U
R                  S	U5        U
R                  S	[        5       5        U
R                  S	U5        UR                  S
5      R'                  [)        U R                  SS95        ggs  sn	f )a]  
a,b,c,d,e,f,*g,h,i = range(100) changes to
_3to2list = list(range(100))
a,b,c,d,e,f,g,h,i, = _3to2list[:6] + [_3to2list[6:-2]] + _3to2list[-2:]

and

for a,b,*c,d,e in iter_of_iters: do_stuff changes to
for _3to2iter in iter_of_iters:
    _3to2list = list(_3to2iter)
    a,b,c,d,e, = _3to2list[:2] + [_3to2list[2:-2]] + _3to2list[-2:]
    do_stuff
	_3to2list	_3to2iterexplimplNr   r   r      lstr   r   )new_namer-   r.   r?   rR   r   r   parentappend_childr   removeinsert_childrX   r   r/   rI   r   suitevaluereplacer	   )rM   rN   rC   r]   r^   rP   rQ   rb   ikrf   s              r6   	transformFixUnpacking.transformW   s    l3l3[[)7;;w+?d%)%>%>t%M"J $J +DKK 8J##GI.[[FA..%)%>%>t%M"JDM $F14::1EQFqIE #J %q 1 7 7J'25>>!3D'EENN1$q'),q*-q'),q*-KK''T]]4(HI  Gs   !H#<H#)r.   r-   N)	__name__
__module____qualname____firstlineno__PATTERNrR   rX   rk   __static_attributes__     r6   r9   r9   *   s    >G&&&%Jrt   r9   N)__doc__lib2to3r   	itertoolsr   lib2to3.fixer_utilr   r   r   r   r	   r
   r   r   r   r   libfuturize.fixer_utilr   r   r   r7   BaseFixr9   rs   rt   r6   <module>r{      sE     A A A B B8RJ:%% RJrt   