
    ؄_/                     d    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	 G d	 d
e          Z
e
ZdS )a}  
.. 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.Engine` by
default.

    N)warn_deprecated   )MySQLDialect_mysqldb   NullPoolc                  h    t           j                            dd                              d          S )NSERVER_SOFTWARE zDevelopment/)osenvironget
startswith     g/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/dialects/mysql/gaerdbms.py_is_dev_environmentr   +   s'    :>>+R00;;NKKKr   c                   F    e Zd Zed             Zed             Zd Zd ZdS )MySQLDialect_gaerdbmsc                     t          d           ddlm} t                      rddlm} |S |j                            d          rddlm} |S ddlm	} |S )NzGoogle Cloud SQL now recommends creating connections via the MySQLdb dialect directly, using the URL format mysql+mysqldb://root@/<dbname>?unix_socket=/cloudsql/<projectid>:<instancename>r   )apiproxy_stub_map)rdbms_mysqldbrdbms)rdbms_apiproxy)rdbms_googleapi)
r   google.appengine.apir   r   r   apiproxyGetStub!google.storage.speckle.python.apir   r   )clsr   r   r   r   s        r   dbapizMySQLDialect_gaerdbms.dbapi0   s     	)	
 	
 	
 	;:::::   	#::::::  '//88 	#HHHHHH!!IIIIII""r   c                     t           S )Nr   )r    urls     r   get_pool_classz$MySQLDialect_gaerdbms.get_pool_classO   s	     r   c                 x    |                                 }t                      sd|d<   |j        d         |d<   g |fS )Nr   dsninstance)translate_connect_argsr   query)selfr#   optss      r   create_connect_argsz)MySQLDialect_gaerdbms.create_connect_argsT   sF    ))++"$$ 	5 DK"y4D4xr   c                     t          j        d                              t          |                    }|r*|                    d          p|                    d          nd }|rt          |          S d S )Nz^(\d+)L?:|^\((\d+)L?,r      )recompilematchstrgroupint)r*   	exceptionr1   codes       r   _extract_error_codez)MySQLDialect_gaerdbms._extract_error_code]   sl    
344::3y>>JJ 49Bu{{1~~/Qd 	t99	 	r   N)__name__
__module____qualname__classmethodr!   r$   r,   r7   r   r   r   r   r   /   sf        # # [#<   [      r   r   )__doc__r   r/   sqlalchemy.utilr   mysqldbr   poolr   r   r   dialectr   r   r   <module>rA      s    8 
			 				 + + + + + + ) ) ) ) ) )      L L L4 4 4 4 40 4 4 4n  r   