ports,

I had narrowed down the issue with mitmproxy too verbose logging to a the
root cause: update of security/py-passlib.

The new fork includes
https://github.com/ThirVondukr/passlib/commit/650121d0cd7a6da775b2f44573de4c165b80d93c
which had switched the code to use logging in the way like logging.debug()

One of the casses happens on import, and as documentation stated here
https://docs.python.org/3/library/logging.html#logging.debug the call
`logging.debug (or similar one) make implicit configuration of the logger
and it dismiss the second configuration from user application like mitmproxy

We had a few users for security/py-passlib:
 - productivity/radicale
 - productivity/radicale2
 - security/mitmproxy
 - sysutils/ansible-core
 - www/odoo
 - www/py-autobahn
which might be impacted by this bug.

I had backported this fix to upstream already, and I think that we need
backport it to -stable as well.

Ok for -current and -stable?


Index: security/py-passlib/Makefile
===================================================================
RCS file: /cvs/ports/security/py-passlib/Makefile,v
diff -u -p -r1.30 Makefile
--- security/py-passlib/Makefile        26 Mar 2025 09:42:19 -0000      1.30
+++ security/py-passlib/Makefile        1 May 2025 08:04:17 -0000
@@ -1,6 +1,7 @@
 COMMENT=       Python module providing a password hashing framework
 
 MODPY_DISTV=   1.9.0
+REVISION=      0
 DISTNAME=      libpass-${MODPY_DISTV}
 # libpass is a maintained fork of passlib, providing the same namespace
 PKGNAME=       py-passlib-${MODPY_DISTV}
Index: security/py-passlib/patches/patch-passlib_registry_py
===================================================================
RCS file: security/py-passlib/patches/patch-passlib_registry_py
diff -N security/py-passlib/patches/patch-passlib_registry_py
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ security/py-passlib/patches/patch-passlib_registry_py       1 May 2025 
08:04:17 -0000
@@ -0,0 +1,36 @@
+https://github.com/ThirVondukr/passlib/pull/15
+
+Index: passlib/registry.py
+--- passlib/registry.py.orig
++++ passlib/registry.py
+@@ -234,7 +234,7 @@ def register_crypt_handler_path(name, path):
+ 
+     # store location
+     _locations[name] = path
+-    logging.debug("registered path to %r handler: %r", name, path)
++    logging.getLogger(__name__).debug("registered path to %r handler: %r", 
name, path)
+ 
+ 
+ def register_crypt_handler(handler, force=False, _attr=None):
+@@ -278,10 +278,10 @@ def register_crypt_handler(handler, force=False, _attr
+     other = _handlers.get(name)
+     if other:
+         if other is handler:
+-            logging.debug("same %r handler already registered: %r", name, 
handler)
++            logging.getLogger(__name__).debug("same %r handler already 
registered: %r", name, handler)
+             return
+         if force:
+-            logging.warning(
++            logging.getLogger(__name__).warning(
+                 "overriding previously registered %r handler: %r", name, other
+             )
+         else:
+@@ -291,7 +291,7 @@ def register_crypt_handler(handler, force=False, _attr
+ 
+     # register handler
+     _handlers[name] = handler
+-    logging.debug("registered %r handler: %r", name, handler)
++    logging.getLogger(__name__).debug("registered %r handler: %r", name, 
handler)
+ 
+ 
+ def get_crypt_handler(name, default=_UNSET):


-- 
wbr, Kirill

Reply via email to