o e}_@s0dZddlmZddlmZddZddZdS) z SQL formatter)filters) SQLParseErrorc CsN|d}|dvrtd||d}|dvr td||d}|dvr0td||d d }|d vrAtd ||d d }|d vrRtd||dd }|d vrctd||d}|durzt|}Wnttfytd|w|dkrtd|||d<|dd|d<|dd }|d vrtd||rd|d<||d<|dd } | d vrtd| | rd|d<|dd } | d vrtd| | rd|d<|dd } | d vrtd| | |d<|d d } | d vr td!| | rd"|d#<nd$|d#<|d%d&} zt| } Wnttfy0td'w| dkr:td(| |d%<|d)d*}zt|}WnttfyXtd+w|d*krbtd,||d)<|d-d }|d vrutd.||d-<|d/}|durzt|}Wnttfytd0w|d1krtd2||d/<|S)3zValidates options. keyword_case)Nupperlower capitalizez$Invalid value for keyword_case: {!r}identifier_casez'Invalid value for identifier_case: {!r} output_format)NsqlpythonphpzUnknown output format: {!r}strip_commentsF)TFz&Invalid value for strip_comments: {!r}use_space_around_operatorsz2Invalid value for use_space_around_operators: {!r}strip_whitespacez(Invalid value for strip_whitespace: {!r}truncate_stringsNz(Invalid value for truncate_strings: {!r} truncate_charz[...]indent_columnsz&Invalid value for indent_columns: {!r}Treindentz Invalid value for reindent: {!r}reindent_alignedz(Invalid value for reindent_aligned: {!r}indent_after_firstz*Invalid value for indent_after_first: {!r} indent_tabsz#Invalid value for indent_tabs: {!r} indent_char indent_widthz indent_width requires an integerz(indent_width requires a positive integer wrap_afterrzwrap_after requires an integerz&wrap_after requires a positive integer comma_firstz$comma_first requires a boolean value right_marginz right_margin requires an integer z%right_margin requires an integer > 10)getrformatint ValueError TypeError)optionskwcaseidcaseofrmtr space_around_operatorsstrip_wsrrrrrrrrrrr,4/usr/lib/python3/dist-packages/sqlparse/formatter.pyvalidate_optionss                           r.c Cs|dr|jt|d|dr |jt|d|dr4|jtj|d|dd|ddrF||jt |drW||jt |d sa|d rm||jt |d r||jtj |d |d |d |d|d|dd|ddr||jtj |d d|dr||jtj|dd|dr|d}|dkrt}n |dkrt}nd}|dur|j||S)zSetup and return a filter stack. Args: stack: :class:`~sqlparse.filters.FilterStack` instance options: Dictionary with options validated by validate_options. rrrr)widthcharrFr rrrrrrrr)r0r/rrrrr)r0r)r/r r r N)r! preprocessappendrKeywordCaseFilterIdentifierCaseFilterTruncateStringFilterenable_grouping stmtprocessSpacesAroundOperatorsFilterStripCommentsFilterStripWhitespaceFilterReindentFilterAlignedIndentFilterRightMarginFilterrOutputPHPFilterOutputPythonFilter postprocess)stackr&frmtfltrr,r,r-build_filter_stacksj                  rDN)__doc__sqlparsersqlparse.exceptionsrr.rDr,r,r,r-s    v