ó
    ¨Rjg  ã                   ób   • S r SSKrSSKJr  SSKJr  SSKJrJr  SSK	J
r
   " S S5      rS
S	 jrg)z	SQL Lexeré    N)ÚLock)Ú
TextIOBase)ÚtokensÚkeywords)Úconsumec                   ób   • \ rS rSrSrSr\" 5       r\S 5       r	S r
S rS rS rS	 rSS
 jrSrg)ÚLexeré   znThe Lexer supports configurable syntax.
To add support for additional keywords, use the `add_keywords` method.Nc                 óâ   • U R                      U R                  c&  U " 5       U l        U R                  R                  5         SSS5        U R                  $ ! , (       d  f       U R                  $ = f)zJReturns the lexer instance used internally
by the sqlparse core functions.N)Ú_lockÚ_default_instanceÚdefault_initialization)Úclss    Ú:D:\diplom_project\venv\Lib\site-packages\sqlparse/lexer.pyÚget_default_instanceÚLexer.get_default_instance0   s\   € ð �Y‹YØ×$Ñ$Ñ,Ù(+«�Ô%Ø×%Ñ%×<Ñ<Ô>÷ ð ×$Ñ$Ð$÷	 ŒYð ×$Ñ$Ð$ús   �4AÁ
A.c                 ó�  • U R                  5         U R                  [        R                  5        U R	                  [        R
                  5        U R	                  [        R                  5        U R	                  [        R                  5        U R	                  [        R                  5        U R	                  [        R                  5        U R	                  [        R                  5        U R	                  [        R                  5        U R	                  [        R                  5        U R	                  [        R                  5        g)zdInitialize the lexer with default dictionaries.
Useful if you need to revert custom syntax settings.N)ÚclearÚset_SQL_REGEXr   Ú	SQL_REGEXÚadd_keywordsÚKEYWORDS_COMMONÚKEYWORDS_ORACLEÚKEYWORDS_MYSQLÚKEYWORDS_PLPGSQLÚKEYWORDS_HQLÚKEYWORDS_MSACCESSÚKEYWORDS_SNOWFLAKEÚKEYWORDS_BIGQUERYÚKEYWORDS©Úselfs    r   r   ÚLexer.default_initialization:   sÕ   € ð 	�
‰
ŒØ×Ñœ8×-Ñ-Ô.Ø×Ñœ(×2Ñ2Ô3Ø×Ñœ(×2Ñ2Ô3Ø×Ñœ(×1Ñ1Ô2Ø×Ñœ(×3Ñ3Ô4Ø×Ñœ(×/Ñ/Ô0Ø×Ñœ(×4Ñ4Ô5Ø×Ñœ(×5Ñ5Ô6Ø×Ñœ(×4Ñ4Ô5Ø×Ñœ(×+Ñ+Õ,ó    c                 ó    • / U l         / U l        g)zËClear all syntax configurations.
Useful if you want to load a reduced set of syntax configurations.
After this call, regexps and keyword dictionaries need to be loaded
to make the lexer functional again.N©Ú
_SQL_REGEXÚ	_keywordsr!   s    r   r   ÚLexer.clearI   s   € ð
 ˆŒØˆ�r$   c                 óÊ   • [         R                  [         R                  -  nU VVs/ s H'  u  p4[         R                  " X25      R                  U4PM)     snnU l        gs  snnf )z.Set the list of regex that will parse the SQL.N)ÚreÚ
IGNORECASEÚUNICODEÚcompileÚmatchr'   )r"   r   ÚFLAGSÚrxÚtts        r   r   ÚLexer.set_SQL_REGEXQ   sP   € ä—‘¤§
¡
Ñ*ˆñ $ô
â#‘�ô �ZŠZ˜Ó"×(Ñ(¨"Ó-Ù#ò
ˆ�ùó 
s   §.Ac                 ó:   • U R                   R                  U5        g)z`Add keyword dictionaries. Keywords are looked up in the same order
that dictionaries were added.N)r(   Úappend)r"   r   s     r   r   ÚLexer.add_keywordsY   s   € ð 	�‰×Ñ˜hÕ'r$   c                 ó†   • UR                  5       nU R                   H  nX#;   d  M
  X2   U4s  $    [        R                  U4$ )z�Checks for a keyword.

If the given value is in one of the KEYWORDS_* dictionary
it's considered a keyword. Otherwise, tokens.Name is returned.
)Úupperr(   r   ÚName)r"   ÚvalueÚvalÚkwdicts       r   Ú
is_keywordÚLexer.is_keyword^   s@   € ð �k‰k‹mˆØ—n”nˆFØ�}Ø‘{ EÐ)Ò)ñ %ô —;‘; Ð%Ð%r$   c              #   ó:  #   • [        U[        5      (       a  UR                  5       n[        U[        5      (       a  Od[        U[        5      (       a,  U(       a  UR                  U5      nO6 UR                  S5      nO#[        SR                  [        U5      5      5      e[        U5      nU HÆ  u  pEU R                   H�  u  pgU" X5      nU(       d  M  [        U[        R                  5      (       a  XxR                  5       4v •  O4U[        R                   L a!  U R#                  UR                  5       5      v •  [%        X8R'                  5       U-
  S-
  5          M°     [        R(                  U4v •  MÈ     g! [         a    UR                  S5      n Nõf = f7f)as  
Return an iterable of (tokentype, value) pairs generated from
`text`. If `unfiltered` is set to `True`, the filtering mechanism
is bypassed even if filters are defined.

Also preprocess the text, i.e. expand tabs and strip it if
wanted and applies registered filters.

Split ``text`` into (tokentype, text) pairs.

``stack`` is the initial stack (default: ``['root']``)
zutf-8zunicode-escapez+Expected text or file-like object, got {!r}é   N)Ú
isinstancer   ÚreadÚstrÚbytesÚdecodeÚUnicodeDecodeErrorÚ	TypeErrorÚformatÚtypeÚ	enumerater'   r   Ú
_TokenTypeÚgroupr   ÚPROCESS_AS_KEYWORDr=   r   ÚendÚError)	r"   ÚtextÚencodingÚiterableÚposÚcharÚrexmatchÚactionÚms	            r   Ú
get_tokensÚLexer.get_tokensk   sG  é € ô �dœJ×'Ñ'Ø—9‘9“;ˆDä�dœC× Ñ ØÜ˜œe×$Ñ$ÞØ—{‘{ 8Ó,‘ð9ØŸ;™; wÓ/‘Dô ÐIß"™F¤4¨£:Ó.ó0ð 0ô ˜T“?ˆÛ!‰IˆCØ$(§O¤OÑ �Ù˜TÓ'�æÙÜ ¬×(9Ñ(9×:Ñ:Ø §'¡'£)Ð+Ó+Øœx×:Ñ:Ò:ØŸ/™/¨!¯'©'«)Ó4Ò4ä˜§%¡%£'¨C¡-°!Ñ"3Ô4Úñ %4ô —l‘l DÐ(Ô(ò "øô *ó 9ØŸ;™;Ð'7Ó8’Dð9üs+   ‚A*FÁ-E: Á>C<FÅ:FÆFÆFÆFr&   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Úclassmethodr   r   r   r   r   r=   rX   Ú__static_attributes__© r$   r   r	   r	      sI   † ñNð ÐÙ‹F€Eð( ñ%ó ð%ò-òò
ò(ò
&÷-)r$   r	   c                 óH   • [         R                  5       R                  X5      $ )zuTokenize sql.

Tokenize *sql* using the :class:`Lexer` and return a 2-tuple stream
of ``(token type, value)`` items.
)r	   r   rX   )ÚsqlrQ   s     r   Útokenizere   ›   s   € ô ×%Ñ%Ó'×2Ñ2°3ÓAÐAr$   rZ   )r_   r+   Ú	threadingr   Úior   Úsqlparser   r   Úsqlparse.utilsr   r	   re   rb   r$   r   Ú<module>rj      s.   ðñ Û 	Ý õ ç %Ý "÷A)ñ A)õHBr$   