§
    
 @g�  ã                   óJ   — d Z ddlZddlmZ ddlmZ  G d„ de¦  «        ZeZdS )	a4  
.. dialect:: oracle+oracledb
    :name: python-oracledb
    :dbapi: oracledb
    :connectstring: oracle+oracledb://user:pass@hostname:port[/dbname][?service_name=<service>[&key=value&key=value...]]
    :url: https://oracle.github.io/python-oracledb/

python-oracledb is released by Oracle to supersede the cx_Oracle driver.
It is fully compatible with cx_Oracle and features both a "thin" client
mode that requires no dependencies, as well as a "thick" mode that uses
the Oracle Client Interface in the same way as cx_Oracle.

.. seealso::

    :ref:`cx_oracle` - all of cx_Oracle's notes apply to the oracledb driver
    as well.

Thick mode support
------------------

By default the ``python-oracledb`` is started in thin mode, that does not
require oracle client libraries to be installed in the system. The
``python-oracledb`` driver also support a "thick" mode, that behaves
similarly to ``cx_oracle`` and requires that Oracle Client Interface (OCI)
is installed.

To enable this mode, the user may call ``oracledb.init_oracle_client``
manually, or by passing the parameter ``thick_mode=True`` to
:func:`_sa.create_engine`. To pass custom arguments to ``init_oracle_client``,
like the ``lib_dir`` path, a dict may be passed to this parameter, as in::

    engine = sa.create_engine("oracle+oracledb://...", thick_mode={
        "lib_dir": "/path/to/oracle/client/lib", "driver_name": "my-app"
    })

.. seealso::

    https://python-oracledb.readthedocs.io/en/latest/api_manual/module.html#oracledb.init_oracle_client


.. versionadded:: 2.0.0 added support for oracledb driver.

é    Né   )ÚOracleDialect_cx_oracleé   )Úexcc                   ód   ‡ — e Zd ZdZdZ	 	 	 	 	 d	ˆ fd„	Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	ˆ xZ
S )
ÚOracleDialect_oracledbTÚoracledbé2   Nc                 óÜ   •—  t          ¦   «         j        ||||fi |¤Ž | j        �D|st          |t          ¦  «        r/t          |t          ¦  «        r|ni } | j        j        di |¤Ž d S d S d S )N© )ÚsuperÚ__init__ÚdbapiÚ
isinstanceÚdictÚinit_oracle_client)	ÚselfÚauto_convert_lobsÚcoerce_to_decimalÚ	arraysizeÚencoding_errorsÚ
thick_modeÚkwargsÚkwÚ	__class__s	           €úW/var/www/piapp/venv/lib/python3.11/site-packages/sqlalchemy/dialects/oracle/oracledb.pyr   zOracleDialect_oracledb.__init__=   s¨   ø€ ð 	�‰ŒÔØØØØð		
ð 	
ð
 ð	
ð 	
ð 	
ð Œ:Ð!Øð "Ý$ ZµÑ6Ô6ð "õ  *¨*µdÑ;Ô;ÐC��ÀˆBØ)ˆDŒJÔ)Ð/Ð/¨BÐ/Ð/Ð/Ð/Ð/ð	 "Ð!Ð!Ð!ó    c                 ó   — dd l }|S )Nr   )r	   )Úclsr	   s     r   Úimport_dbapiz#OracleDialect_oracledb.import_dbapiT   s   € àˆˆˆàˆr   c                 ó$   — |j         j        j        S ©N)Ú
connectionÚdbapi_connectionÚthin)r   r#   s     r   Úis_thin_modez#OracleDialect_oracledb.is_thin_modeZ   s   € àÔ$Ô5Ô:Ð:r   c                 ó  — d}|�Jt          j        d|j        ¦  «        }|r.t          d„ |                     ddd¦  «        D ¦   «         ¦  «        }|| _        | j        dk     r| j        dk    rt          j        d¦  «        ‚d S d S )	N)r   r   r   z(\d+)\.(\d+)(?:\.(\d+))?c              3   ó8   K  — | ]}|®t          |¦  «        V — Œd S r"   )Úint)Ú.0Úxs     r   ú	<genexpr>z7OracleDialect_oracledb._load_version.<locals>.<genexpr>c   s1   è è € ð  ð  Ø ¸¸•C˜‘F”F¸¸¸¸ð ð  r   r   é   r   )r   z*oracledb version 1 and above are supported)ÚreÚmatchÚversionÚtupleÚgroupÚoracledb_verr   ÚInvalidRequestError)r   Údbapi_moduler0   Úms       r   Ú_load_versionz$OracleDialect_oracledb._load_version^   s°   € ØˆØÐ#Ý”Ð4°lÔ6JÑKÔKˆAØð Ýð  ð  Ø$%§G¢G¨A¨q°!Ñ$4Ô$4ð ñ  ô  ñ ô �ð $ˆÔØÔ˜tÒ#Ð#¨Ô(9¸IÒ(EÐ(EÝÔ)Ø<ñô ð ð $Ð#Ð(EÐ(Er   )TTr
   NN)Ú__name__Ú
__module__Ú__qualname__Úsupports_statement_cacheÚdriverr   Úclassmethodr    r&   r7   Ú__classcell__)r   s   @r   r   r   9   sž   ø€ € € € € Ø#ÐØ€Fð ØØØØð0ð 0ð 0ð 0ð 0ð 0ð. ðð ñ „[ðð
 ð;ð ;ñ „[ð;ðð ð ð ð ð ð r   r   )	Ú__doc__r.   Ú	cx_oracler   Ú_OracleDialect_cx_oracleÚ r   r   Údialectr   r   r   ú<module>rD      sv   ðð*ð *ðV 
€	€	€	à JÐ JÐ JÐ JÐ JÐ JØ Ð Ð Ð Ð Ð ð1ð 1ð 1ð 1ð 1Ð5ñ 1ô 1ð 1ðh !€€€r   