Ë
    \;jÍ  ã                   ó  — d Z d„ Zdd„Zej                  fd„Zdg efd„Zd„ Z ed«      Z	 ed«      Z
e
j                  d	«       e	e
fd
„Z eg d¢«      Zeefd„Z ed«      dj!                  «       z   dgz   Z ed„ eD «       «      Zefd„Zy)a|  
Part of the astor library for Python AST manipulation.

License: 3-clause BSD

Copyright (c) 2015 Patrick Maupin

Pretty-print source -- post-process for the decompiler

The goals of the initial cut of this engine are:

1) Do a passable, if not PEP8, job of line-wrapping.

2) Serve as an example of an interface to the decompiler
   for anybody who wants to do a better job. :)
c                 ó6   — dj                  t        | «      «      S )z Prettify the source.
    Ú )ÚjoinÚsplit_lines)Úsources    úZG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\astor/source_repr.pyÚpretty_sourcer      s   € ð �7‰7”;˜vÓ&Ó'Ð'ó    éO   c                 ó@  — g }|j                   }|j                  }g }d}d}| D ]x  } t        |«      d«      }	|j                  |	«      }
|
r%|j                  |«       |
dkD  }|t	        |«      z  }ŒL|r#||k  s|r	 ||«       nt        |||«       d}d}g } ||«       Œz |S )zpSplit inputs according to lines.
       If a line is short enough, just yield it.
       Otherwise, fix it.
    Fé    Ú
)ÚextendÚappendÚtypeÚfindÚlenÚ	wrap_line)r   ÚmaxlineÚresultr   r   ÚlineÚ	multilineÚcountÚitemÚnewlineÚindexs              r   r   r      sµ   € ð
 €FØ�]‰]€FØ�]‰]€FØ€DØ€IØ€EÛˆØ”$�t“*˜TÓ"ˆØ—	‘	˜'Ó"ˆÙØ�K‰K˜ÔØ ™	ˆIØ”S˜“YÑ‰EáØ˜GÒ#¡yÙ˜4•Lä˜d G¨VÔ4Ø�Ø!�	Ø�Ù�4�Lð! ð" €Mr	   c                 óJ   — t        | D �cg c]
  } ||«      ‘Œ c}«      S c c}w ©N)Úsum)ÚgroupÚslenÚxs      r   r   r   :   s#   € Ü¡Ó'¡˜A‘�Q• Ñ'Ó(Ð(ùÒ's   Š c                 ó  ‡— |j                   }|j                  }| d   }t        |«      }|t        |j                  «       «      z
  }|d|fv sJ ‚|r| j	                  d«      nd}t        t        | «      «      }	|	ddd…   }
|	ddd…   }t        ˆfd„|
D «       «      ||z
  kD  r1t        | ||«      } t        t        | «      «      }	|	ddd…   }
|	ddd…   }|
d   } ||«        ||«       |s|S | ‰|«      z   }|dz  }|dz  }||dz  k\  r|dz  |z   }t        ||
dd «      D ]ß  \  }}|r¤||kD  r&|t        |d   «      z   |kD  r |d	«        ||«       |} ‰|«      }||z   |kD  rZt        |||«      \  }}|d
   j                  d«      r|d
   dd
 |d
<    ||«        |d	«        ||«       |} ‰|«      }||z   |kD  rŒZ|r ||«       ||z  } ‰|«      }||kD  r||z   |kD  r |d	«        ||«       |} ||«       ||z  }Œá y)zP We have a line that is too long,
        so we're going to try to wrap it.
    r   r   Né   é   c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   © ©Ú.0r!   r   s     €r   Ú	<genexpr>zwrap_line.<locals>.<genexpr>W   s   øè ø€ Ð
*™\˜‰5��8™\ùó   ƒz    é   r   éÿÿÿÿÚ )r   r   r   ÚlstripÚpopÚlistÚdelimiter_groupsÚmaxÚ
add_parensÚzipÚsplit_groupÚendswith)r   r   r   r   r   r   ÚindentationÚlenfirstÚindentÚdgroupsÚunsplittableÚ
splittableÚfirstÚposÚsgÚnsgÚcsgÚreadyÚcnsgs      `               r   r   r   >   sk  ø€ ð �]‰]€FØ�]‰]€Fà�q‘'€KÜ�;Ó€HØœ˜K×.Ñ.Ó0Ó1Ñ1€FØ�a˜�]Ñ"Ð"Ð"Ù!'�$—(‘(˜1”+¨R€Kô Ô# DÓ)Ó*€GØ™3˜Q˜3‘<€LØ˜˜˜A˜‘€Jô
 Ó
*™\Ó
*Ó*¨W°vÑ-=Ò=Ü˜$ ¨Ó0ˆÜÔ'¨Ó-Ó.ˆØ™s ˜s‘|ˆØ˜Q˜T ˜T‘]ˆ
ð
 ˜‰O€EÙ
ˆ;ÔÙ
ˆ5„MÙØˆØ
‘5˜“<Ñ
€CØ�6Ñ€KØ
ˆa�K€FØ�˜1‘ÒØ˜A‘+ Ñ&ˆä�z <°°Ð#3Ö4‰ˆˆCáð �VŠ| ¤c¨"¨Q©%£jÑ 0°7Ò :Ù�t”Ù�{Ô#Ø�ñ ˜“)ˆCØ˜‘)˜gÒ%Ü'¨¨C°Ó9‘	��rØ˜‘9×%Ñ% cÔ*Ø % b¡	¨#¨2 �E˜"‘IÙ�u”Ù�t”Ù�{Ô#Ø�Ù˜B“i�ð ˜‘)˜gÓ%ñ Ù�r”
Ø�s‘
�ñ �S‹zˆØ�Š<˜C $™J¨Ò0Ù�4ŒLÙ�;ÔØˆCÙˆsŒØˆt‰‰ñI 5r	   c                 ó  — g }| j                  «        | rf| j                  «       }|j                  |«       |t        |«      z  }| r2| d   }|j	                  d«      r|dz   n|dz
  }|t        |«      z   |kD  rn| rŒf| j                  «        || fS )a   Split a group into two subgroups.  The
        first will be appended to the current
        line, the second will start the new line.

        Note that the first group must always
        contain at least one item.

        The original group may be destroyed.
    r,   r-   r$   r+   )Úreverser/   r   r   r6   )r   r>   r   r=   ÚtokÚalloweds         r   r5   r5   ’   sŽ   € ð €EØ
‡N�NÔÙ
Ø�j‰j‹lˆØ�‰�SÔØŒs�3‹x‰ˆÙØ˜‘*ˆCØ'*§|¡|°CÔ'8�w ’{¸wÈ¹{ˆGØ”S˜“X‰~ Ò'Øò ð ‡N�NÔØ�&ˆ=Ðr	   z([{z)]}z):c              #   ó   K  — g }t        | «      } 	 | D ]  }|j                  |«       ||v sŒ n |sy|–— d}g }| D ]4  }||v r|dz  }n||v r|dz  }|dk  r	|–— |g} n|j                  |«       Œ6 |rJ |«       ‚yŒm­w)z�Split a line into alternating groups.
       The first group cannot have a line feed inserted,
       the next one can, etc.
    r   r$   N)Úiterr   )r   Úbegin_delimÚ	end_delimÚtextr   Úlevels         r   r1   r1   ±   s¸   è ø€ ð €DÜ�‹:€DØ
ãˆDØ�K‰K˜ÔØ�{Ò"Ùð ñ ØØŠ
ð ˆØˆÛˆDØ�{Ñ"Ø˜‘
‘Ø˜Ñ"Ø˜‘
�Ø˜1’9Ø’JØ ˜6�DÙØ�K‰K˜Õð ñ Ð!˜TÓ!�8Øð3 ùs   ‚)A>¬AA>)zdel Úreturnzyield zif zwhile c                 ó¦  ‡— | d   |v r`d}| d   j                  d«      sd}| d   dk(  sJ ‚| j                  |d«       | d   dk(  r| j                  dd«       n| j                  d«       t        t	        | «      «      }t        |«      dk(  r| S t        ˆfd	„|D «       «      }d
}t        |dd «      ||z
  dz
  k\  rA|dd D ]9  }	d
}t        |	«      dkD  sŒ|	j                  dd«       |	j                  dd«       d}Œ; |r|d   ||z
  dz
  kD  r)|d   j                  dd«       |d   j                  d«       |D �	�
cg c]  }	|	D ]  }
|
‘Œ Œ c}
}	S c c}
}	w )zVAttempt to add parentheses around the line
       in order to make it splittable.
    r   r$   r-   r#   Ú(r,   Ú:Ú)c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   r&   r'   s     €r   r)   zadd_parens.<locals>.<genexpr>î   s   øè ø€ Ð+¡F˜q‘%˜—(¡Fùr*   FNr+   Té
   )r6   Úinsertr   r0   Úget_assign_groupsr   r   )r   r   r9   Ú
statementsr   r   ÚgroupsÚcountsÚdidwrapr   r   s       `      r   r3   r3   Ø   sh  ø€ ð
 ˆA�w�*ÑØˆØ�A‰w×Ñ Ô$ØˆEØ˜‘7˜c’>Ð!�>Ø�‰�E˜3ÔØ�‰8�sŠ?Ø�K‰K˜˜CÕ à�K‰K˜Ôô Ô# DÓ)Ó*€FÜ
ˆ6ƒ{�aÒàˆäÓ+¡FÓ+Ó+€FØ€Gô ˆ6�#�2ˆ;Ó˜7 VÑ+¨aÑ/Ò/Ø˜C˜R“[ˆEØˆGÜ�5‹z˜A‹~Ø—‘˜Q Ô$Ø—‘˜R Ô%Ø‘ð !ñ �f˜R‘j 7¨VÑ#3°bÑ#8Ò8Øˆr‰
×Ñ˜!˜SÔ!Øˆr‰
×Ñ˜#Ôá$Ô7™f�U³¨ŠD°ˆD˜fÒ7Ð7ùÓ7s   Ä9Ez
|^&+-*/%@~z<< >> // **r   c              #   ó&   K  — | ]	  }d |z  –— Œ y­w)z %s= Nr&   )r(   r!   s     r   r)   r)     s   è ø€ Ð	#™s˜!ˆ'�A�+™sùs   ‚c              #   ó^   K  — g }| D ]  }|j                  |«       ||v sŒ|–— g }Œ  |–— y­w)zU Split a line into groups by assignment (including
        augmented assignment)
    N)r   )r   Úopsr   r   s       r   rV   rV     s;   è ø€ ð €EÛˆØ�‰�TÔØ�3Š;ØŠKØ‰Eð	 ð
 ƒKùs   ‚- -N)r
   )Ú__doc__r   r   ÚstrÚ__len__r   r   r5   ÚsetrJ   rK   Úaddr1   rW   r3   r0   Úsplitr]   rV   r&   r	   r   Ú<module>rd      sº   ðñò$(óð> —k‘kó )ð  r°ó Qòhñ4 �%‹j€Ù�‹J€	Ø 	‡�ˆdÔ ð (3Ø(ó!ñH Ò>Ó?€
ð 2<À5ó '8ñV ˆ<Ó˜=×.Ñ.Ó0Ñ0°B°4Ñ7€Ù	Ñ	#™sÓ	#Ó#€ð !$ô 
r	   