U
    7ÄT_³  ã                   @   s0   d Z ddlmZ ddlmZ dd„ Zdd„ ZdS )	zSQL formatteré    )Úfilters)ÚSQLParseErrorc              	   C   s‚  |   d¡}|dkr td |¡ƒ‚|   d¡}|dkr@td |¡ƒ‚|   d¡}|dkr`td |¡ƒ‚|   d	d
¡}|dkr‚td |¡ƒ‚|   dd
¡}|dkr¤td |¡ƒ‚|   dd
¡}|dkrÆtd |¡ƒ‚|   d¡}|dk	�r@zt|ƒ}W n( ttfk
�r   td |¡ƒ‚Y nX |dk�r(td |¡ƒ‚|| d< |   dd¡| d< |   dd
¡}|dk�rftd |¡ƒ‚n|�rtd| d< || d< |   dd
¡}	|	dk�r¢td |	¡ƒ‚n|	�r°d| d< |   dd
¡}
|
dk�rÖtd |	¡ƒ‚n|
�räd| d< |   dd
¡}|dk�rtd |¡ƒ‚|| d< |   d d
¡}|dk�r6td! |¡ƒ‚n|�rFd"| d#< nd$| d#< |   d%d&¡}zt|ƒ}W n" ttfk
�rˆ   td'ƒ‚Y nX |dk �rœtd(ƒ‚|| d%< |   d)d*¡}zt|ƒ}W n" ttfk
�rÞ   td+ƒ‚Y nX |d*k �ròtd,ƒ‚|| d)< |   d-d
¡}|dk�rtd.ƒ‚|| d-< |   d/¡}|dk	�rvzt|ƒ}W n" ttfk
�rb   td0ƒ‚Y nX |d1k �rvtd2ƒ‚|| d/< | S )3zValidates options.Úkeyword_case)NÚupperÚlowerÚ
capitalizez%Invalid value for keyword_case: {0!r}Úidentifier_casez(Invalid value for identifier_case: {0!r}Úoutput_format)NZsqlÚpythonÚphpzUnknown output format: {0!r}Ústrip_commentsF)TFz'Invalid value for strip_comments: {0!r}Úuse_space_around_operatorsz3Invalid value for use_space_around_operators: {0!r}Ústrip_whitespacez)Invalid value for strip_whitespace: {0!r}Útruncate_stringsNz)Invalid value for truncate_strings: {0!r}é   Útruncate_charz[...]Úindent_columnsz'Invalid value for indent_columns: {0!r}TÚreindentz!Invalid value for reindent: {0!r}Úreindent_alignedz)Invalid value for reindent_aligned: {0!r}Úindent_after_firstz+Invalid value for indent_after_first: {0!r}Úindent_tabsz$Invalid value for indent_tabs: {0!r}ú	Úindent_charú Úindent_widthé   z indent_width requires an integerz(indent_width requires a positive integerÚ
wrap_afterr   zwrap_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)Úgetr   ÚformatÚintÚ
ValueErrorÚ	TypeError)ÚoptionsZkwcaseZidcaseZofrmtr   Zspace_around_operatorsZstrip_wsr   r   r   r   r   r   r   r   r   r   © r&   ú6/tmp/pip-unpacked-wheel-bbdw8hci/sqlparse/formatter.pyÚvalidate_options   sÜ    
ÿ
ÿ
ÿÿÿÿ

ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ






r(   c              
   C   sà  |  d¡r | j t |d ¡¡ |  d¡r@| j t |d ¡¡ |  d¡rh| j tj|d |d d�¡ |  dd¡rŒ|  ¡  | j t 	¡ ¡ |  d¡r®|  ¡  | j t 
¡ ¡ |  d	¡sÂ|  d
¡rÚ|  ¡  | j t ¡ ¡ |  d
¡�r$|  ¡  | j tj|d |d |d |d |d |d d�¡ |  dd¡�rR|  ¡  | j tj|d d�¡ |  d¡�r~|  ¡  | j tj|d d�¡ |  d¡�rÜ|d }| ¡ dk�rªt ¡ }n| ¡ dk�rÂt ¡ }nd}|dk	�rÜ| j |¡ | S )z³Setup and return a filter stack.

    Args:
      stack: :class:`~sqlparse.filters.FilterStack` instance
      options: Dictionary with options validated by validate_options.
    r   r   r   r   )ÚwidthÚcharr   Fr   r   r   r   r   r   r   r   r   )r*   r)   r   r   r   r   r   )r*   r   )r)   r	   r   r
   N)r    Ú
preprocessÚappendr   ZKeywordCaseFilterZIdentifierCaseFilterZTruncateStringFilterZenable_groupingZstmtprocessZSpacesAroundOperatorsFilterZStripCommentsFilterZStripWhitespaceFilterZReindentFilterZAlignedIndentFilterZRightMarginFilterr   ZOutputPHPFilterZOutputPythonFilterÚpostprocess)Ústackr%   ZfrmtZfltrr&   r&   r'   Úbuild_filter_stack…   sl    
ÿ
ÿ

 ÿ
úÿ	ÿÿ


r/   N)Ú__doc__Zsqlparser   Zsqlparse.exceptionsr   r(   r/   r&   r&   r&   r'   Ú<module>	   s   v