
H`Tc        _   @   s  d  Z  d d l Z d d l m Z m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z d d l m Z m Z d d l Z d d l Z d d l Z e d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ d] d^ d_ d` da db dc dd g^  Z e j de e j  Z e g  e df dg  D] Z e e  ^ q j dh g  Z e j di e j  Z e j dj e j  Z i dk dl 6dm dn 6do dp 6dq dr 6ds dt 6Z e j du dv  Z  i  dw e j! 6dx e j" 6dy e j# 6dz e j$ 6d{ e j% 6d| e j& 6d} e j' 6d| e j( 6d~ e j) 6d e j* 6d e j+ 6d e j, 6d e j- 6d e j. 6d e j/ 6d e j0 6d e j1 6d e j2 6d e j3 6d e j4 6d e j5 6d e j6 6d e j7 6d e j8 6d e j9 6d e j: 6d e j; 6d e j< 6d e j= 6d e j> 6d e j? 6d e j@ 6ZA i d e jB 6d e jC 6d e jD 6d e jE 6d e jF 6d e jG 6d e jH 6d e jI 6d e jJ 6d e jK 6d e jL 6ZM i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6ZN i d e jO jP 6d e jO jQ 6d e jO jR 6d e jO jS 6d e jO jT 6d e jO jU 6ZV d eW f d     YZX d eW f d     YZY d e	 jZ f d     YZ[ d eX f d     YZ\ d eX f d     YZ] d eY f d     YZ^ d eW f d     YZ_ d S(   s]  Base SQL and DDL compiler implementations.

Classes provided include:

:class:`.compiler.SQLCompiler` - renders SQL
strings

:class:`.compiler.DDLCompiler` - renders DDL
(data definition language) strings

:class:`.compiler.GenericTypeCompiler` - renders
type specification strings.

To generate user-defined SQL strings, see
:doc:`/ext/compiler`.

iNi   (	   t   schemat   sqltypest	   operatorst	   functionst   utilt   visitorst   elementst
   selectablet   basei   (   R   t   exct   allt   analyset   analyzet   andt   anyt   arrayt   ast   asct
   asymmetrict   authorizationt   betweent   binaryt   botht   caset   castt   checkt   collatet   columnt
   constraintt   createt   crosst   current_datet   current_rolet   current_timet   current_timestampt   current_usert   defaultt
   deferrablet   desct   distinctt   dot   elset   endt   exceptt   falset   fort   foreignt   freezet   fromt   fullt   grantt   groupt   havingt   iliket   int	   initiallyt   innert	   intersectt   intot   ist   isnullt   joint   leadingt   leftt   liket   limitt	   localtimet   localtimestampt   naturalt   newt   nott   notnullt   nullt   offt   offsett   oldt   ont   onlyt   ort   ordert   outert   overlapst   placingt   primaryt
   referencest   rightt   selectt   session_usert   sett   similart   somet	   symmetrict   tablet   thent   tot   trailingt   truet   uniont   uniquet   usert   usingt   verboset   whent   wheres   ^[A-Z0-9_$]+$i    i
   t   $s%   (?<![:\w\$\x5c]):([\w\$]+)(?![:\w\$])s   \x5c(:[\w\$]+)(?![:\w\$])s   %%(%(name)s)st   pyformatt   ?t   qmarks   %%st   formats   :[_POSITION]t   numerics	   :%(name)st   namedt   REQUIREDs1  
Placeholder for the value within a :class:`.BindParameter`
which is required to be present when the statement is passed
to :meth:`.Connection.execute`.

This symbol is typically used when a :func:`.expression.insert`
or :func:`.expression.update` statement is compiled without parameter
values present.

s    AND s    OR s    + s    * s    - s    / s    % t   -s    < s    <= s    != s    > s    >= s    = s    || s    MATCH s    IN s    NOT IN s   , s    FROM s    AS s    IS s    IS NOT s	    COLLATE s   EXISTS s	   DISTINCT s   NOT s    DESCs    ASCs    NULLS FIRSTs    NULLS LASTs   coalesce%(expr)st   CURRENT_DATEt   CURRENT_TIMEt   CURRENT_TIMESTAMPt   CURRENT_USERt	   LOCALTIMEt   LOCALTIMESTAMPs   random%(expr)st   sysdatet   SESSION_USERt   USERt   montht   dayt   yeart   secondt   hourt   doyt   minutet   quartert   dowt   weekt   epocht   millisecondst   microsecondst   timezone_hourt   timezone_minutet   UNIONs	   UNION ALLt   EXCEPTs
   EXCEPT ALLt	   INTERSECTs   INTERSECT ALLt   Compiledc           B   s   e  Z d  Z d e j   d  Z e j d d  d    Z d   Z	 e
 d    Z d   Z d   Z d d	  Z e
 d
    Z d   Z d   Z RS(   s  Represent a compiled SQL or DDL expression.

    The ``__str__`` method of the ``Compiled`` object should produce
    the actual text of the statement.  ``Compiled`` objects are
    specific to their underlying database dialect, and also may
    or may not be specific to the columns referenced within a
    particular set of bind parameters.  In no case should the
    ``Compiled`` object be dependent on the actual values of those
    bind parameters, even though it may reference those values as
    defaults.
    c         C   sR   | |  _  | |  _ | d k	 rN | |  _ | j |  _ |  j |  j |  |  _ n  d S(   s  Construct a new ``Compiled`` object.

        :param dialect: ``Dialect`` to compile against.

        :param statement: ``ClauseElement`` to be compiled.

        :param bind: Optional Engine or Connection to compile this
          statement against.

        :param compile_kwargs: additional kwargs that will be
         passed to the initial call to :meth:`.Compiled.process`.

         .. versionadded:: 0.8

        N(   t   dialectt   bindt   Nonet	   statementt   supports_executiont   can_executet   processt   string(   t   selfR   R   R   t   compile_kwargs(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   __init__   s    			s   0.7s>   :class:`.Compiled` objects now compile within the constructor.c         C   s   d S(   sD   Produce the internal string representation of this element.
        N(    (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   compile   s    c         C   s   | j  |  | |  S(   N(   t   _execute_compiled(   R   t
   connectiont   multiparamst   params(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _execute_on_connection   s    c         C   s   t     d S(   s   Return a Compiled that is capable of processing SQL expressions.

        If this compiler is one, it would likely just return 'self'.

        N(   t   NotImplementedError(   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   sql_compiler   s    c         K   s   | j  |  |  S(   N(   t   _compiler_dispatch(   R   t   objt   kwargs(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR      s    c         C   s   |  j  p d S(   s3   Return the string text of the generated SQL or DDL.t    (   R   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   __str__   s    c         C   s   t     d S(   s   Return the bind params for this compiled object.

        :param params: a dict of string/object pairs whose values will
                       override bind values compiled in to the
                       statement.
        N(   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   construct_params   s    c         C   s
   |  j    S(   s0   Return the bind params for this compiled object.(   R   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR      s    c         O   s:   |  j  } | d k r' t j d   n  | j |  | |  S(   s   Execute this compiled object.s>   This Compiled object is not bound to any Engine or Connection.N(   R   R   R	   t   UnboundExecutionErrorR   (   R   R   R   t   e(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   execute   s
    	c         O   s   |  j  | |   j   S(   sJ   Execute this compiled object and return the result's
        scalar value.(   R   t   scalar(   R   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR      s    N(   t   __name__t
   __module__t   __doc__R   R   t   immutabledictR   t
   deprecatedR   R   t   propertyR   R   R   R   R   R   R   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR      s   	
		
	
t   TypeCompilerc           B   s    e  Z d  Z d   Z d   Z RS(   s2   Produces DDL specification for TypeEngine objects.c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   	  s    c         C   s   | j  |   S(   N(   R   (   R   t   type_(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s    (   R   R   R   R   R   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s   	t   _CompileLabelc           B   sD   e  Z d  Z d Z d Z d d  Z e d    Z e d    Z RS(	   s;   lightweight label object which acts as an expression.Label.t   labelt   elementt   namec         C   s&   | |  _  | |  _ | f | |  _ d  S(   N(   R   R   t
   _alt_names(   R   t   colR   t	   alt_names(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s    		c         C   s
   |  j  j S(   N(   R   t	   proxy_set(   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s    c         C   s
   |  j  j S(   N(   R   t   type(   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR      s    (   s   elements   name(    (	   R   R   R   t   __visit_name__t	   __slots__R   R   R   R   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s   t   SQLCompilerc           B   s  e  Z d  Z e Z e Z e Z Z	 Z
 e Z e Z e Z e Z e e d  Z e j d    Z d   Z e j d    Z d   Z e d    Z e e e d  Z e d    Z d	   Z e d
  Z e e e e d  Z e e d  Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& e d e e e d  Z' d   Z( d   Z) d   Z* e d  Z+ d   Z, d   Z- d   Z. d   Z/ d   Z0 e d  Z1 d   Z2 d    Z3 d!   Z4 e e d d"  Z5 d#   Z6 d$   Z7 d%   Z8 d&   Z9 d'   Z: d(   Z; d)   Z< d*   Z= d+   Z> d,   Z? e j d-    Z@ d.   ZA d/   ZB d0   ZC d1   ZD d2   ZE d3   ZF d4   ZG d5   ZH d6   ZI d7   ZJ d8   ZK d9   ZL e e e d:  ZM d;   ZN d<   ZO d=   ZP d>   ZQ d?   ZR d@   ZS e dA  ZT e e e dB  ZU e e e e dC  ZV dD   ZW e e dE  ZX dF   ZY dG   ZZ dH   Z[ dI   Z\ dJ   Z] dK   Z^ e j_ dL e f dM e`   f dN e`   f g  Za dO   Zb e e e e d e e dP  Zc dQ   Zd dR   Ze dS   Zf dT   Zg dU   Zh dV   Zi dW   Zj dX   Zk e e e e dY  Zl e dZ  Zm d[   Zn d\   Zo d]   Zp d^   Zq d_   Zr e e d`  Zs e j da    Zt db   Zu dc   Zv dd   Zw de   Zx df   Zy RS(g   s   Default implementation of Compiled.

    Compiles ClauseElements into SQL strings.   Uses a similar visit
    paradigm as visitors.ClauseVisitor but implements its own traversal.

    c         K   s  | |  _  | p t | d t  |  _ i  |  _ t j   |  _ g  |  _ i  |  _	 | j
 |  _
 |  j
 ro g  |  _ n  t | j |  _ d |  _ | j |  _ | j p | j |  _ t j |  j  |  _ i  |  _ t j |  | | |  |  j
 r| j d k r|  j   n  d S(   s  Construct a new ``DefaultCompiler`` object.

        dialect
          Dialect to be used

        statement
          ClauseElement to be compiled

        column_keys
          a list of column names to be compiled into an INSERT or UPDATE
          statement.

        t   inlineRm   N(   t   column_keyst   getattrt   FalseR   t   bindsR   t   column_dictt
   bind_namest   stackt
   result_mapt
   positionalt   positiontupt   BIND_TEMPLATESt
   paramstylet   bindtemplateR   t   ctest   identifier_preparert   preparert   label_lengtht   max_identifier_lengtht   PopulateDictt   _process_anont   anon_mapt   truncated_namesR   R   t   _apply_numbered_params(   R   R   R   R   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   Q  s&    								c         C   s:   t  j   |  _ i  |  _ t |  _ |  j r6 i  |  _ n  d S(   s   Initialize collections related to CTEs only if
        a CTE is located, to save on the overhead of
        these collections otherwise.

        N(   R   t   OrderedDictR   t   ctes_by_nameR   t   ctes_recursiveR   t   cte_positional(   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _init_cte_state  s
    			c            s7   t  j d    t j d   f d   |  j  |  _ d  S(   Ni   s   \[_POSITION\]c            s   t  t j     S(   N(   t   strR   t   next(   t   m(   t   poscount(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   <lambda>  s    (   t	   itertoolst   countt   ret   subR   (   R   (    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s
    c            s'   t  d     f d     j D D  S(   Nc         s   s-   |  ]# \ } } | d  k	 r | | f Vq d  S(   N(   R   (   t   .0t   keyt   value(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s    	c         3   s1   |  ]' }   j  | | j j   j  f Vq d  S(   N(   R   R   t   _cached_bind_processorR   (   R   t	   bindparam(   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   (   t   dictR   (   R   (    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _bind_processors  s    c         C   s   t  |  j  d k S(   Ni   (   t   lenR   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   is_subquery  s    c         C   s   |  S(   N(    (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s    c         C   sM  | r i  } x |  j  j   D] \ } } | j | k rK | | j | | <q | | k rh | | | | <q | r | j r | r t j d | j | f   q t j d | j   q | j | | <q W| Si  } xr |  j  D]g } | r-| j r-| rt j d | j | f   q-t j d | j   n  | j | |  j  | <q W| Sd S(   s5   return a dictionary of bind parameter keys and valuess@   A value is required for bind parameter %r, in parameter group %ds)   A value is required for bind parameter %rN(   R   t   itemsR   t   requiredR	   t   InvalidRequestErrort   effective_value(   R   R   t   _group_numbert   _checkt   pdR   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s:    c         C   s   |  j  d t  S(   so   Return the bind param dictionary embedded into this
        compiled object, for those values that are present.R   (   R   R   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s    c         C   s   d S(   s   Called when a SELECT statement has no froms, and no FROM clause is
        to be appended.

        Gives Oracle a chance to tack on a ``FROM DUAL`` to the string output.

        R   (    (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   default_from  s    c         K   s   d | j  j |  |  d S(   Nt   (t   )(   R   R   (   R   t   groupingt   asfromR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_grouping  s    c   
   	   K   s  | o
 | } | | k } | s% | r^ t  | j t j  rR |  j d | j  }	 q^ | j }	 n  | r | d  k	 r | |	 | j | |	 f | j | j  n  | j j	 |  d t
 d t
 | t t j |  j j | |	  S| r |  j j | |	  S| j j	 |  d t | Sd  S(   Nt   colidentt   within_columns_clauset   within_label_clause(   t
   isinstanceR   R   t   _truncated_labelt   _truncated_identifierR   R   R   R   R   t   Truet	   OPERATORSR   t   as_R   t   format_labelR   (
   R   R   t   add_to_result_mapR   R   t   render_label_as_labelt   kwt   render_label_with_ast   render_label_onlyt	   labelname(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_label  s(    	)	c         K   sb  | j  } } | d  k r+ t j d   n  | j } | rb t | t j  rb |  j d |  } n  | d  k	 r | | | | | | j	 f | j
  n  | r |  j |  } n |  j j |  } | j } | d  k s | s | j r | S| j r|  j j | j  d }	 n d }	 | j  }
 t |
 t j  rB|  j d |
  }
 n  |	 |  j j |
  d | Sd  S(   Ns:   Cannot compile Column object until its 'name' is assigned.R   t   .R   t   alias(   R   R   R	   t   CompileErrort
   is_literalR   R   R   R   R   R   t   escape_literal_columnR   t   quoteR\   t   named_with_columnR    t   quote_schema(   R   R   R  t   include_tableR   R   t	   orig_nameR  R\   t   schema_prefixt	   tablename(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_column  s2    				c         C   s   | j  d d  S(   s4   provide escaping for the literal_column() construct.t   %s   %%(   t   replace(   R   t   text(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  >  s    c         K   s   | j  S(   N(   R   (   R   t
   fromclauseR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_fromclauseD  s    c         K   s   | j  S(   N(   R   (   R   t   indexR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_indexG  s    c         K   s   |  j  j j | j  S(   N(   R   t   type_compilerR   R   (   R   t
   typeclauseR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_typeclauseJ  s    c         C   s   | S(   N(    (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   post_process_textM  s    c            s@       f d   } t  j d   t j |   j  j    S(   Nc            sI   |  j  d  } |   j k r5  j   j |   S j |   Sd  S(   Ni   (   R3   t   _bindparamsR   t   bindparam_string(   R   R   (   t
   textclauseR   R  (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   do_bindparamQ  s    c         S   s   |  j  d  S(   Ni   (   R3   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   Z  s    (   t   BIND_PARAMS_ESCR   t   BIND_PARAMSR"  R  (   R   R%  R  R&  (    (   R   R  R%  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_textclauseP  s    i    c      
   K   s   |  j  } | r |  j n
 |  j  d }	 | pE | d k oE | pE |	 d }
 |
 r x0 | j D]" } |  j | d t d |  j qX Wn  |  j | j |  } | r | r d | } n  | S(   Nii    t	   iswrapperR   R  s   (%s)(   R   t   _default_stack_entryt   column_argsR   R   t   _add_to_result_mapR   (   R   t   tafR*  t   compound_indext   force_result_mapR   t   parensR  t   toplevelt   entryt   populate_result_mapt   cR  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_text_as_from`  s    

c         K   s   d S(   Nt   NULL(    (   R   t   exprR  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_nully  s    c         K   s   |  j  j r d Sd Sd  S(   NR`   t   1(   R   t   supports_native_boolean(   R   R8  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_true|  s    c         K   s   |  j  j r d Sd Sd  S(   NR,   t   0(   R   R;  (   R   R8  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_false  s    c            sw   | d  k	 r   j | |   S| j } | d  k r= d } n t | j } | j d      f d   | j D D  S(   Nt    c         s   s   |  ] } | r | Vq d  S(   N(    (   R   t   s(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s    c         3   s!   |  ] } | j      Vq d  S(   N(   R   (   R   R5  (   R  R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   (   R   t   _order_by_clauselistt   operatorR  R=   t   clauses(   R   t
   clauselistt   order_by_selectR  t   sep(    (   R   R  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_clauselist  s    		c            sI   t  d   | j D   d j d       f d   | j D D  S(   Nc         s   s*   |  ]  } | j  d  k	 r | j  j Vq d  S(   N(   t   _order_by_label_elementR   R   (   R   t   l(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   s   , c         s   s   |  ] } | r | Vq d  S(   N(    (   R   R@  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s    
c         3   sQ   |  ]G } | j    d  | j d k	 r? | j j  k r? | j n d  Vq d S(   R  N(   R   RH  R   R   (   R   R5  (   R   R  t   raw_col(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   (   RX   t   _raw_columnsR=   RC  (   R   RD  RE  R  (    (   R   R  RJ  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyRA    s    	c         K   s   d } | j  d  k	 r5 | | j  j |  |  d 7} n  xI | j D]> \ } } | d | j |  |  d | j |  |  d 7} q? W| j d  k	 r | d | j j |  |  d 7} n  | d 7} | S(   Ns   CASE R?  s   WHEN s    THEN s   ELSE t   END(   R   R   R   t   whenst   else_(   R   t   clauseR   t   xt   condt   result(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_case  s     3!
c         K   s,   d | j  j |  |  | j j |  |  f S(   Ns   CAST(%s AS %s)(   RO  R   R   (   R   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_cast  s    c            sQ   d | j  j     d j    f d   d | j f d | j f f D  f S(   Ns   %s OVER (%s)R?  c         3   sI   |  ]? \ } } | d k	 r t |  r d  | | j     f Vq d S(   s   %s BY %sN(   R   R   R   (   R   t   wordRO  (   R   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   	t	   PARTITIONt   ORDER(   t   funcR   R=   t   partition_byt   order_by(   R   t   overR   (    (   R   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_over  s    c         K   s8   |  j  j | j | j  } d | | j j |  |  f S(   Ns   EXTRACT(%s FROM %s)(   t   extract_mapt   gett   fieldR8  R   (   R   t   extractR   R_  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_extract  s    c         K   s   | d  k	 r+ | | j | j d | j  n  t |  d | j j   d   } | r] | | |  St j | j | j d  } d j t	 | j
  | g  i |  j | |  d 6Sd  S(   Ns   visit_%s_funcs   %(expr)sR  R8  (    (   R   R   R   R   t   lowert	   FUNCTIONSR^  t	   __class__R=   t   listt   packagenamest   function_argspec(   R   RX  R  R   t   dispR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_function  s    c         K   s   |  j  | j  S(   N(   t   visit_sequencet   sequence(   R   t
   next_valueR  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_next_value_func  s    c         C   s   t  d |  j j   d  S(   Ns2   Dialect '%s' does not support sequence increments.(   R   R   R   (   R   Rk  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyRj    s    c         K   s   | j  j |  |  S(   N(   t   clause_exprR   (   R   RX  R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyRg    s    c            s{    j  } | r   j n
   j  d }   j  j i | d d 6| d 6| d d 6   j j | j  } d | d j     f d   t | j  D  }	 | j	 j
   d   }
 |
 r |	 d |
 7}	 n  |	   j |   7}	 |	 | j d  k	 s| j d  k	 r  j |  pd	 7}	   j rK| d
 k rK| rK  j   |	 }	 n    j  j d   rs| rsd |	 d S|	 Sd  S(   Nit   correlate_fromsR*  t   asfrom_fromsR?  c      
   3   s9   |  ]/ \ } } | j    d   d t d |  Vq d S(   R   R1  R/  N(   R   R   (   R   t   iR5  (   R   R   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>   s   R   s
    GROUP BY R   i    R   R   (   R   R+  t   appendt   compound_keywordsR^  t   keywordR=   t	   enumeratet   selectst   _group_by_clauseR   t   order_by_clauset   _limitR   t   _offsett   limit_clauseR   t   _render_cte_clauset   pop(   R   t   csR   R1  R/  R   R2  R3  Rt  R  t   group_by(    (   R   R   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_compound_select  s2    
		!	c         K   s   | j  rv | j r$ t j d   n  t |  d | j  j d   } | rY | | | j  |  S|  j | t | j  |  Snj | j r t |  d | j j d   } | r | | | j |  S|  j	 | t | j |  Sn t j d   d  S(   NsF   Unary expression does not support operator and modifier simultaneouslys   visit_%s_unary_operators   visit_%s_unary_modifiers,   Unary expression has no operator or modifier(
   RB  t   modifierR	   R  R   R   R   t    _generate_generic_unary_operatorR  t    _generate_generic_unary_modifier(   R   t   unaryR  Rh  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_unary  s&    					c         K   s:   |  j  j r |  j | j |  Sd |  j | j |  Sd  S(   Ns   %s = 1(   R   R;  R   R   (   R   R   RB  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_istrue_unary_operator2  s    c         K   s>   |  j  j r# d |  j | j |  Sd |  j | j |  Sd  S(   Ns   NOT %ss   %s = 0(   R   R;  R   R   (   R   R   RB  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_isfalse_unary_operator8  s    c         K   s   |  j  r@ t | j t j  r@ t | j t j  r@ t | d <n  | j } t |  d | j	 d   } | rx | | | |  Sy t | } Wn# t k
 r t j |  |   n X|  j | | |  Sd  S(   Nt   literal_bindss   visit_%s_binary(   t   ansi_bind_rulesR   R?   R   t   BindParameterRU   R   RB  R   R   R   R  t   KeyErrorR	   t   UnsupportedCompilationErrort   _generate_generic_binary(   R   R   R  RB  Rh  t   opstring(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_binary>  s    		c         K   s   |  j  | d | j d |  S(   NR?  (   R  R  (   R   R   RB  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_custom_op_binaryQ  s    c         K   s   |  j  | | j d |  S(   NR?  (   R  R  (   R   R   RB  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_custom_op_unary_operatorU  s    c         K   s   |  j  | d | j |  S(   NR?  (   R  R  (   R   R   RB  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_custom_op_unary_modifierY  s    c         K   s*   | j  j |  |  | | j j |  |  S(   N(   R?   R   RU   (   R   R   R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  ]  s    c         K   s   | | j  j |  |  S(   N(   R   R   (   R   R  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  b  s    c         K   s   | j  j |  |  | S(   N(   R   R   (   R   R  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  e  s    c         C   s   t  j d d t j S(   Ns   '%'R   (   R   t   literal_columnR   t
   STRINGTYPE(   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _like_percent_literalh  s    c         K   sF   | j    } |  j } | j | j  j |  | _ |  j | | |  S(   N(   t   _cloneR  t   __add__RU   t   visit_like_op_binary(   R   R   RB  R  t   percent(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_contains_op_binaryl  s    	c         K   sF   | j    } |  j } | j | j  j |  | _ |  j | | |  S(   N(   R  R  R  RU   t   visit_notlike_op_binary(   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_notcontains_op_binaryr  s    	c         K   s=   | j    } |  j } | j | j  | _ |  j | | |  S(   N(   R  R  t   __radd__RU   R  (   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_startswith_op_binaryx  s
    	c         K   s=   | j    } |  j } | j | j  | _ |  j | | |  S(   N(   R  R  R  RU   R  (   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_notstartswith_op_binary  s
    	c         K   s=   | j    } |  j } | j | j  | _ |  j | | |  S(   N(   R  R  R  RU   R  (   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_endswith_op_binary  s    	c         K   s=   | j    } |  j } | j | j  | _ |  j | | |  S(   N(   R  R  R  RU   R  (   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_notendswith_op_binary  s    	c         K   sd   | j  j d d   } d | j j |  |  | j j |  |  f | r_ d |  j | t j  n d S(   Nt   escapes
   %s LIKE %ss    ESCAPE R   (	   t	   modifiersR^  R   R?   R   RU   t   render_literal_valueR   R  (   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s
    c         K   sd   | j  j d d   } d | j j |  |  | j j |  |  f | r_ d |  j | t j  n d S(   NR  s   %s NOT LIKE %ss    ESCAPE R   (	   R  R^  R   R?   R   RU   R  R   R  (   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s
    c         K   sd   | j  j d d   } d | j j |  |  | j j |  |  f | r_ d |  j | t j  n d S(   NR  s   lower(%s) LIKE lower(%s)s    ESCAPE R   (	   R  R^  R   R?   R   RU   R  R   R  (   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_ilike_op_binary  s
    c         K   sd   | j  j d d   } d | j j |  |  | j j |  |  f | r_ d |  j | t j  n d S(   NR  s   lower(%s) NOT LIKE lower(%s)s    ESCAPE R   (	   R  R^  R   R?   R   RU   R  R   R  (   R   R   RB  R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_notilike_op_binary  s
    c         K   s4   | j  j d t  } |  j | | r* d n d |  S(   NR[   s    BETWEEN SYMMETRIC s	    BETWEEN (   R  R^  R   R  (   R   R   RB  R  R[   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_between_op_binary  s    c         K   s4   | j  j d t  } |  j | | r* d n d |  S(   NR[   s    NOT BETWEEN SYMMETRIC s    NOT BETWEEN (   R  R^  R   R  (   R   R   RB  R  R[   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_notbetween_op_binary  s    c   	      K   sw  | r8 | j  j r8 | j  j |  } |  j | d t S| sM | r |  j r | j d  k r | j d  k r t	 j
 d | j   n  |  j | d t | S|  j |  } | |  j k rL|  j | } | | k	 rL| j s | j r| j j | j  rt	 j
 d | j   qI| j s$| j rIt	 j
 d | j | j f   qIqLn  | |  j | j <|  j | <|  j | |  S(   Nt   skip_bind_expressions@   Bind parameter '%s' without a renderable value not allowed here.R   sI   Bind parameter '%s' conflicts with unique bind parameter of the same names   bindparam() name '%s' is reserved for automatic usage in the VALUES or SET clause of this insert/update statement.   Please use a name other than column name when using bindparam() with insert() or update() (for example, 'b_%s').(   R   t   _has_bind_expressiont   bind_expressionR   R   R  R   R   t   callableR	   R  R   t   render_literal_bindparamt   _truncate_bindparamR   Rb   R   t   intersectiont   _is_crudR$  (	   R   R   R   R  R  R   R  R   t   existing(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_bindparam  s8    			c         K   s   | j  } |  j | | j  S(   N(   R   R  R   (   R   R   R  R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s    	c         C   s6   | j  |  j  } | r" | |  St d |   d S(   s  Render the value of a bind parameter as a quoted literal.

        This is used for statement sections that do not accept bind parameters
        on the target driver/database.

        This should be implemented by subclasses using the quoting services
        of the DBAPI.

        s(   Don't know how to literal-quote value %rN(   t   _cached_literal_processorR   R   (   R   R   R   t	   processor(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s
    
c         C   s[   | |  j  k r |  j  | S| j } t | t j  rJ |  j d |  } n  | |  j  | <| S(   NR   (   R   R   R   R   R   R   (   R   R   t	   bind_name(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s    	c         C   s   | | f |  j  k r& |  j  | | f S| j |  j  } t |  |  j k r |  j  j | d  } | d t |  j d d  !d t |  d } | d |  j  | <n | } | |  j  | | f <| S(   Ni   i    i   t   _i   (   R   t	   apply_mapR   R   R   R^  t   maxt   hex(   R   t   ident_classR   t   anonnamet   countert	   truncname(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR      s    /c         C   s   | |  j  S(   N(   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   _anonymize0  s    c         C   sP   | j  d d  \ } } |  j j | d  } | d |  j | <| d t |  S(   NR?  i   R  (   t   splitR   R^  R   (   R   R   t   identt   derivedt   anonymous_counter(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   3  s    c         K   sJ   |  j  r8 | d  k	 r% | j |  q8 |  j j |  n  |  j i | d 6S(   NR   (   R   R   Rr  R   R   (   R   R   t   positional_namesR  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR$  9  s
    	c      	      s    j    t | j t j  r7   j d | j  } n	 | j } |   j k r   j | } | | j k sw | | k r   j j	 | |  S| | j k r   j
 | =q t j d |   n  |   j | <| j d  k	 r9| j } |   j
 k r  j | |  n  | j j }	 t |	 t j  rE  j d |	  }	 qEn | } d  }	 |	 r|   j
 k r| j rpt   _ n    j j	 | |  }
 | j r>t | j t j  r| j } n4 t | j t j  r| j j d } n t st  g  t j | j  D] } | d  k	 r| ^ q} |
 d d j   f d   | D  7}
 n    j r_g  | d <  j | <n  |
 d | j j    d	 t | 7}
 |
   j
 | <n  | r|	 r  j j	 | |	  }
 |
 d
 | 7}
 n   j j	 | |  S|
 Sd  S(   NR  s5   Multiple, unrelated CTEs found with the same name: %ri    s   (%s)s   , c         3   s!   |  ] }   j  j |  Vq d  S(   N(   R   t   format_column(   R   R  (   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>y  s   R  s    AS 
R   s    AS (!   R   R   R   R   R   R   R   t	   _restatesR   t   format_aliasR   R	   R  t
   _cte_aliasR   t	   visit_ctet	   recursiveR   R   t   originalR   t   Selectt   CompoundSelectRv  R   t   AssertionErrorR   t   unique_listt   inner_columnsR=   R   R   R   (   R   t   cteR   t   ashintt	   fromhintsR   t   cte_namet   existing_ctet   orig_ctet   cte_alias_nameR  t
   col_sourceR5  t
   recur_cols(    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  A  sh    
						c   	      K   s   | s | rE t  | j t j  r9 |  j d | j  } qE | j } n  | r^ |  j j | |  S| r | j j |  d t	 | d |  j j | |  } | r | | k r |  j
 | | | | |  } n  | S| j j |  |  Sd  S(   NR  R   s    AS (   R   R   R   R   R   R   R  R  R   R   t   format_from_hint_text(	   R   R  R   R  t   iscrudR  R   t
   alias_namet   ret(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_alias  s    c         C   sw   |  j  j s | j   } n  | |  j k r] |  j | \ } } } | | | | f |  j | <n | | | f |  j | <d  S(   N(   R   t   case_sensitiveRb  R   (   R   t   keynameR   t   objectsR   t   e_namet   e_objt   e_type(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR-    s    c            s    j  j r9 | r9   j  j    }    f d   }	 n   } | rQ  j }	 n d }	 | sf | }
 nxt   t j  r |   k	 r t |   j	 d   j
 f }
 q| }
 n0| d k	 r | r t | | d   j f }
 n | rOt   t j  rO  j rO  j d k	 rOt   j t j  rOt | t j   j	  d   j f }
 n t   t j t j f  rt   d  st   t j  rt |   j  }
 n< |   k	 rt | t j   j	  d   j f }
 n | }
 | j d | d |	  |
 j  |  S(   s.   produce labeled columns present in a select().c            s    j  |  | |   f |  S(   N(   R-  (   R  R   R  R   (   R   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR     s    R   R   R   R  N(   R   t   _has_column_expressiont   column_expressionR-  R   R   R   t   LabelR   R   R   t
   _key_labelt   ColumnClauseR  R\   R   R  t   _as_truncatedR   t   UnaryExpressiont
   TextClauset   hasattrR   t   Functiont
   anon_labelt   updateR   (   R   RV   R   R4  R   t   column_clause_argsR   R   t   col_exprR  t   result_expr(    (   R   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _label_select_column  s\    			
	c         C   s-   |  j  | |  } | r) | d | 7} n  | S(   NR?  (   t   get_from_hint_text(   R   t   sqltextR\   t   hintR  t   hinttext(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s    c         C   s   d  S(   N(   R   (   R   t   byfroms(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   get_select_hint_text  s    c         C   s   d  S(   N(   R   (   R   R\   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s    c         C   s   d  S(   N(   R   (   R   R\   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   get_crud_hint_text	  s    c            s.   i   i  g      f d       |  S(   s   Rewrite any "a JOIN (b JOIN c)" expression as
        "a JOIN (select * from b JOIN c) AS anon", to support
        databases that can't parse a parenthesized join correctly
        (i.e. sqlite the main one).

        c   
         sz  |    d k r   d |  S|   k r0  |  S|  j    }  |  <| j r| j rt | j t j  r| j    | j |  | _  | j |  } t j	 | j
 g d t j   } x) | j D] } | j | _ | j | _ q Wt t | j j
 j | j   } | | | j
 j <| | | j
 j <| | | j j
 j <| | | j j
 j <xE t   d j    D]- \ } } | | k rg| |   d | <qgqgW  d j |  | | _  | j |  | _ n | j rd | d <| j d  |  n | j rc| j rc| j d d   d k }	 |	 r3  j i   n  d | d <| j d  |  |	 rv  d =qvn | j d  |  | S(   Nit
   use_labelst   select_containert   transform_cluet   clonet   inside_select(   R  t   is_selectablet   _is_joinR   RU   R   t   FromGroupingt   _reset_exportedR?   R  R   R   R  R5  R   R  R   t   _labelR   t   zipRe  R   R  t   onclauset   _is_from_containert   _copy_internalst
   _is_selectR^  R   Rr  (
   R   R  t   newelemRU   t   selectable_R5  t   translate_dictt   kt   vt   barrier_select(   t   column_translatet   visitt   cloned(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    sT    
#		
	
(    (   R   RV   (    (   R  R  R  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt"   _transform_select_for_nested_joins  s    	Mc   	         s   t  d   | j D    t    f d   | j D  } xm t |  j j    D]V \ } \ } } } t g  | D] } | j | |  ^ qm  } | | | f |  j | <qN Wd  S(   Nc         s   s   |  ] } | j  | f Vq d  S(   N(   R  (   R   R5  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>g  s   c         3   s"   |  ] }   | j  | f Vq d  S(   N(   R  (   R   R5  (   t	   inner_col(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>k  s   (   R   R  Re  R   R   t   tupleR^  (	   R   RV   t   transformed_selectt   dR   R   t   objst   typR   (    (   R  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt&   _transform_result_map_for_nested_joinse  s    	++R*  Ro  Rp  c         C   s   |  j  } | r |  j n
 |  j  d } | d } | d } | rd | j d | j |  d d  } n | j d | d |  } | S(   NiRo  Rp  t   explicit_correlate_fromst   implicit_correlate_froms(    (   R   R+  t   _get_display_fromst
   difference(   R   RV   R   R2  R3  Ro  Rp  t   froms(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _display_froms_for_selectx  s    


				c	   $      K   sY  | j  o$ | o$ |  j o$ |  j j }
 |
 r{ |  j |  } |  j | d | d | d | d | d | d | d t |	 } n  |  j } | r |  j n
 |  j d } | p | d	 k o | p | d } |
 r | r |  j | |  n  | S| d
 } | d } | r$| j	 d | j
 |  d d  } n | j	 d | d |  } t t j |    } | j |  } i | d 6| d 6| d
 6} |  j j |  |	 j   } | j i t d 6t d 6 d } | j rVt g  | j j   D]P \ \ } } } | d |  j j f k r| | i | j |  d t d 6f ^ q } |  j |  } | rV| | d 7} qVn  | j r~| |  j | | j |	  7} n  | |  j |  7} g  g  | j D]- \ } } |  j | | | | | d | ^ qD] } | d  k	 r| ^ q} | d j |  7} | r| d 7} | j rZ| d j g  | D]$ }  |  j |  d t d | |	 ^ q) 7} q| d j g  | D] }  |  j |  d t |	 ^ qj 7} n | |  j    7} | j! d  k	 r| j! j |  |	  }! |! r| d |! 7} qn  | j" j# r| j" j |  |	  }" |" r| d |" 7} qn  | j$ d  k	 r\| j$ j |  |	  }! |! r\| d |! 7} q\n  | j% j# r|  j j& r}| }# n d  }# | |  j' | d |# |	 7} n  | j( d  k	 s| j) d  k	 r| |  j* |  7} n  | j+ d  k	 r| |  j, |  7} n  |  j- r)| d	 k r)| r)|  j.   | } n  |  j j/ d  | rQ| rQd | d S| Sd  S(   NR   R1  R*  R  R/  R0  t   nested_join_translationii    Ro  Rp  R  R  R   R   s   SELECT t   *R  R   R?  s   , s    
FROM s    
WHERE s
    GROUP BY s	    
HAVING RE  R   R   (    (0   R  R   R   t   supports_right_nested_joinsR  t   visit_selectR   R+  R  R  R  RX   R   t   _from_objectsRa   Rr  t   copyR  R   t   _hintsR   R   R   R   R  t	   _prefixest   _generate_prefixest   get_select_precolumnst   _columns_plus_namesR  R   R=   R   t   _whereclauseRw  RC  t   _havingt   _order_by_clauset   supports_simple_order_by_labelRx  Ry  Rz  R{  t   _for_update_argt   for_update_clauseR   R|  R}  ($   R   RV   R   R1  R*  R  R/  R0  R!  R   t   needs_nested_translationR  R  R2  R3  R4  Ro  Rp  R  t   new_correlate_fromst   all_correlate_fromst	   new_entryR  t   from_R   R  t   byfromt	   hint_textR   R   R5  R  t   ft   tR  RE  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR$    s    	
	



				
		G		>
		5	/				c            s9   d j     f d   | D  } | r5 | d 7} n  | S(   NR?  c         3   sE   |  ]; \ } } | d  k s- |   j j k r | j     Vq d  S(   N(   R   R   R   R   (   R   t   prefixt   dialect_name(   R   R  (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>3  s   	(   R=   (   R   t   stmtt   prefixesR  RO  (    (   R   R  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR)  1  s    c         C   s   |  j  rB t g  |  j D] } |  j | ^ q g   |  j |  _ n  |  j |  j  d } | d j g  |  j j   D] } | ^ qq  7} | d 7} | S(   NR?  s   , 
s   
 (	   R   t   sumR   R   R   t   get_cte_preambleR   R=   t   values(   R   R  t   cte_textt   txt(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR|  <  s    	#	&
c         C   s   | r
 d Sd Sd  S(   Ns   WITH RECURSIVEt   WITH(    (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR@  I  s    c         C   s   | j  r d p d S(   sc   Called when building a ``SELECT`` statement, position is just
        before column list.

        s	   DISTINCT R   (   t	   _distinct(   R   RV   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR*  O  s    c         K   s+   | j  j |  |  } | r# d | Sd Sd  S(   Ns
    ORDER BY R   (   R.  R   (   R   RV   R  RZ  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyRx  V  s    c         C   s   d S(   Ns    FOR UPDATE(    (   R   RV   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR1  ]  s    c         C   s   t  j d   d  S(   Ns@   RETURNING is not supported by this dialect's statement compiler.(   R	   R  (   R   R=  t   returning_cols(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   returning_clause`  s    c         C   s   d } | j  d  k	 r; | d |  j t j | j    7} n  | j d  k	 r | j  d  k rf | d 7} n  | d |  j t j | j   7} n  | S(   NR   s   
 LIMIT s
   
 LIMIT -1s    OFFSET (   Ry  R   R   R   t   literalRz  (   R   RV   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR{  e  s    &&c         K   s   | s | r t  | d d   rM |  j j | j  d |  j j | j  } n |  j j | j  } | r | | k r |  j | | | | |  } n  | Sd Sd  S(   NR    R  R   (   R   R   R   R  R    R  R   R  (   R   R\   R   R  R  R  R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_tableo  s    /c         K   s\   | j  j |  d t | | j r' d p* d | j j |  d t | d | j j |  |  S(   NR   s    LEFT OUTER JOIN s    JOIN s    ON (   R?   R   R   t   isouterRU   R  (   R   R=   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_join~  s    Hc         K   s  t  |  _ |  j | |  } | rX |  j j rX |  j j rX t j d |  j j   n  | j	 r |  j j
 s t j d |  j j   n  | d } n | } |  j } |  j j } d } | j r | |  j | | j |  7} n  | d 7} | j | j  } | j rt g  | j j   D]6 \ \ }	 }
 } |
 d |  j j f k r|	 | f ^ q } | j | k r|  j | | j | | j t   } qn  | | 7} | s| r| d d j g  | D] } | j | d  ^ q 7} n  |  j s| j r7|  j p| j |  _ |  j | |  j  } |  j r7| d	 | 7} q7n  | j d  k	 rf| d
 |  j | j |  7} nu | r| r| d 7} n[ | j	 r| d d j d   | D  7} n. | d d j g  | D] } | d ^ q 7} |  j r|  j r| d	 | 7} n  | S(   NsW   The '%s' dialect with current database version settings does not support empty inserts.sc   The '%s' dialect with current database version settings does not support in-place multirow inserts.i    s   INSERT s   INTO R"  s    (%s)s   , R?  s    %ss    DEFAULT VALUESs
    VALUES %sc         s   s,   |  ]" } d  d j  d   | D  Vq d S(   s   (%s)s   , c         s   s   |  ] } | d  Vq d S(   i   N(    (   R   R5  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s    N(   R=   (   R   t   colparam_set(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   s    VALUES (%s)i   (   R   t   isinsertt   _get_colparamsR   t   supports_default_valuest   supports_empty_insertR	   R  R   t   _has_multi_parameterst   supports_multivalues_insertR   R(  R)  t   format_tableR\   R'  R   R   R  R=   R  t	   returningt
   _returningRG  t   returning_precedes_valuesRV   R   R   (   R   t   insert_stmtR  t	   colparamst   colparams_singleR   RO  R  t
   table_textR\   R   R8  t   dialect_hintsR5  RG  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_insert  sr    					
	-

+	 	(c         C   s   d S(   s3   Provide a hook for MySQL to add LIMIT to the UPDATEN(   R   (   R   t   update_stmt(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   update_limit_clause  s    c         K   s   | j  |  d t d t | S(   s|   Provide a hook to override the initial table clause
        in an UPDATE statement.

        MySQL overrides this.

        R   R  (   R   R   (   R   R]  t
   from_tablet   extra_fromsR  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   update_tables_clause  s    c            s'   d d j      f d   | D  S(   s~   Provide a hook to override the generation of an
        UPDATE..FROM clause.

        MySQL and MSSQL override this.

        s   FROM s   , c         3   s-   |  ]# } | j   d  t d    Vq d S(   R   R  N(   R   R   (   R   R:  (   t
   from_hintsR   R  (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   (   R=   (   R   R]  R_  R`  Rb  R  (    (   Rb  R   R  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   update_from_clause  s    
	c            s    j  j i t | j g  d 6t d 6t | j g  d 6 t   _ | j } d } | j r} |   j	 | | j |  7} n    j
 | | j | |  }   j | |  } | j r<t g  | j j   D]6 \ \ } } }	 | d   j j f k r | |	 f ^ q  }
 | j |
 k rB  j | | j |
 | j t  } qBn d  }
 | | 7} | d 7} | ob  j  | d j    f d   | D  7}   j s| j r  j s| j   _ n    j r| d	   j |   j  7} qn  | r  j | | j | |
 |  } | r| d	 | 7} qn  | j d  k	 rZ  j | j  } | rZ| d
 | 7} qZn    j |  } | r| d	 | 7} n    j r  j r| d	   j |   j  7} n    j  j d  | S(   NRo  R*  Rp  s   UPDATE R"  s    SET s   , c         3   s4   |  ]* } | d  j   d   d | d Vq d S(   i    R  t   =i   N(   R   (   R   R5  (   R  R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>'  s   R?  s    WHERE i(   R   Rr  RX   R\   R   R   t   isupdatet   _extra_fromsR(  R)  Ra  RN  R'  R   R   R   R   R  R   t'   render_table_with_column_in_update_fromR=   RT  RU  RV  RG  Rc  R,  R   R^  R}  (   R   R]  R  R`  R  RZ  RX  R\   R   R8  R[  t   extra_from_textR:  R{  (    (   R   R  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_update  st    					-


				c         C   sO   | d  k r | j } n  t j | | d | j d | } t | _ | j |   S(   NR   R   (   R   R   R   R  R   R   R  R   (   R   R   R   R   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _create_crud_bind_paramM  s    	c            s   |  j  rW |  j j rW t |  j j      f d   }   f d   }   f d   } n t j } t j d  } } | | | f S(   Nc            sE   t  j |   } t |  d  r= |  j   k r= |  j j | f S| Sd  S(   NR\   (   R   t   _column_as_keyR  R\   R   (   R   t   str_key(   t   _et(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyRk  `  s    c            s-   |  j    k r" |  j  j |  j f S|  j Sd  S(   N(   R\   R   R   (   R   (   Rm  (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _getattr_col_keyg  s    c            s1   |  j    k r& d |  j  j |  j f S|  j Sd  S(   Ns   %s_%s(   R\   R   R   (   R   (   Rm  (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _col_bind_namem  s    R   (   Re  R   Rf  RX   R   Rk  RB  t
   attrgetter(   R   Rk  Rn  Ro  (    (   Rm  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _key_getters_for_crud_columnU  s    	c            s  g    _  g    _ g    _   j d k rn  j d k rn g   j j D]$ } |   j | d d t	 f ^ qF S j
 r  j d  n	  j    j \  } }   j d k r i  } n" t   f d     j D  } g  }  d k	 rx  j   D] \ } }	  |  }
 |
 d k	 r2| j |
 |	  q t j |	  rk  j t j d |	 d | j   }	 n   j |	 j     }	 | j | |	 f  q Wn    j o  j o j } | o  j j o j j }   j r| o j } n3   j r   j j o j j o j } n t } | rb j t	 k rPt  j j  } qbt  j  } n  | oq  j j  } i  }   j r j! r rt d    j   D  } t   } x  j! D] } x | j D] } | | k r| j" |  | | | |  <| | } t j |  rF  j | | d | t# k d | |  } n(   j  j |    j | j     } | j | | f  qqWqWx | D] } x | j D] } | | k rqq| j$ d k	 r_| j$ j% r_| j$ j& r!| j |   j | j$ j' j     f    j  j |  q| j |   j | d d | |  f    j j |  q| j( d k	 r  j  j |  qqWqWn    j r j) r  f d    j) D } n  j j } xc| D][} | |  } | | k rL| | k rL| j* |  } t j |  r^  j | | d | t# k d  j
 sH| |  n d | |  } n t+ | t j  r| j j, r| j-   } | j | _ n  | j. r| r  j j |    j | j     } ne | r| | k r  j j |    j | j     } n(   j  j |    j | j     } | j | | f  q  j r	| j. r| r| s| s|  j j/ k	 r| r| j0 d k	 r| j0 j% r  j j1 r| j0 j2 s  j j3 r  j | j0   } | j | | f  n    j j |  q| j0 j& rR| j |   j | j0 j' j     f    j j |  q| j |   j | d  f    j j |  q  j j |  q	| j0 d k	 r| j0 j% s  j j1 s|  j j/ k r	  j j1 s  j j4 r	| j |   j | d  f    j j |  q	q+| j0 d k	 r{	| j0 j% r  j j1 rx	| j0 j2 s_  j j3 rx	  j | j0   } | j | | f  | r| | k r  j j |  q| j. s  j  j |  qqx	q	| j0 j& rI	| j |   j | j0 j' j     f  | r*	| | k r*	  j j |  qx	| j. sx	  j  j |  qx	q	| j |   j | d  f    j j |  q+| j5 d k	 r	| r	| | k r	  j j |  q	| j. s	  j  j |  q	q+| r+| | k r+  j j |  q+q  j r| j$ d k	 r
| j$ j% r
| j$ j& r
| j |   j | j$ j' j     f  | rw
| | k rw
  j j |  q
  j  j |  q(| j |   j | d  f    j j |  q+| j( d k	 r| r
| | k r
  j j |  q(  j  j |  q+| r+| | k r+  j j |  q+qqW| r rt |  j6  f d	    j D  j7 |  } | rt8 j9 d
 d j: d   | D    qn   j
 r|  | g } | j;     f d   t<  j d  D  n  | S(   sh  create a set of tuples representing column/string pairs for use
        in an INSERT or UPDATE statement.

        Also generates the Compiled object's postfetch, prefetch, and
        returning column collections, used for default handling and ultimately
        populating the ResultProxy's prefetch_cols() and postfetch_cols()
        collections.

        R   i    c         3   s4   |  ]* }  s |  k r   |  t  f Vq d  S(   N(   Ro   (   R   R   (   Rk  t   stmt_parameters(    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   R   c         s   s*   |  ]  \ } } t  j |  | f Vq d  S(   N(   R   t   _clause_element_as_expr(   R   R5  t   param(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   R   c         3   s%   |  ] }  j  j   |  Vq d  S(   N(   R\   R5  (   R   R   (   Rk  R=  (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   s   %s_0c         3   s   |  ] }   |  Vq d  S(   N(    (   R   R  (   Rk  (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s    s   Unconsumed column names: %ss   , c         s   s   |  ] } d  | Vq d S(   s   %sN(    (   R   R5  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s    c         3   s   |  ] \ } } g   D] \ } } | | j  | k r t j | | j   rz   j | | | j  d  d | j  | d f q   j | | j  j     n | f ^ q Vq d S(   R   s   %s_%di   N(   R   R   t   _is_literalRj  R   t
   self_group(   R   Rq  t   rowR5  Rt  (   R   t   values_0R  (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>  s   i   N(=   t	   postfetcht   prefetchRT  R   R   t
   parametersR\   t   columnsRj  R   RQ  Rq  R   R   t
   setdefaultR   Ru  R   R  R   Rv  Rr  RM  R   RU  R   t   implicit_returningt   _return_defaultsRe  R   RX   R5  t   postfetch_lastrowidRf  t   addRo   t   onupdatet   is_sequencet   is_clause_elementt   argt   server_onupdatet   select_namesR}  R   t   _isnullR  t   primary_keyt   _autoincrement_columnR$   t   supports_sequencest   optionalt   sequences_optionalt"   preexecute_autoincrement_sequencest   server_defaultR  R  R	   R  R=   t   extendRu  (   R   R=  R  R5  Rn  Ro  R{  RA  R  R  t   colkeyt   need_pksR~  t   implicit_return_defaultsR  t   check_columnst   normalized_paramst   affected_tablesR:  R   t   colst   col_keyt   procR   (    (   R   Rk  R  R=  Rr  Rx  s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyRN  y  s   			2				

			
												#		c   
      K   s  |  j  j i t | j g  d 6t d 6t | j g  d 6 t |  _ d } | j rt | |  j | | j |  7} n  | d 7} | j j	 |  d t d t } | j
 r.t g  | j
 j   D]6 \ \ } } } | d |  j j f k r | | f ^ q  } | j | k r4|  j | | j | | j t  } q4n d  } | | 7} | j r| j |  _ |  j r| d	 |  j | | j  7} qn  | j d  k	 r| j j	 |   }	 |	 r| d
 |	 7} qn  |  j r|  j r| d	 |  j | | j  7} n  |  j  j d  | S(   NRo  R*  Rp  s   DELETE s   FROM R   R  R"  R?  s    WHERE i(   R   Rr  RX   R\   R   R   t   isdeleteR(  R)  R   R'  R   R   R   R   R  R   RU  RT  RV  RG  R,  R}  (
   R   t   delete_stmtR  R  RZ  R\   R   R8  R[  R:  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_delete  sL    		
		-

		c         C   s   d |  j  j |  S(   Ns   SAVEPOINT %s(   R   t   format_savepoint(   R   t   savepoint_stmt(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_savepoint  s    c         C   s   d |  j  j |  S(   Ns   ROLLBACK TO SAVEPOINT %s(   R   R  (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_rollback_to_savepoint  s    c         C   s   d |  j  j |  S(   Ns   RELEASE SAVEPOINT %s(   R   R  (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_release_savepoint	  s    (z   R   R   R   t   EXTRACT_MAPR]  t   COMPOUND_KEYWORDSRs  R   R  RM  Re  R   RT  RV  Rg  R  R   R   t   memoized_instancemethodR   R   t   memoized_propertyR   R   R   R   R   R   R   R   R   R
  R  R  R  R  R!  R"  R)  R6  R9  R<  R>  RG  RA  RS  RT  R\  Ra  Ri  Rm  Rj  Rg  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R   R  R   R$  R  R  R-  R  R  R  R  R  R  R  R   t	   frozensetR+  R   R$  R)  R|  R@  R*  Rx  R1  RG  R{  RI  RK  R\  R^  Ra  Rc  Ri  Rj  Rq  RN  R  R  R  R  (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   %  s  >	
	'		#'																	'																						-						L	D					Y											
			V				R$	 K	7		t   DDLCompilerc           B   sO  e  Z e j d     Z e j d    Z e d    Z d  d  Z	 d   Z
 d   Z d   Z d   Z e d  Z d	   Z d
   Z d   Z d   Z e e d  Z d   Z e d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' RS(!   c         C   s   |  j  j |  j  d   S(   N(   R   t   statement_compilerR   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   	  s    c         C   s
   |  j  j S(   N(   R   R  (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  	  s    c         C   s
   |  j  j S(   N(   R   R   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   	  s    c         C   s   d  S(   N(   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   	  s    c         K   s   | j  } t | j t j  r | j   } |  j j } | j | j  } t	 |  d k rn | d d } } n | d | d } } | j
 d |  | j
 d |  | j
 d | j | j   n  |  j j | j |  S(   Ni   i    R   iR\   R    t   fullname(   t   contextR   t   targetR    t   TableR&  R   R   t   format_table_seqR   R}  RS  R   R"  R   (   R   t   ddlR   R  R   t   pathR\   t   sch(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt	   visit_ddl	  s    	c         C   s   |  j  j | j  } d | S(   Ns   CREATE SCHEMA (   R   t   format_schemaR   (   R   R   R    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_create_schema*	  s    c         C   s9   |  j  j | j  } d | } | j r5 | d 7} n  | S(   Ns   DROP SCHEMA s    CASCADE(   R   R  R   t   cascade(   R   t   dropR    R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_drop_schema.	  s
    
	c         C   sf  | j  } |  j j } d d j d g | j d | j |  d g  } d } t } x | j D] } | j  } yb |  j | d | j	 o | }	 |	 d  k	 r | | 7} d } | d |	 7} n  | j	 r t } n  Wq^ t j k
 r }
 t j t j t j d	  | j | j |
 j d
 f   q^ Xq^ W|  j |  } | rK| d | 7} n  | d |  j |  7} | S(   Ns   
R?  t   CREATEt   TABLER   t   first_pks   , 
s   	s    (in table '%s', column '%s'): %si    s   , 
	s   
)%s

(   R   R   R   R=   R(  RS  R   R|  R   R  R   R   R	   R  R   t   raise_from_causet   ut   descriptionR   t   argst   create_table_constraintst   post_create_table(   R   R   R\   R   R  t	   separatorR  t   create_columnR   t	   processedt   cet   const(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_create_table5	  s>    				

	)c            sh   | j  } | j r d  S  j | d | } d j   f d   | j D  } | rd | d | 7} n  | S(   NR  R?  c         3   s   |  ] }   j  |  Vq d  S(   N(   R   (   R   R   (   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>f	  s   (   R   t   systemR   t   get_column_specificationR=   t   constraints(   R   R   R  R   R  R  (    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_create_column\	  s    			c            s{   g  } | j  r" | j | j   n  | j g  | j D] } | | j  k	 r2 | ^ q2  d j d     f d   | D D  S(   Ns   , 
	c         s   s!   |  ] } | d  k	 r | Vq d  S(   N(   R   (   R   t   p(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>x	  s    	c         3   s\   |  ]R } | j  d k s' | j     r   j j sG t | d  t  r   j |  Vq d S(   t	   use_alterN(   t   _create_ruleR   R   t   supports_alterR   R   R   (   R   R   (   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>y	  s
   (   R  Rr  R  t   _sorted_constraintsR=   (   R   R\   R  R5  (    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  m	  s    	c         C   s   d |  j  j | j  S(   Ns   
DROP TABLE (   R   RS  R   (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_drop_table	  s    c         C   s   d |  j  j | j  S(   Ns   
DROP VIEW (   R   RS  R   (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_drop_view	  s    c         C   s,   | j  d  k r( t j d | j   n  d  S(   Ns,   Index '%s' is not associated with any table.(   R\   R   R	   R  R   (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _verify_index_table	  s    	c            s   | j  }   j |    j } d } | j r; | d 7} n  | d   j | d | | j | j d | d j   f d   | j D  f 7} | S(   Ns   CREATE s   UNIQUE s   INDEX %s ON %s (%s)t   include_schemat
   use_schemas   , c         3   s-   |  ]# }   j  j | d  t d t Vq d S(   R  R  N(   R   R   R   R   (   R   R8  (   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>	  s   (	   R   R  R   Rb   t   _prepared_index_nameRS  R\   R=   t   expressions(   R   R   R  t   include_table_schemaR  R   R  (    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_create_index	  s    			c         C   s    | j  } d |  j | d t S(   Ns   
DROP INDEX R  (   R   R  R   (   R   R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_drop_index	  s    		c         C   s   | rB | j  d  k	 rB | j  j rB | j  j } |  j j |  } n d  } | j } t | t j  r |  j	 j
 px |  j	 j } t |  | k r | d | d !d t j |  d } q n |  j	 j |  |  j j |  } | r | d | } n  | S(   Ni    i   R  iR  (   R\   R   R    R   R  R   R   R   R   R   t   max_index_name_lengthR   R   R   t   md5_hext   validate_identifierR  (   R   R  R  R    t   schema_nameR  t   max_t
   index_name(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  	  s    !	,c         C   s,   d |  j  j | j j  |  j | j  f S(   Ns   ALTER TABLE %s ADD %s(   R   RS  R   R\   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_add_constraint	  s    c         C   so   d |  j  j | j  } | j j d  k	 rB | d | j j 7} n  | j j d  k	 rk | d | j j 7} n  | S(   Ns   CREATE SEQUENCE %ss    INCREMENT BY %ds    START WITH %d(   R   t   format_sequenceR   t	   incrementR   t   start(   R   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_create_sequence	  s    c         C   s   d |  j  j | j  S(   Ns   DROP SEQUENCE %s(   R   R  R   (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_drop_sequence	  s    c         C   sA   d |  j  j | j j  |  j  j | j  | j r9 d p< d f S(   Ns#   ALTER TABLE %s DROP CONSTRAINT %s%ss    CASCADER   (   R   RS  R   R\   t   format_constraintR  (   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_drop_constraint	  s    c         K   sr   |  j  j |  d |  j j j | j  } |  j |  } | d  k	 rX | d | 7} n  | j sn | d 7} n  | S(   NR?  s	    DEFAULT s	    NOT NULL(	   R   R  R   R  R   R   t   get_column_default_stringR   t   nullable(   R   R   R   t   colspecR$   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  	  s    	c         C   s   d S(   NR   (    (   R   R\   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  	  s    c         C   s\   t  | j t j  rT t  | j j t j  r; d | j j S|  j j | j j  Sn d  Sd  S(   Ns   '%s'(
   R   R  R    t   DefaultClauseR  R   t   string_typesR   R   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  	  s
    c         C   s   d } | j  d  k	 rG |  j j |  } | d  k	 rG | d | 7} qG n  | d |  j j | j d t d t 7} | |  j	 |  7} | S(   NR   s   CONSTRAINT %s s
   CHECK (%s)R  R  (
   R   R   R   R  R   R   R  R   R   t   define_constraint_deferrability(   R   R   R  t   formatted_name(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_check_constraint	  s    c         C   so   d } | j  d  k	 rG |  j j |  } | d  k	 rG | d | 7} qG n  | d | j 7} | |  j |  7} | S(   NR   s   CONSTRAINT %s s
   CHECK (%s)(   R   R   R   R  R  R  (   R   R   R  R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_column_check_constraint	  s    c            s   t  |  d k r d Sd } | j d  k	 r]   j j |  } | d  k	 r] | d | 7} q] n  | d 7} | d d j   f d   | D  7} |   j |  7} | S(   Ni    R   s   CONSTRAINT %s s   PRIMARY KEY s   (%s)s   , c         3   s$   |  ] }   j  j | j  Vq d  S(   N(   R   R  R   (   R   R5  (   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>
  s   (   R   R   R   R   R  R=   R  (   R   R   R  R  (    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_primary_key_constraint
  s    
c            s  |  j  j   d } | j d  k	 rS |  j j |  } | d  k	 rS | d | 7} qS n  t | j j    d j	 j
 } | d d j   f d   | j j   D  |  j | |    d j   f d   | j j   D  f 7} | |  j |  7} | |  j |  7} | |  j |  7} | S(   NR   s   CONSTRAINT %s i    s"   FOREIGN KEY(%s) REFERENCES %s (%s)s   , c         3   s$   |  ] }   j  | j j  Vq d  S(   N(   R  t   parentR   (   R   R9  (   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>
  s   c         3   s$   |  ] }   j  | j j  Vq d  S(   N(   R  R   R   (   R   R9  (   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>"
  s   (   R   R   R   R   R   R  Re  t	   _elementsRA  R   R\   R=   t   define_constraint_remote_tablet   define_constraint_matcht   define_constraint_cascadesR  (   R   R   R  R  t   remote_table(    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_foreign_key_constraint
  s$    c         C   s   | j  |  S(   s=   Format the remote table clause of a CREATE CONSTRAINT clause.(   RS  (   R   R   R\   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  *
  s    c            s   t  |  d k r d Sd } | j d  k	 rN   j j |  } | d | 7} n  | d d j   f d   | D  7} |   j |  7} | S(   Ni    R   s   CONSTRAINT %s s   UNIQUE (%s)s   , c         3   s$   |  ] }   j  j | j  Vq d  S(   N(   R   R  R   (   R   R5  (   R   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pys	   <genexpr>7
  s   (   R   R   R   R   R  R=   R  (   R   R   R  R  (    (   R   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_unique_constraint/
  s    c         C   sP   d } | j  d  k	 r) | d | j  7} n  | j d  k	 rL | d | j 7} n  | S(   NR   s    ON DELETE %ss    ON UPDATE %s(   t   ondeleteR   R  (   R   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  <
  s    c         C   s_   d } | j  d  k	 r8 | j  r+ | d 7} q8 | d 7} n  | j d  k	 r[ | d | j 7} n  | S(   NR   s    DEFERRABLEs    NOT DEFERRABLEs    INITIALLY %s(   R%   R   R7   (   R   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  D
  s    	c         C   s-   d } | j  d  k	 r) | d | j  7} n  | S(   NR   s	    MATCH %s(   t   matchR   (   R   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  O
  s    N((   R   R   R   R  R   R  R   R   R   R   R  R  R  R  R   R  R  R  R  R  R   R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  	  sB   				'																
						t   GenericTypeCompilerc           B   s  e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d    Z" d!   Z# d"   Z$ d#   Z% d$   Z& d%   Z' d&   Z( d'   Z) d(   Z* d)   Z+ RS(*   c         C   s   d S(   Nt   FLOAT(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_FLOATX
  s    c         C   s   d S(   Nt   REAL(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_REAL[
  s    c         C   sT   | j  d  k r d S| j d  k r4 d i | j  d 6Sd i | j  d 6| j d 6Sd  S(   Nt   NUMERICs   NUMERIC(%(precision)s)t	   precisions!   NUMERIC(%(precision)s, %(scale)s)t   scale(   R  R   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_NUMERIC^
  s    c         C   sT   | j  d  k r d S| j d  k r4 d i | j  d 6Sd i | j  d 6| j d 6Sd  S(   Nt   DECIMALs   DECIMAL(%(precision)s)R  s!   DECIMAL(%(precision)s, %(scale)s)R  (   R  R   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_DECIMALi
  s    c         C   s   d S(   Nt   INTEGER(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_INTEGERt
  s    c         C   s   d S(   Nt   SMALLINT(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_SMALLINTw
  s    c         C   s   d S(   Nt   BIGINT(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_BIGINTz
  s    c         C   s   d S(   Nt	   TIMESTAMP(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_TIMESTAMP}
  s    c         C   s   d S(   Nt   DATETIME(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_DATETIME
  s    c         C   s   d S(   Nt   DATE(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_DATE
  s    c         C   s   d S(   Nt   TIME(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_TIME
  s    c         C   s   d S(   Nt   CLOB(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_CLOB
  s    c         C   s   d S(   Nt   NCLOB(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_NCLOB
  s    c         C   sD   | } | j  r# | d | j  7} n  | j r@ | d | j 7} n  | S(   Ns   (%d)s    COLLATE "%s"(   t   lengtht	   collation(   R   R   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _render_string_type
  s    		c         C   s   |  j  | d  S(   Nt   CHAR(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_CHAR
  s    c         C   s   |  j  | d  S(   Nt   NCHAR(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_NCHAR
  s    c         C   s   |  j  | d  S(   Nt   VARCHAR(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_VARCHAR
  s    c         C   s   |  j  | d  S(   Nt   NVARCHAR(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_NVARCHAR
  s    c         C   s   |  j  | d  S(   Nt   TEXT(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_TEXT
  s    c         C   s   d S(   Nt   BLOB(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_BLOB
  s    c         C   s   d | j  r d | j  p d S(   Nt   BINARYs   (%d)R   (   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_BINARY
  s    c         C   s   d | j  r d | j  p d S(   Nt	   VARBINARYs   (%d)R   (   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_VARBINARY
  s    c         C   s   d S(   Nt   BOOLEAN(    (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_BOOLEAN
  s    c         C   s   |  j  |  S(   N(   R&  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_large_binary
  s    c         C   s   |  j  |  S(   N(   R,  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_boolean
  s    c         C   s   |  j  |  S(   N(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_time
  s    c         C   s   |  j  |  S(   N(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_datetime
  s    c         C   s   |  j  |  S(   N(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_date
  s    c         C   s   |  j  |  S(   N(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_big_integer
  s    c         C   s   |  j  |  S(   N(   R	  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_small_integer
  s    c         C   s   |  j  |  S(   N(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_integer
  s    c         C   s   |  j  |  S(   N(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_real
  s    c         C   s   |  j  |  S(   N(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_float
  s    c         C   s   |  j  |  S(   N(   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_numeric
  s    c         C   s   |  j  |  S(   N(   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_string
  s    c         C   s   |  j  |  S(   N(   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_unicode
  s    c         C   s   |  j  |  S(   N(   R$  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_text
  s    c         C   s   |  j  |  S(   N(   R$  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_unicode_text
  s    c         C   s   |  j  |  S(   N(   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
   visit_enum
  s    c         C   s   t  j d |   d  S(   NsK   Can't generate DDL for %r; did you forget to specify a type on this Column?(   R	   R  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR9  
  s    	c         C   s   |  j  | j |  j   S(   N(   R   t   type_engineR   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_type_decorator
  s    c         C   s
   | j    S(   N(   t   get_col_spec(   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   visit_user_defined
  s    (,   R   R   R  R  R  R  R  R	  R  R  R  R  R  R  R  R  R  R  R   R"  R$  R&  R(  R*  R,  R-  R.  R/  R0  R1  R2  R3  R4  R5  R6  R7  R8  R9  R:  R;  R<  R9  R>  R@  (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  V
  sT   																																										t   IdentifierPreparerc           B   s  e  Z d  Z e Z e Z e Z d d d e
 d  Z d   Z d   Z d   Z d   Z d d  Z d d  Z e d	  Z d d
  Z d d  Z d d  Z e j d  d    Z e d d  Z d d  Z e
 d d d  Z e d  Z e j d    Z d   Z  RS(   s@   Handle quoting and case-folding of identifiers based on options.t   "c         C   sS   | |  _  | |  _ | p |  j |  _ | |  _ |  j d |  _ | |  _ i  |  _ d S(   ss  Construct a new ``IdentifierPreparer`` object.

        initial_quote
          Character that begins a delimited identifier.

        final_quote
          Character that ends a delimited identifier. Defaults to
          `initial_quote`.

        omit_schema
          Prevent prepending schema name. Useful for databases that do
          not support schemae.
        i   N(   R   t   initial_quotet   final_quotet   escape_quotet   escape_to_quotet   omit_schemat   _strings(   R   R   RC  RD  RE  RG  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR   
  s    				c         C   s   | j  |  j |  j  S(   s   Escape an identifier.

        Subclasses should override this to provide database-dependent
        escaping behavior.
        (   R  RE  RF  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _escape_identifier  s    c         C   s   | j  |  j |  j  S(   s   Canonicalize an escaped identifier.

        Subclasses should override this to provide database-dependent
        unescaping behavior that reverses _escape_identifier.
        (   R  RF  RE  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _unescape_identifier  s    c         C   s   |  j  |  j |  |  j S(   s~   Quote an identifier.

        Subclasses should override this to provide database-dependent
        quoting behavior.
        (   RC  RI  RD  (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   quote_identifier#  s    c         C   sT   | j    } | |  j k pS | d |  j k pS |  j j t j |   pS | | k S(   s5   Return True if the given identifier requires quoting.i    (   Rb  t   reserved_wordst   illegal_initial_characterst   legal_charactersR  R   t	   text_type(   R   R   t   lc_value(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _requires_quotes.  s
    c         C   s   |  j  | |  S(   s   Conditionally quote a schema.

        Subclasses can override this to provide database-dependent
        quoting behavior for schema names.

        the 'force' flag should be considered deprecated.

        (   R  (   R   R    t   force(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  6  s    	c         C   s   t  | d d  } | d k r{ | |  j k r8 |  j | S|  j |  r` |  j |  |  j | <n | |  j | <|  j | Sn | r |  j |  S| Sd S(   sf   Conditionally quote an identifier.

        the 'force' flag should be considered deprecated.
        R  N(   R   R   RH  RQ  RK  (   R   R  RR  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  A  s    c         C   sR   |  j  | j  } |  j rN | rN | j d  k	 rN |  j | j  d | } n  | S(   NR  (   R  R   RG  R    R   R  (   R   Rk  R  R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  W  s
    c         C   s   |  j  | p | j  S(   N(   R  R   (   R   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  ^  s    c         C   s   |  j  | p | j  S(   N(   R  R   (   R   R  R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  a  s    c         C   s   |  j  | p | j  S(   N(   R  R  (   R   t	   savepointR   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  d  s    s   sqlalchemy.sql.namingc         C   si   t  | j t j  rY | j | | j  } | r= |  j |  St  | j t j  rY d  Sn  |  j | j  S(   N(	   R   R   R   t   _defer_namet   _constraint_name_for_tableR\   R  t   _defer_none_nameR   (   R   t   namingR   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  g  s    c         C   sj   | d k r | j } n  |  j |  } |  j rf | rf t | d d  rf |  j | j  d | } n  | S(   s'   Prepare a quoted table and schema name.R    R  N(   R   R   R  RG  R   R  R    (   R   R\   R  R   RR  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyRS  r  s    c         C   s   |  j  | |  S(   s   Prepare a quoted schema name.(   R  (   R   R   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR  }  s    c         C   s   | d k r | j } n  t | d t  sm | r] |  j | j d t d | d |  j |  S|  j |  Sn. | r |  j | j d t d | d | S| Sd S(   s   Prepare a quoted column name.R  R  R   R  N(   R   R   R   R   RS  R\   R  (   R   R   t	   use_tableR   t
   table_name(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s    -$c         C   sa   |  j  rG | rG t | d d  rG |  j | j  |  j | d t f S|  j | d t f Sd S(   s(   Format table name and schema as a tuple.R    R  N(   RG  R   R   R  R    RS  R   (   R   R\   R  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyR    s
    c         C   sr   g  |  j  |  j |  j |  j  f D] } t j |  ^ q" \ } } } t j d i | d 6| d 6| d 6 } | S(   NsM   (?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+t   initialt   finalt   escaped(   RC  RD  RI  R   R  R   (   R   R@  RZ  R[  t   escaped_finalt   r(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   _r_identifiers  s    7
c         C   sQ   |  j  } g  g  | j |  D] \ } } | p1 | ^ q D] } |  j |  ^ q8 S(   s:   Unpack 'schema.table.column'-like strings into components.(   R_  t   findallRJ  (   R   t   identifiersR^  t   at   bRq  (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   unformat_identifiers  s    	N(!   R   R   R   t   RESERVED_WORDSRL  t   LEGAL_CHARACTERSRN  t   ILLEGAL_INITIAL_CHARACTERSRM  R   R   R   RI  RJ  RK  RQ  R  R  R   R  R  R  R  R   t   dependenciesR  RS  R  R  R  R  R_  Rd  (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyRA  
  s0   						(`   R   R   R   R    R   R   R   R   t   sql_utilR   R   R   R   R	   t   decimalR   RB  RX   Re  R   t   IRf  t   rangeRP  R   Ra   Rg  t   UNICODER(  R'  R   t   symbolRo   t   and_t   or_R  t   mulR   t   divt   modt   truedivt   negt   ltt   let   net   gtt   get   eqt	   concat_opt   match_opt   in_opt   notin_opt   comma_opR6  R  t   is_t   isnotR   t   existst   distinct_opt   invt   desc_opt   asc_opt   nullsfirst_opt   nullslast_opR  t   coalesceR   R!   R"   R#   RB   RC   t   randomRw   RW   Rc   Rc  R  R  R   t	   UNION_ALLR   t
   EXCEPT_ALLR   t   INTERSECT_ALLR  t   objectR   R   t	   VisitableR   R   R  R  RA  (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyt   <module>   s   @	:
			









































c        Q