
    4pf                         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d	S )
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                    g }	 t          |           }t          |          }n.# t          $ r! t          |           }t          |          }Y nw xY w| dk    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          }|                    |           |                    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k    rt          |          nt          dd	          t          t          j        d          |dk    rAt          t          j        t          t          j        d
          t          |          g          nt          dd	          g          t          t          j        d          t          t          j        d          g          g          }|                    |           |dk    r+|                    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          }	|                    |	           t          t          j        |          }
|
S )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/nettyfy-visnx/env/lib/python3.11/site-packages/libpasteurize/fixes/fix_unpacking.pyassignment_sourcer7      sI    Hgx     'll8}}
 {{
T(^^T$,ejZ^I_I_aefjftw{  }B  }H  JN  xO  xO  QW  X[  Q\  Q\  w]  b^  b^  `d  ej  eo  qu  `v  `v  Iw  6x  6x  %y  z  z!!!UZd;;;<<<TZ$uz4"E"E"EtH~~W[\`\hkopupz  }A  lB  lB  DH  IM  IW  ip  st  it  it  Z`  ad  Ze  Ze  Ze  z~  @  BE  zF  zF  HL  MR  MX  Z^  H_  H_  _g  jk  _k  _k  ae  fj  fq  tx  y~  yD  FJ  tK  tK  MS  TX  MY  MY  sZ  a[  a[  a[  qu  vw  y|  q}  q}  Y~  D  D  AE  FK  FP  RV  AW  AW  Y]  ^c  ^h  jn  Yo  Yo  kp  Xq  Xq  "r  s  sIOOI!||UZd;;;<<<d8D&A&A&A4W[\a\fhlWmWmostx  uC  FJ  KO  KV  Y]  ^c  ^i  ko  Yp  Yp  rx  y}  r~  r~  X  F@  F@  BF  GL  GR  TX  BY  BY  EZ  p[  p[  ]a  bg  bl  nr  ]s  ]s  Wt  Du  Du  &v  w  w		"""$/8,,FMs   # (AAc                   $    e Zd ZdZd Zd Zd ZdS )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           	      L   fddD             \  }}}}d |D             }d|_         d |D             }d t          ||                                gz   |z             D             }|                    t	                                 d|_         t          t          | j                  t          t          d          |                                g                    }t          |t          t          |          t          |          | j        | j                            }	||	fS )	Nc              3   B   K   | ]}                     |          V  d S Nget.0nresultss     r6   	<genexpr>z4FixUnpacking.fix_explicit_context.<locals>.<genexpr>7   s-      "a"aa7;;q>>"a"a"a"a"a"a    )r0   namer1   r5   c                 `    g | ]+}|j         t          j        k    |                                ,S  typer   NAMEcloner@   rA   s     r6   
<listcomp>z5FixUnpacking.fix_explicit_context.<locals>.<listcomp>8   .    >>>Q5:)=)=qwwyy)=)=)=rD   r   c                 `    g | ]+}|j         t          j        k    |                                ,S rG   rH   rL   s     r6   rM   z5FixUnpacking.fix_explicit_context.<locals>.<listcomp>:   .    @@@a16UZ+?+?		+?+?+?rD   c                 6    g | ]}|                                 S rG   rK   rL   s     r6   rM   z5FixUnpacking.fix_explicit_context.<locals>.<listcomp>;        LLL!''))LLLrD   r   list)r   r   rK   r&   r   r   r	   r-   r   r7   lenr.   )
selfnoderB   r0   rE   r1   r5   target
setup_line
power_lines
     `       r6   fix_explicit_contextz!FixUnpacking.fix_explicit_context6   s   "a"a"a"a;`"a"a"aT4>>#>>>@@4@@@LLYsdjjll^/Cd/J%K%KLLL 	eggD//d7mmfllnnEU1V1VWW
F$5c#hhD		4=Z^Zg$h$hii
:%%rD   c           	      t   fddD             \  }}}}d |D             }d|_         d |D             }d t          ||                                gz   |z             D             }|                    t	                                 |                                }d|_         t          t          | j                  t          t          d          t          | j	                  g                    }	t          |t          t          |          t          |          | j        | j	                            }
|	|
fS )	z_
        Only example of the implicit context is
        a for loop, so only fix that.
        c              3   B   K   | ]}                     |          V  d S r<   r=   r?   s     r6   rC   z4FixUnpacking.fix_implicit_context.<locals>.<genexpr>I   s-      YY!w{{1~~YYYYYYrD   )r0   rE   r1   itc                 `    g | ]+}|j         t          j        k    |                                ,S rG   rH   rL   s     r6   rM   z5FixUnpacking.fix_implicit_context.<locals>.<listcomp>J   rN   rD   r   c                 `    g | ]+}|j         t          j        k    |                                ,S rG   rH   rL   s     r6   rM   z5FixUnpacking.fix_implicit_context.<locals>.<listcomp>L   rP   rD   c                 6    g | ]}|                                 S rG   rR   rL   s     r6   rM   z5FixUnpacking.fix_implicit_context.<locals>.<listcomp>M   rS   rD   r   rT   )r   r   rK   r&   r   r   r	   r-   r   r.   r7   rU   )rV   rW   rB   r0   rE   r1   r^   rX   r5   rY   rZ   s     `        r6   fix_implicit_contextz!FixUnpacking.fix_implicit_contextD   s"   
 ZYYY7XYYYT4>>#>>>@@4@@@LLYsdjjll^/Cd/J%K%KLLL 	eggD//d7mmd4=FYFYEZ1[1[\\
F$5c#hhD		4=Z^Zg$h$hii
:%%rD   c                    |                      d          | _        |                      d          | _        |                    d          |                    d          }}||                     ||          \  }}|j        |_        t          |j                  |_        |                    t                                 |j        }|
                                }|                    ||           |                    ||           dS |5|                     ||          \  }}t          |           d |j        D             d         }	d|_        |	j        d	         j        |_        t          |	j        d
                   |	j        d
         _        |	                    d
t                                 |	                    d
|           |	                    d
t                                 |	                    d
|           |                    d                              t#          | j        d                     dS dS )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implNc                 <    g | ]}|j         t          j        k    |S rG   )rI   r   suite)r@   ks     r6   rM   z*FixUnpacking.transform.<locals>.<listcomp>t   s&    FFF14:1E1EQ1E1E1ErD   r   r   r      lstr   r   )new_namer-   r.   r>   r[   r   r   parentappend_childr   removeinsert_childrb   r   r/   valuereplacer	   )
rV   rW   rB   rf   rg   rY   rZ   rn   iri   s
             r6   	transformzFixUnpacking.transformW   s    l33l33[[))7;;w+?+?d%)%>%>tW%M%M"J
 $J +DK 8 8J##GII...[FA:...:.....%)%>%>tW%M%M"J
DMMMFFFFFqIE #J %q 1 7J'25>!3D'E'EEN1$q')),,,q*---q')),,,q*---KK''T]4(H(H(HIIIII rD   N)__name__
__module____qualname__PATTERNr[   rb   ru   rG   rD   r6   r9   r9   *   sM        >G& & && & &&%J %J %J %J %JrD   r9   N)__doc__lib2to3r   	itertoolsr   lib2to3.fixer_utilr   r   r   r   r	   r
   r   r   r   r   libfuturize.fixer_utilr   r   r   r7   BaseFixr9   rG   rD   r6   <module>r      s=               A A A A A A A A A A A A A A A A A A A A A A A A B B B B B B B B B B  8RJ RJ RJ RJ RJ:% RJ RJ RJ RJ RJrD   