
v^r              @  @   s  d  d l  Z  d  d l m Z d d   Z d d e j j j f d e j j j f d e j j f d	 e j j f d
 e j f d e j	 f d e j
 f d e j f d e j f d e j f d e j f d e j f d e j j f d e j j f d e j j f d e j f d e j f d e j f d e j f d e j f d e j f d e j j f d e j j f d e j j f d e j j f d e j j f d  e j j f d! e j j f d" e j f d# e j f d$ e j f d% e j f d& e j f d' e j f d( e j j f d) e j j f d* e j f d+ e j f d, e j f d- e j j f d. e j j f d/ e f d0 e j f d1 e j j f d2 e j f g- i Z e  j e  j BZ  d3 d4   e d D Z d5 e j d6 e j d7 e j d8 e j d9 e j d: e j d; e j d< e j d= e j d> e j d? e j d@ e j dA e j dB e j dC e j dD e j dE e j dF e j j! dG e j dH e j dI e j dJ e j dK e j dL e j dM e j dN e j dO e j dP e j dQ e j dR e j dS e j dT e j dU e j dV e j dW e j dX e j dY e j dZ e j d[ e j d\ e j d] e j d^ e j d_ e j d` e j da e j db e j dc e j dd e j de e j df e j dg e j dh e j di e j dj e j dk e j dl e j dm e j dn e j do e j dp e j dq e j dr e j ds e j dt e j du e j dv e j dw e j dx e j dy e j dz e j d{ e j d| e j d} e j d~ e j d e j d e j j" d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j j! d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j d e j de j de j de j de j de j de j de j de j d	e j d
e j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j d e j d!e j d"e j d#e j d$e j d%e j d&e j d'e j d(e j d)e j d*e j d+e j d,e j d-e j d.e j d/e j d0e j d1e j d2e j d3e j d4e j d5e j d6e j d7e j d8e j d9e j d:e j d;e j d<e j d=e j d>e j d?e j d@e j dAe j dBe j dCe j dDe j dEe j dFe j dGe j dHe j dIe j dJe j dKe j dLe j dMe j dNe j dOe j dPe j dQe j dRe j dSe j dTe j dUe j dVe j dWe j dXe j dYe j dZe j d[e j d\e j d]e j d^e j d_e j d`e j dae j dbe j dce j dde j dee j dfe j dge j dhe j die j dje j dke j dle j dme j dne j doe j dpe j dqe j dre j dse j dte j due j dve j dwe j dxe j dye j dze j d{e j d|e j d}e j d~e j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j j" de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j j" de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j d e j de j de j de j de j de j de j de j de j d	e j d
e j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j d e j j# d!e j d"e j d#e j d$e j d%e j d&e j j d'e j j d(e j j d)e j j d*e j j d+e j j d,e j j d-e j j d.e j j d/e j j d0e j j d1e j j d2e j j d3e j j d4e j j d5e j j d6e j j d7e j j d8e j j d9e j j d:e j j d;e j j d<e j j d=e j j d>e j j d?e j j d@e j j dAe j j dBe j j dCe j j dDe j j dEe j j dFe j j dGe j j dHe j j dIe j j dJe j j dKe j j dLe j dMe j j dNe j j dOe j j dPe j j dQe j j dRe j j dSe j j dTe j j i Z$ dUe j j" dVe j j" dWe j j" dXe j j" dYe j j" dZe j j" d[e j j" d\e j j d]e j j d^e j j d_e j d`e j dae j dbe j dce j dde j dee j dfe j dge j dhe j die j dje j dke j dle j dme j dne j d e j doe j dpe j dqe j dre j dse j dte j due j dve j dwe j dxe j dye j dze j d{e j i( Z% d|e j d}e j d~e j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j d e j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j iU Z& de j de j de j de j de j de j de j de j de j de j de j d-e j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j due j dhe j dre j i$ Z' de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j d e j de j de j de j de j de j de j d e j de j de j d	e j d
e j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j de j d e j d!e j d"e j d#e j d$e j d%e j d&e j d'e j d(e j d)e j d*e j d+e j d,e j d-e j d.e j d/e j d0e j d1e j d2e j d3e j d4e j d5e j d6e j d7e j d8e j iJ Z( d S(9      N)tokensc             C   sa   |  j    } t j |  pZ t j |  pZ t j |  pZ t j |  pZ t j | t j  |  f S)N)	upperKEYWORDS_COMMONgetKEYWORDS_ORACLEKEYWORDS_PLPGSQLKEYWORDS_HQLKEYWORDSr   Name)valueval r   5/tmp/pip-build-8lau8j11/sqlparse/sqlparse/keywords.py
is_keyword   s    r   rootz(--|# )\+.*?(\r\n|\r|\n|$)z/\*\+[\s\S]*?\*/z(--|# ).*?(\r\n|\r|\n|$)z/\*[\s\S]*?\*/z(\r\n|\r|\n)z\s+?z:=z::z\*z`(``|[^`])*`u   ´(´´|[^´])*´u*   ((?<!\S)\$(?:[_A-ZÀ-Ü]\w*)?\$)[\s\S]*?\1z\?z%(\(\w+\))?sz(?<!\w)[$:?]\w+z\\\w+z (CASE|IN|VALUES|USING|FROM|AS)\bu   (@|##|#)[A-ZÀ-Ü]\w+u   [A-ZÀ-Ü]\w*(?=\s*\.)u   (?<=\.)[A-ZÀ-Ü]\w*u   [A-ZÀ-Ü]\w*(?=\()z-?0x[\dA-F]+z-?\d*(\.\d+)?E-?\d+u2   (?![_A-ZÀ-Ü])-?(\d+(\.\d*)|\.\d+)(?![_A-ZÀ-Ü])u#   (?![_A-ZÀ-Ü])-?\d+(?![_A-ZÀ-Ü])z'(''|\\\\|\\'|[^'])*'z"(""|\\\\|\\"|[^"])*"z(""|".*?[^\\]")z(?<![\w\])])(\[[^\]]+\])z[((LEFT\s+|RIGHT\s+|FULL\s+)?(INNER\s+|OUTER\s+|STRAIGHT\s+)?|(CROSS\s+|NATURAL\s+)?)?JOIN\bzEND(\s+IF|\s+LOOP|\s+WHILE)?\bzNOT\s+NULL\bzNULLS\s+(FIRST|LAST)\bzUNION\s+ALL\bzCREATE(\s+OR\s+REPLACE)?\bzDOUBLE\s+PRECISION\bzGROUP\s+BY\bzORDER\s+BY\bzF(LATERAL\s+VIEW\s+)(EXPLODE|INLINE|PARSE_URL_TUPLE|POSEXPLODE|STACK)\bz"(AT|WITH')\s+TIME\s+ZONE\s+'[^']+'z(NOT\s+)?(LIKE|ILIKE)\bu   [0-9_A-ZÀ-Ü][_$#\w]*z[;:()\[\],\.]z[<>=~!]+z[+/@#%^&|`?^-]+c             C   s1   g  |  ]' \ } } t  j | t  j | f  q Sr   )recompileFLAGSmatch).0rxttr   r   r   
<listcomp>d   s   	 r   ZABORTZABSZABSOLUTEZACCESSZADAZADDZADMINZAFTERZ	AGGREGATEZALIASZALLZALLOCATEZANALYSEZANALYZEANYZARRAYLENZAREZASCZ
ASENSITIVEZ	ASSERTIONZ
ASSIGNMENTZ
ASYMMETRICATZATOMICZAUDITZAUTHORIZATIONZAUTO_INCREMENTZAVGZBACKWARDZBEFOREZBEGINZBETWEENZBITVARZ
BIT_LENGTHZBOTHZBREADTHZCACHECALLZCALLEDZCARDINALITYZCASCADEZCASCADEDZCASTZCATALOGZCATALOG_NAMEZCHAINZCHARACTERISTICSZCHARACTER_LENGTHZCHARACTER_SET_CATALOGZCHARACTER_SET_NAMEZCHARACTER_SET_SCHEMAZCHAR_LENGTHCHARSETZCHECKZCHECKED
CHECKPOINTZCLASSZCLASS_ORIGINZCLOBZCLOSEZCLUSTERZCOALESCEZCOBOLZCOLLATEZ	COLLATIONZCOLLATION_CATALOGZCOLLATION_NAMEZCOLLATION_SCHEMAZCOLLECTZCOLUMNZCOLUMN_NAMEZCOMPRESSZCOMMAND_FUNCTIONZCOMMAND_FUNCTION_CODECOMMENTZCOMMITZ	COMMITTEDZ
COMPLETIONZCONCURRENTLYZCONDITION_NUMBERZCONNECTZ
CONNECTIONZCONNECTION_NAMEZ
CONSTRAINTCONSTRAINTSZCONSTRAINT_CATALOGZCONSTRAINT_NAMEZCONSTRAINT_SCHEMAZCONSTRUCTORZCONTAINSCONTINUEZ
CONVERSIONZCONVERTCOPYZCORRESPONDINGZCOUNTZCREATEDBZ
CREATEUSERZCROSSZCUBEZCURRENTZCURRENT_DATEZCURRENT_PATHZCURRENT_ROLEZCURRENT_TIMEZCURRENT_TIMESTAMPZCURRENT_USERZCURSORZCURSOR_NAMEZCYCLEZDATAZDATABASEZDATETIME_INTERVAL_CODEZDATETIME_INTERVAL_PRECISIONZDAYZ
DEALLOCATEZDECLAREDEFAULTZDEFAULTSZ
DEFERRABLEZDEFERREDZDEFINEDZDEFINERZ	DELIMITERZ
DELIMITERSZDEREFZDESCZDESCRIBEZ
DESCRIPTORZDESTROYZ
DESTRUCTORZDETERMINISTICZDIAGNOSTICSZ
DICTIONARYZDISABLEZ
DISCONNECTZDISPATCHZDOZDOMAINZDYNAMICZDYNAMIC_FUNCTIONZDYNAMIC_FUNCTION_CODEZEACHZENABLEENCODINGZ	ENCRYPTEDzEND-EXECZENGINEZEQUALSESCAPEZEVERYZEXCEPTZ	EXCEPTIONZ	EXCLUDINGZ	EXCLUSIVEZEXECZEXECUTEZEXISTINGZEXISTSZEXPLAINZEXTERNALZEXTRACTFALSEZFETCHFILEZFINALZFIRSTZFORCEZFOREACHZFOREIGNZFORTRANFORWARDFOUNDZFREEZFREEZEZFULLZFUNCTIONZGENERALZ	GENERATEDGETGLOBALZGOZGOTOZGRANTZGRANTEDZGROUPINGZHANDLERZHAVINGZ	HIERARCHYZHOLDZHOURZHOSTZ
IDENTIFIEDZIDENTITYZIGNOREZILIKEZ	IMMEDIATEZ	IMMUTABLEZIMPLEMENTATIONZIMPLICITZ	INCLUDINGZ	INCREMENTZINDEXZ
INDITCATORZINFIXZINHERITSZINITIALZ
INITIALIZEZ	INITIALLYZINOUTZINPUTZINSENSITIVEZINSTANTIABLEZINSTEADZ	INTERSECTZINTOZINVOKERZISZISNULLZ	ISOLATIONZITERATEZKEYZ
KEY_MEMBERZKEY_TYPEZLANCOMPILERLANGUAGEZLARGEZLASTZLATERALZLEADINGZLENGTHLESSZLEVELZLIMITZLISTENZLOADZLOCALZ	LOCALTIMEZLOCALTIMESTAMPZLOCATIONZLOCATORZLOCKZLOWERZMAPZMATCHZ
MAXEXTENTSZMAXVALUEMESSAGE_LENGTHZMESSAGE_OCTET_LENGTHZMESSAGE_TEXTZMETHODZMINUTEMINUSZMINVALUEZMODZMODEZMODIFIESZMODIFYZMONTHZMOREZMOVEZMUMPSZNAMESZNATIONALZNATURALZNCHARZNCLOBZNEWZNEXTNOZNOAUDITZ
NOCOMPRESSZ
NOCREATEDBZNOCREATEUSERNONEZNOTZNOTFOUNDZNOTHINGZNOTIFYZNOTNULLZNOWAITZNULLZNULLABLEZNULLIFZOBJECTZOCTET_LENGTHZOFZOFFZOFFLINEZOFFSETZOIDSZOLDZONLINEZONLYZOPENZ	OPERATIONZOPERATORZOPTIONOPTIONSZ
ORDINALITYZOUTZOUTPUTZOVERLAPSZOVERLAYZ
OVERRIDINGZOWNERZQUARTERZPADZ	PARAMETERZ
PARAMETERSZPARAMETER_MODEZPARAMETER_NAMEZPARAMETER_ORDINAL_POSITIONZPARAMETER_SPECIFIC_CATALOGZPARAMETER_SPECIFIC_NAMEZPARAMETER_SPECIFIC_SCHEMAPARTIALZPASCALZPCTFREEZPENDANTZPLACINGZPLIZPOSITIONZPOSTFIXZ	PRECISIONPREFIXZPREORDERZPREPAREZPRESERVEZPRIMARYZPRIORZ
PRIVILEGESZ
PROCEDURALZ	PROCEDUREZPUBLICZRAISEZRAWREADZREADSZRECHECKZ	RECURSIVEZREFZ
REFERENCESZREFERENCINGZREINDEXZRELATIVEZRENAMEZ
REPEATABLERESETZRESOURCEZRESTARTZRESTRICTZRESULTZRETURNZRETURNED_LENGTHZRETURNED_OCTET_LENGTHZRETURNED_SQLSTATEZ	RETURNINGZRETURNSZREVOKERIGHTZROLEZROLLBACKZROLLUPZROUTINEZROUTINE_CATALOGZROUTINE_NAMEZROUTINE_SCHEMAZROWZROWSZ	ROW_COUNTZRULEZ
SAVE_POINTZSCALEZSCHEMAZSCHEMA_NAMEZSCOPEZSCROLLZSEARCHZSECONDZSECURITYZSELFZ	SENSITIVEZSEQUENCEZSERIALIZABLEZSERVER_NAMEZSESSIONZSESSION_USERZSETOFZSETSZSHAREZSHOWZSIMILARZSIMPLEZSIZEZSOMEZSOURCESPACEZSPECIFICZSPECIFICTYPEZSPECIFIC_NAMEZSQLZSQLBUFZSQLCODEZSQLERRORZSQLEXCEPTIONZSQLSTATEZ
SQLWARNINGZSTABLEZSTARTZ	STATEMENTZSTATICZ
STATISTICSZSTDINSTDOUTZSTORAGEZSTRICTZ	STRUCTUREZSTYPEZSUBCLASS_ORIGINZSUBLISTZ	SUBSTRINGZ
SUCCESSFULZSUMZ	SYMMETRICZSYNONYMZSYSIDZSYSTEMZSYSTEM_USERZTABLEZ
TABLE_NAMETEMPTEMPLATE	TEMPORARYZ	TERMINATEZTHANZ	TIMESTAMPZTIMEZONE_HOURZTIMEZONE_MINUTEZTOZTOASTZTRAILINGZ
TRANSATIONZTRANSACTIONS_COMMITTEDZTRANSACTIONS_ROLLED_BACKZTRANSATION_ACTIVEZ	TRANSFORMZ
TRANSFORMSZ	TRANSLATEZTRANSLATIONZTREATZTRIGGERZTRIGGER_CATALOGZTRIGGER_NAMEZTRIGGER_SCHEMAZTRIMTRUEZTRUNCATEZTRUSTEDZTYPEZUIDZUNCOMMITTEDZUNDERZUNENCRYPTEDZUNIONZUNIQUEUNKNOWNZUNLISTENZUNNAMEDZUNNESTZUNTILZUPPERUSAGEZUSEUSERZUSER_DEFINED_TYPE_CATALOGZUSER_DEFINED_TYPE_NAMEZUSER_DEFINED_TYPE_SCHEMAZUSINGZVACUUMZVALIDZVALIDATEZ	VALIDATORZVALUESVARIABLEVERBOSEVERSIONZVIEWZVOLATILEZWEEKZWHENEVERZWITHZWITHOUTZWORKWRITEZYEARZZONEARRAYZBIGINTBINARYZBITZBLOBZBOOLEANZCHARZ	CHARACTERZDATEZDECZDECIMALZ	FILE_TYPEFLOATINTZINT8ZINTEGERZINTERVALLONGZNATURALNZNVARCHARNUMBERZNUMERICZPLS_INTEGERZPOSITIVEZ	POSITIVENZREALZROWIDZROWLABELZROWNUMZSERIALZSERIAL8ZSIGNEDZSIGNTYPEZSIMPLE_DOUBLEZSIMPLE_FLOATZSIMPLE_INTEGERZSMALLINTZSYS_REFCURSORZSYSDATEZTEXTZTINYINTZUNSIGNEDZUROWIDZUTL_FILEZVARCHARZVARCHAR2ZVARYINGZSELECTZINSERTDELETEZUPDATEZUPSERTZREPLACEZMERGEZDROPZCREATEZALTERZWHEREZFROMZINNERZJOINZSTRAIGHT_JOINZANDORZLIKEZONINZSETZBYZGROUPZORDERLEFTZOUTERZIFZENDZTHENZLOOPZASELSEZFORZWHILEZCASEZWHENZMINMAXZDISTINCTZARCHIVEZ
ARCHIVELOGZBACKUPZBECOMEZBLOCKZBODYZCANCELZCHANGEZCOMPILEZCONTENTSZCONTROLFILEZDATAFILEZDBAZDISMOUNTZDOUBLEZDUMPZEVENTSZ
EXCEPTIONSZEXTENTZ
EXTERNALLYZFLUSHZFREELISTZ	FREELISTSZ	INDICATORZINITRANSZINSTANCEZLAYERZLINKZLISTSZLOGFILEZMANAGEZMANUALZMAXDATAFILESZMAXINSTANCESZMAXLOGFILESZMAXLOGHISTORYZMAXLOGMEMBERSZMAXTRANSZ
MINEXTENTSMODULEZMOUNTZNOARCHIVELOGZNOCACHEZNOCYCLEZ
NOMAXVALUEZ
NOMINVALUEZNOORDERZNORESETLOGSNORMALZNOSORTZOPTIMALZOWNPACKAGEZPARALLELZPCTINCREASEZPCTUSEDZPLANZPRIVATEZPROFILEZQUOTAZRECOVERZ	RESETLOGSZ
RESTRICTEDZREUSEZROLESZ	SAVEPOINTZSCNZSECTIONZSEGMENTZSHAREDZSNAPSHOTZSORTZSTATEMENT_IDSTOPZSWITCHZTABLESZ
TABLESPACEZTHREADZTIMEZTRACINGZTRANSACTIONZTRIGGERSZ	UNLIMITEDZUNLOCKZ	PARTITIONZOVERZPERFORMZNOTICEZPLPGSQLZINHERITZINDEXESZBYTEAZ	BIGSERIALzBIT VARYINGZBOXzCHARACTER VARYINGZCIDRZCIRCLEzDOUBLE PRECISIONZINETZJSONZJSONBZLINEZLSEGZMACADDRZMONEYPATHZPG_LSNZPOINTZPOLYGONZSMALLSERIALZTSQUERYZTSVECTORZTXID_SNAPSHOTUUIDXMLZEXPLODEZ	DIRECTORYZ
DISTRIBUTEZINCLUDEZLOCATEZ	OVERWRITEZ
POSEXPLODEZARRAY_CONTAINSZCMPZCOLLECT_LISTZCONCATZ	CONDITIONZDATE_ADDZDATE_SUBZDECODEZDBMS_OUTPUTZELEMENTSZEXCHANGEZEXTENDEDZFLOORZ	FOLLOWINGZFROM_UNIXTIMEFTPZINLINEZINSTRZLENZ
MAXELEMENTZMAXINDEXZMAX_PART_DATEZMAX_PART_INTZMAX_PART_STRINGZ
MINELEMENTZMININDEXZMIN_PART_DATEZMIN_PART_INTZMIN_PART_STRINGZNOWZNVLZNVL2ZPARSE_URL_TUPLEZPART_LOCZ
PART_COUNTZPART_COUNT_BYZPRINTZPUT_LINERANGEREDUCEZREGEXP_REPLACEZRESIGNALZRTRIMZSIGNZSIGNALZSINZSPLITZSQRTZSTACKZSTRZSUBSTRZSUMMARYZTBLPROPERTIESZTIMESTAMP_ISOZTO_CHARZTO_DATEZTO_TIMESTAMPZTRUNCZ	UNBOUNDEDZ
UNIQUEJOINZUNIX_TIMESTAMPZUTC_TIMESTAMPZVIEWSZEXITZBREAKZLEAVE))r   Zsqlparser   r   CommentSingleZHintZ	MultilineZNewline
WhitespaceZ
AssignmentZPunctuationZWildcardr
   LiteralZPlaceholderCommandKeywordNumberZHexadecimalZFloatZIntegerStringZSymbolZDDLZBuiltinZTZCastOperatorZ
ComparisonZ	SQL_REGEX
IGNORECASEUNICODEr   ZOrderZDMLZCTEr	   r   r   r   r   r   r   r   r   <module>	   s  
																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																												