From 2cc3c44973e1b68a9f8698285eef27205646b321 Mon Sep 17 00:00:00 2001 From: Thomas 'sitzz' Vang <8313369+sitzz@users.noreply.github.com> Date: Tue, 24 Jun 2025 22:05:52 +0200 Subject: [PATCH 1/4] chore:updated package version --- couchbase_helper/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchbase_helper/__init__.py b/couchbase_helper/__init__.py index 1d4c499..9b42515 100644 --- a/couchbase_helper/__init__.py +++ b/couchbase_helper/__init__.py @@ -4,4 +4,4 @@ __all__ = ["CouchbaseHelper", "Session", "Timeout"] __author__ = "Thomas 'sitzz' Vang " -__version__ = "0.1.2" +__version__ = "0.1.3" From 515859e99f8a720d57978e00695550844cab339f Mon Sep 17 00:00:00 2001 From: Thomas 'sitzz' Vang <8313369+sitzz@users.noreply.github.com> Date: Tue, 24 Jun 2025 21:58:21 +0200 Subject: [PATCH 2/4] feat:use session logger - Instead of passing a logger to both the Session class as well as either the CouchbaseHelper or N1ql classes, the latter two will now just use the Session's defined logger. --- couchbase_helper/helper.py | 19 +++++++++++-------- couchbase_helper/n1ql.py | 13 ++++++++++--- couchbase_helper/protocols.py | 3 +++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/couchbase_helper/helper.py b/couchbase_helper/helper.py index ed7f88f..80de393 100644 --- a/couchbase_helper/helper.py +++ b/couchbase_helper/helper.py @@ -23,17 +23,20 @@ class CouchbaseHelper: session (implements :class:`couchbase_helper.protocols.SessionProt`): The cluster connection session logger (:class:`logging.logger`): + DEPRECATED SINCE v0.1.3, WILL USE SESSION LOGGER INSTEAD The logging instance to use for log message. Defaults to the root logger. """ - def __init__( - self, - session: SessionProt, - logger: Optional[logging.Logger] = None, - ): - if logger is None: - logger = logging.getLogger() - self.logger = logger + def __init__(self, session: SessionProt, logger: Optional[logging.Logger] = None): + if session.logger is not None: + self.logger = session.logger + else: + self.logger = logging.getLogger() + + if logger is not None: + self.logger.warning( + "usage of parameter 'logger' in CouchbaseHelper class deprecated since 0.1.3 and will be removed in a future version" + ) self.session = session diff --git a/couchbase_helper/n1ql.py b/couchbase_helper/n1ql.py index 837993e..962f3f3 100644 --- a/couchbase_helper/n1ql.py +++ b/couchbase_helper/n1ql.py @@ -20,6 +20,7 @@ class N1ql: session (implements :class:`~couchbase_helper.protocols.SessionProt`) The cluster connection session logger (:class:`logging.logger`): + DEPRECATED SINCE v0.1.3, WILL USE SESSION LOGGER INSTEAD The logging instance to use for log message. Defaults to the root logger. Usage: @@ -44,9 +45,15 @@ class N1ql: """ def __init__(self, session: Session, logger: Optional[logging.Logger] = None): - if logger is None: - logger = logging.getLogger() - self.logger = logger + if session.logger is not None: + self.logger = session.logger + else: + self.logger = logging.getLogger() + + if logger is not None: + self.logger.warning( + "usage of parameter 'logger' in CouchbaseHelper class deprecated since 0.1.3 and will be removed in a future version" + ) self.session = session diff --git a/couchbase_helper/protocols.py b/couchbase_helper/protocols.py index 97e07b4..2c30971 100644 --- a/couchbase_helper/protocols.py +++ b/couchbase_helper/protocols.py @@ -1,3 +1,4 @@ +import logging from typing import Protocol from couchbase.bucket import Collection, Scope @@ -7,6 +8,8 @@ class SessionProt(Protocol): + logger: logging.Logger + def connect(self): ... def disconnect(self): ... From eb08172bdb50449c175e5417aa796664819d862e Mon Sep 17 00:00:00 2001 From: Thomas 'sitzz' Vang <8313369+sitzz@users.noreply.github.com> Date: Tue, 24 Jun 2025 22:12:18 +0200 Subject: [PATCH 3/4] chore: ensure backwards compatability for 'logger' - In classes CouchbaseHelper ans N1ql the parameter 'logger' was ignored. To increase backwards compatability it will now be prefered, but otherwise revert to the Session's logger, or even fall back to the default logger. --- couchbase_helper/helper.py | 12 ++++++------ couchbase_helper/n1ql.py | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/couchbase_helper/helper.py b/couchbase_helper/helper.py index 80de393..f8c64dd 100644 --- a/couchbase_helper/helper.py +++ b/couchbase_helper/helper.py @@ -23,20 +23,20 @@ class CouchbaseHelper: session (implements :class:`couchbase_helper.protocols.SessionProt`): The cluster connection session logger (:class:`logging.logger`): - DEPRECATED SINCE v0.1.3, WILL USE SESSION LOGGER INSTEAD + DEPRECATED SINCE v0.1.3, SHOULD USE SESSION LOGGER INSTEAD The logging instance to use for log message. Defaults to the root logger. """ def __init__(self, session: SessionProt, logger: Optional[logging.Logger] = None): - if session.logger is not None: - self.logger = session.logger - else: - self.logger = logging.getLogger() - if logger is not None: + self.logger = logger self.logger.warning( "usage of parameter 'logger' in CouchbaseHelper class deprecated since 0.1.3 and will be removed in a future version" ) + elif session.logger is not None: + self.logger = session.logger + else: + self.logger = logging.getLogger() self.session = session diff --git a/couchbase_helper/n1ql.py b/couchbase_helper/n1ql.py index 962f3f3..cd06f7f 100644 --- a/couchbase_helper/n1ql.py +++ b/couchbase_helper/n1ql.py @@ -20,7 +20,7 @@ class N1ql: session (implements :class:`~couchbase_helper.protocols.SessionProt`) The cluster connection session logger (:class:`logging.logger`): - DEPRECATED SINCE v0.1.3, WILL USE SESSION LOGGER INSTEAD + DEPRECATED SINCE v0.1.3, SHOULD USE SESSION LOGGER INSTEAD The logging instance to use for log message. Defaults to the root logger. Usage: @@ -45,15 +45,15 @@ class N1ql: """ def __init__(self, session: Session, logger: Optional[logging.Logger] = None): - if session.logger is not None: - self.logger = session.logger - else: - self.logger = logging.getLogger() - if logger is not None: + self.logger = logger self.logger.warning( - "usage of parameter 'logger' in CouchbaseHelper class deprecated since 0.1.3 and will be removed in a future version" + "usage of parameter 'logger' in N1ql class deprecated since 0.1.3 and will be removed in a future version" ) + elif session.logger is not None: + self.logger = session.logger + else: + self.logger = logging.getLogger() self.session = session From d0f1d3ed48fe2bc0ce5dc1d96a53206905efac2f Mon Sep 17 00:00:00 2001 From: Thomas Vang Johansen <8313369+sitzz@users.noreply.github.com> Date: Thu, 3 Jul 2025 04:06:59 +0200 Subject: [PATCH 4/4] chore:tweaked retry decorator type hint and return --- couchbase_helper/retry.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/couchbase_helper/retry.py b/couchbase_helper/retry.py index 3ecbc88..67e3c5a 100644 --- a/couchbase_helper/retry.py +++ b/couchbase_helper/retry.py @@ -17,7 +17,7 @@ def retry( attempts: int = 3, delay: float = 0.1, policy: RetryPolicy = RetryPolicy.FLAT, - exceptions: Optional[Tuple[Exception]] = None, + exceptions: Optional[Tuple[type[Exception]]] = None, ) -> Callable: def handler(func): @wraps(func) @@ -42,6 +42,8 @@ def wrapper(*args, **kwargs): sleep(backoff) + return None + return wrapper return handler