Bug 2458731 - weasyprint: FTBFS in Fedora Rawhide: Failed: Pixel (5, 1) in radial_gradient_reflect: expected rgba(255, 0, 0), got rgba(0, 255, 0)
Summary: weasyprint: FTBFS in Fedora Rawhide: Failed: Pixel (5, 1) in radial_gradient...
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: weasyprint
Version: rawhide
Hardware: Unspecified
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Felix Schwarz
QA Contact: Fedora Extras Quality Assurance
URL: https://koschei.fedoraproject.org/pac...
Whiteboard:
Depends On:
Blocks: PYTHON3.15 F45FTBFS, RAWHIDEFTBFS
TreeView+ depends on / blocked
 
Reported: 2026-04-15 17:34 UTC by Karolina Surma
Modified: 2026-04-15 17:35 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Karolina Surma 2026-04-15 17:34:47 UTC
Description of problem:
Package weasyprint fails to build from source in Fedora Rawhide.

Version-Release number of selected component (if applicable):
68.1-1.fc45

Steps to Reproduce:
koji build --scratch f45 weasyprint-68.1-1.fc45.src.rpm

Additional info:
This package is tracked by Koschei. See:
https://koschei.fedoraproject.org/package/weasyprint

Reproducible: Always

Actual Results:
_________________________ test_radial_gradient_reflect _________________________
[gw1] linux -- Python 3.14.4 /usr/bin/python3
assert_pixels = <function assert_pixels.<locals>.<lambda> at 0xffff76460670>
    @assert_no_logs
    def test_radial_gradient_reflect(assert_pixels):
>       assert_pixels('''
            ____________
            _GrrrrrrrrG_
            _rrrGGGGrrr_
            _rrGBBBBGrr_
            _rGBBBBBBGr_
            _rGBBGGBBGr_
            _rGBBGGBBGr_
            _rGBBBBBBGr_
            _rrGBBBBGrr_
            _rrrGGGGrrr_
            _GrrrrrrrrG_
            ____________
        ''', '''
          <style>
            @page { size: 12px }
            svg { display: block }
          </style>
          <svg width="12px" height="12px" xmlns="http://www.w3.org/2000/svg">
            <defs>
              <radialGradient id="grad" cx="0.5" cy="0.5" r="0.5"
                fx="0.5" fy="0.5" fr="0.2"
                gradientUnits="objectBoundingBox" spreadMethod="reflect">
                <stop stop-color="blue" offset="33%"></stop>
                <stop stop-color="lime" offset="33%"></stop>
                <stop stop-color="lime" offset="66%"></stop>
                <stop stop-color="red" offset="66%"></stop>
              </radialGradient>
            </defs>
            <rect x="1" y="1" width="10" height="10" fill="url(#grad)" />
          </svg>
        ''')
tests/draw/svg/test_gradients.py:992: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/conftest.py:96: in <lambda>
    return lambda *args, **kwargs: draw.assert_pixels(
tests/draw/__init__.py:61: in assert_pixels
    assert_pixels_equal(name, width, height, pixels, expected_pixels)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
name = 'radial_gradient_reflect', width = 12, height = 12
raw = ((255, 255, 255), (255, 255, 255), (255, 255, 255), (255, 255, 255), (255, 255, 255), (255, 255, 255), ...)
expected_raw = [(255, 255, 255), (255, 255, 255), (255, 255, 255), (255, 255, 255), (255, 255, 255), (255, 255, 255), ...]
tolerance = 0
    def assert_pixels_equal(name, width, height, raw, expected_raw, tolerance=0):
        """Take 2 matrices of pixels and assert that they are the same."""
        if raw != expected_raw:  # pragma: no cover
            pixels = zip_longest(raw, expected_raw, fillvalue=(-1, -1, -1))
            for i, (value, expected) in enumerate(pixels):
                if expected is None:
                    continue
                if any(abs(value - expected) > tolerance
                       for value, expected in zip(value, expected)):
                    actual_height = len(raw) // width
                    write_png(name, raw, width, actual_height)
                    expected_raw = [
                        pixel or (255, 255, 255) for pixel in expected_raw]
                    write_png(f'{name}.expected', expected_raw, width, height)
                    x = i % width
                    y = i // width
>                   pytest.fail(
                        f'Pixel ({x}, {y}) in {name}: '
                        f'expected rgba{expected}, got rgba{value}')
E                   Failed: Pixel (5, 1) in radial_gradient_reflect: expected rgba(255, 0, 0), got rgba(0, 255, 0)
tests/draw/__init__.py:110: Failed
------------------------------ Captured log call -------------------------------
INFO     weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string
INFO     weasyprint.progress:__init__.py:290 Step 2 - Fetching and parsing CSS - CSS string
INFO     weasyprint.progress:__init__.py:78 Step 3 - Applying CSS
INFO     weasyprint.progress:document.py:174 Step 4 - Creating formatting structure
INFO     weasyprint.progress:page.py:999 Step 5 - Creating layout - Page 1
INFO     weasyprint.progress:__init__.py:123 Step 6 - Creating PDF
INFO     weasyprint.progress:__init__.py:248 Step 7 - Adding PDF metadata
=========================== short test summary info ============================
FAILED tests/draw/svg/test_bounding_box.py::test_bounding_box_circle - Failed...
FAILED tests/draw/svg/test_bounding_box.py::test_bounding_box_ellipse - Faile...
FAILED tests/draw/svg/test_gradients.py::test_linear_gradient_transform_repeat
FAILED tests/draw/test_gradient.py::test_linear_gradients_5 - Failed: Pixel (...
FAILED tests/draw/svg/test_gradients.py::test_linear_gradient_transform_repeat_userspace
FAILED tests/draw/test_background.py::test_canvas_background_size - Failed: P...
FAILED tests/draw/test_gradient.py::test_radial_gradients_negative - Failed: ...
FAILED tests/draw/svg/test_gradients.py::test_radial_gradient_repeat - Failed...
FAILED tests/draw/svg/test_gradients.py::test_radial_gradient_reflect - Faile...


Note You need to log in before you can comment on or make changes to this bug.