ó
¿b›]c           @   sw   d  Z  d d l Z d d l Z d d l m Z d d l m Z d d l m Z d „  Z	 d	 e f d
 „  ƒ  YZ
 e
 Z d S(   sv  
.. dialect:: mysql+gaerdbms
    :name: Google Cloud SQL
    :dbapi: rdbms
    :connectstring: mysql+gaerdbms:///<dbname>?instance=<instancename>
    :url: https://developers.google.com/appengine/docs/python/cloud-sql/developers-guide

    This dialect is based primarily on the :mod:`.mysql.mysqldb` dialect with
    minimal changes.

    .. deprecated:: 1.0 This dialect is **no longer necessary** for
        Google Cloud SQL; the MySQLdb dialect can be used directly.
        Cloud SQL now recommends creating connections via the
        mysql dialect using the URL format

        ``mysql+mysqldb://root@/<dbname>?unix_socket=/cloudsql/<projectid>:<instancename>``


Pooling
-------

Google App Engine connections appear to be randomly recycled,
so the dialect does not pool connections.  The :class:`.NullPool`
implementation is installed within the :class:`.Engine` by
default.

iÿÿÿÿN(   t   warn_deprecatedi   (   t   MySQLDialect_mysqldbi   (   t   NullPoolc           C   s   t  j j d d ƒ j d ƒ S(   Nt   SERVER_SOFTWAREt    s   Development/(   t   ost   environt   gett
   startswith(    (    (    sA   lib/python2.7/site-packages/sqlalchemy/dialects/mysql/gaerdbms.pyt   _is_dev_environment+   s    t   MySQLDialect_gaerdbmsc           B   s8   e  Z e d  „  ƒ Z e d „  ƒ Z d „  Z d „  Z RS(   c         C   su   t  d ƒ d d l m } t ƒ  r7 d d l m } | S| j j d ƒ r] d d l m } | Sd d l m	 } | Sd  S(   Ns»   Google Cloud SQL now recommends creating connections via the MySQLdb dialect directly, using the URL format mysql+mysqldb://root@/<dbname>?unix_socket=/cloudsql/<projectid>:<instancename>iÿÿÿÿ(   t   apiproxy_stub_map(   t   rdbms_mysqldbt   rdbms(   t   rdbms_apiproxy(   t   rdbms_googleapi(
   R    t   google.appengine.apiR   R	   R   t   apiproxyt   GetStubt!   google.storage.speckle.python.apiR   R   (   t   clsR   R   R   R   (    (    sA   lib/python2.7/site-packages/sqlalchemy/dialects/mysql/gaerdbms.pyt   dbapi0   s    	c         C   s   t  S(   N(   R   (   R   t   url(    (    sA   lib/python2.7/site-packages/sqlalchemy/dialects/mysql/gaerdbms.pyt   get_pool_classO   s    c         C   s=   | j  ƒ  } t ƒ  s3 d | d <| j d | d <n  g  | f S(   NR   t   dsnt   instance(   t   translate_connect_argsR	   t   query(   t   selfR   t   opts(    (    sA   lib/python2.7/site-packages/sqlalchemy/dialects/mysql/gaerdbms.pyt   create_connect_argsT   s
    	
c         C   s\   t  j d ƒ j t | ƒ ƒ } | rB | j d ƒ pE | j d ƒ n d  } | rX t | ƒ Sd  S(   Ns   ^(\d+)L?:|^\((\d+)L?,i   i   (   t   ret   compilet   matcht   strt   groupt   Nonet   int(   R   t	   exceptionR!   t   code(    (    sA   lib/python2.7/site-packages/sqlalchemy/dialects/mysql/gaerdbms.pyt   _extract_error_code]   s    *(   t   __name__t
   __module__t   classmethodR   R   R   R(   (    (    (    sA   lib/python2.7/site-packages/sqlalchemy/dialects/mysql/gaerdbms.pyR
   /   s   		(   t   __doc__R   R   t   sqlalchemy.utilR    t   mysqldbR   t   poolR   R	   R
   t   dialect(    (    (    sA   lib/python2.7/site-packages/sqlalchemy/dialects/mysql/gaerdbms.pyt   <module>!   s   	7