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]
