ó
¿b›]c           @   sr  d  d l  Z  d  d l Z d d l m Z d d l m Z d d l m Z d d l m Z d d l	 m
 Z
 d d l	 m Z d d	 l m Z d
 d l m Z d
 d l m Z d
 d l m Z d
 d l m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e e j f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿNi   (   t
   assertions(   t   config(   t   schema(   t   drop_all_tables(   t   BasicEntity(   t   ComparableEntity(   t   adicti   (   t   event(   t   util(   t   declarative_base(   t   DeclarativeMetat   TestBasec           B   sD   e  Z d Z d Z d Z d Z d Z d d  „ Z d „  Z	 d „  Z
 RS(   c         C   s   | s t  | ƒ ‚ d  S(   N(   t   AssertionError(   t   selft   valt   msg(    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   assert_/   s    c         C   s    t  |  d ƒ r |  j ƒ  n  d  S(   Nt   setUp(   t   hasattrR   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   setup3   s    c         C   s    t  |  d ƒ r |  j ƒ  n  d  S(   Nt   tearDown(   R   R   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   teardown7   s    (    (    (    N(   t   __name__t
   __module__t   __whitelist__t   __requires__t   __unsupported_on__t   Nonet   __only_on__t   __skip_if__R   R   R   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR      s   	t
   TablesTestc           B   s7  e  Z d  Z d  Z d  Z d Z d Z d Z d Z	 d Z
 d Z d Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z d „  Z d „  Z e d „  ƒ Z  RS(   t   oncet   eachc         C   s"   |  j  ƒ  |  j ƒ  |  j ƒ  d  S(   N(   t   _init_classt   _setup_once_tablest   _setup_once_inserts(   t   cls(    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   setup_classU   s    

c         C   s‹   |  j  d k rB |  j d k r* d |  _ n  |  j d k sB t ‚ n  t ƒ  |  _ t ƒ  |  _ |  j ƒ  |  _	 t
 j ƒ  |  _ |  j	 |  j _	 d  S(   NR    R   (   R    N(   t   run_define_tablest   run_create_tablest   run_insertsR   R   R   t   othert   tablest
   setup_bindt   bindt   sat   MetaDatat   metadata(   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR!   ]   s    c         C   s*   |  j  d k r& |  j ƒ  |  j ƒ  n  d  S(   NR   (   R(   t   _load_fixturest   insert_data(   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR#   k   s    
c         C   sa   |  j  d k r] |  j |  j ƒ |  j d k rD |  j j |  j ƒ n  |  j j |  j j ƒ n  d  S(   NR   (   R&   t   define_tablesR/   R'   t
   create_allR,   R*   t   update(   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR"   q   s
    c         C   sØ   |  j  d k rœ |  j j ƒ  |  j d k rA t |  j |  j ƒ n  |  j j ƒ  |  j |  j ƒ |  j d k rƒ |  j j |  j ƒ n  |  j j	 |  j j ƒ n8 |  j d k rÔ t |  j |  j ƒ |  j j |  j ƒ n  d  S(   NR    (
   R&   R*   t   clearR'   R   R/   R,   R2   R3   R4   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   _setup_each_tablesy   s    c         C   s*   |  j  d k r& |  j ƒ  |  j ƒ  n  d  S(   NR    (   R(   R0   R1   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   _setup_each_inserts‡   s    
c      
   C   s­   |  j  d k r© |  j d k r© |  j j ƒ  w } xm t |  j j ƒ D]Y } y | j | j ƒ  ƒ WqC t	 j
 j k
 r› } t j d | | f d t j ƒqC XqC WWd  QXn  d  S(   NR    s   Error emptying table %s: %rt   file(   R&   t   run_deletesR,   t   connectt   reversedR/   t   sorted_tablest   executet   deleteR-   t   exct
   DBAPIErrorR   t   print_t   syst   stderr(   R   t   connt   tablet   ex(    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   _teardown_each_tablesŒ   s    c         C   s   |  j  ƒ  |  j ƒ  d  S(   N(   R6   R7   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR   ™   s    
c         C   s   |  j  ƒ  d  S(   N(   RG   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR      s    c         C   sl   |  j  r t |  j |  j ƒ n  |  j d k rA |  j |  j ƒ n  d  |  j _ |  j d  k	 rh d  |  _ n  d  S(   NR   (   R'   R   R/   R,   t   run_dispose_bindt   dispose_bindR   t   run_setup_bind(   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   _teardown_once_metadata_bind    s    	c         C   s   |  j  ƒ  d  S(   N(   RK   (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   teardown_class­   s    c         C   s   t  j S(   N(   R   t   db(   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR+   ±   s    c         C   s<   t  | d ƒ r | j ƒ  n t  | d ƒ r8 | j ƒ  n  d  S(   Nt   disposet   close(   R   RN   RO   (   R$   R,   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRI   µ   s    c         C   s   d  S(   N(    (   R$   R/   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR2   ¼   s    c         C   s   i  S(   N(    (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   fixturesÀ   s    c         C   s   d  S(   N(    (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR1   Ä   s    c         C   s   |  j  |  j | | ƒ d  S(   N(   t   assert_sql_countR,   (   R   t   countt   fn(    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt
   sql_count_È   s    c         C   s   |  j  |  j | | ƒ d  S(   N(   t
   assert_sqlR,   (   R   t	   callable_t
   statements(    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   sql_eq_Ë   s    c      	   C   sö   i  i  } } xv |  j  ƒ  j ƒ  D]b \ } } t | ƒ d k  rD q  n  t | t j ƒ rf |  j | } n  | d | | <| d | | <q  Wxi |  j j D][ } | | k r« q“ n  |  j	 j
 | j ƒ  g  | | D] } t t | | | ƒ ƒ ^ qÈ ƒ q“ Wd S(   s4   Insert rows as represented by the fixtures() method.i   i    i   N(   RP   t   itemst   lent
   isinstanceR   t   string_typesR*   R/   R<   R,   R=   t   insertt   dictt   zip(   R$   t   headerst   rowsRE   t   datat   column_values(    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR0   Î   s    		N(!   R   R   RJ   R&   R'   R(   R9   R   RH   R,   R/   R*   R)   t   classmethodR%   R!   R#   R"   R6   R7   RG   R   R   RK   RL   R+   RI   R2   RP   R1   RT   RX   R0   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR   <   s:   							t   RemovesEventsc           B   s,   e  Z e j d  „  ƒ Z d „  Z d „  Z RS(   c         C   s   t  ƒ  S(   N(   t   set(   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt
   _event_fnsæ   s    c         K   s3   |  j  j | | | f ƒ t j | | | |  d  S(   N(   Rg   t   addR   t   listen(   R   t   targett   nameRS   t   kw(    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   event_listenê   s    c         C   sP   x |  j  D] } t j | Œ  q
 Wt t |  ƒ } t | d ƒ rL | j ƒ  n  d  S(   NR   (   Rg   R   t   removet   superRe   R   R   (   R   t   keyt   super_(    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR   î   s
    (   R   R   R   t   memoized_propertyRg   Rm   R   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRe   å   s   	t   _ORMTestc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s!   t  j j j ƒ  t  j j ƒ  d  S(   N(   R-   t   ormt   sessiont   close_all_sessionst   clear_mappers(   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRL   ÷   s    (   R   R   Rd   RL   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRs   ö   s   t   ORMTestc           B   s   e  Z RS(    (   R   R   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRx   ý   s   t
   MappedTestc           B   sÈ   e  Z d  Z d Z d Z e d „  ƒ Z e d „  ƒ Z d „  Z	 d „  Z
 e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z d	 „  Z d
 „  Z e d „  ƒ Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z RS(   R   R    c         C   sT   |  j  ƒ  |  j d  k r( t ƒ  |  _ n  |  j ƒ  |  j ƒ  |  j ƒ  |  j ƒ  d  S(   N(   R!   t   classesR   R   R"   t   _setup_once_classest   _setup_once_mappersR#   (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR%   
  s    



c         C   s   |  j  ƒ  |  j ƒ  d  S(   N(   t   _teardown_once_classRK   (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRL     s    
c         C   s,   |  j  ƒ  |  j ƒ  |  j ƒ  |  j ƒ  d  S(   N(   R6   t   _setup_each_classest   _setup_each_mappersR7   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR     s    


c         C   s2   t  j j j ƒ  |  j ƒ  |  j ƒ  |  j ƒ  d  S(   N(   R-   Rt   Ru   Rv   t   _teardown_each_mapperst   _teardown_each_classesRG   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR   !  s    

c         C   s   |  j  j ƒ  t j ƒ  d  S(   N(   Rz   R5   Rs   RL   (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR}   '  s    c         C   s&   |  j  d k r" |  j |  j ƒ n  d  S(   NR   (   t   run_setup_classest   _with_register_classest   setup_classes(   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR{   ,  s    c         C   s&   |  j  d k r" |  j |  j ƒ n  d  S(   NR   (   t   run_setup_mappersRƒ   t   setup_mappers(   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR|   1  s    c         C   s&   |  j  d k r" |  j |  j ƒ n  d  S(   NR    (   R…   Rƒ   R†   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR   6  s    c         C   s&   |  j  d k r" |  j |  j ƒ n  d  S(   NR    (   R‚   Rƒ   R„   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR~   :  s    c            s–   |  j  ‰  d t f ‡  f d †  ƒ  Y} d t j | t ƒ f d „  ƒ  Y} d t | f d „  ƒ  Y} d t | f d „  ƒ  Y} | |  _ | |  _ | ƒ  d	 S(
   s¥   Run a setup method, framing the operation with a Base class
        that will catch new subclasses to be established within
        the "classes" registry.

        t   FindFixturec              s   e  Z ‡  f d  †  Z RS(   c            s    |  ˆ  | <t  j |  | | | ƒ S(   N(   t   typet   __init__(   R$   t	   classnamet   basest   dict_(   t   cls_registry(    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR‰   H  s    
(   R   R   R‰   (    (   R   (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR‡   G  s   t   _Basec           B   s   e  Z RS(    (   R   R   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRŽ   L  s   t   Basicc           B   s   e  Z RS(    (   R   R   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR   O  s   t
   Comparablec           B   s   e  Z RS(    (   R   R   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR   R  s   N(	   Rz   Rˆ   R   t   with_metaclasst   objectR   R   R   R   (   R$   RS   R‡   RŽ   R   R   (    (   R   s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRƒ   >  s    	"		c         C   s#   |  j  d k r t j j ƒ  n  d  S(   NR   (   R…   R-   Rt   Rw   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR€   Y  s    c         C   s#   |  j  d k r |  j j ƒ  n  d  S(   NR   (   R‚   Rz   R5   (   R   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR   `  s    c         C   s   d  S(   N(    (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR„   d  s    c         C   s   d  S(   N(    (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR†   h  s    N(   R   R   R‚   R…   R   Rz   Rd   R%   RL   R   R   R}   R{   R|   R   R~   Rƒ   R€   R   R„   R†   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRy     s"   						t   DeclarativeMappedTestc           B   s2   e  Z d  Z d  Z e d „  ƒ Z e d „  ƒ Z RS(   R   c         C   s   d  S(   N(    (   R$   (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR"   q  s    c            s˜   |  j  ‰  d t f ‡  f d †  ƒ  Y} d t f d „  ƒ  Y} t d |  j d | d | ƒ } | |  _ | ƒ  |  j j r” |  j r” |  j j t	 j
 ƒ n  d  S(   Nt   FindFixtureDeclarativec              s   e  Z ‡  f d  †  Z RS(   c            s    |  ˆ  | <t  j |  | | | ƒ S(   N(   R
   R‰   (   R$   RŠ   R‹   RŒ   (   R   (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR‰   z  s    
(   R   R   R‰   (    (   R   (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR”   y  s   t   DeclarativeBasicc           B   s   e  Z e j Z RS(    (   R   R   R   t   Tablet   __table_cls__(    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR•   ~  s   R/   t	   metaclassR$   (   Rz   R
   R’   R	   R/   R•   R*   R'   R3   R   RM   (   R$   RS   R”   R•   t	   _DeclBase(    (   R   s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyRƒ   u  s    				(   R   R   R‚   R…   Rd   R"   Rƒ   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyR“   m  s   (   RB   t
   sqlalchemyR-   t    R    R   R   t   enginesR   t   entitiesR   R   R   R   R   t   ext.declarativeR	   R
   R’   R   R   Re   Rs   Rx   t   AssertsExecutionResultsRy   R“   (    (    (    s:   lib/python2.7/site-packages/sqlalchemy/testing/fixtures.pyt   <module>   s&    ©l