Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pynitrokey for 
openSUSE:Factory checked in at 2026-03-17 19:04:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pynitrokey (Old)
 and      /work/SRC/openSUSE:Factory/.python-pynitrokey.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pynitrokey"

Tue Mar 17 19:04:42 2026 rev:24 rq:1339489 version:0.11.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pynitrokey/python-pynitrokey.changes      
2026-01-29 17:49:12.088180335 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-pynitrokey.new.8177/python-pynitrokey.changes
    2026-03-17 19:06:22.657346520 +0100
@@ -1,0 +2,15 @@
+Tue Mar 17 06:28:24 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- update to 0.11.4:
+  * Add maintainer keys and check tag signatures in CI by
+    @robin-nitrokey in #723
+  * ci: Fetch tags for signature verification by @robin-nitrokey in
+    #725
+  * Update maintainers file by @robin-nitrokey in #724
+  * Update signature key by @robin-nitrokey in #726
+  * Update locked dependencies by @robin-nitrokey in #727
+  * Update developer and packaging docs by @robin-nitrokey in #729
+  * Add CODEOWNERS file by @robin-nitrokey in #732
+  * Feat/better log file handling by @james-knippes in #733
+
+-------------------------------------------------------------------

Old:
----
  pynitrokey-0.11.3.tar.gz

New:
----
  pynitrokey-0.11.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pynitrokey.spec ++++++
--- /var/tmp/diff_new_pack.LFVDE6/_old  2026-03-17 19:06:23.237370557 +0100
+++ /var/tmp/diff_new_pack.LFVDE6/_new  2026-03-17 19:06:23.237370557 +0100
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-pynitrokey
-Version:        0.11.3
+Version:        0.11.4
 Release:        0
 Summary:        Python Library for Nitrokey devices
 License:        Apache-2.0 OR MIT

++++++ pynitrokey-0.11.3.tar.gz -> pynitrokey-0.11.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/PKG-INFO 
new/pynitrokey-0.11.4/PKG-INFO
--- old/pynitrokey-0.11.3/PKG-INFO      1970-01-01 01:00:00.000000000 +0100
+++ new/pynitrokey-0.11.4/PKG-INFO      1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: pynitrokey
-Version: 0.11.3
+Version: 0.11.4
 Summary: Python client for Nitrokey devices
 License: Apache-2.0 OR MIT
 License-File: LICENSES/Apache-2.0.txt
@@ -99,7 +99,7 @@
 
 ## Development
 
-Information for developers and contributors can be found in the [Developer 
Guide](./docs/developer-guide.rst).
+Information for developers and contributors can be found in the [Developer 
Guide](./docs/developer-guide.md).
 
 ## Contributors
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/README.md 
new/pynitrokey-0.11.4/README.md
--- old/pynitrokey-0.11.3/README.md     1970-01-01 01:00:00.000000000 +0100
+++ new/pynitrokey-0.11.4/README.md     1970-01-01 01:00:00.000000000 +0100
@@ -57,7 +57,7 @@
 
 ## Development
 
-Information for developers and contributors can be found in the [Developer 
Guide](./docs/developer-guide.rst).
+Information for developers and contributors can be found in the [Developer 
Guide](./docs/developer-guide.md).
 
 ## Contributors
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/pynitrokey/cli/__init__.py 
new/pynitrokey-0.11.4/pynitrokey/cli/__init__.py
--- old/pynitrokey-0.11.3/pynitrokey/cli/__init__.py    1970-01-01 
01:00:00.000000000 +0100
+++ new/pynitrokey-0.11.4/pynitrokey/cli/__init__.py    1970-01-01 
01:00:00.000000000 +0100
@@ -22,7 +22,7 @@
 from pynitrokey.cli.pro import pro
 from pynitrokey.cli.start import start
 from pynitrokey.cli.storage import storage
-from pynitrokey.confconsts import LOG_FN, LOG_FORMAT
+from pynitrokey.confconsts import LOG_FILE, LOG_FN, LOG_FORMAT
 from pynitrokey.helpers import filter_sensitive_parameters, local_critical
 
 logger = logging.getLogger(__name__)
@@ -51,7 +51,7 @@
 
 @click.group(context_settings={"help_option_names": ["-h", "--help"]})
 def nitropy() -> None:
-    handler = logging.FileHandler(filename=LOG_FN, delay=True, 
encoding="utf-8")
+    handler = logging.StreamHandler(stream=LOG_FILE)
     logging.basicConfig(format=LOG_FORMAT, level=logging.DEBUG, 
handlers=[handler])
 
     logger.info(f"Timestamp: {datetime.now()}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/pynitrokey/cli/nk3/secrets.py 
new/pynitrokey-0.11.4/pynitrokey/cli/nk3/secrets.py
--- old/pynitrokey-0.11.3/pynitrokey/cli/nk3/secrets.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/pynitrokey-0.11.4/pynitrokey/cli/nk3/secrets.py 1970-01-01 
01:00:00.000000000 +0100
@@ -20,7 +20,13 @@
 )
 
 from pynitrokey.cli.nk3 import Context, nk3
-from pynitrokey.helpers import AskUser, b32padding, local_critical, local_print
+from pynitrokey.helpers import (
+    AskUser,
+    b32padding,
+    local_critical,
+    local_print,
+    local_print_secret,
+)
 
 
 @nk3.group()
@@ -609,7 +615,7 @@
                 f"Timestamp: 
{datetime.isoformat(datetime.fromtimestamp(timestamp), timespec='seconds')} 
({timestamp}), period: {period}",
                 file=sys.stderr,
             )
-            local_print(code.decode())
+            local_print_secret(code.decode())
 
         try:
             call(app)
@@ -664,21 +670,21 @@
             data = {k: decode_if_bytes(v) for k, v in cred.__dict__.items()}
             if password:
                 if cred.password:
-                    local_print(decode_if_bytes(cred.password))
+                    local_print_secret(decode_if_bytes(cred.password))
             elif format == "json":
                 js = json.dumps(data)
-                local_print(js)
+                local_print_secret(js)
             elif format == "csv":
                 si = io.StringIO()
                 writer = csv.DictWriter(si, fieldnames=data)
                 writer.writeheader()
                 writer.writerow(data)
-                local_print(si.getvalue().strip())
+                local_print_secret(si.getvalue().strip())
             else:
                 for f, v in data.items():
                     # f: str
                     # v: bytes
-                    local_print(f"{f:20}: {decode_if_bytes(v, '---')}")
+                    local_print_secret(f"{f:20}: {decode_if_bytes(v, '---')}")
 
         try:
             call(app)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/pynitrokey/cli/nkfido2.py 
new/pynitrokey-0.11.4/pynitrokey/cli/nkfido2.py
--- old/pynitrokey-0.11.3/pynitrokey/cli/nkfido2.py     1970-01-01 
01:00:00.000000000 +0100
+++ new/pynitrokey-0.11.4/pynitrokey/cli/nkfido2.py     1970-01-01 
01:00:00.000000000 +0100
@@ -22,7 +22,7 @@
 from pynitrokey.cli.program import program
 from pynitrokey.cli.update import update
 from pynitrokey.exceptions import NoSoloFoundError
-from pynitrokey.helpers import local_critical, local_print
+from pynitrokey.helpers import local_critical, local_print, local_print_secret
 
 
 @click.group()
@@ -74,7 +74,7 @@
 
     if not 0 <= count <= 255:
         local_critical(f"Number of bytes must be between 0 and 255, you passed 
{count}")
-    local_print(nkfido2.find(serial).get_rng(count).hex())
+    local_print_secret(nkfido2.find(serial).get_rng(count).hex())
 
 
 # @todo: not really useful like this? endless output only on request (--count 
?)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/pynitrokey/cli/trussed/__init__.py 
new/pynitrokey-0.11.4/pynitrokey/cli/trussed/__init__.py
--- old/pynitrokey-0.11.3/pynitrokey/cli/trussed/__init__.py    1970-01-01 
01:00:00.000000000 +0100
+++ new/pynitrokey-0.11.4/pynitrokey/cli/trussed/__init__.py    1970-01-01 
01:00:00.000000000 +0100
@@ -35,6 +35,7 @@
     Table,
     local_critical,
     local_print,
+    local_print_secret,
     require_windows_admin,
 )
 
@@ -574,7 +575,7 @@
     with ctx.connect_device() as device:
         while length > 0:
             rng = device.admin.rng()
-            local_print(rng[:length].hex())
+            local_print_secret(rng[:length].hex())
             length -= len(rng)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/pynitrokey/confconsts.py 
new/pynitrokey-0.11.4/pynitrokey/confconsts.py
--- old/pynitrokey-0.11.3/pynitrokey/confconsts.py      1970-01-01 
01:00:00.000000000 +0100
+++ new/pynitrokey-0.11.4/pynitrokey/confconsts.py      1970-01-01 
01:00:00.000000000 +0100
@@ -41,9 +41,14 @@
             f"setting default: {VERBOSE.name} = {VERBOSE.value}"
         )
 
-LOG_FN = tempfile.NamedTemporaryFile(
-    prefix=f"nitropy-{datetime.now().strftime('%Y%m%dT%H%M%S')}-", 
suffix=".log"
-).name
+LOG_FILE = tempfile.NamedTemporaryFile(
+    prefix=f"nitropy-{datetime.now().strftime('%Y%m%dT%H%M%S')}-",
+    suffix=".log",
+    mode="w",
+    encoding="utf-8",
+    delete=False,
+)
+LOG_FN = LOG_FILE.name
 LOG_FORMAT_STDOUT = "%(asctime)-15s %(levelname)6s %(name)10s %(message)s"
 LOG_FORMAT = "%(relativeCreated)-8d %(levelname)6s %(name)10s %(message)s"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/pynitrokey/helpers.py 
new/pynitrokey-0.11.4/pynitrokey/helpers.py
--- old/pynitrokey-0.11.3/pynitrokey/helpers.py 1970-01-01 01:00:00.000000000 
+0100
+++ new/pynitrokey-0.11.4/pynitrokey/helpers.py 1970-01-01 01:00:00.000000000 
+0100
@@ -251,7 +251,7 @@
 # @todo: introduce granularization: dbg, info, err (warn?)
 #        + machine-readable
 #        + logfile-only (partly solved)
-def local_print(*messages: Any, **kwargs: Any) -> None:
+def local_print(*messages: Any, is_secret: bool = False, **kwargs: Any) -> 
None:
     """Application-wide logging function"""
 
     passed_exc = None
@@ -272,7 +272,10 @@
         # logfile debug output
         else:
             whereto = "print: " if STDOUT_PRINT else ""
-            logger.debug(f"{whereto}{str(item).strip()}")
+            if is_secret:
+                logger.debug(f"{whereto}!REDACTED SECRET FROM LOGS!")
+            else:
+                logger.debug(f"{whereto}{str(item).strip()}")
 
         # to stdout
         if STDOUT_PRINT:
@@ -283,6 +286,11 @@
         raise passed_exc
 
 
+def local_print_secret(*messages: Any, **kwargs: Any) -> None:
+    """Application-wide logging function for secret messages"""
+    local_print(*messages, is_secret=True, **kwargs)
+
+
 def local_critical(
     *messages: Any, support_hint: bool = True, ret_code: int = 1, **kwargs: Any
 ) -> None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynitrokey-0.11.3/pyproject.toml 
new/pynitrokey-0.11.4/pyproject.toml
--- old/pynitrokey-0.11.3/pyproject.toml        1970-01-01 01:00:00.000000000 
+0100
+++ new/pynitrokey-0.11.4/pyproject.toml        1970-01-01 01:00:00.000000000 
+0100
@@ -8,7 +8,7 @@
 
 [project]
 name = "pynitrokey"
-version = "0.11.3"
+version = "0.11.4"
 description = "Python client for Nitrokey devices"
 license = { text = "Apache-2.0 OR MIT" }
 authors = [

Reply via email to