ó
H`¾Tc           @   s  d  Z  d d l 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
 m Z d d l m Z m Z m Z m Z d d l Z d	 e f d
 „  ƒ  YZ i d e 6d e 6d e 6d e 6d e 6Z d „  Z d „  Z e j e d ƒ e j e d ƒ d „  ƒ ƒ Z d S(   s5   Establish constraint and index naming conventions.


i   (   t
   Constraintt   ForeignKeyConstraintt   PrimaryKeyConstraintt   UniqueConstraintt   CheckConstraintt   Indext   Tablet   Columni   (   t   eventt   events(   t   exc(   t   _truncated_labelt   _defer_namet   _defer_none_namet   conviÿÿÿÿNt   ConventionDictc           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C   s=   | |  _  t | t ƒ |  _ | |  _ | |  _ | j |  _ d  S(   N(   t   constt
   isinstanceR   t   _is_fkt   tablet
   conventiont   namet   _const_name(   t   selfR   R   R   (    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   __init__   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/naming.pyt   _key_table_name   s    c         C   s8   |  j  r  |  j j | } | j St |  j j ƒ | Sd  S(   N(   R   R   t   elementst   parentt   listt   columns(   R   t   idxt   fk(    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt	   _column_X!   s    	c         C   sX   t  |  j t d  ƒ t f ƒ r0 t j d ƒ ‚ n  t  |  j t ƒ sQ d  |  j _	 n  |  j S(   Nsc   Naming convention including %(constraint_name)s token requires that constraint is explicitly named.(
   R   R   t   typet   NoneR   R
   t   InvalidRequestErrorR   R   R   (   R   (    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   _key_constraint_name(   s    c         C   s   |  j  | ƒ j S(   N(   R    R   (   R   R   (    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   _key_column_X_name3   s    c         C   s   |  j  | ƒ j S(   N(   R    t   _label(   R   R   (    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   _key_column_X_label6   s    c         C   sV   |  j  j d } | j j d ƒ } t | ƒ d k rF | \ } } } n | \ } } | S(   Ni    t   .i   (   R   R   t   target_fullnamet   splitt   len(   R   R   t   refst	   refschemat   reftablet   refcol(    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   _key_referred_table_name9   s    c         C   sV   |  j  j | } | j j d ƒ } t | ƒ d k rF | \ } } } n | \ } } | S(   NR(   i   (   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/naming.pyt   _key_referred_column_X_nameB   s    c         C   sÎ   | |  j  k r) |  j  | |  j |  j ƒ St |  d | ƒ rP t |  d | ƒ ƒ  St j d | ƒ } | r¾ | j d ƒ } d | j | d ƒ } t	 | ƒ } t |  | ƒ r¾ t |  | ƒ | ƒ Sn  t
 | ƒ ‚ d  S(   Ns   _key_%ss   .*_?column_(\d+)_.+i   t   _key_t   X(   R   R   R   t   hasattrt   getattrt   ret   matcht   groupt   replacet   intt   KeyError(   R   t   keyt   col_templateR   t   attr(    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   __getitem__K   s    (   t   __name__t
   __module__R   R   R    R$   R%   R'   R0   R1   R?   (    (    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyR      s   										t   ixt   pkt   ckt   uqR   c         C   sX   xQ | j  D]B } | t k r8 t | |  k r8 |  t | S| |  k r
 |  | Sq
 Wd  Sd  S(   N(   t   __mro__t   _prefix_dictR"   (   t   dict_R<   t   super_(    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   _get_conventionc   s    c      	   C   s¨   | j  } t | j t |  ƒ ƒ } t |  j t ƒ r: |  j S| d  k	 r‘ |  j d  k st t |  j t ƒ r‘ d | k r‘ t | t |  | | j ƒ ƒ St | t	 ƒ r¤ d  Sd  S(   Nt   constraint_name(
   t   metadataRJ   t   naming_conventionR!   R   R   R   R"   R   R   (   R   R   RL   R   (    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   _constraint_name_for_tablen   s    	"t   after_parent_attachc            s‡   t  | t ƒ r. t j | d ‡  f d †  ƒ nU t  | t ƒ rƒ t  ˆ  j t t f ƒ rY d  St ˆ  | ƒ } | d  k	 rƒ | ˆ  _ qƒ n  d  S(   NRO   c            s   t  ˆ  | ƒ S(   N(   t   _constraint_name(   t   colR   (   R   (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   <lambda>ˆ   s    (
   R   R   R   t   listenR   R   R   R   RN   R"   (   R   R   t   newname(    (   R   s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyRP   €   s    (   t   __doc__t   schemaR    R   R   R   R   R   R   R   t    R   R	   R
   R   R   R   R   R   R6   t   objectR   RG   RJ   RN   t   listens_forRP   (    (    (    s[   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/sql/naming.pyt   <module>   s    :"E
		