a
    d/                     @   sb  d dl mZm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mZmZmZmZmZmZmZmZmZmZ d dlZd dlZd dlZd dl Z d dl m!Z! d dl"m#Z# d dl$m%Z% d d	l&m'Z' d dl(Z(d d
l)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 e!1e2Z3e!4e3e!j5Z6g dZ7dd Z8dd Z9dej:dfddZ;dd Z<e=dkr^e<  dS )    )ABCabstractmethod)Sequence)
ModuleType)TypeVarGenericTypeTupleListDictIterator
CollectionCallableOptional	FrozenSetAnyUnionIterableIOTYPE_CHECKINGPatternClassVarSetMappingN)path)defaultdict)partial)ArgumentParser)lalr_argparser
build_lalrmake_warnings_comments)Rule)TerminalDef)ztools/standalone.pyzexceptions.pyzutils.pyztree.pyzvisitors.pyz
grammar.pyzlexer.pyz	common.pyzparse_tree_builder.pyzparsers/lalr_parser.pyzparsers/lalr_analysis.pyzparser_frontends.pyzlark.pyzindenter.pyc                 C   s   d }g }t t}| D ]j}|drp|d dkr@|dd   }q~|d dkrf||  |7  < d }g }q~t|q|r|| qdd | D S )Nz###   {   }c                 S   s   i | ]\}}|d  |qS ) )join).0nametext r,   ^/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/lark/tools/standalone.py
<dictcomp>Z       z$extract_sections.<locals>.<dictcomp>)r   list
startswithstrip
ValueErrorappenditems)linessectionr+   sectionsliner,   r,   r-   extract_sectionsI   s    

r:   c                 C   s   g }t j}d}d}t| }|D ]\}}\}}	\}
}}||krBd}|	|kr\|d|	|   |t jkr||t jkr||d n |tjkr|d n
|| |}|}|
}q d|S )z Strip comments and docstrings from a file.
    Based on code from: https://stackoverflow.com/questions/1769332/script-to-remove-python-comments-docstrings
    r    z#--z##
r'   )tokenINDENTtokenizegenerate_tokensr4   STRINGCOMMENTr(   )Zline_genresZprev_toktypeZlast_linenoZlast_colZtokgenZtoktypeZttextZslinenoZscolZelinenoZecolltextr,   r,   r-   strip_docstrings]   s&    


rE   Fc              	      s  d u rt t|ddd ldd ldd l  fdd}fdd}dtj  dtj    ttD ]j\}}t	t
jt|@}t|d	 }	|rtt tt|	d
}	|	 W d    qt1 s0    Y  qt| ttg\}
}d |rBd ||
 d |d d || d |d n0d |
 d d | d d d d d d S )N)filer   c                    s.    | j}|}t | d S )N)dumpsHIGHEST_PROTOCOLcompressrepr	b64encode)objscbase64outputpicklezlibr,   r-   compressed_output   s    
z)gen_standalone.<locals>.compressed_outputc                    s    dt    d S )NzD%(name)s = pickle.loads(zlib.decompress(base64.b64decode(%(name)s))))locals)r*   )rQ   r,   r-   output_decompress   s    z)gen_standalone.<locals>.output_decompressz2# The file was automatically generated by Lark v%sz__version__ = "%s"
standaloneTzimport pickle, zlib, base64zDATA = ()ZDATAzMEMO = (ZMEMOz	Shift = 0z
Reduce = 1zdef Lark_StandAlone(**kwargs):z3  return Lark._load_from_dict(DATA, MEMO, **kwargs))r   printrR   rS   rP   lark__version__	enumerateEXTRACT_STANDALONE_FILESopenosr   r(   _larkdirr:   rE   nextiter
splitlinesZmemo_serializer"   r!   )	lark_instrQ   outrI   rT   rV   iZpyfilefcodedatamr,   rO   r-   gen_standalone|   sF    (
rk   c                  C   sx   t   tddtgdd} | jddddd	d
 ttjdkrP| tj t	d | 
 }t|\}}t|||jd d S )Nz&prog='python -m lark.tools.standalone'zLark Stand-alone Generator Toolz;Look at the Lark documentation for more info on the options)progdescriptionparentsepilogz-cz
--compress
store_truer   zEnable compression)actiondefaulthelp   )re   rI   )r    r   r   add_argumentlensysargv
print_helpstderrexit
parse_argsr   rk   rI   )parsernsrd   re   r,   r,   r-   main   s    
r   __main__)>abcr   r   collections.abcr   typesr   typingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Z	REPatternr   r   r   rw   r=   r?   r_   r   collectionsr   	functoolsr   argparser   rZ   Z
lark.toolsr   r   r    Zlark.grammarr!   Z
lark.lexerr"   dirname__file__Z_dirr(   pardirr`   r]   r:   rE   stdoutrk   r   __name__r,   r,   r,   r-   <module>   s.   X
4
