Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pydyf for openSUSE:Factory 
checked in at 2025-12-29 15:16:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pydyf (Old)
 and      /work/SRC/openSUSE:Factory/.python-pydyf.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pydyf"

Mon Dec 29 15:16:48 2025 rev:14 rq:1324595 version:0.12.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pydyf/python-pydyf.changes        
2024-08-19 23:44:25.727437059 +0200
+++ /work/SRC/openSUSE:Factory/.python-pydyf.new.1928/python-pydyf.changes      
2025-12-29 15:17:36.076975409 +0100
@@ -1,0 +2,10 @@
+Sun Dec 28 20:29:51 UTC 2025 - Dirk Müller <[email protected]>
+
+- update to 0.12.1:
+  * Don’t add /Info key in compressed trailer if info dict is
+    empty
+  * Python 3.13 and 3.14 are supported and tested
+  * Python 3.10+ is now needed, Python 3.8 and 3.9 are not
+    supported anymore
+
+-------------------------------------------------------------------

Old:
----
  pydyf-0.11.0.tar.gz

New:
----
  pydyf-0.12.1.tar.gz

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

Other differences:
------------------
++++++ python-pydyf.spec ++++++
--- /var/tmp/diff_new_pack.t8kFG4/_old  2025-12-29 15:17:37.957052685 +0100
+++ /var/tmp/diff_new_pack.t8kFG4/_new  2025-12-29 15:17:37.977053508 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pydyf
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 # Copyright (c) 2022-2023 Dr. Axel Braun <[email protected]>
 #
 # All modifications and additions to the file contributed by third parties
@@ -19,7 +19,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-pydyf
-Version:        0.11.0
+Version:        0.12.1
 Release:        0
 Summary:        A low-level PDF generator
 License:        BSD-3-Clause

++++++ pydyf-0.11.0.tar.gz -> pydyf-0.12.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pydyf-0.11.0/PKG-INFO new/pydyf-0.12.1/PKG-INFO
--- old/pydyf-0.11.0/PKG-INFO   1970-01-01 01:00:00.000000000 +0100
+++ new/pydyf-0.12.1/PKG-INFO   1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +1,11 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
 Name: pydyf
-Version: 0.11.0
+Version: 0.12.1
 Summary: A low-level PDF generator.
 Keywords: pdf,generator
 Author-email: CourtBouillon <[email protected]>
 Maintainer-email: CourtBouillon <[email protected]>
-Requires-Python: >=3.8
+Requires-Python: >=3.10
 Description-Content-Type: text/x-rst
 Classifier: Development Status :: 4 - Beta
 Classifier: Intended Audience :: Developers
@@ -14,15 +14,16 @@
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3 :: Only
-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
+Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
+License-File: LICENSE
 Requires-Dist: sphinx ; extra == "doc"
-Requires-Dist: sphinx_rtd_theme ; extra == "doc"
+Requires-Dist: furo ; extra == "doc"
 Requires-Dist: pytest ; extra == "test"
 Requires-Dist: ruff ; extra == "test"
 Requires-Dist: pillow ; extra == "test"
@@ -39,7 +40,7 @@
 specification 1.7.
 
 * Free software: BSD license
-* For Python 3.8+, tested on CPython and PyPy
+* For Python 3.10+, tested on CPython and PyPy
 * Documentation: https://doc.courtbouillon.org/pydyf
 * Changelog: https://github.com/CourtBouillon/pydyf/releases
 * Code, issues, tests: https://github.com/CourtBouillon/pydyf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pydyf-0.11.0/README.rst new/pydyf-0.12.1/README.rst
--- old/pydyf-0.11.0/README.rst 2024-04-30 14:57:19.951628700 +0200
+++ new/pydyf-0.12.1/README.rst 2025-12-02 15:52:00.089036200 +0100
@@ -2,7 +2,7 @@
 specification 1.7.
 
 * Free software: BSD license
-* For Python 3.8+, tested on CPython and PyPy
+* For Python 3.10+, tested on CPython and PyPy
 * Documentation: https://doc.courtbouillon.org/pydyf
 * Changelog: https://github.com/CourtBouillon/pydyf/releases
 * Code, issues, tests: https://github.com/CourtBouillon/pydyf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pydyf-0.11.0/docs/changelog.rst 
new/pydyf-0.12.1/docs/changelog.rst
--- old/pydyf-0.11.0/docs/changelog.rst 2024-07-12 14:19:13.159826000 +0200
+++ new/pydyf-0.12.1/docs/changelog.rst 2025-12-02 15:52:00.089036200 +0100
@@ -2,10 +2,92 @@
 =========
 
 
+Version 0.12.1
+--------------
+
+Released on 2025-12-02.
+
+Bug fixes:
+
+* Don’t add /Info key in compressed trailer if info dict is empty
+
+Contributors:
+
+* Guillaume Ayoub
+
+Backers and sponsors:
+
+* Spacinov
+* Syslifters
+* Kobalt
+* Simon Sapin
+* Grip Angebotssoftware
+* Manuel Barkhau
+* Simonsoft
+* KontextWork
+* Menutech
+* TrainingSparkle
+* Healthchecks.io
+* Method B
+* FieldHub
+* Hammerbacher
+* Yanal-Yves Fargialla
+* Morntag
+* Piloterr
+* Xavid
+* Charlie S.
+* Prothesis Dental Solutions
+* Kai DeLorenzo
+
+
+Version 0.12.0
+--------------
+
+Released on 2025-12-02.
+
+Dependencies:
+
+* Python 3.13 and 3.14 are supported and tested
+* Python 3.10+ is now needed, Python 3.8 and 3.9 are not supported anymore
+
+New features:
+
+* Remove deprecated color_space, shading, text_matrix and transform methods
+* Don’t add Info key in trailer when info dict is empty
+
+Contributors:
+
+* Guillaume Ayoub
+
+Backers and sponsors:
+
+* Spacinov
+* Syslifters
+* Kobalt
+* Simon Sapin
+* Grip Angebotssoftware
+* Manuel Barkhau
+* Simonsoft
+* KontextWork
+* Menutech
+* TrainingSparkle
+* Healthchecks.io
+* Method B
+* FieldHub
+* Hammerbacher
+* Yanal-Yves Fargialla
+* Morntag
+* Piloterr
+* Xavid
+* Charlie S.
+* Prothesis Dental Solutions
+* Kai DeLorenzo
+
+
 Version 0.11.0
 --------------
 
-Released on
+Released on 2024-07-12.
 
 New features:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pydyf-0.11.0/docs/conf.py 
new/pydyf-0.12.1/docs/conf.py
--- old/pydyf-0.11.0/docs/conf.py       2024-03-22 20:52:28.968818200 +0100
+++ new/pydyf-0.12.1/docs/conf.py       2025-12-02 15:52:00.089036200 +0100
@@ -40,10 +40,25 @@
 
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
-html_theme = 'sphinx_rtd_theme'
+html_theme = 'furo'
 
 html_theme_options = {
-    'collapse_navigation': False,
+    'light_css_variables': {
+        'color-brand-primary': 'var(--red)',
+        'color-brand-content': 'var(--red)',
+        'color-brand-visited': 'var(--red)',
+        'font-stack': 'ClarityCity, sans-serif',
+        'font-stack--monospace': 'Inconsolata, monospace',
+        'font-stack--headings': 'Inconsolata, monospace',
+    },
+    'dark_css_variables': {
+        'color-brand-primary': 'var(--red)',
+        'color-brand-content': 'var(--red)',
+        'color-brand-visited': 'var(--red)',
+    },
+    'top_of_page_buttons': ['edit'],
+    'source_edit_link':
+    'https://github.com/CourtBouillon/pydyf/edit/main/docs/{filename}',
 }
 
 # Favicon URL
@@ -57,7 +72,7 @@
 # These paths are either relative to html_static_path
 # or fully qualified paths (eg. https://...)
 html_css_files = [
-    'https://www.courtbouillon.org/static/docs.css',
+    'https://www.courtbouillon.org/static/docs-furo.css',
 ]
 
 # Output file base name for HTML help builder.
@@ -83,5 +98,4 @@
 # Example configuration for intersphinx: refer to the Python standard library.
 intersphinx_mapping = {
     'python': ('https://docs.python.org/3/', None),
-    'webencodings': ('https://pythonhosted.org/webencodings/', None),
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pydyf-0.11.0/docs/index.rst 
new/pydyf-0.12.1/docs/index.rst
--- old/pydyf-0.11.0/docs/index.rst     2020-12-06 19:47:25.897394200 +0100
+++ new/pydyf-0.12.1/docs/index.rst     2025-12-02 15:52:00.089036200 +0100
@@ -7,7 +7,7 @@
 
 .. toctree::
    :caption: Documentation
-   :maxdepth: 3
+   :maxdepth: 2
 
    first_steps
    common_use_cases
@@ -16,7 +16,7 @@
 
 .. toctree::
    :caption: Extra Information
-   :maxdepth: 3
+   :maxdepth: 2
 
    changelog
    contribute
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pydyf-0.11.0/docs/support.rst 
new/pydyf-0.12.1/docs/support.rst
--- old/pydyf-0.11.0/docs/support.rst   2020-12-06 19:47:25.897394200 +0100
+++ new/pydyf-0.12.1/docs/support.rst   2025-12-02 15:52:00.089036200 +0100
@@ -20,9 +20,9 @@
 would highly benefit from some new features? You or your team would like to get
 new skills with one of the technologies we master?
 
-Please contact us by mail_, by chat_ or by tweet_ to get in touch and find the
+Please contact us by mail_, by chat_ or by toot_ to get in touch and find the
 best way we can help you.
 
 .. _mail: mailto:[email protected]
-.. _chat: https://gitter.im/CourtBouillon/pydyf
-.. _tweet: https://twitter.com/BouillonCourt
+.. _chat: https://matrix.to/#/#CourtBouillon_WeasyPrint:gitter.im
+.. _toot: https://fosstodon.org/@courtbouillon
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pydyf-0.11.0/pydyf/__init__.py 
new/pydyf-0.12.1/pydyf/__init__.py
--- old/pydyf-0.11.0/pydyf/__init__.py  2024-07-11 12:46:58.820732400 +0200
+++ new/pydyf-0.12.1/pydyf/__init__.py  2025-12-02 15:52:00.089036200 +0100
@@ -9,9 +9,8 @@
 from codecs import BOM_UTF16_BE
 from hashlib import md5
 from math import ceil, log
-from warnings import warn
 
-VERSION = __version__ = '0.11.0'
+VERSION = __version__ = '0.12.1'
 
 
 def _to_bytes(item):
@@ -121,11 +120,6 @@
         """
         self.stream.append(b'h')
 
-    def color_space(self, space, stroke=False):
-        """color_space is deprecated, use set_color_space instead."""
-        warn(Stream.color_space.__doc__, DeprecationWarning)
-        self.set_color_space(space, stroke)
-
     def curve_to(self, x1, y1, x2, y2, x3, y3):
         """Add cubic Bézier curve to current path.
 
@@ -243,11 +237,6 @@
         """Move text to next line at ``(x, y)`` distance from previous line."""
         self.stream.append(b' '.join((_to_bytes(x), _to_bytes(y), b'Td')))
 
-    def shading(self, name):
-        """shading is deprecated, use paint_shading instead."""
-        warn(Stream.shading.__doc__, DeprecationWarning)
-        self.paint_shading(name)
-
     def paint_shading(self, name):
         """Paint shape and color shading using shading dictionary ``name``."""
         self.stream.append(b'/' + _to_bytes(name) + b' sh')
@@ -394,16 +383,6 @@
             _to_bytes(a), _to_bytes(b), _to_bytes(c),
             _to_bytes(d), _to_bytes(e), _to_bytes(f), b'Tm')))
 
-    def text_matrix(self, a, b, c, d, e, f):
-        """text_matrix is deprecated, use set_text_matrix instead."""
-        warn(Stream.text_matrix.__doc__, DeprecationWarning)
-        self.set_text_matrix(a, b, c, d, e, f)
-
-    def transform(self, a, b, c, d, e, f):
-        """transform is deprecated, use set_matrix instead."""
-        warn(Stream.transform.__doc__, DeprecationWarning)
-        self.set_matrix(a, b, c, d, e, f)
-
     def show_text(self, text):
         """Show text strings with individual glyph positioning."""
         self.stream.append(b'[' + _to_bytes(text) + b'] TJ')
@@ -488,7 +467,6 @@
 
         #: PDF :class:`Dictionary` containing the PDF’s metadata.
         self.info = Dictionary({})
-        self.add_object(self.info)
 
         #: PDF :class:`Dictionary` containing references to the other objects.
         self.catalog = Dictionary({
@@ -554,6 +532,10 @@
         if identifier not in (False, True, None):
             identifier = _to_bytes(identifier)
 
+        # Add info object if needed
+        if self.info:
+            self.add_object(self.info)
+
         # Write header
         self.write_line(b'%PDF-' + version, output)
         self.write_line(b'%\xf0\x9f\x96\xa4', output)
@@ -599,8 +581,7 @@
                     dict_index += 1
                 else:
                     xref.append((
-                        bool(object_.number), object_.offset,
-                        object_.generation))
+                        bool(object_.number), object_.offset, 
object_.generation))
             xref.append((1, self.current_position, 0))
 
             field2_size = ceil(log(self.current_position + 1, 256))
@@ -618,16 +599,15 @@
                 'W': Array(xref_lengths),
                 'Size': len(self.objects) + 1,
                 'Root': self.catalog.reference,
-                'Info': self.info.reference,
             }
+            if self.info:
+                extra['Info'] = self.info.reference
             if identifier:
-                data = b''.join(
-                    obj.data for obj in self.objects if obj.free != 'f')
+                data = b''.join(obj.data for obj in self.objects if obj.free 
!= 'f')
                 data_hash = md5(data).hexdigest().encode()
                 if identifier is True:
                     identifier = data_hash
-                extra['ID'] = Array((
-                    String(identifier).data, String(data_hash).data))
+                extra['ID'] = Array((String(identifier).data, 
String(data_hash).data))
             dict_stream = Stream([xref_stream], extra, compress)
             self.xref_position = dict_stream.offset = self.current_position
             self.add_object(dict_stream)
@@ -654,7 +634,8 @@
             self.write_line(b'<<', output)
             self.write_line(f'/Size {len(self.objects)}'.encode(), output)
             self.write_line(b'/Root ' + self.catalog.reference, output)
-            self.write_line(b'/Info ' + self.info.reference, output)
+            if self.info:
+                self.write_line(b'/Info ' + self.info.reference, output)
             if identifier:
                 data = b''.join(
                     obj.data for obj in self.objects if obj.free != 'f')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pydyf-0.11.0/pyproject.toml 
new/pydyf-0.12.1/pyproject.toml
--- old/pydyf-0.11.0/pyproject.toml     2024-04-30 14:57:19.959628800 +0200
+++ new/pydyf-0.12.1/pyproject.toml     2025-12-02 15:52:00.090036400 +0100
@@ -8,7 +8,7 @@
 keywords = ['pdf', 'generator']
 authors = [{name = 'CourtBouillon', email = '[email protected]'}]
 maintainers = [{name = 'CourtBouillon', email = '[email protected]'}]
-requires-python = '>=3.8'
+requires-python = '>=3.10'
 readme = {file = 'README.rst', content-type = 'text/x-rst'}
 license = {file = 'LICENSE'}
 classifiers = [
@@ -19,11 +19,11 @@
   'Programming Language :: Python',
   'Programming Language :: Python :: 3',
   'Programming Language :: Python :: 3 :: Only',
-  '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',
+  'Programming Language :: Python :: 3.14',
   'Programming Language :: Python :: Implementation :: CPython',
   'Programming Language :: Python :: Implementation :: PyPy',
 ]
@@ -38,7 +38,7 @@
 Donation = 'https://opencollective.com/courtbouillon'
 
 [project.optional-dependencies]
-doc = ['sphinx', 'sphinx_rtd_theme']
+doc = ['sphinx', 'furo']
 test = ['pytest', 'ruff', 'pillow']
 
 [tool.flit.sdist]

Reply via email to