
    Fwg                         d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZ ddlmZmZmZ d Z G d dej*                        Zy	)
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   g }	 t        |       }t        |      }| dkD  rt        t        j
                  t        |      t        t        j                  t        t        j                  d      t        t        j                  t        t        j                  d      t        |      g      t        t        j                  d      g      g      }|j                  |       |j                  t        t        j                   dd             t        t        j
                  t        t        j                  dd      t        |      t        t        j                  t        t        j                  d      t        t        j                  | dkD  rt        |      nt        dd	      t        t        j                  d      |dkD  r=t        t        j"                  t        t        j$                  d
      t        |      g      nt        dd	      g      t        t        j                  d      t        t        j                  d      g      g      }|j                  |       |dkD  r|j                  t        t        j                   dd             t        t        j
                  t        |d      t        t        j                  t        t        j                  d      t        t        j                  t        t        j"                  t        t        j$                  d
      t        |      g      t        t        j                  d      g      t        t        j                  d      g      g      }	|j                  |	       t        t        j&                  |      }
|
S # t        $ r t        |       }t        |      }Y w xY w)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              X/var/www/horilla/myenv/lib/python3.12/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 N43N4c                   "    e Zd ZdZd Zd Zd Zy)FixUnpackinga9  
    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           	         fddD        \  }}}}|D cg c]0  }|j                   t        j                  k(  s!|j                         2 }}d|_        |D cg c]0  }|j                   t        j                  k(  s!|j                         2 }}t        ||j                         gz   |z         D cg c]  }|j                          }}|j                  t                      d|_        t        t        | j                        t        t        d      |j                         g            }	t        |t        t        |      t        |      | j                  | j                              }
|	|
fS c c}w c c}w c c}w )Nc              3   @   K   | ]  }j                  |        y wNget.0nresultss     r6   	<genexpr>z4FixUnpacking.fix_explicit_context.<locals>.<genexpr>7   s     "aa7;;q>"a   )r0   namer1   r5   r   r   list)typer   NAMEcloner   r   r&   r   r   r	   r-   r   r7   lenr.   )selfnoderB   r0   rE   r1   r5   rA   target
setup_line
power_lines     `        r6   fix_explicit_contextz!FixUnpacking.fix_explicit_context6   s   "a;`"aT4"%>Q5::)=qwwy>>#'@a166UZZ+?	@@%.sdjjl^/Cd/J%KL!'')LL 	egD/d7mfllnEU1VW
F$5c#hD	4==Z^ZgZg$hi
:%% ?@Ls   "E-E-"E2;E21E7c           	      "   fddD        \  }}}}|D cg c]0  }|j                   t        j                  k(  s!|j                         2 }}d|_        |D cg c]0  }|j                   t        j                  k(  s!|j                         2 }}t        ||j                         gz   |z         D cg c]  }|j                          }}|j                  t                      |j                         }	d|	_        t        t        | j                        t        t        d      t        | j                        g            }
t        |t        t        |      t        |      | j                  | j                              }|
|fS c c}w c c}w c c}w )z_
        Only example of the implicit context is
        a for loop, so only fix that.
        c              3   @   K   | ]  }j                  |        y wr<   r=   r?   s     r6   rC   z4FixUnpacking.fix_implicit_context.<locals>.<genexpr>I   s     Y!w{{1~YrD   )r0   rE   r1   itr   r   rF   )rG   r   rH   rI   r   r   r&   r   r   r	   r-   r   r.   r7   rJ   )rK   rL   rB   r0   rE   r1   rS   rA   rM   r5   rN   rO   s     `         r6   fix_implicit_contextz!FixUnpacking.fix_implicit_contextD   s0   
 Z7XYT4"%>Q5::)=qwwy>>#'@a166UZZ+?	@@%.sdjjl^/Cd/J%KL!'')LL 	egD/d7md4==FYEZ1[\
F$5c#hD	4==Z^ZgZg$hi
:%% ?@Ls   "FF"F;F1Fc                 X   | j                  d      | _        | j                  d      | _        |j                  d      |j                  d      }}|| j	                  ||      \  }}|j
                  |_        t        |j                        |_        |j                  t                      |j                  }|j                         }|j                  ||       |j                  ||       y|8| j                  ||      \  }}t        |       |j                  D 	cg c]"  }	|	j                  t         j"                  k(  s!|	$ c}	d   }
d|_        |
j                  d   j$                  |_        t        |
j                  d	         |
j                  d	   _        |
j                  d	t                      |
j                  d	|       |
j                  d	t                      |
j                  d	|       |j                  d
      j'                  t)        | j                  d             yyc c}	w )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>   rP   r   r   parentappend_childr   removeinsert_childrT   r   r/   rG   r   suitevaluereplacer	   )rK   rL   rB   rX   rY   rN   rO   r]   ikra   s              r6   	transformzFixUnpacking.transformW   s    l3l3[[)7;;w+?d%)%>%>tW%M"J
 $J +DKK 8J##GI.[[FA:.:.%)%>%>tW%M"J
DM $F1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'N)__name__
__module____qualname__PATTERNrP   rT   rf        r6   r9   r9   *   s    >G&&&%Jrl   r9   N)__doc__lib2to3r   	itertoolsr   lib2to3.fixer_utilr   r   r   r   r	   r
   r   r   r   r   libfuturize.fixer_utilr   r   r   r7   BaseFixr9   rk   rl   r6   <module>rs      sE     A A A B B8RJ:%% RJrl   