summaryrefslogtreecommitdiffstats
path: root/contrib/python
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2024-10-13 16:50:16 +0300
committerrobot-piglet <[email protected]>2024-10-13 17:05:39 +0300
commit90e8f69f92f72af0118e4b09f4853493dde2677c (patch)
treef9437968e3d19a48adeaaedc0175cf93f43de354 /contrib/python
parent8acff7ec3d64307981a0af24d067c172e0ea531f (diff)
Intermediate changes
commit_hash:832e3683ad1b3c1089fec74bc325f641da0b442b
Diffstat (limited to 'contrib/python')
-rw-r--r--contrib/python/ydb/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/ydb/py3/ya.make2
-rw-r--r--contrib/python/ydb/py3/ydb/credentials.py26
-rw-r--r--contrib/python/ydb/py3/ydb/driver.py39
-rw-r--r--contrib/python/ydb/py3/ydb/ydb_version.py2
5 files changed, 59 insertions, 12 deletions
diff --git a/contrib/python/ydb/py3/.dist-info/METADATA b/contrib/python/ydb/py3/.dist-info/METADATA
index 56abf2d928e..d78acdc0709 100644
--- a/contrib/python/ydb/py3/.dist-info/METADATA
+++ b/contrib/python/ydb/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ydb
-Version: 3.18.0
+Version: 3.18.1
Summary: YDB Python SDK
Home-page: http://github.com/ydb-platform/ydb-python-sdk
Author: Yandex LLC
diff --git a/contrib/python/ydb/py3/ya.make b/contrib/python/ydb/py3/ya.make
index c4e2895311a..5d5e6636e39 100644
--- a/contrib/python/ydb/py3/ya.make
+++ b/contrib/python/ydb/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(3.18.0)
+VERSION(3.18.1)
LICENSE(Apache-2.0)
diff --git a/contrib/python/ydb/py3/ydb/credentials.py b/contrib/python/ydb/py3/ydb/credentials.py
index 97bf741e412..f42932b9781 100644
--- a/contrib/python/ydb/py3/ydb/credentials.py
+++ b/contrib/python/ydb/py3/ydb/credentials.py
@@ -44,6 +44,9 @@ class Credentials(abc.ABC):
return token
return ""
+ def _update_driver_config(self, driver_config):
+ pass
+
class OneToManyValue(object):
def __init__(self):
@@ -184,11 +187,23 @@ def _wrap_static_credentials_response(rpc_state, response):
class StaticCredentials(AbstractExpiringTokenCredentials):
def __init__(self, driver_config, user, password="", tracer=None):
super(StaticCredentials, self).__init__(tracer)
- self.driver_config = driver_config
+
+ from .driver import DriverConfig
+
+ if driver_config is not None:
+ self.driver_config = DriverConfig(
+ endpoint=driver_config.endpoint,
+ database=driver_config.database,
+ root_certificates=driver_config.root_certificates,
+ )
self.user = user
self.password = password
self.request_timeout = 10
+ @classmethod
+ def from_user_password(cls, user: str, password: str, tracer=None):
+ return cls(None, user, password, tracer)
+
def _make_token_request(self):
conn = connection.Connection.ready_factory(self.driver_config.endpoint, self.driver_config)
assert conn is not None, "Failed to establish connection in to %s" % self.driver_config.endpoint
@@ -204,6 +219,15 @@ class StaticCredentials(AbstractExpiringTokenCredentials):
conn.close()
return {"expires_in": 30 * 60, "access_token": result.token}
+ def _update_driver_config(self, driver_config):
+ from .driver import DriverConfig
+
+ self.driver_config = DriverConfig(
+ endpoint=driver_config.endpoint,
+ database=driver_config.database,
+ root_certificates=driver_config.root_certificates,
+ )
+
class AnonymousCredentials(Credentials):
@staticmethod
diff --git a/contrib/python/ydb/py3/ydb/driver.py b/contrib/python/ydb/py3/ydb/driver.py
index ecd3319e874..1559b0d00bc 100644
--- a/contrib/python/ydb/py3/ydb/driver.py
+++ b/contrib/python/ydb/py3/ydb/driver.py
@@ -1,12 +1,16 @@
# -*- coding: utf-8 -*-
+import grpc
+import logging
+import os
+from typing import Any # noqa
+
from . import credentials as credentials_impl, table, scheme, pool
from . import tracing
-import os
-import grpc
from . import iam
from . import _utilities
-from typing import Any # noqa
+
+logger = logging.getLogger(__name__)
class RPCCompression:
@@ -172,7 +176,7 @@ class DriverConfig(object):
database,
credentials=default_credentials(credentials),
root_certificates=root_certificates,
- **kwargs
+ **kwargs,
)
@classmethod
@@ -183,13 +187,22 @@ class DriverConfig(object):
database,
credentials=default_credentials(credentials),
root_certificates=root_certificates,
- **kwargs
+ **kwargs,
)
def set_grpc_keep_alive_timeout(self, timeout):
self.grpc_keep_alive_timeout = timeout
return self
+ def _update_attrs_by_kwargs(self, **kwargs):
+ for key, value in kwargs.items():
+ if value is not None:
+ if getattr(self, key) is not None:
+ logger.warning(
+ f"Arg {key} was used in both DriverConfig and Driver. Value from Driver will be used."
+ )
+ setattr(self, key, value)
+
ConnectionParams = DriverConfig
@@ -202,7 +215,7 @@ def get_config(
root_certificates=None,
credentials=None,
config_class=DriverConfig,
- **kwargs
+ **kwargs,
):
if driver_config is None:
if connection_string is not None:
@@ -213,7 +226,17 @@ def get_config(
driver_config = config_class.default_from_endpoint_and_database(
endpoint, database, root_certificates, credentials, **kwargs
)
- return driver_config
+ else:
+ kwargs["endpoint"] = endpoint
+ kwargs["database"] = database
+ kwargs["root_certificates"] = root_certificates
+ kwargs["credentials"] = credentials
+
+ driver_config._update_attrs_by_kwargs(**kwargs)
+
+ if driver_config.credentials is not None:
+ driver_config.credentials._update_driver_config(driver_config)
+
return driver_config
@@ -228,7 +251,7 @@ class Driver(pool.ConnectionPool):
database=None,
root_certificates=None,
credentials=None,
- **kwargs
+ **kwargs,
):
"""
Constructs a driver instance to be used in table and scheme clients.
diff --git a/contrib/python/ydb/py3/ydb/ydb_version.py b/contrib/python/ydb/py3/ydb/ydb_version.py
index ed2ab66d7ab..f890bc7248e 100644
--- a/contrib/python/ydb/py3/ydb/ydb_version.py
+++ b/contrib/python/ydb/py3/ydb/ydb_version.py
@@ -1 +1 @@
-VERSION = "3.18.0"
+VERSION = "3.18.1"