diff --git a/.gitignore b/.gitignore index d5f51f8..5a0b857 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ /v0.19.2.tar.gz /v0.21.tar.gz /v0.22.tar.gz -/weasyprint-0.22.tar.gz -/weasyprint-0.39.tar.gz -/WeasyPrint-47.tar.gz +/WeasyPrint-* +/WeasyPrint-*.tar.gz +/weasyprint-*.tar.gz +/*.src.rpm +/results_weasyprint +/weasyprint-??.? diff --git a/sources b/sources index c8ffc9c..4008ca2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (WeasyPrint-47.tar.gz) = 1f840d997d33aebd2a8a4c2dafdfec0dfe13a97beda21438f69e28f6bfca8a6fcfe0496cb5a9fa4307e6807b23e2ba656093fe90e3fb2269a865e56a9a83fe1b +SHA512 (weasyprint-69.0.tar.gz) = fb56d7f6173f8a67f8ef4c31408c03625b0a774d0efde003f779e3da054737c88afe9f44ee40b6dda5fc92cfacfa5709d4d96bf1a112862d309eaf2d93881ef6 diff --git a/weasyprint-disable-flake8-isort-for-pytest.patch b/weasyprint-disable-flake8-isort-for-pytest.patch deleted file mode 100644 index c7a23f5..0000000 --- a/weasyprint-disable-flake8-isort-for-pytest.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/setup.cfg b/setup.cfg -index 1e88b56..62725f6 100644 ---- a/setup.cfg -+++ b/setup.cfg -@@ -52,8 +52,6 @@ install_requires = - tests_require = - pytest-runner - pytest-cov -- pytest-flake8 -- pytest-isort - python_requires = >= 3.5 - - [options.entry_points] -@@ -71,8 +69,6 @@ doc = - test = - pytest-runner - pytest-cov -- pytest-flake8 -- pytest-isort - - [bdist_wheel] - python-tag = py3 -@@ -85,7 +81,6 @@ build-dir = docs/_build - test = pytest - - [tool:pytest] --addopts = --flake8 --isort - norecursedirs = build dist .cache .eggs .git - - [coverage:run] diff --git a/weasyprint-disable-hyphenation-tests.patch b/weasyprint-disable-hyphenation-tests.patch deleted file mode 100644 index 9b8498c..0000000 --- a/weasyprint-disable-hyphenation-tests.patch +++ /dev/null @@ -1,107 +0,0 @@ -diff --git a/weasyprint/tests/test_text.py b/weasyprint/tests/test_text.py -index 1bebd57..df67943 100644 ---- a/weasyprint/tests/test_text.py -+++ b/weasyprint/tests/test_text.py -@@ -466,7 +466,7 @@ def test_text_indent_multipage(indent): - - - @assert_no_logs --def test_hyphenate_character_1(): -+def _test_hyphenate_character_1(): - page, = render_pages( - '' - '' -@@ -483,7 +483,7 @@ def test_hyphenate_character_1(): - - - @assert_no_logs --def test_hyphenate_character_2(): -+def _test_hyphenate_character_2(): - page, = render_pages( - '' - '' -@@ -500,7 +500,7 @@ def test_hyphenate_character_2(): - - - @assert_no_logs --def test_hyphenate_character_3(): -+def _test_hyphenate_character_3(): - page, = render_pages( - '' - '' -@@ -517,7 +517,7 @@ def test_hyphenate_character_3(): - - - @assert_no_logs --def test_hyphenate_character_4(): -+def _test_hyphenate_character_4(): - page, = render_pages( - '' - '' -@@ -533,7 +533,7 @@ def test_hyphenate_character_4(): - - - @assert_no_logs --def test_hyphenate_character_5(): -+def _test_hyphenate_character_5(): - page, = render_pages( - '' - '' -@@ -600,7 +600,7 @@ def test_hyphenate_manual_2(): - - - @assert_no_logs --def test_hyphenate_manual_3(): -+def _test_hyphenate_manual_3(): - # Automatic hyphenation opportunities within a word must be ignored if the - # word contains a conditional hyphen, in favor of the conditional - # hyphen(s). -@@ -617,7 +617,7 @@ def test_hyphenate_manual_3(): - - - @assert_no_logs --def test_hyphenate_limit_zone_1(): -+def _test_hyphenate_limit_zone_1(): - page, = render_pages( - '' - '' -@@ -651,7 +651,7 @@ def test_hyphenate_limit_zone_2(): - - - @assert_no_logs --def test_hyphenate_limit_zone_3(): -+def _test_hyphenate_limit_zone_3(): - page, = render_pages( - '' - '' -@@ -686,19 +686,10 @@ def test_hyphenate_limit_zone_4(): - - @assert_no_logs - @pytest.mark.parametrize('css, result', ( -- ('auto', 2), -- ('auto auto 0', 2), -- ('0 0 0', 2), - ('4 4 auto', 1), -- ('6 2 4', 2), -- ('auto 1 auto', 2), - ('7 auto auto', 1), -- ('6 auto auto', 2), -- ('5 2', 2), -- ('3', 2), - ('2 4 6', 1), - ('auto 4', 1), -- ('auto 2', 2), - )) - def test_hyphenate_limit_chars(css, result): - page, = render_pages(( -@@ -738,10 +729,6 @@ def test_hyphenate_limit_chars_punctuation(css): - @pytest.mark.parametrize('wrap, text, test, full_text', ( - ('break-word', 'aaaaaaaa', lambda a: a > 1, 'aaaaaaaa'), - ('normal', 'aaaaaaaa', lambda a: a == 1, 'aaaaaaaa'), -- ('break-word', 'hyphenations', lambda a: a > 3, -- 'hy\u2010phen\u2010ations'), -- ('break-word', "A splitted word. An hyphenated word.", -- lambda a: a > 8, "Asplittedword.Anhy\u2010phen\u2010atedword."), - )) - def test_overflow_wrap(wrap, text, test, full_text): - page, = render_pages(''' diff --git a/weasyprint-fix-pango-144.patch b/weasyprint-fix-pango-144.patch deleted file mode 100644 index 9210fb3..0000000 --- a/weasyprint-fix-pango-144.patch +++ /dev/null @@ -1,23 +0,0 @@ -commit aab0fa5b9d8c8a3960ba79f6c54ad56c64a1c06d -Author: Guillaume Ayoub -Date: Wed Aug 14 18:32:44 2019 +0200 - - Fix line height with Pango > 1.44 - - Pango > 1.44 returns a wrong baseline when no text is set on the layout. We - now have to set text when calculating metrics for strut layouts. - - Fix #917. - -diff --git a/weasyprint/css/computed_values.py b/weasyprint/css/computed_values.py -index 37f8b1b4..87c83ed4 100644 ---- a/weasyprint/css/computed_values.py -+++ b/weasyprint/css/computed_values.py -@@ -742,6 +742,7 @@ def strut_layout(style, context=None): - return context.strut_layouts[key] - - layout = text.Layout(context, style['font_size'], style) -+ layout.set_text(' ') - line, _ = layout.get_first_line() - _, _, _, _, text_height, baseline = text.first_line_metrics( - line, '', layout, resume_at=None, space_collapse=False, style=style) diff --git a/weasyprint-set-tab-size.patch b/weasyprint-set-tab-size.patch deleted file mode 100644 index 6da3a24..0000000 --- a/weasyprint-set-tab-size.patch +++ /dev/null @@ -1,52 +0,0 @@ -commit b06a3a9a6f3609a0257b3270875ae3d91dad609b -Author: Guillaume Ayoub -Date: Thu Sep 5 13:46:01 2019 +0200 - - Always set tabulation width - - Not setting it makes Pango use a slightly different value of tabulation width, - breaking a test. - -diff --git a/weasyprint/text.py b/weasyprint/text.py -index 24681e58..20c613a5 100644 ---- a/weasyprint/text.py -+++ b/weasyprint/text.py -@@ -728,10 +728,6 @@ class Layout(object): - pango.pango_attr_list_insert(attr_list, attr) - pango.pango_layout_set_attributes(self.layout, attr_list) - -- # Tabs width -- if style['tab_size'] != 8: # Default Pango value is 8 -- self.set_tabs() -- - def get_first_line(self): - layout_iter = ffi.gc( - pango.pango_layout_get_iter(self.layout), -@@ -783,6 +779,10 @@ class Layout(object): - pango.pango_layout_set_attributes(self.layout, attr_list) - pango.pango_attr_list_unref(attr_list) - -+ # Tabs width -+ if b'\t' in bytestring: -+ self.set_tabs() -+ - def get_font_metrics(self): - context = pango.pango_layout_get_context(self.layout) - return FontMetrics(context, self.font, self.language) -@@ -792,14 +792,12 @@ class Layout(object): - - def set_tabs(self): - if isinstance(self.style['tab_size'], int): -- style = self.style.copy() -- style['tab_size'] = 8 - layout = Layout( -- self.context, style['font_size'], style, -+ self.context, self.style['font_size'], self.style, - self.justification_spacing) - layout.set_text(' ' * self.style['tab_size']) - line, _ = layout.get_first_line() -- width, _ = get_size(line, style) -+ width, _ = get_size(line, self.style) - width = int(round(width)) - else: - width = int(self.style['tab_size'].value) diff --git a/weasyprint.spec b/weasyprint.spec index 0b33645..d5a01df 100644 --- a/weasyprint.spec +++ b/weasyprint.spec @@ -1,50 +1,30 @@ %global modname weasyprint -%global srcname WeasyPrint +%global srcname weasyprint Name: weasyprint -Version: 47 -Release: 1%{?dist} +Version: 69.0 +Release: 2%{?dist} Summary: Utility to render HTML and CSS to PDF -License: BSD -URL: http://weasyprint.org/ -Source0: %pypi_source -Patch0: %{name}-disable-flake8-isort-for-pytest.patch -# both patches already in WeasyPrint 50 -Patch1: weasyprint-fix-pango-144.patch -Patch2: weasyprint-set-tab-size.patch -# several tests in "test_text.py" fail because Fedora's python3-pyphen does -# not ship hyphenation dicts but relies on system-provided dicts (F30/F31). -Patch3: weasyprint-disable-hyphenation-tests.patch +License: BSD-3-Clause +URL: https://weasyprint.org +Source0: %{pypi_source weasyprint} BuildArch: noarch BuildRequires: python3-devel -# upstream installation docs say: -# "setuptools ≥ 30.3.0 is required to install WeasyPrint from wheel, -# but 39.2.0 is required to build the package or install from source." -BuildRequires: python3-setuptools >= 39.2.0 -BuildRequires: python3-pytest -BuildRequires: python3-pytest-cov -BuildRequires: python3-pytest-runner -BuildRequires: python3-setuptools >= 39.2.0 -BuildRequires: /usr/bin/pathfix.py - +BuildRequires: pyproject-rpm-macros +# used as "build-backend" in pyproject.toml but not detected by Fedora's +# macros to generate build requirements +BuildRequires: python3dist(flit-core) # requirements for testing -BuildRequires: cairo >= 1.15.4 -BuildRequires: dejavu-sans-fonts -BuildRequires: gdk-pixbuf2 >= 2.25.0 -BuildRequires: gdk-pixbuf2-modules -# gdk-pixbuf2 does not require libjpeg directly but tests try to load jpg -# images via gdk-pixbuf2 -BuildRequires: libjpeg-turbo -BuildRequires: pango >= 1.38.0 -BuildRequires: python3-cairosvg >= 1.0.20 -BuildRequires: python3-cssselect2 >= 0.1 -BuildRequires: python3-cairocffi >= 0.9.0 -BuildRequires: python3-html5lib >= 0.999999999 -BuildRequires: python3-pyphen >= 0.8 -BuildRequires: python3-tinycss2 >= 1.0 +BuildRequires: dejavu-fonts-all +BuildRequires: google-noto-emoji-fonts +BuildRequires: ghostscript +# https://doc.courtbouillon.org/weasyprint/latest/first_steps.html +BuildRequires: pango >= 1.44.0 +BuildRequires: python3dist(pytest) +BuildRequires: python3dist(pytest-xdist) Requires: python3-weasyprint = %{version}-%{release} @@ -55,18 +35,11 @@ for printing. %package -n python3-weasyprint Summary: Python library to render HTML and CSS to PDF -Requires: cairo >= 1.15.4 -Requires: pango >= 1.38.0 -Requires: gdk-pixbuf2 >= 2.25.0 -# workaround for bug 1685654 -# actually python3-cairocffi should have that dependency (see bug 1698217) but -# for now just add the requirement here. -Requires: python3-xcffib +Requires: pango >= 1.44.0 # other Python dependencies will be picked up automatically # Weasyprint will fail if no fonts are installed. There's no way to know # what fonts the user would actually want, but require a few common ones # that might be useful: -Requires: dejavu-fonts-common Requires: dejavu-sans-fonts Requires: dejavu-sans-mono-fonts Requires: dejavu-serif-fonts @@ -76,17 +49,19 @@ The WeasyPrint Python library is a rendering engine for HTML and CSS that can export to PDF. It aims to support web standards for printing. %prep -%autosetup -p1 -n WeasyPrint-%{version} -pathfix.py -pni "%{__python3} %{py3_shbang_opts}" . +%autosetup -p1 -n %{srcname}-%{version} + +%generate_buildrequires +%pyproject_buildrequires -r %build -%py3_build +%pyproject_wheel %install -%py3_install +%pyproject_install %check -%{__python3} setup.py test +%pytest -n auto # do not ship tests rm -rf %{buildroot}%{python3_sitelib}/%{modname}/tests @@ -98,12 +73,223 @@ rm -rf %{buildroot}%{python3_sitelib}/%{modname}/tests %files -n python3-weasyprint %license LICENSE %doc README.rst -%{python3_sitelib}/%{srcname}-%{version}-*/ +%{python3_sitelib}/%{modname}-%{version}.dist-info/ %{python3_sitelib}/%{modname}/ %changelog -* Mon Nov 04 2019 Felix Schwarz 47-1 -- update to upstream version 47 +* Fri Jul 17 2026 Fedora Release Engineering - 69.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Thu Jun 11 2026 Felix Schwarz - 69.0-1 +- update to 69.0 + +* Fri Jun 05 2026 Python Maint - 68.1-2 +- Rebuilt for Python 3.15 + +* Sat Feb 07 2026 Felix Schwarz - 68.1-1 +- update to 68.1 + +* Tue Jan 20 2026 Felix Schwarz - 68.0-1 +- update to 68.0 + +* Sat Jan 17 2026 Fedora Release Engineering - 67.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Dec 03 2025 Felix Schwarz - 67.0-1 +- update to 67.0 + +* Fri Sep 19 2025 Python Maint - 66.0-3 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Fri Aug 15 2025 Python Maint - 66.0-2 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Mon Jul 28 2025 Felix Schwarz - 66.0-1 +- update to 66.0 + +* Fri Jul 25 2025 Fedora Release Engineering - 65.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jun 03 2025 Python Maint - 65.1-2 +- Rebuilt for Python 3.14 + +* Mon Apr 14 2025 Felix Schwarz - 65.1-1 +- update to 65.1 + +* Sun Mar 23 2025 Felix Schwarz - 65.0-1 +- update to 65.0 + +* Wed Mar 05 2025 Felix Schwarz - 64.1-1 +- update to 64.1 + +* Thu Jan 30 2025 Felix Schwarz - 64.0-1 +- update to 64.0 + +* Sun Jan 19 2025 Fedora Release Engineering - 63.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Jan 11 2025 Felix Schwarz - 63.1-1 +- update to 63.1 + +* Sat Jul 20 2024 Fedora Release Engineering - 62.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Mon Jun 24 2024 Felix Schwarz - 62.3-1 +- update to 62.3 + +* Sat Jun 08 2024 Python Maint - 62.2-2 +- Rebuilt for Python 3.13 + +* Tue Jun 04 2024 Felix Schwarz - 62.2-1 +- update to 62.2 + +* Mon May 06 2024 Felix Schwarz - 62.1-1 +- update to 62.1 + +* Thu May 02 2024 Felix Schwarz - 62.0-1 +- update to 62.0 + +* Sat Mar 09 2024 Felix Schwarz - 61.2-1 +- update to 61.2 + +* Mon Feb 26 2024 Felix Schwarz - 61.1-1 +- update to 61.1 + +* Mon Feb 12 2024 Felix Schwarz - 61.0-1 +- update to 61.0 + +* Thu Jan 25 2024 Felix Schwarz - 60.2-2 +- use just flit-core as build dependency + +* Tue Dec 12 2023 Felix Schwarz - 60.2-1 +- update to 60.2 + +* Thu Oct 05 2023 Felix Schwarz - 60.1-1 +- update to 60.1 + +* Sat Jul 22 2023 Fedora Release Engineering - 59.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sun Jul 09 2023 Felix Schwarz - 59.0-2 +- add patch so the test suite passes for Python 3.12 + +* Thu May 11 2023 Felix Schwarz - 59.0-1 +- update to 59.0 + +* Sat Apr 15 2023 Felix Schwarz - 58.1-2 +- SPDX migration +- make tests pass with pydyf 0.6 + +* Tue Mar 07 2023 Felix Schwarz - 58.1-1 +- update to 58.1 + +* Fri Feb 17 2023 Felix Schwarz - 58.0-1 +- update to 58.0 + +* Sat Jan 21 2023 Fedora Release Engineering - 57.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Dec 27 2022 Felix Schwarz - 57.2-1 +- update to 57.2 + +* Sat Nov 05 2022 Felix Schwarz - 57.1-1 +- update to 57.1 + +* Mon Jul 25 2022 Felix Schwarz - 56.1-1 +- update to 56.1 + +* Sat Jul 23 2022 Fedora Release Engineering - 56.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jul 07 2022 Felix Schwarz - 56.0-1 +- update to 56.0 + +* Mon Jun 20 2022 Python Maint - 55.0-2 +- Rebuilt for Python 3.11 + +* Thu May 12 2022 Felix Schwarz - 55.0-1 +- update to 55.0 + +* Mon Apr 04 2022 Felix Schwarz - 54.3-1 +- update to 54.3 + +* Tue Mar 01 2022 Felix Schwarz - 54.2-1 +- update to 54.2 + +* Mon Jan 31 2022 Felix Schwarz - 54.1-1 +- update to 54.1 + +* Sat Jan 22 2022 Fedora Release Engineering - 54.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sat Jan 08 2022 Felix Schwarz - 54.0-1 +- update to 54.0 + +* Sun Nov 14 2021 Felix Schwarz - 53.4-1 +- update to 53.4 + +* Fri Sep 10 2021 Felix Schwarz - 53.3-1 +- update to 53.3 + +* Fri Aug 27 2021 Felix Schwarz - 53.2-1 +- update to 53.2 + +* Sun Aug 22 2021 Felix Schwarz - 53.1-1 +- update to 53.1 + +* Sun Aug 01 2021 Felix Schwarz - 53.0-1 +- update to 53.0 + +* Fri Jul 23 2021 Fedora Release Engineering - 52.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 52.5-2 +- Rebuilt for Python 3.10 + +* Sun Apr 18 2021 Felix Schwarz - 52.5-1 +- update to 52.5 + +* Tue Mar 23 2021 Felix Schwarz - 52.4-2 +- add patch for pango 1.48.3 + +* Fri Mar 12 2021 Felix Schwarz - 52.4-1 +- update to 52.4 + +* Tue Mar 02 2021 Felix Schwarz - 52.3-1 +- update to 52.3 + +* Wed Jan 27 2021 Fedora Release Engineering - 52.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sun Dec 6 2020 Felix Schwarz - 52.2-1 +- update to 52.2 + +* Sun Nov 08 2020 Felix Schwarz - 52.1-1 +- update to 52.1 + +* Wed Jul 29 2020 Fedora Release Engineering - 51-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue May 26 2020 Miro Hrončok - 51-4 +- Rebuilt for Python 3.9 + +* Wed Mar 04 2020 Felix Schwarz - 51-3 +- drop runtime requirement on "dejavu-fonts-common" (#1810150) + +* Fri Jan 31 2020 Fedora Release Engineering - 51-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Dec 25 2019 Felix Schwarz 51-1 +- update to upstream version 51 + +* Sun Dec 01 2019 Felix Schwarz 50-1 +- update to new upstream version + +* Thu Oct 03 2019 Miro Hrončok - 0.39-5 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Mon Aug 19 2019 Miro Hrončok - 0.39-4 +- Rebuilt for Python 3.8 * Sat Jul 27 2019 Fedora Release Engineering - 0.39-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild