
H`Tc           @   sP  d  d l  Z d  d l  m Z d  d l  m Z d  d l  m Z d  d l  m Z m Z m	 Z	 d  d l
 m Z d  d l m Z m Z d  d l m Z m Z d  d	 l m Z m Z d  d
 l  m Z d d l m Z d  d l Z d  d l m Z m Z d  d l  m Z e e f \ Z Z d e j f d     YZ  d e j f d     YZ! d d f Z" d S(   iN(   t   exc(   t   types(   t   inspect(   t   MetaDatat   Integert   String(   t	   Inspector(   t   enginest   fixtures(   t   Tablet   Column(   t   eq_t   assert_raises_message(   t   testingi   (   t   config(   t   DDLt   Index(   t   eventt   HasTableTestc           B   s&   e  Z e Z e d     Z d   Z RS(   c         C   s5   t  d | t d t d t t d t d    d  S(   Nt
   test_tablet   idt   primary_keyt   datai2   (   R	   R
   R   t   TrueR   (   t   clst   metadata(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   define_tables   s    	c         C   sY   t  j j   D } t  j j j | d  s0 t  t  j j j | d  sO t  Wd  QXd  S(   NR   t   nonexistent_table(   R   t   dbt   begint   dialectt	   has_tablet   AssertionError(   t   selft   conn(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_has_table   s    (   t   __name__t
   __module__R   t   __backend__t   classmethodR   R#   (    (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyR      s   t   ComponentReflectionTestc           B   s5  e  Z d. Z Z e Z e d     Z e d    Z	 e d    Z
 e d    Z e j j d    Z e j j d    Z e j j d    Z e j d. d d. d   Z e j j d	    Z e j j e j j d
     Z e j j e j j d     Z e j j d    Z e j j e j j d     Z e j j e j j d     Z d. d d  Z e j j d    Z e j d    Z  e j j d    Z! e j j d    Z" e j j e j d     Z# e j j e j j d     Z$ e j j d    Z% e j j e j j d     Z& e j d. d   Z' e j j( d    Z) e j j e j j( e j j d      Z* e j j e j d     Z+ e j d. d   Z, e j j d    Z- e j j e j j d     Z. e j d. d   Z/ e j j0 d     Z1 e j j0 e j j d!     Z2 e j j3 d"    Z4 e j j3 e j j d#     Z5 e j d. d$   Z6 e j d. d%   Z7 e j j8 d&    Z9 e j j8 e j j d'     Z: e j; d( d)  e j d. d*    Z< d+   Z= e j j d,    Z> e j j e j d-     Z? RS(/   c         C   s6   |  j  | d   t j j j r2 |  j  | d  n  d  S(   Nt   test_schema(   t   define_reflected_tablest   NoneR   t   requirest   schemast   enabled(   R   R   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyR   *   s    c         C   s0  | r | d } n d } t  j j j r t d | t d t j d t t d t j	 d  d t
 t d	 t j d  d t
 t d
 t j t j d |   d | d t } nf t d | t d t j d t t d t j	 d  d t
 t d	 t j d  d t
 d | d t } t d | t d t j d t t d t j t j d |   t d t j d   d | d t t d | t d t j  t d t j t j | j j   t d t j d   t j d d d d | d t t  j j j r
|  j | |  n  t  j j j r,|  j | |  n  d  S(   Nt   .t    t   userst   user_idR   t   test1i   t   nullablet   test2t   parent_user_ids   %susers.user_idt   schemat   test_needs_fkt
   dingalingst   dingaling_idt
   address_ids   %semail_addresses.address_idR   i   t   email_addressest   remote_user_idt   email_addressi   t   namet   email_ad_pk(   R   R,   t   self_referential_foreign_keysR.   R	   R
   t   sat   INTR   t   CHARt   Falset   FloatR   t
   ForeignKeyR   t   cR2   t   PrimaryKeyConstraintt   index_reflectiont   define_indext   view_column_reflectiont   define_views(   R   R   R7   t   schema_prefixR1   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyR*   0   sN    						
	c         C   sE   t  d | j j | j j  t  d | j j | j j | j j  d  S(   Nt   users_t_idxt   users_all_idx(   R   RH   R3   R5   R2   (   R   R   R1   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyRK   c   s    c         C   s   x} d	 D]u } | } | r, d | | f } n  | d } d | | f } t  j | d t |   t  j | d t d |   q Wd  S(
   NR1   R<   s   %s.%st   _vs"   CREATE VIEW %s AS SELECT * FROM %st   after_createt   before_drops   DROP VIEW %s(   s   userss   email_addresses(   R   t   listenR   (   R   R   R7   t
   table_namet   fullnamet	   view_namet   query(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyRM   h   s    
c         C   s,   t  t j  } |  j d | j   k  d  S(   NR)   (   R   R   R   t   assert_t   get_schema_names(   R!   t   insp(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_schema_names}   s    c         C   sK   t  j   } t | j d  s% t  t |  t | j d  sG t  d  S(   Nt   default_schema_name(   R   t   testing_enginet   hasattrR   R    R   (   R!   t   engine(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_dialect_initialize   s    
c         C   s,   t  t j  } t | j t j j j  d  S(   N(   R   R   R   R   R]   R   (   R!   R[   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_default_schema_name   s    t   tablec         C   s   |  j  } |  j j |  j j |  j j } } } t | j  } | d k r | j |  }	 |	 j   d d g }
 t	 t
 |	  |
  nb | j | d | }	 | d k r d d d g }
 t	 |	 |
  n" d d d g }
 t	 t
 |	  |
  d  S(	   Nt   viewt   email_addresses_vt   users_vt   order_byt   foreign_keyR1   R<   R9   (   R   t   tablesR1   R<   R9   R   t   bindt   get_view_namest   sortR   t   sortedt   get_table_names(   R!   R7   t
   table_typeRg   t   metaR1   t	   addressesR9   R[   t   table_namest   answer(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   _test_get_table_names   s     		
	c         C   s   |  j    d  S(   N(   Rt   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_table_names   s    c         C   s   |  j  d d  d  S(   NRg   Rh   (   Rt   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_table_names_fks   s    c         C   s   |  j  d  d  S(   NR)   (   Rt   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt    test_get_table_names_with_schema   s    c         C   s   |  j  d d  d  S(   NRo   Rd   (   Rt   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_view_names   s    c         C   s   |  j  d d d d  S(   NR)   Ro   Rd   (   Rt   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_view_names_with_schema   s    c         C   s   |  j    |  j  d d  d  S(   NRo   Rd   (   Rt   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_tables_and_views   s    
c         C   s   t  t j  } |  j j |  j j |  j j } } } d d g } | d k r\ d d g } n  t | j  } xt	 | | | f  D]\ }	 }
 | } | j
 |	 d | } |  j t |  d k t |   xKt |
 j  D]:\ } } t | j | | d  | | d	 j } | j } t | t j j  r9| j } n  t j d
  rl| t j t j f k rlt j } n  |  j t t | j  j | j  j t j t j t j t j t j  t j! t j" g   d k d | j | j | | d | f  | j# s | | d d  k st%  q q Wq Wd  S(   NR1   R<   Rd   Rf   Re   R7   i    R?   t   typet   oracles   %s(%s), %s(%s)t   default(&   R   R   R   Ri   R1   R<   R9   R   Rj   t   zipt   get_columnsRY   t   lent	   enumeratet   columnsR   R?   t	   __class__R{   t
   isinstanceRB   R   t
   TypeEnginet   againstt	   sql_typest   Datet   DateTimet   sett   __mro__t   intersectionR   t   Numerict   TimeR   t   _BinaryR   R+   R    (   R!   R7   Ro   Rp   R1   Rq   R9   Rr   R[   RU   Rc   t   schema_namet   colst   it   colt   ctypet	   ctype_def(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   _test_get_columns   sD    	"		"	c         C   s   |  j    d  S(   N(   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_columns   s    c         G   s{   t  d |  j g  t |  D] \ } } t d | |  ^ q  } | j   g  t |  j j  j d  D] } | d ^ qg S(   Nt   ts   t%dR{   (   R	   R   R   R
   t   createR   Rj   R   (   R!   R   R   t   type_R   RH   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   _type_round_trip   s    2
c         C   sb   x[ |  j  t j d d   D]> } t | t j  s: t  t | j d  t | j d  q Wd  S(   Ni   i   (   R   R   R   R   R    R   t	   precisiont   scale(   R!   t   typ(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_numeric_reflection  s
    	c         C   sH   |  j  t j d   d } t | t j  s4 t  t | j d  d  S(   Ni4   i    (   R   R   R   R   R    R   t   length(   R!   R   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_varchar_reflection  s    c      	   C   s   t  d |  j t d t d t t d t d t  } | j   t t d   t	 |  j j
  j d  D  i t d 6t d 6 d  S(   NR   t   aR4   t   bc         s   s#   |  ] } | d  | d f Vq d S(   R?   R4   N(    (   t   .0R   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pys	   <genexpr>  s   (   R	   R   R
   R   R   RE   R   R   t   dictR   Rj   R   (   R!   R   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_nullable_reflection  s    
c         C   s   |  j  d d  d  S(   NR7   R)   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_columns_with_schema#  s    c         C   s   |  j  d d  d  S(   NRo   Rd   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_view_columns(  s    c         C   s   |  j  d d d d  d  S(   NR7   R)   Ro   Rd   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt!   test_get_view_columns_with_schema,  s    c   
      C   s   |  j  } |  j j |  j j } } t | j  } | j | j d | } | d } t | d g  | j | j d | } | d }	 t |	 d g  t	 j
 j j    t | d d  Wd  QXd  S(   NR7   t   constrained_columnsR2   R;   R?   R@   (   R   Ri   R1   R<   R   Rj   t   get_pk_constraintR?   R   R   R,   t   reflects_pk_namest   fail_if(
   R!   R7   Rp   R1   Rq   R[   t
   users_const   users_pkeyst	   addr_const
   addr_pkeys(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   _test_get_pk_constraint1  s    	

c         C   s   |  j    d  S(   N(   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_pk_constraintB  s    c         C   s   |  j  d d  d  S(   NR7   R)   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt"   test_get_pk_constraint_with_schemaF  s    c         C   sD   |  j  } |  j j } t | j  } t t j d | j | j	  d  S(   NsK   Call to deprecated method get_primary_keys.  Use get_pk_constraint instead.(
   R   Ri   R1   R   Rj   R   t   sa_exct   SADeprecationWarningt   get_primary_keysR?   (   R!   Rp   R1   R[   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt    test_deprecated_get_primary_keysL  s    	c         C   s  |  j  } |  j j |  j j |  j j } } } t | j  } | } t j j	 j
 r| j | j d | } | d }	 t j j j    |  j |	 d d  k	  Wd  QXt |	 d |  t |	 d | j  t |	 d d g  t j j	 j
 rt |	 d d	 g  qn  | j | j d | }
 |
 d }	 t j j j    |  j |	 d d  k	  Wd  QXt |	 d |  t |	 d | j  t |	 d d g  t |	 d d
 g  d  S(   NR7   i    R?   t   referred_schemat   referred_tablet   referred_columnsR2   R   R6   R=   (   R   Ri   R1   R<   R9   R   Rj   R   R,   RA   R.   t   get_foreign_keysR?   t   named_constraintsR   RY   R+   R   (   R!   R7   Rp   R1   Rq   R9   R[   t   expected_schemat   users_fkeyst   fkey1t
   addr_fkeys(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   _test_get_foreign_keysY  s2    			
	
c         C   s   |  j    d  S(   N(   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_foreign_keys}  s    c         C   s   |  j  d d  d  S(   NR7   R)   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt!   test_get_foreign_keys_with_schema  s    c         C   s  |  j  } |  j j |  j j |  j j } } } t | j  } | j d d | } i t d 6d d g d 6d d 6i t d 6d	 d d g d 6d
 d 6g } g  | D] }	 |	 d ^ q }
 xa | D]Y } | d |
 k s t	  | |
 j
 | d  } x# | D] } t | | | |  q Wq Wd  S(   NR1   R7   t   uniqueR3   R5   t   column_namesRO   R?   R2   RP   (   R   Ri   R1   R<   R9   R   Rj   t   get_indexesRE   R    t   indexR   (   R!   R7   Rp   R1   Rq   R9   R[   t   indexest   expected_indexest   dt   index_namest   e_indexR   t   key(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   _test_get_indexes  s"    		

c         C   s   |  j    d  S(   N(   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_indexes  s    c         C   s   |  j  d d  d  S(   NR7   R)   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_indexes_with_schema  s    c         C   s   |  j    d  S(   N(   t   _test_get_unique_constraints(   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_unique_constraints  s    c         C   s   |  j  d d  d  S(   NR7   R)   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt'   test_get_unique_constraints_with_schema  s    c   
      C   s  t  i d d 6d g d 6i d d 6d d d g d 6i d d 6d d d g d 6i d	 d 6d
 d g d 6g d t j d  } |  j } t d | t d t j d   t d t j d   t d t j  t d
 t j d   t d t j d   d | } x2 | D]* } | j	 t j
 d | d | d   qW| j   t | j  } t  | j d d | d t j d  } x* t | |  D] \ } }	 t | |	  qWd  S(   Nt   unique_aR?   R   R   t   unique_a_b_cR   RH   t   unique_c_a_bt   unique_asc_keyt   ascR   t   testtbli   i   R7   (   Rm   t   operatort
   itemgetterR   R	   R
   RB   R   R   t   append_constraintt   UniqueConstraintt
   create_allR   Rj   t   get_unique_constraintsR~   R   (
   R!   R7   t   uniquest	   orig_metaRc   t   uct	   inspectort	   reflectedt   origt   refl(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyR     s2    		"
c         C   s   |  j  } |  j j |  j j |  j j } } } d } d } t | j  } | j | d | }	 |  j |	  | j | d | }
 |  j |
  d  S(   NRf   Re   R7   (	   R   Ri   R1   R<   R9   R   Rj   t   get_view_definitionRY   (   R!   R7   Rp   R1   Rq   R9   t
   view_name1t
   view_name2R[   t   v1t   v2(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   _test_get_view_definition  s    		c         C   s   |  j    d  S(   N(   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_view_definition  s    c         C   s   |  j  d d  d  S(   NR7   R)   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt$   test_get_view_definition_with_schema  s    t
   postgresqls   PG specific featurec   	      C   sj   |  j  } |  j j |  j j |  j j } } } t | j  } | j | |  } |  j t	 | t
   d  S(   N(   R   Ri   R1   R<   R9   R   Rj   t   get_table_oidRY   R   t   int(	   R!   RU   R7   Rp   R1   Rq   R9   R[   t   oid(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   _test_get_table_oid  s    		c         C   s   |  j  d  d  S(   NR1   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_table_oid  s    c         C   s   |  j  d d d d  S(   NR1   R7   R)   (   R   (   R!   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_get_table_oid_with_schema  s    c         C   s}   |  j  } t | j  } x^ d
 d d g D]M \ } } | j |  } t d   | D  | } | j d t  s( t  q( Wd	 S(   s  test that 'autoincrement' is reflected according to sqla's policy.

        Don't mark this test as unsupported for any backend !

        (technically it fails with MySQL InnoDB since "id" comes before "id2")

        A backend is better off not returning "autoincrement" at all,
        instead of potentially returning "False" for an auto-incrementing
        primary key column.

        R1   R2   R<   R;   R9   R:   c         s   s   |  ] } | d  | f Vq d S(   R?   N(    (   R   RH   (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pys	   <genexpr>  s    t   autoincrementN(   s   userss   user_id(   s   email_addressess
   address_id(   s
   dingalingss   dingaling_id(   R   R   Rj   R   R   t   getR   R    (   R!   Rp   R[   t   tnamet   cnameR   t   id_(    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   test_autoincrement_col  s    	N(@   R$   R%   R+   t   run_insertst   run_deletesR   R&   R'   R   R*   RK   RM   R   R,   t   schema_reflectionR\   Ra   Rb   t   provide_metadataRt   t   table_reflectionRu   t!   foreign_key_constraint_reflectionRv   R-   Rw   RL   Rx   Ry   Rz   R   R   R   R   R   R   R   R   R   R   t!   primary_key_constraint_reflectionR   R   R   R   R   R   R   RJ   R   R   t   unique_constraint_reflectionR   R   R   R   t   view_reflectionR   R   t   only_onR   R   R   R   (    (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyR(   %   s   
3				0							#			$			(#   t
   sqlalchemyRB   R    R   R   R   R   R   R   R   t   sqlalchemy.engine.reflectionR   t   sqlalchemy.testingR   R   t   sqlalchemy.testing.schemaR	   R
   R   R   R   R0   R   R   t   sqlalchemy.schemaR   R   R   R+   R   R1   t
   TablesTestR   R(   t   __all__(    (    (    sn   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/testing/suite/test_reflection.pyt   <module>   s$    