
    i߮                     j    d dl Z d dlmZmZmZmZmZ d dlZddlm	Z	m
Z
 ddlmZ  G d de          ZdS )    N)CallableTypeUnionAnyOptional   )	base_implutils)ConnectParamsc                   $   e Zd ZdZej         ZdgZej        Ze	j
        ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddCdee         dee         dee         deed	                  d
eej                 dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         deeeeef                  dee         dee         dee         dee         dee         dee         d ee         d!ee         d"ee         d#ee         d$eej                 d%ee         d&ee         d'ee         d(ee         d)ee         d*ee         d+ee         d,ee         d-ee         d.eej                 d/ee         d0ee         d1ee         d2ee         d3ee         d4ee         d5ee         d6ee         d7ee         d8ee         d9ee         d:ee         d;ee         d<ee         d=ee         d>eej                 d?ee         d@ee         dAee         dBee         dCee         dDee         dEee         dFee         dGee         dHee         fdI            ZdJ ZedKed	         fdL            ZedKej        fdM            Z edKefdN            Z!edKefdO            Z"edKefdP            Z#edKefdQ            Z$edKefdR            Z%edKefdS            Z&edKefdT            Z'edKefdU            Z(edKefdV            Z)edKefdW            Z*edKefdX            Z+edKefdY            Z,d\dZZ-e	j.        ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddCdee         dee         dee         deed	                  d
eej                 dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         dee         deeeeef                  dee         dee         dee         dee         dee         dee         d ee         d!ee         d"ee         d#ee         d$eej                 d%ee         d&ee         d'ee         d(ee         d)ee         d*ee         d+ee         d,ee         d-ee         d.eej                 d/ee         d0ee         d1ee         d2ee         d3ee         d4ee         d5ee         d6ee         d7ee         d8ee         d9ee         d:ee         d;ee         d<ee         d=ee         d>eej                 d?ee         d@ee         dAee         dBee         dCee         dDee         dEee         dFee         dGee         dHee         fd[            Z/dS )]
PoolParamszF
    Contains all parameters used for creating a connection pool.
    _implN)Cminmax	incrementconnectiontypegetmodehomogeneoustimeoutwait_timeoutmax_lifetime_sessionsession_callbackmax_sessions_per_shardsoda_metadata_cacheping_intervalping_timeoutuser
proxy_userpasswordnewpasswordwallet_passwordaccess_tokenhostportprotocolhttps_proxyhttps_proxy_portservice_nameinstance_namesidserver_typecclasspurityexpire_timeretry_countretry_delaytcp_connect_timeoutssl_server_dn_matchssl_server_cert_dnwallet_locationeventsexternalauthmodedisable_oobstmtcachesizeeditiontagmatchanytag
config_dir
appcontextshardingkeysupershardingkey
debug_jdwpconnection_id_prefixssl_contextsdupool_boundaryuse_tcp_fast_openssl_versionprogrammachineterminalosuserdriver_nameuse_snithick_mode_dsn_passthroughextra_auth_params	pool_namehandler   r   r   r   zoracledb.Connectionr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   c       C             dS )a=  
        All parameters are optional. A brief description of each parameter
        follows:

        - ``min``: the minimum number of connections the pool should contain
          (default: 1)

        - ``max``: the maximum number of connections the pool should contain
          (default: 2)

        - ``increment``: the number of connections that should be added to the
          pool whenever the pool needs to grow
          (default: 1)

        - ``connectiontype``: the class of the connection that should be
          returned during calls to pool.acquire(). It must be
          oracledb.Connection or a subclass of oracledb.Connection
          (default: None)

        - ``getmode``: how pool.acquire() will behave. One of the constants
          :data:`oracledb.POOL_GETMODE_WAIT`,
          :data:`oracledb.POOL_GETMODE_NOWAIT`,
          :data:`oracledb.POOL_GETMODE_FORCEGET`, or
          :data:`oracledb.POOL_GETMODE_TIMEDWAIT`
          (default: :attr:`oracledb.POOL_GETMODE_WAIT`)

        - ``homogeneous``: a boolean indicating whether the connections in the
          pool are homogeneous (same user) or heterogeneous (multiple users)
          (default: True)

        - ``timeout``: the length of time (in seconds) that a connection may
          remain idle in the pool before it is terminated. If it is 0 then
          connections are never terminated
          (default: 0)

        - ``wait_timeout``: the length of time (in milliseconds) that a caller
          should wait when acquiring a connection from the pool with getmode
          set to :data:`oracledb.POOL_GETMODE_TIMEDWAIT`
          (default: 0)

        - ``max_lifetime_session``: the length of time (in seconds) that
          connections can remain in the pool. If it is 0 then connections may
          remain in the pool indefinitely
          (default: 0)

        - ``session_callback``: a callable that is invoked when a connection is
          returned from the pool for the first time, or when the connection tag
          differs from the one requested
          (default: None)

        - ``max_sessions_per_shard``: the maximum number of connections that
          may be associated with a particular shard
          (default: 0)

        - ``soda_metadata_cache``: a boolean indicating whether or not the SODA
          metadata cache should be enabled
          (default: False)

        - ``ping_interval``: the length of time (in seconds) after which an
          unused connection in the pool will be a candidate for pinging when
          pool.acquire() is called. If the ping to the database indicates the
          connection is not alive a replacement connection will be returned by
          pool.acquire(). If ping_interval is a negative value the ping
          functionality will be disabled
          (default: 60)

        - ``ping_timeout``: the maximum length of time (in milliseconds) to
          wait for a connection in the pool to respond to an internal ping to
          the database before being discarded and replaced during a call to
          acquire()
          (default: 5000)

        - ``user``: the name of the database user to connect to
          (default: None)

        - ``proxy_user``: the name of the proxy user to connect to. If this
          value is not specified, it will be parsed out of user if user is in
          the form "user[proxy_user]"
          (default: None)

        - ``password``: the password for the database user
          (default: None)

        - ``newpassword``: a new password for the database user. The new
          password will take effect immediately upon a successful connection to
          the database
          (default: None)

        - ``wallet_password``: the password to use to decrypt the wallet, if it
          is encrypted. This is not the database password. For Oracle
          Autonomous Database this is the password created when downloading the
          wallet. This value is only used in python-oracledb Thin mode.
          (default: None)

        - ``access_token``: a string, or a 2-tuple, or a callable. If it is a
          string, it specifies an Entra ID OAuth2 token used for Open
          Authorization (OAuth 2.0) token based authentication. If it is a
          2-tuple, it specifies the token and private key strings used for
          Oracle Cloud Infrastructure (OCI) Identity and Access Management
          (IAM) token based authentication. If it is a callable, it returns
          either a string or a 2-tuple used for OAuth 2.0 or OCI IAM token
          based authentication and is useful when the pool needs to expand and
          create new connections but the current authentication token has
          expired
          (default: None)

        - ``host``: the hostname or IP address of the machine hosting the
          database or the database listener
          (default: None)

        - ``port``: the port number on which the database listener is listening
          (default: 1521)

        - ``protocol``: one of the strings "tcp" or "tcps" indicating whether
          to use unencrypted network traffic or encrypted network traffic (TLS)
          (default: "tcp")

        - ``https_proxy``: the hostname or IP address of a proxy host to use
          for tunneling secure connections
          (default: None)

        - ``https_proxy_port``: the port on which to communicate with the proxy
          host
          (default: 0)

        - ``service_name``: the service name of the database
          (default: None)

        - ``instance_name``: the instance name of the database
          (default: None)

        - ``sid``: the system identifier (SID) of the database. Note using a
          service_name instead is recommended
          (default: None)

        - ``server_type``: the type of server connection that should be
          established. If specified, it should be one of strings "dedicated",
          "shared" or "pooled"
          (default: None)

        - ``cclass``: the connection class to use for Database Resident
          Connection Pooling (DRCP)
          (default: None)

        - ``purity``: the connection purity to use for Database Resident
          Connection Pooling (DRCP)
          (default: :attr:`oracledb.PURITY_DEFAULT`)

        - ``expire_time``: the number of minutes between the sending of
          keepalive probes. If this parameter is set to a value greater than
          zero it enables keepalive
          (default: 0)

        - ``retry_count``: the number of times that initial connection
          establishment should be retried before the connection attempt is
          terminated
          (default: 0)

        - ``retry_delay``: the number of seconds to wait before retrying to
          establish a connection
          (default: 1)

        - ``tcp_connect_timeout``: a float indicating the maximum number of
          seconds to wait when establishing a connection to the database host
          (default: 20.0)

        - ``ssl_server_dn_match``: a boolean indicating whether the server
          certificate distinguished name (DN) should be matched in addition to
          the regular certificate verification that is performed. Note that if
          the ssl_server_cert_dn parameter is not privided, host name matching
          is performed instead
          (default: True)

        - ``ssl_server_cert_dn``: the distinguished name (DN) which should be
          matched with the server. This value is ignored if the
          ssl_server_dn_match parameter is not set to the value True. If
          specified this value is used for any verfication. Otherwise the
          hostname will be used
          (default: None)

        - ``wallet_location``: the directory where the wallet can be found. In
          python-oracledb Thin mode this must be the directory containing the
          PEM-encoded wallet file ewallet.pem. In python-oracledb Thick mode
          this must be the directory containing the file cwallet.sso
          (default: None)

        - ``events``: a boolean specifying whether events mode should be
          enabled. This value is only used in python-oracledb Thick mode and is
          needed for continuous query notification and high availability event
          notifications
          (default: False)

        - ``externalauth``: a boolean indicating whether to use external
          authentication
          (default: False)

        - ``mode``: the authorization mode to use. One of the constants
          :data:`oracledb.AUTH_MODE_DEFAULT`,
          :data:`oracledb.AUTH_MODE_PRELIM`, :data:`oracledb.AUTH_MODE_SYSASM`,
          :data:`oracledb.AUTH_MODE_SYSBKP`, :data:`oracledb.AUTH_MODE_SYSDBA`,
          :data:`oracledb.AUTH_MODE_SYSDGD`, :data:`oracledb.AUTH_MODE_SYSKMT`,
          :data:`oracledb.AUTH_MODE_SYSOPER`, or
          :data:`oracledb.AUTH_MODE_SYSRAC`
          (default: :attr:`oracledb.AUTH_MODE_DEFAULT`)

        - ``disable_oob``: a boolean indicating whether out-of-band breaks
          should be disabled. This value is only used in python-oracledb Thin
          mode. It has no effect on Windows which does not support this
          functionality
          (default: False)

        - ``stmtcachesize``: the size of the statement cache
          (default: :attr:`oracledb.defaults.stmtcachesize
          <Defaults.stmtcachesize>`)

        - ``edition``: edition to use for the connection. This parameter cannot
          be used simultaneously with the cclass parameter
          (default: None)

        - ``tag``: identifies the type of connection that should be returned
          from a pool. This value is only used in python-oracledb Thick mode
          (default: None)

        - ``matchanytag``: a boolean specifying whether any tag can be used
          when acquiring a connection from the pool. This value is only used in
          python-oracledb Thick mode
          (default: False)

        - ``config_dir``: a directory in which the optional tnsnames.ora
          configuration file is located. This value is only used in python-
          oracledb Thin mode. For python-oracledb Thick mode, it is used if
          :attr:`oracledb.defaults.thick_mode_dsn_passthrough
          <Defaults.thick_mode_dsn_passthrough>` is *False*. Otherwise in Thick
          mode use the ``config_dir`` parameter of
          :meth:`oracledb.init_oracle_client()`
          (default: :attr:`oracledb.defaults.config_dir
          <Defaults.config_dir>`)

        - ``appcontext``: application context used by the connection. It should
          be a list of 3-tuples (namespace, name, value) and each entry in the
          tuple should be a string
          (default: None)

        - ``shardingkey``: a list of strings, numbers, bytes or dates that
          identify the database shard to connect to. This value is only used in
          python-oracledb Thick mode
          (default: None)

        - ``supershardingkey``: a list of strings, numbers, bytes or dates that
          identify the database shard to connect to. This value is only used in
          python-oracledb Thick mode
          (default: None)

        - ``debug_jdwp``: a string with the format "host=<host>;port=<port>"
          that specifies the host and port of the PL/SQL debugger. This value
          is only used in python-oracledb Thin mode.  For python-oracledb Thick
          mode set the ORA_DEBUG_JDWP environment variable
          (default: None)

        - ``connection_id_prefix``: an application specific prefix that is
          added to the connection identifier used for tracing
          (default: None)

        - ``ssl_context``: an SSLContext object used for connecting to the
          database using TLS.  This SSL context will be modified to include the
          private key or any certificates found in a separately supplied
          wallet. This parameter should only be specified if the default
          SSLContext object cannot be used
          (default: None)

        - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes.
          The value tunes internal buffers used for communication to the
          database. Bigger values can increase throughput for large queries or
          bulk data loads, but at the cost of higher memory use. The SDU size
          that will actually be used is negotiated down to the lower of this
          value and the database network SDU configuration value
          (default: 8192)

        - ``pool_boundary``: one of the values "statement" or "transaction"
          indicating when pooled DRCP connections can be returned to the pool.
          This requires the use of DRCP with Oracle Database 23.4 or higher
          (default: None)

        - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast
          open. This is an Oracle Autonomous Database Serverless (ADB-S)
          specific property for clients connecting from within OCI Cloud
          network. Please refer to the ADB-S documentation for more information
          (default: False)

        - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or
          ssl.TLSVersion.TLSv1_3 indicating which TLS version to use
          (default: None)

        - ``program``: a string recorded by Oracle Database as the program from
          which the connection originates
          (default: :attr:`oracledb.defaults.program
          <Defaults.program>`)

        - ``machine``: a string recorded by Oracle Database as the name of the
          machine from which the connection originates
          (default: :attr:`oracledb.defaults.machine
          <Defaults.machine>`)

        - ``terminal``: a string recorded by Oracle Database as the terminal
          identifier from which the connection originates
          (default: :attr:`oracledb.defaults.terminal
          <Defaults.terminal>`)

        - ``osuser``: a string recorded by Oracle Database as the operating
          system user who originated the connection
          (default: :attr:`oracledb.defaults.osuser
          <Defaults.osuser>`)

        - ``driver_name``: a string recorded by Oracle Database as the name of
          the driver which originated the connection
          (default: :attr:`oracledb.defaults.driver_name
          <Defaults.driver_name>`)

        - ``use_sni``: a boolean indicating whether to use the TLS SNI
          extension to bypass the second TLS neogiation that would otherwise be
          required
          (default: False)

        - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass
          the connect string to the Oracle Client libraries unchanged without
          parsing by the driver. Setting this to False makes python-oracledb
          Thick and Thin mode applications behave similarly regarding
          connection string parameter handling and locating any optional
          tnsnames.ora configuration file
          (default: :attr:`oracledb.defaults.thick_mode_dsn_passthrough
          <Defaults.thick_mode_dsn_passthrough>`)

        - ``extra_auth_params``: a dictionary containing configuration
          parameters necessary for Oracle Database authentication using
          plugins, such as the Azure and OCI cloud-native authentication
          plugins
          (default: None)

        - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP
          with Oracle Database 23.4, or higher
          (default: None)

        - ``handle``: an integer representing a pointer to a valid service
          context handle. This value is only used in python-oracledb Thick
          mode. It should be used with extreme caution
          (default: 0)
        N Dselfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   sD                                                                       d/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/oracledb/pool_params.py__init__zPoolParams.__init__6   s
    F 	    c                 "   | j         j        d                    g d| j        d| j        d| j        d| j        d| j        d| j        d| j	        d	| j
        d
| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j         d | j!        d!| j"        d"| j#        d#| j$        d$| j%        d%| j&        d&| j'        d'| j(        d(| j)        d)| j*        d*| j+        d+| j,        d,| j-        d-| j.        d.| j/        d/| j0        d0| j1        d1| j2        d2| j3        d3| j4        d4| j5        d5| j6        d6| j7        d7| j8        d8| j9        d9| j:        d:| j;        d;| j<        d<| j=        d=| j>        d>| j?        d?| j@        d@          z   S )AN z(min=z, max=z, increment=z, connectiontype=z
, getmode=z, homogeneous=z
, timeout=z, wait_timeout=z, max_lifetime_session=z, session_callback=z, max_sessions_per_shard=z, soda_metadata_cache=z, ping_interval=z, ping_timeout=z, user=z, proxy_user=z, host=z, port=z, protocol=z, https_proxy=z, https_proxy_port=z, service_name=z, instance_name=z, sid=z, server_type=z	, cclass=z	, purity=z, expire_time=z, retry_count=z, retry_delay=z, tcp_connect_timeout=z, ssl_server_dn_match=z, ssl_server_cert_dn=z, wallet_location=z	, events=z, externalauth=z, mode=z, disable_oob=z, stmtcachesize=z
, edition=z, tag=z, matchanytag=z, config_dir=z, appcontext=z, shardingkey=z, supershardingkey=z, debug_jdwp=z, connection_id_prefix=z, ssl_context=z, sdu=z, pool_boundary=z, use_tcp_fast_open=z, ssl_version=z
, program=z
, machine=z, terminal=z	, osuser=z, driver_name=z
, use_sni=z, thick_mode_dsn_passthrough=z, extra_auth_params=z, pool_name=))A	__class____qualname__joinr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rU   s    rV   __repr__zPoolParams.__repr__  s$   N' ?+ ?+ ?+ ?+ ?+ ?+8?+ ?+ ?+ ?+8?+ ?+ ?+ ?+ ?+ ?+ ?+ ?+ #1	?+ ?+ ?+ ?+
 |?+ ?+ ?+ ?+  +?+ ?+ ?+ ?+ |?+ ?+ ?+ ?+ !-?+ ?+ ?+ ?+ %)$=?+ ?+ ?+ ?+ !% 5?+ ?+ ?+ ?+ '+&A?+ ?+ ?+ ?+ $(#;?+ ?+ ?+ ?+ "/?+ ?+ ?+ ?+ !-?+ ?+ ?+ ?+ I?+ ?+ ?+ ?+  /!?+ ?+ ?+ ?+" I#?+ ?+ ?+ ?+$ I%?+ ?+ ?+ ?+& '?+ ?+ ?+ ?+(  +)?+ ?+ ?+ ?+* !% 5+?+ ?+ ?+ ?+, !--?+ ?+ ?+ ?+. "//?+ ?+ ?+ ?+0 81?+ ?+ ?+ ?+2  +3?+ ?+ ?+ ?+4 k5?+ ?+ ?+ ?+6 k7?+ ?+ ?+ ?+8  +9?+ ?+ ?+ ?+:  +;?+ ?+ ?+ ?+<  +=?+ ?+ ?+ ?+> $(#;??+ ?+ ?+ ?+@ $(#;A?+ ?+ ?+ ?+B #'"9C?+ ?+ ?+ ?+D  $3E?+ ?+ ?+ ?+F kG?+ ?+ ?+ ?+H !-I?+ ?+ ?+ ?+J IK?+ ?+ ?+ ?+L  +M?+ ?+ ?+ ?+N "/O?+ ?+ ?+ ?+P |Q?+ ?+ ?+ ?+R 8S?+ ?+ ?+ ?+T  +U?+ ?+ ?+ ?+V /W?+ ?+ ?+ ?+X /Y?+ ?+ ?+ ?+Z  +[?+ ?+ ?+ ?+\ !% 5]?+ ?+ ?+ ?+^ /_?+ ?+ ?+ ?+` %)$=a?+ ?+ ?+ ?+b  +c?+ ?+ ?+ ?+d 8e?+ ?+ ?+ ?+f "/g?+ ?+ ?+ ?+h "&!7i?+ ?+ ?+ ?+j  +k?+ ?+ ?+ ?+l |m?+ ?+ ?+ ?+n |o?+ ?+ ?+ ?+p q?+ ?+ ?+ ?+r ks?+ ?+ ?+ ?+t  +u?+ ?+ ?+ ?+v |w?+ ?+ ?+ ?+x +/*Iy?+ ?+ ?+ ?+z "&!7{?+ ?+ ?+ ?+| }?+ ?+ ?+ ?+ ?+ ?+ ?A	
rX   returnc                     | j         j        S )z
        The class of the connection that should be returned during calls to
        pool.acquire(). It must be oracledb.Connection or a subclass of
        oracledb.Connection.
        )r   r   r_   s    rV   r   zPoolParams.connectiontype  s     z((rX   c                 >    t          j        | j        j                  S )a  
        How pool.acquire() will behave. One of the constants
        :data:`oracledb.POOL_GETMODE_WAIT`,
        :data:`oracledb.POOL_GETMODE_NOWAIT`,
        :data:`oracledb.POOL_GETMODE_FORCEGET`, or
        :data:`oracledb.POOL_GETMODE_TIMEDWAIT`.
        )oracledbPoolGetModer   r   r_   s    rV   r   zPoolParams.getmode(  s     #DJ$6777rX   c                     | j         j        S )z
        A boolean indicating whether the connections in the pool are
        homogeneous (same user) or heterogeneous (multiple users).
        )r   r   r_   s    rV   r   zPoolParams.homogeneous3  s     z%%rX   c                     | j         j        S )zu
        The number of connections that should be added to the pool whenever the
        pool needs to grow.
        )r   r   r_   s    rV   r   zPoolParams.increment;  s     z##rX   c                     | j         j        S )zL
        The maximum number of connections the pool should contain.
        )r   r   r_   s    rV   r   zPoolParams.maxC      
 z~rX   c                     | j         j        S )z
        The length of time (in seconds) that connections can remain in the
        pool. If it is 0 then connections may remain in the pool indefinitely.
        )r   r   r_   s    rV   r   zPoolParams.max_lifetime_sessionJ  s     z..rX   c                     | j         j        S )zk
        The maximum number of connections that may be associated with a
        particular shard.
        )r   r   r_   s    rV   r   z!PoolParams.max_sessions_per_shardR  s     z00rX   c                     | j         j        S )zL
        The minimum number of connections the pool should contain.
        )r   r   r_   s    rV   r   zPoolParams.minZ  ri   rX   c                     | j         j        S )a  
        The length of time (in seconds) after which an unused connection in the
        pool will be a candidate for pinging when pool.acquire() is called. If
        the ping to the database indicates the connection is not alive a
        replacement connection will be returned by pool.acquire(). If
        ping_interval is a negative value the ping functionality will be
        disabled.
        )r   r   r_   s    rV   r   zPoolParams.ping_intervala  s     z''rX   c                     | j         j        S )z
        The maximum length of time (in milliseconds) to wait for a connection
        in the pool to respond to an internal ping to the database before being
        discarded and replaced during a call to acquire().
        )r   r   r_   s    rV   r   zPoolParams.ping_timeoutm       z&&rX   c                     | j         j        S )z
        A callable that is invoked when a connection is returned from the pool
        for the first time, or when the connection tag differs from the one
        requested.
        )r   r   r_   s    rV   r   zPoolParams.session_callbackv  s     z**rX   c                     | j         j        S )zh
        A boolean indicating whether or not the SODA metadata cache should be
        enabled.
        )r   r   r_   s    rV   r   zPoolParams.soda_metadata_cache  s     z--rX   c                     | j         j        S )z
        The length of time (in seconds) that a connection may remain idle in
        the pool before it is terminated. If it is 0 then connections are never
        terminated.
        )r   r   r_   s    rV   r   zPoolParams.timeout  s     z!!rX   c                     | j         j        S )z
        The length of time (in milliseconds) that a caller should wait when
        acquiring a connection from the pool with getmode set to
        :data:`oracledb.POOL_GETMODE_TIMEDWAIT`.
        )r   r   r_   s    rV   r   zPoolParams.wait_timeout  ro   rX   c                     t                               t                     }| j                                        |_        |S )zB
        Creates a copy of the parameters and returns it.
        )r   __new__r   copy)rU   paramss     rV   rv   zPoolParams.copy  s/     ##J//z((rX   c       C             dS )a4  
        All parameters are optional. A brief description of each parameter
        follows:

        - ``min``: the minimum number of connections the pool should contain

        - ``max``: the maximum number of connections the pool should contain

        - ``increment``: the number of connections that should be added to the
          pool whenever the pool needs to grow

        - ``connectiontype``: the class of the connection that should be
          returned during calls to pool.acquire(). It must be
          oracledb.Connection or a subclass of oracledb.Connection

        - ``getmode``: how pool.acquire() will behave. One of the constants
          :data:`oracledb.POOL_GETMODE_WAIT`,
          :data:`oracledb.POOL_GETMODE_NOWAIT`,
          :data:`oracledb.POOL_GETMODE_FORCEGET`, or
          :data:`oracledb.POOL_GETMODE_TIMEDWAIT`

        - ``homogeneous``: a boolean indicating whether the connections in the
          pool are homogeneous (same user) or heterogeneous (multiple users)

        - ``timeout``: the length of time (in seconds) that a connection may
          remain idle in the pool before it is terminated. If it is 0 then
          connections are never terminated

        - ``wait_timeout``: the length of time (in milliseconds) that a caller
          should wait when acquiring a connection from the pool with getmode
          set to :data:`oracledb.POOL_GETMODE_TIMEDWAIT`

        - ``max_lifetime_session``: the length of time (in seconds) that
          connections can remain in the pool. If it is 0 then connections may
          remain in the pool indefinitely

        - ``session_callback``: a callable that is invoked when a connection is
          returned from the pool for the first time, or when the connection tag
          differs from the one requested

        - ``max_sessions_per_shard``: the maximum number of connections that
          may be associated with a particular shard

        - ``soda_metadata_cache``: a boolean indicating whether or not the SODA
          metadata cache should be enabled

        - ``ping_interval``: the length of time (in seconds) after which an
          unused connection in the pool will be a candidate for pinging when
          pool.acquire() is called. If the ping to the database indicates the
          connection is not alive a replacement connection will be returned by
          pool.acquire(). If ping_interval is a negative value the ping
          functionality will be disabled

        - ``ping_timeout``: the maximum length of time (in milliseconds) to
          wait for a connection in the pool to respond to an internal ping to
          the database before being discarded and replaced during a call to
          acquire()

        - ``user``: the name of the database user to connect to

        - ``proxy_user``: the name of the proxy user to connect to. If this
          value is not specified, it will be parsed out of user if user is in
          the form "user[proxy_user]"

        - ``password``: the password for the database user

        - ``newpassword``: a new password for the database user. The new
          password will take effect immediately upon a successful connection to
          the database

        - ``wallet_password``: the password to use to decrypt the wallet, if it
          is encrypted. This is not the database password. For Oracle
          Autonomous Database this is the password created when downloading the
          wallet. This value is only used in python-oracledb Thin mode.

        - ``access_token``: a string, or a 2-tuple, or a callable. If it is a
          string, it specifies an Entra ID OAuth2 token used for Open
          Authorization (OAuth 2.0) token based authentication. If it is a
          2-tuple, it specifies the token and private key strings used for
          Oracle Cloud Infrastructure (OCI) Identity and Access Management
          (IAM) token based authentication. If it is a callable, it returns
          either a string or a 2-tuple used for OAuth 2.0 or OCI IAM token
          based authentication and is useful when the pool needs to expand and
          create new connections but the current authentication token has
          expired

        - ``host``: the hostname or IP address of the machine hosting the
          database or the database listener

        - ``port``: the port number on which the database listener is listening

        - ``protocol``: one of the strings "tcp" or "tcps" indicating whether
          to use unencrypted network traffic or encrypted network traffic (TLS)

        - ``https_proxy``: the hostname or IP address of a proxy host to use
          for tunneling secure connections

        - ``https_proxy_port``: the port on which to communicate with the proxy
          host

        - ``service_name``: the service name of the database

        - ``instance_name``: the instance name of the database

        - ``sid``: the system identifier (SID) of the database. Note using a
          service_name instead is recommended

        - ``server_type``: the type of server connection that should be
          established. If specified, it should be one of strings "dedicated",
          "shared" or "pooled"

        - ``cclass``: the connection class to use for Database Resident
          Connection Pooling (DRCP)

        - ``purity``: the connection purity to use for Database Resident
          Connection Pooling (DRCP)

        - ``expire_time``: the number of minutes between the sending of
          keepalive probes. If this parameter is set to a value greater than
          zero it enables keepalive

        - ``retry_count``: the number of times that initial connection
          establishment should be retried before the connection attempt is
          terminated

        - ``retry_delay``: the number of seconds to wait before retrying to
          establish a connection

        - ``tcp_connect_timeout``: a float indicating the maximum number of
          seconds to wait when establishing a connection to the database host

        - ``ssl_server_dn_match``: a boolean indicating whether the server
          certificate distinguished name (DN) should be matched in addition to
          the regular certificate verification that is performed. Note that if
          the ssl_server_cert_dn parameter is not privided, host name matching
          is performed instead

        - ``ssl_server_cert_dn``: the distinguished name (DN) which should be
          matched with the server. This value is ignored if the
          ssl_server_dn_match parameter is not set to the value True. If
          specified this value is used for any verfication. Otherwise the
          hostname will be used

        - ``wallet_location``: the directory where the wallet can be found. In
          python-oracledb Thin mode this must be the directory containing the
          PEM-encoded wallet file ewallet.pem. In python-oracledb Thick mode
          this must be the directory containing the file cwallet.sso

        - ``events``: a boolean specifying whether events mode should be
          enabled. This value is only used in python-oracledb Thick mode and is
          needed for continuous query notification and high availability event
          notifications

        - ``externalauth``: a boolean indicating whether to use external
          authentication

        - ``mode``: the authorization mode to use. One of the constants
          :data:`oracledb.AUTH_MODE_DEFAULT`,
          :data:`oracledb.AUTH_MODE_PRELIM`, :data:`oracledb.AUTH_MODE_SYSASM`,
          :data:`oracledb.AUTH_MODE_SYSBKP`, :data:`oracledb.AUTH_MODE_SYSDBA`,
          :data:`oracledb.AUTH_MODE_SYSDGD`, :data:`oracledb.AUTH_MODE_SYSKMT`,
          :data:`oracledb.AUTH_MODE_SYSOPER`, or
          :data:`oracledb.AUTH_MODE_SYSRAC`

        - ``disable_oob``: a boolean indicating whether out-of-band breaks
          should be disabled. This value is only used in python-oracledb Thin
          mode. It has no effect on Windows which does not support this
          functionality

        - ``stmtcachesize``: the size of the statement cache

        - ``edition``: edition to use for the connection. This parameter cannot
          be used simultaneously with the cclass parameter

        - ``tag``: identifies the type of connection that should be returned
          from a pool. This value is only used in python-oracledb Thick mode

        - ``matchanytag``: a boolean specifying whether any tag can be used
          when acquiring a connection from the pool. This value is only used in
          python-oracledb Thick mode

        - ``config_dir``: a directory in which the optional tnsnames.ora
          configuration file is located. This value is only used in python-
          oracledb Thin mode. For python-oracledb Thick mode, it is used if
          :attr:`oracledb.defaults.thick_mode_dsn_passthrough
          <Defaults.thick_mode_dsn_passthrough>` is *False*. Otherwise in Thick
          mode use the ``config_dir`` parameter of
          :meth:`oracledb.init_oracle_client()`

        - ``appcontext``: application context used by the connection. It should
          be a list of 3-tuples (namespace, name, value) and each entry in the
          tuple should be a string

        - ``shardingkey``: a list of strings, numbers, bytes or dates that
          identify the database shard to connect to. This value is only used in
          python-oracledb Thick mode

        - ``supershardingkey``: a list of strings, numbers, bytes or dates that
          identify the database shard to connect to. This value is only used in
          python-oracledb Thick mode

        - ``debug_jdwp``: a string with the format "host=<host>;port=<port>"
          that specifies the host and port of the PL/SQL debugger. This value
          is only used in python-oracledb Thin mode.  For python-oracledb Thick
          mode set the ORA_DEBUG_JDWP environment variable

        - ``connection_id_prefix``: an application specific prefix that is
          added to the connection identifier used for tracing

        - ``ssl_context``: an SSLContext object used for connecting to the
          database using TLS.  This SSL context will be modified to include the
          private key or any certificates found in a separately supplied
          wallet. This parameter should only be specified if the default
          SSLContext object cannot be used

        - ``sdu``: the requested size of the Session Data Unit (SDU), in bytes.
          The value tunes internal buffers used for communication to the
          database. Bigger values can increase throughput for large queries or
          bulk data loads, but at the cost of higher memory use. The SDU size
          that will actually be used is negotiated down to the lower of this
          value and the database network SDU configuration value

        - ``pool_boundary``: one of the values "statement" or "transaction"
          indicating when pooled DRCP connections can be returned to the pool.
          This requires the use of DRCP with Oracle Database 23.4 or higher

        - ``use_tcp_fast_open``: a boolean indicating whether to use TCP fast
          open. This is an Oracle Autonomous Database Serverless (ADB-S)
          specific property for clients connecting from within OCI Cloud
          network. Please refer to the ADB-S documentation for more information

        - ``ssl_version``: one of the values ssl.TLSVersion.TLSv1_2 or
          ssl.TLSVersion.TLSv1_3 indicating which TLS version to use

        - ``program``: a string recorded by Oracle Database as the program from
          which the connection originates

        - ``machine``: a string recorded by Oracle Database as the name of the
          machine from which the connection originates

        - ``terminal``: a string recorded by Oracle Database as the terminal
          identifier from which the connection originates

        - ``osuser``: a string recorded by Oracle Database as the operating
          system user who originated the connection

        - ``driver_name``: a string recorded by Oracle Database as the name of
          the driver which originated the connection

        - ``use_sni``: a boolean indicating whether to use the TLS SNI
          extension to bypass the second TLS neogiation that would otherwise be
          required

        - ``thick_mode_dsn_passthrough``: a boolean indicating whether to pass
          the connect string to the Oracle Client libraries unchanged without
          parsing by the driver. Setting this to False makes python-oracledb
          Thick and Thin mode applications behave similarly regarding
          connection string parameter handling and locating any optional
          tnsnames.ora configuration file

        - ``extra_auth_params``: a dictionary containing configuration
          parameters necessary for Oracle Database authentication using
          plugins, such as the Azure and OCI cloud-native authentication
          plugins

        - ``pool_name``: the name of the DRCP pool when using multi-pool DRCP
          with Oracle Database 23.4, or higher

        - ``handle``: an integer representing a pointer to a valid service
          context handle. This value is only used in python-oracledb Thick
          mode. It should be used with extreme caution
        NrS   rT   sD                                                                       rV   setzPoolParams.set  s
    p
 	rX   )ra   r   )0__name__
__module__r]   __doc__rd   	__slots__r	   PoolParamsImpl_impl_classr
   params_initerr   intr   re   boolr   strr   tuplePurityfloatAuthModelistr   ssl
TLSVersiondictrW   r`   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   rv   params_setterry   rS   rX   rV   r   r   -   sB         "J	I*K
 "!#'@D26&*!%&*.2/304.2'+&*"$("&%))->B"""&%)*.&*'+!%) $,0%)%)%)/3.2,0)-!%'+,0&*'+!%!&*$(%)&*+/$(.2%)!'+,004!%!%"& $%)"&59,0#' $Kb b b c]b c]	b
 C=b !&;!<=b (./b d^b #b smb 'smb #8,b !)b &d^b  }b  sm!b" sm#b$ SM%b& 3-'b( c])b* "#+b, uS%%9:;-b. sm/b0 sm1b2 3-3b4 c]5b6 #3-7b8 sm9b:  };b< c]=b> c]?b@ AbB )CbD c]EbF c]GbH c]IbJ &e_KbL &d^MbN %SMObP "#QbR SbT tnUbV x()WbX d^YbZ  }[b\ #]b^ c]_b` d^abb SMcbd TNebf d^gbh #4.ibj SMkbl 'smmbn c]obp c]qbr  }sbt $D>ubv cn-wbx #ybz #{b| 3-}b~ b@ c]AbB $CbD %-TNEbF $D>GbH C=IbJ Kb b b bHB
 B
 B
H )%: ; ) ) ) X) 8- 8 8 8 X8 &T & & & X& $3 $ $ $ X$ S    X /c / / / X/ 1 1 1 1 X1 S    X 	(s 	( 	( 	( X	( 'c ' ' ' X' +( + + + X+ .T . . . X. " " " " X" 'c ' ' ' X'     "!#'@D26&*!%&*.2/304.2'+&*"$("&%))->B"""&%)*.&*'+!%) $,0%)%)%)/3.2,0)-!%'+,0&*'+!%!&*$(%)&*+/$(.2%)!'+,004!%!%"& $%)"&59,0#' $KW W W c]W c]	W
 C=W !&;!<=W (./W d^W #W smW 'smW #8,W !)W &d^W  }W  sm!W" sm#W$ SM%W& 3-'W( c])W* "#+W, uS%%9:;-W. sm/W0 sm1W2 3-3W4 c]5W6 #3-7W8 sm9W:  };W< c]=W> c]?W@ AWB )CWD c]EWF c]GWH c]IWJ &e_KWL &d^MWN %SMOWP "#QWR SWT tnUWV x()WWX d^YWZ  }[W\ #]W^ c]_W` d^aWb SMcWd TNeWf d^gWh #4.iWj SMkWl 'smmWn c]oWp c]qWr  }sWt $D>uWv cn-wWx #yWz #{W| 3-}W~ W@ c]AWB $CWD %-TNEWF $D>GWH C=IWJ KW W W W W WrX   r   )r   typingr   r   r   r   r   rd   rZ   r	   r
   connect_paramsr   r   rS   rX   rV   <module>r      s   H 


 7 7 7 7 7 7 7 7 7 7 7 7 7 7          ) ) ) ) ) )L L L L L L L L L LrX   