Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-daiquiri for openSUSE:Factory
checked in at 2026-04-08 17:14:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-daiquiri (Old)
and /work/SRC/openSUSE:Factory/.python-daiquiri.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-daiquiri"
Wed Apr 8 17:14:18 2026 rev:15 rq:1344799 version:3.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-daiquiri/python-daiquiri.changes
2024-02-05 22:00:59.050542991 +0100
+++
/work/SRC/openSUSE:Factory/.python-daiquiri.new.21863/python-daiquiri.changes
2026-04-08 17:14:34.429067782 +0200
@@ -1,0 +2,12 @@
+Mon Apr 6 20:32:19 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 3.4.0:
+ * fix: don't break the monkeypatch chain
+ * build: update dependencies (python-json-logger >= 3, setuptools >= 64,
setuptools_scm >= 8)
+- update to 3.3.0:
+ * ci: fix Python 3.12 tests & linters
+ * build: support Python 3.13
+ * build: drop support for Python 3.8 and 3.9
+ * fix: turn on deprecation warning and upgrade jsonlogger
+
+-------------------------------------------------------------------
Old:
----
daiquiri-3.2.5.1.tar.gz
New:
----
daiquiri-3.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-daiquiri.spec ++++++
--- /var/tmp/diff_new_pack.M1djkl/_old 2026-04-08 17:14:35.093095083 +0200
+++ /var/tmp/diff_new_pack.M1djkl/_new 2026-04-08 17:14:35.097095247 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-daiquiri
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-daiquiri
-Version: 3.2.5.1
+Version: 3.4.0
Release: 0
Summary: Library to configure Python logging
License: Apache-2.0
@@ -26,12 +26,13 @@
Source:
https://files.pythonhosted.org/packages/source/d/daiquiri/daiquiri-%{version}.tar.gz
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest}
-BuildRequires: %{python_module python-json-logger}
-BuildRequires: %{python_module setuptools_scm}
+BuildRequires: %{python_module python-json-logger >= 3}
+BuildRequires: %{python_module setuptools >= 64}
+BuildRequires: %{python_module setuptools_scm >= 8}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-python-json-logger
+Requires: python-python-json-logger >= 3
BuildArch: noarch
%python_subpackages
++++++ daiquiri-3.2.5.1.tar.gz -> daiquiri-3.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/.github/workflows/ci.yaml
new/daiquiri-3.4.0/.github/workflows/ci.yaml
--- old/daiquiri-3.2.5.1/.github/workflows/ci.yaml 2024-01-25
10:00:23.000000000 +0100
+++ new/daiquiri-3.4.0/.github/workflows/ci.yaml 2025-09-04
10:30:18.000000000 +0200
@@ -5,14 +5,15 @@
pull_request:
branches:
- main
+ - devs/**
jobs:
test:
strategy:
matrix:
- python: ["3.8", "3.9", "3.10", "3.11", "3.12"]
+ python: ["3.10", "3.11", "3.12", "3.13"]
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
steps:
- name: Checkout 🛎️
uses: actions/[email protected]
@@ -29,7 +30,7 @@
run: tox -e py$(echo ${{ matrix.python }} | tr -d .)
pep8:
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
steps:
- name: Checkout 🛎️
uses: actions/[email protected]
@@ -37,7 +38,7 @@
- name: Setup Python 🔧
uses: actions/setup-python@v4
with:
- python-version: "3.12"
+ python-version: "3.13"
- name: Install tox
run: pip install tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/.mergify.yml
new/daiquiri-3.4.0/.mergify.yml
--- old/daiquiri-3.2.5.1/.mergify.yml 2024-01-25 10:00:23.000000000 +0100
+++ new/daiquiri-3.4.0/.mergify.yml 2025-09-04 10:30:18.000000000 +0200
@@ -16,15 +16,7 @@
queue_conditions:
- "#approved-reviews-by>=1"
- "check-success=pep8"
- - "check-success=test (3.8)"
- - "check-success=test (3.9)"
- - "check-success=test (3.10)"
- - "check-success=test (3.11)"
- - "check-success=test (3.12)"
- merge_conditions:
- - "check-success=pep8"
- - "check-success=test (3.8)"
- - "check-success=test (3.9)"
- "check-success=test (3.10)"
- "check-success=test (3.11)"
- "check-success=test (3.12)"
+ - "check-success=test (3.13)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/PKG-INFO new/daiquiri-3.4.0/PKG-INFO
--- old/daiquiri-3.2.5.1/PKG-INFO 2024-01-25 10:00:32.225511300 +0100
+++ new/daiquiri-3.4.0/PKG-INFO 2025-09-04 10:30:24.093997200 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: daiquiri
-Version: 3.2.5.1
+Version: 3.4.0
Summary: Library to configure Python logging easily
Author-email: Julien Danjou <[email protected]>
License: Apache 2.0
@@ -11,19 +11,19 @@
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
-Requires-Python: >=3.8
+Classifier: Programming Language :: Python :: 3.13
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
-Requires-Dist: python-json-logger
+Requires-Dist: python-json-logger>=3
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Provides-Extra: systemd
Requires-Dist: systemd-python>=234; extra == "systemd"
+Dynamic: license-file
=======================================
daiquiri -- Python logging setup helper
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/daiquiri/__init__.py
new/daiquiri-3.4.0/daiquiri/__init__.py
--- old/daiquiri-3.2.5.1/daiquiri/__init__.py 2024-01-25 10:00:23.000000000
+0100
+++ new/daiquiri-3.4.0/daiquiri/__init__.py 2025-09-04 10:30:18.000000000
+0200
@@ -109,14 +109,17 @@
if set_excepthook:
program_logger = logging.getLogger(program_name)
+ initial_excepthook = staticmethod(sys.excepthook)
+
def logging_excepthook(
- exc_type: typing.Optional[typing.Type[BaseException]],
- value: typing.Optional[BaseException],
+ exc_type: typing.Type[BaseException],
+ value: BaseException,
tb: typing.Optional[_ptypes.TracebackType],
) -> None:
program_logger.critical(
"".join(traceback.format_exception(exc_type, value, tb))
)
+ initial_excepthook(exc_type, value, tb)
sys.excepthook = logging_excepthook
@@ -144,7 +147,7 @@
def set_default_log_levels(
loggers_and_log_levels: typing.Iterable[
typing.Tuple[typing.Optional[str], typing.Union[str, int]]
- ]
+ ],
) -> None:
"""Set default log levels for some loggers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/daiquiri/formatter.py
new/daiquiri-3.4.0/daiquiri/formatter.py
--- old/daiquiri-3.2.5.1/daiquiri/formatter.py 2024-01-25 10:00:23.000000000
+0100
+++ new/daiquiri-3.4.0/daiquiri/formatter.py 2025-09-04 10:30:18.000000000
+0200
@@ -14,7 +14,7 @@
import logging
import typing
-from pythonjsonlogger import jsonlogger
+from pythonjsonlogger import json as jsonlogger
from daiquiri import types
@@ -159,7 +159,7 @@
class DatadogFormatter(jsonlogger.JsonFormatter):
def __init__(self) -> None:
- super(DatadogFormatter, self).__init__(timestamp=True) # type:
ignore[no-untyped-call]
+ super(DatadogFormatter, self).__init__(timestamp=True)
def add_fields(
self,
@@ -183,5 +183,5 @@
TEXT_FORMATTER = ColorExtrasFormatter(fmt=DEFAULT_EXTRAS_FORMAT)
-JSON_FORMATTER = jsonlogger.JsonFormatter() # type: ignore[no-untyped-call]
+JSON_FORMATTER = jsonlogger.JsonFormatter()
DATADOG_FORMATTER = DatadogFormatter()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/daiquiri/output.py
new/daiquiri-3.4.0/daiquiri/output.py
--- old/daiquiri-3.2.5.1/daiquiri/output.py 2024-01-25 10:00:23.000000000
+0100
+++ new/daiquiri-3.4.0/daiquiri/output.py 2025-09-04 10:30:18.000000000
+0200
@@ -207,7 +207,7 @@
@staticmethod
def _timedelta_to_seconds(
- td: typing.Union[float, int, datetime.timedelta]
+ td: typing.Union[float, int, datetime.timedelta],
) -> float:
"""Convert a datetime.timedelta object into a seconds interval.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/daiquiri/tests/test_daiquiri.py
new/daiquiri-3.4.0/daiquiri/tests/test_daiquiri.py
--- old/daiquiri-3.2.5.1/daiquiri/tests/test_daiquiri.py 2024-01-25
10:00:23.000000000 +0100
+++ new/daiquiri-3.4.0/daiquiri/tests/test_daiquiri.py 2025-09-04
10:30:18.000000000 +0200
@@ -13,17 +13,22 @@
import json
import logging
import sys
+import types
import typing
import unittest
import warnings
import daiquiri
+real_excepthook = sys.excepthook
+
class TestDaiquiri(unittest.TestCase):
def tearDown(self) -> None:
# Be sure to reset the warning capture
logging.captureWarnings(False)
+ # Reset exception hook
+ sys.excepthook = real_excepthook
super(TestDaiquiri, self).tearDown()
def test_setup(self) -> None:
@@ -31,6 +36,29 @@
daiquiri.setup(level=logging.DEBUG)
daiquiri.setup(program_name="foobar")
+ def test_excepthook(self) -> None:
+ hook_ran = False
+
+ def catcher(
+ exctype: type[BaseException],
+ value: BaseException,
+ traceback: types.TracebackType | None,
+ ) -> None:
+ nonlocal hook_ran
+ hook_ran = True
+ real_excepthook(exctype, value, traceback)
+
+ sys.excepthook = catcher
+
+ sys.excepthook(Exception, Exception("boom"), None)
+ assert hook_ran
+
+ daiquiri.setup()
+
+ hook_ran = False
+ sys.excepthook(Exception, Exception("boom"), None)
+ assert hook_ran
+
def test_setup_json_formatter(self) -> None:
stream = io.StringIO()
daiquiri.setup(
@@ -42,8 +70,6 @@
)
daiquiri.getLogger(__name__).warning("foobar")
expected: dict[str, typing.Any] = {"message": "foobar"}
- if sys.version_info >= (3, 12):
- expected.update({"taskName": None})
self.assertEqual(expected, json.loads(stream.getvalue()))
def test_setup_json_formatter_with_extras(self) -> None:
@@ -57,8 +83,6 @@
)
daiquiri.getLogger(__name__).warning("foobar", foo="bar")
expected: dict[str, typing.Any] = {"message": "foobar", "foo": "bar"}
- if sys.version_info >= (3, 12):
- expected.update({"taskName": None})
self.assertEqual(expected, json.loads(stream.getvalue()))
def test_get_logger_set_level(self) -> None:
@@ -72,7 +96,7 @@
line = stream.getvalue()
self.assertIn("WARNING py.warnings: ", line)
self.assertIn(
- "daiquiri/tests/test_daiquiri.py:71: "
+ "daiquiri/tests/test_daiquiri.py:95: "
'UserWarning: omg!\n warnings.warn("omg!")\n',
line,
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/daiquiri/tests/test_formatter.py
new/daiquiri-3.4.0/daiquiri/tests/test_formatter.py
--- old/daiquiri-3.2.5.1/daiquiri/tests/test_formatter.py 2024-01-25
10:00:23.000000000 +0100
+++ new/daiquiri-3.4.0/daiquiri/tests/test_formatter.py 2025-09-04
10:30:18.000000000 +0200
@@ -71,7 +71,7 @@
)
def test_keywords_no_extras(self) -> None:
- format_string = "%(levelname)s %(name)s" " %(test)s%(extras)s:
%(message)s"
+ format_string = "%(levelname)s %(name)s %(test)s%(extras)s:
%(message)s"
formatter = daiquiri.formatter.ColorExtrasFormatter(
fmt=format_string, keywords={"test"}
)
@@ -81,7 +81,7 @@
self.assertEqual(self.stream.getvalue(), "INFO my_module a: test
message\n")
def test_keywords_with_extras(self) -> None:
- format_string = "%(levelname)s %(name)s" " %(test)s%(extras)s:
%(message)s"
+ format_string = "%(levelname)s %(name)s %(test)s%(extras)s:
%(message)s"
formatter = daiquiri.formatter.ColorExtrasFormatter(
fmt=format_string, keywords={"test"}
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/daiquiri/tests/test_output.py
new/daiquiri-3.4.0/daiquiri/tests/test_output.py
--- old/daiquiri-3.2.5.1/daiquiri/tests/test_output.py 2024-01-25
10:00:23.000000000 +0100
+++ new/daiquiri-3.4.0/daiquiri/tests/test_output.py 2025-09-04
10:30:18.000000000 +0200
@@ -11,7 +11,6 @@
# under the License.
import json
import logging
-import sys
import syslog
import typing
import unittest
@@ -125,10 +124,6 @@
"message": mock.ANY,
},
}
- if sys.version_info >= (3, 12):
- expected_error_1.update({"taskName": None})
- expected_info_1.update({"taskName": None})
- expected_error_2.update({"taskName": None})
try:
1 / 0
except ZeroDivisionError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/daiquiri.egg-info/PKG-INFO
new/daiquiri-3.4.0/daiquiri.egg-info/PKG-INFO
--- old/daiquiri-3.2.5.1/daiquiri.egg-info/PKG-INFO 2024-01-25
10:00:32.000000000 +0100
+++ new/daiquiri-3.4.0/daiquiri.egg-info/PKG-INFO 2025-09-04
10:30:24.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: daiquiri
-Version: 3.2.5.1
+Version: 3.4.0
Summary: Library to configure Python logging easily
Author-email: Julien Danjou <[email protected]>
License: Apache 2.0
@@ -11,19 +11,19 @@
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
-Requires-Python: >=3.8
+Classifier: Programming Language :: Python :: 3.13
+Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
-Requires-Dist: python-json-logger
+Requires-Dist: python-json-logger>=3
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Provides-Extra: systemd
Requires-Dist: systemd-python>=234; extra == "systemd"
+Dynamic: license-file
=======================================
daiquiri -- Python logging setup helper
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/daiquiri.egg-info/requires.txt
new/daiquiri-3.4.0/daiquiri.egg-info/requires.txt
--- old/daiquiri-3.2.5.1/daiquiri.egg-info/requires.txt 2024-01-25
10:00:32.000000000 +0100
+++ new/daiquiri-3.4.0/daiquiri.egg-info/requires.txt 2025-09-04
10:30:24.000000000 +0200
@@ -1,4 +1,4 @@
-python-json-logger
+python-json-logger>=3
[systemd]
systemd-python>=234
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/pyproject.toml
new/daiquiri-3.4.0/pyproject.toml
--- old/daiquiri-3.2.5.1/pyproject.toml 2024-01-25 10:00:23.000000000 +0100
+++ new/daiquiri-3.4.0/pyproject.toml 2025-09-04 10:30:18.000000000 +0200
@@ -4,7 +4,7 @@
[project]
name = "daiquiri"
-requires-python = ">=3.8"
+requires-python = ">=3.10"
dynamic = ["version"]
license = {"text" = "Apache 2.0"}
description = "Library to configure Python logging easily"
@@ -19,14 +19,13 @@
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
]
dependencies = [
- "python-json-logger"
+ "python-json-logger >= 3"
]
[project.urls]
@@ -44,9 +43,6 @@
test = ["pytest"]
systemd = ["systemd-python>=234"]
-[tool.black]
-target-version = ['py38', 'py39', 'py310', 'py311', 'py312']
-
[tool.mypy]
files = "daiquiri"
show_error_codes = true
@@ -54,7 +50,12 @@
[[tool.mypy.overrides]]
module = [
- "pythonjsonlogger",
"systemd",
]
ignore_missing_imports = true
+
+[tool.pytest.ini_options]
+filterwarnings = [
+ "error::DeprecationWarning",
+]
+testpaths = ["daiquiri/tests"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-3.2.5.1/tox.ini new/daiquiri-3.4.0/tox.ini
--- old/daiquiri-3.2.5.1/tox.ini 2024-01-25 10:00:23.000000000 +0100
+++ new/daiquiri-3.4.0/tox.ini 2025-09-04 10:30:18.000000000 +0200
@@ -1,5 +1,5 @@
[tox]
-envlist = py38,py39,py310,py311,py312,pep8,docs
+envlist = py310,py311,py312,py313,pep8,docs
[testenv]
allowlist_externals = sh
@@ -10,31 +10,17 @@
sh -c "rm errors.log everything.log"
[testenv:pep8]
-basepython = python3.12
+basepython = python3.13
deps =
{[testenv]deps}
- black
- flake8
+ ruff
mypy
- flake8-import-order
- flake8-blind-except
- flake8-builtins
- flake8-docstrings
- flake8-rst-docstrings
- flake8-logging-format
commands =
- black --check .
- flake8
+ ruff format --check .
+ ruff check .
mypy
-[flake8]
-show-source = True
-exclude=.git,.tox,dist,build,.eggs
-application-import-names=daiquiri
-# Black ignore those first fours
-ignore = E203,E501,W503,E231,A003,D101,D102,D103,D104,D105,D107,A003,D100
-
[testenv:docs]
deps = sphinx
commands = sphinx-build -b html doc/source doc/build/html