>>> weasyprint: Building community/weasyprint 65.1-r0 (using abuild 3.16.0_rc4-r0) started Tue, 21 Oct 2025 10:41:29 +0000 >>> weasyprint: Validating /home/buildozer/aports/community/weasyprint/APKBUILD... >>> weasyprint: Analyzing dependencies... >>> weasyprint: Installing for build: build-base pango py3-brotli py3-cssselect2 py3-cffi py3-fonttools py3-pillow py3-pydyf py3-pyphen py3-tinycss2 py3-tinyhtml5 py3-zopfli py3-flit-core py3-gpep517 font-dejavu ghostscript py3-pytest py3-pytest-xdist ( 1/88) Installing libxft (2.3.9-r0) ( 2/88) Installing pixman (0.46.4-r0) ( 3/88) Installing cairo (1.18.4-r0) ( 4/88) Installing fribidi (1.0.16-r2) ( 5/88) Installing libintl (0.24.1-r1) ( 6/88) Installing libeconf (0.8.0-r0) ( 7/88) Installing libblkid (2.41.2-r0) ( 8/88) Installing libmount (2.41.2-r0) ( 9/88) Installing glib (2.86.0-r1) (10/88) Installing graphite2 (1.3.14-r6) (11/88) Installing harfbuzz (11.3.2-r0) (12/88) Installing pango (1.56.4-r0) (13/88) Installing gdbm (1.26-r0) (14/88) Installing xz-libs (5.8.1-r0) (15/88) Installing mpdecimal (4.0.1-r0) (16/88) Installing libpanelw (6.5_p20251010-r0) (17/88) Installing python3 (3.12.12-r0) (18/88) Installing python3-pycache-pyc0 (3.12.12-r0) (19/88) Installing pyc (3.12.12-r0) (20/88) Installing py3-brotli-pyc (1.1.0-r2) (21/88) Installing python3-pyc (3.12.12-r0) (22/88) Installing py3-brotli (1.1.0-r2) (23/88) Installing py3-webencodings (0.5.1-r9) (24/88) Installing py3-webencodings-pyc (0.5.1-r9) (25/88) Installing py3-tinycss2 (1.4.0-r0) (26/88) Installing py3-tinycss2-pyc (1.4.0-r0) (27/88) Installing py3-cssselect2 (0.8.0-r0) (28/88) Installing py3-cssselect2-pyc (0.8.0-r0) (29/88) Installing py3-cparser (2.22-r1) (30/88) Installing py3-cparser-pyc (2.22-r1) (31/88) Installing py3-cffi (1.17.1-r1) (32/88) Installing py3-cffi-pyc (1.17.1-r1) (33/88) Installing py3-fonttools (4.60.1-r0) (34/88) Installing py3-fonttools-pyc (4.60.1-r0) (35/88) Installing libimagequant (4.2.2-r0) (36/88) Installing openjpeg (2.5.3-r1) (37/88) Installing libsharpyuv (1.6.0-r0) (38/88) Installing libwebp (1.6.0-r0) (39/88) Installing tiff (4.7.1-r0) (40/88) Installing libwebpdemux (1.6.0-r0) (41/88) Installing libwebpmux (1.6.0-r0) (42/88) Installing py3-pillow (11.3.0-r1) (43/88) Installing py3-pillow-pyc (11.3.0-r1) (44/88) Installing py3-pydyf (0.11.0-r0) (45/88) Installing py3-pydyf-pyc (0.11.0-r0) (46/88) Installing py3-pyphen (0.17.2-r0) (47/88) Installing py3-pyphen-pyc (0.17.2-r0) (48/88) Installing py3-tinyhtml5 (2.0.0-r0) (49/88) Installing py3-tinyhtml5-pyc (2.0.0-r0) (50/88) Installing zopfli (1.0.3-r3) (51/88) Installing py3-zopfli (0.2.3-r2) (52/88) Installing py3-zopfli-pyc (0.2.3-r2) (53/88) Installing py3-flit-core (3.12.0-r0) (54/88) Installing py3-flit-core-pyc (3.12.0-r0) (55/88) Installing py3-installer (0.7.0-r2) (56/88) Installing py3-installer-pyc (0.7.0-r2) (57/88) Installing py3-gpep517 (19-r0) (58/88) Installing py3-gpep517-pyc (19-r0) (59/88) Installing libice (1.1.2-r0) (60/88) Installing libuuid (2.41.2-r0) (61/88) Installing libsm (1.2.6-r0) (62/88) Installing libxt (1.3.1-r0) (63/88) Installing dbus-libs (1.16.2-r1) (64/88) Installing avahi-libs (0.8-r22) (65/88) Installing nettle (3.10.2-r0) (66/88) Installing gnutls (3.8.8-r0) (67/88) Installing cups-libs (2.4.13-r0) (68/88) Installing jbig2dec (0.20-r0) (69/88) Installing ghostscript (10.05.1-r1) (70/88) Installing py3-iniconfig (2.3.0-r0) (71/88) Installing py3-iniconfig-pyc (2.3.0-r0) (72/88) Installing py3-parsing (3.2.3-r0) (73/88) Installing py3-parsing-pyc (3.2.3-r0) (74/88) Installing py3-packaging (25.0-r0) (75/88) Installing py3-packaging-pyc (25.0-r0) (76/88) Installing py3-pluggy (1.6.0-r0) (77/88) Installing py3-pluggy-pyc (1.6.0-r0) (78/88) Installing py3-py (1.11.0-r4) (79/88) Installing py3-py-pyc (1.11.0-r4) (80/88) Installing py3-pygments (2.19.2-r0) (81/88) Installing py3-pygments-pyc (2.19.2-r0) (82/88) Installing py3-pytest (8.4.2-r1) (83/88) Installing py3-pytest-pyc (8.4.2-r1) (84/88) Installing py3-execnet (2.1.1-r0) (85/88) Installing py3-execnet-pyc (2.1.1-r0) (86/88) Installing py3-pytest-xdist (3.8.0-r0) (87/88) Installing py3-pytest-xdist-pyc (3.8.0-r0) (88/88) Installing .makedepends-weasyprint (20251021.104142) busybox-1.37.0-r24.trigger: Executing script... fontconfig-2.17.1-r0.trigger: Executing script... mkfontscale-1.2.3-r1.trigger: Executing script... glib-2.86.0-r1.trigger: Executing script... OK: 744 MiB in 239 packages >>> weasyprint: Cleaning up srcdir >>> weasyprint: Cleaning up pkgdir >>> weasyprint: Cleaning up tmpdir >>> weasyprint: Fetching https://distfiles.alpinelinux.org/distfiles/v3.23/weasyprint-65.1.tar.gz Connecting to distfiles.alpinelinux.org (172.105.82.32:443) wget: server returned error: HTTP/1.1 404 Not Found >>> weasyprint: Fetching https://files.pythonhosted.org/packages/source/w/weasyprint/weasyprint-65.1.tar.gz Connecting to files.pythonhosted.org (151.101.128.223:443) Connecting to files.pythonhosted.org (151.101.128.223:443) saving to '/var/cache/distfiles/v3.23/weasyprint-65.1.tar.gz.part' weasyprint-65.1.tar. 100% |********************************| 487k 0:00:00 ETA '/var/cache/distfiles/v3.23/weasyprint-65.1.tar.gz.part' saved /var/cache/distfiles/v3.23/weasyprint-65.1.tar.gz: OK >>> weasyprint: Fetching https://distfiles.alpinelinux.org/distfiles/v3.23/weasyprint-65.1.tar.gz /var/cache/distfiles/v3.23/weasyprint-65.1.tar.gz: OK >>> weasyprint: Unpacking /var/cache/distfiles/v3.23/weasyprint-65.1.tar.gz... 2025-10-21 10:41:45,253 gpep517 INFO Building wheel via backend flit_core.buildapi 2025-10-21 10:41:45,275 flit_core.wheel INFO Zip timestamps will be from SOURCE_DATE_EPOCH: 2025-06-10 19:59:52+00:00 2025-10-21 10:41:45,275 flit_core.wheel INFO Copying package file(s) from weasyprint 2025-10-21 10:41:45,295 flit_core.wheel INFO Writing metadata files 2025-10-21 10:41:45,297 flit_core.wheel INFO Writing the record of files 2025-10-21 10:41:45,298 flit_core.wheel INFO Built wheel: .dist/weasyprint-65.1-py3-none-any.whl 2025-10-21 10:41:45,298 gpep517 INFO The backend produced .dist/weasyprint-65.1-py3-none-any.whl weasyprint-65.1-py3-none-any.whl ============================= test session starts ============================== platform linux -- Python 3.12.12, pytest-8.4.2, pluggy-1.6.0 rootdir: /home/buildozer/aports/community/weasyprint/src/weasyprint-65.1 configfile: pyproject.toml plugins: xdist-3.8.0 collected 3268 items / 2 deselected / 3266 selected tests/css/test_common.py ............... [ 0%] tests/css/test_counters.py ........x...................... [ 1%] tests/css/test_descriptors.py ................ [ 1%] tests/css/test_errors.py ............ [ 2%] tests/css/test_expanders.py ............................................ [ 3%] ........................................................................ [ 5%] ........................................................................ [ 8%] ........................................................................ [ 10%] ..................................................... [ 11%] tests/css/test_fonts.py ..................... [ 12%] tests/css/test_nesting.py ........ [ 12%] tests/css/test_pages.py ........................ [ 13%] tests/css/test_target.py ....... [ 13%] tests/css/test_ua.py ... [ 13%] tests/css/test_validation.py ........................................... [ 15%] ........................................................................ [ 17%] ........................................................................ [ 19%] ........................................................................ [ 21%] ........................................................................ [ 23%] ........................................................................ [ 26%] ........................................................................ [ 28%] ........................................................................ [ 30%] ........................................................................ [ 32%] ........................................................................ [ 34%] ........................................................................ [ 37%] .................................................... [ 38%] tests/css/test_variables.py ............................................ [ 40%] ........................................................................ [ 42%] ........................................................................ [ 44%] .............................................. [ 45%] tests/draw/svg/test_bounding_box.py ......x..xx. [ 46%] tests/draw/svg/test_clip.py ..x [ 46%] tests/draw/svg/test_defs.py .. [ 46%] tests/draw/svg/test_gradients.py .............................. [ 47%] tests/draw/svg/test_images.py ........x.... [ 47%] tests/draw/svg/test_markers.py ........ [ 47%] tests/draw/svg/test_opacity.py ..xx... [ 48%] tests/draw/svg/test_paths.py ...................... [ 48%] tests/draw/svg/test_patterns.py ....... [ 49%] tests/draw/svg/test_shapes.py ................... [ 49%] tests/draw/svg/test_text.py ........................ [ 50%] tests/draw/svg/test_transform.py ................. [ 50%] tests/draw/svg/test_units.py .... [ 51%] tests/draw/svg/test_visibility.py ........ [ 51%] tests/draw/test_absolute.py ............x........... [ 52%] tests/draw/test_background.py .......................................... [ 53%] ............... [ 53%] tests/draw/test_before_after.py ... [ 53%] tests/draw/test_box.py ................................. [ 54%] tests/draw/test_column.py ...F [ 54%] tests/draw/test_current_color.py .....x.. [ 55%] tests/draw/test_float.py ............xx.............x.x [ 56%] tests/draw/test_footnote.py ........... [ 56%] tests/draw/test_footnote_column.py .........x [ 56%] tests/draw/test_gradient.py ................... [ 57%] tests/draw/test_image.py ............................................... [ 58%] ...... [ 59%] tests/draw/test_leader.py ....xx.x.......... [ 59%] tests/draw/test_list.py ... [ 59%] tests/draw/test_opacity.py ...... [ 59%] tests/draw/test_overflow.py ......... [ 60%] tests/draw/test_page.py ............ [ 60%] tests/draw/test_table.py .....................x........x....x.... [ 61%] tests/draw/test_text.py .......x.....x..............xxx.........F... [ 63%] tests/draw/test_transform.py FFFF.......... [ 63%] tests/draw/test_visibility.py F.FF [ 63%] tests/draw/test_whitespace.py ......... [ 63%] tests/layout/test_block.py ............................................. [ 65%] ................x.......... [ 66%] tests/layout/test_column.py ............................................ [ 67%] .. [ 67%] tests/layout/test_flex.py .............................................. [ 68%] ........................................................................ [ 71%] ............................................. [ 72%] tests/layout/test_float.py ..........................x.. [ 73%] tests/layout/test_footnotes.py ...x.................... [ 74%] tests/layout/test_grid.py .............................. [ 75%] tests/layout/test_image.py ............................................. [ 76%] ...................... [ 77%] tests/layout/test_inline.py .x...........x.............................. [ 78%] ......... [ 78%] tests/layout/test_inline_block.py .. [ 78%] tests/layout/test_list.py .......x.. [ 79%] tests/layout/test_page.py ..................................x........... [ 80%] ............................................................... [ 82%] tests/layout/test_position.py ................ [ 82%] tests/layout/test_shrink_to_fit.py ..................................... [ 84%] ................................................... [ 85%] tests/layout/test_table.py ............................................. [ 86%] ............x........................................................... [ 89%] ............. [ 89%] tests/test_acid2.py . [ 89%] tests/test_api.py ...................................................... [ 91%] ................. [ 91%] tests/test_boxes.py .................................................... [ 93%] ....... [ 93%] tests/test_fonts.py ....... [ 93%] tests/test_pdf.py ............................................... [ 95%] tests/test_presentational_hints.py ......... [ 95%] tests/test_stacking.py ........ [ 95%] tests/test_text.py ..................................................... [ 97%] ........................................................................ [ 99%] .......x.. [ 99%] tests/test_unicode.py . [ 99%] tests/test_url.py ... [100%] =================================== FAILURES =================================== ___________________________ test_column_rule_normal ____________________________ assert_pixels = . at 0x7fff9d3d3920> @assert_no_logs def test_column_rule_normal(assert_pixels): # Test regression: https://github.com/Kozea/WeasyPrint/issues/2217 > assert_pixels(''' a___a a___a _____ ''', '''
''') tests/draw/test_column.py:88: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'column_rule_normal', width = 5, height = 3 raw = expected_raw = [(0, 0, 254), (255, 255, 255), (255, 255, 255), (255, 255, 255), (0, 0, 254), (0, 0, 254), ...] 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (0, 2) in column_rule_normal: expected rgba(255, 255, 255), got rgba(0, 0, 254) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- INFO weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string INFO weasyprint.progress:__init__.py:289 Step 2 - Fetching and parsing CSS - CSS string INFO weasyprint.progress:__init__.py:69 Step 3 - Applying CSS INFO weasyprint.progress:document.py:229 Step 4 - Creating formatting structure INFO weasyprint.progress:page.py:966 Step 5 - Creating layout - Page 1 INFO weasyprint.progress:__init__.py:118 Step 6 - Creating PDF INFO weasyprint.progress:__init__.py:228 Step 7 - Adding PDF metadata ______________________ test_font_variant_caps_all_petite _______________________ assert_pixels = . at 0x7fff9cc87240> def test_font_variant_caps_all_petite(assert_pixels): > assert_pixels(''' ________ BB_BB___ B_BB_B__ BB_BB___ B__B____ ________ ''', '''

Pp

''' % SANS_FONTS) tests/draw/test_text.py:1168: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'font_variant_caps_all_petite', width = 8, height = 6 raw = 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (0, 1) in font_variant_caps_all_petite: expected rgba(0, 0, 255), got rgba(255, 255, 255) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'maxp' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'maxp' table DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.001s to load 'maxp' DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to prune 'maxp' INFO fontTools.subset:__init__.py:3595 maxp pruned DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'cmap' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'cmap' table DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'post' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'post' table DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.108s to load 'cmap' DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to prune 'cmap' INFO fontTools.subset:__init__.py:3595 cmap pruned INFO fontTools.subset:__init__.py:3579 fpgm dropped INFO fontTools.subset:__init__.py:3579 prep dropped INFO fontTools.subset:__init__.py:3579 cvt dropped INFO fontTools.subset:__init__.py:3579 kern dropped DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to load 'post' DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to prune 'post' INFO fontTools.subset:__init__.py:3595 post pruned INFO fontTools.subset:__init__.py:3579 GPOS dropped INFO fontTools.subset:__init__.py:3579 GSUB dropped DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'glyf' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'glyf' table DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'loca' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'loca' table DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'head' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'head' table DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.071s to load 'glyf' DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to prune 'glyf' INFO fontTools.subset:__init__.py:3595 glyf pruned DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.005s to close glyph list over 'cmap' INFO fontTools.subset:__init__.py:3635 Added gid0 to subset INFO fontTools.subset:__init__.py:3647 Closing glyph list over 'MATH': 2 glyphs before INFO fontTools.subset:__init__.py:460 Glyph names: ['.notdef', 'P'] INFO fontTools.subset:__init__.py:463 Glyph IDs: [0, 51] DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'MATH' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'MATH' table INFO fontTools.subset:__init__.py:3653 Closed glyph list over 'MATH': 2 glyphs after INFO fontTools.subset:__init__.py:460 Glyph names: ['.notdef', 'P'] INFO fontTools.subset:__init__.py:463 Glyph IDs: [0, 51] DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.033s to close glyph list over 'MATH' INFO fontTools.subset:__init__.py:3708 Closing glyph list over 'glyf': 2 glyphs before INFO fontTools.subset:__init__.py:460 Glyph names: ['.notdef', 'P'] INFO fontTools.subset:__init__.py:463 Glyph IDs: [0, 51] INFO fontTools.subset:__init__.py:3714 Closed glyph list over 'glyf': 2 glyphs after INFO fontTools.subset:__init__.py:460 Glyph names: ['.notdef', 'P'] INFO fontTools.subset:__init__.py:463 Glyph IDs: [0, 51] DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.006s to close glyph list over 'glyf' INFO fontTools.subset:__init__.py:3767 Retaining 2 glyphs INFO fontTools.subset:__init__.py:3777 head subsetting not needed INFO fontTools.subset:__init__.py:3777 hhea subsetting not needed INFO fontTools.subset:__init__.py:3777 maxp subsetting not needed INFO fontTools.subset:__init__.py:3777 OS/2 subsetting not needed DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'hmtx' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'hmtx' table DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'hhea' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'hhea' table DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.034s to subset 'hmtx' INFO fontTools.subset:__init__.py:3788 hmtx subsetted DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.014s to subset 'cmap' INFO fontTools.subset:__init__.py:3788 cmap subsetted INFO fontTools.subset:__init__.py:3777 loca subsetting not needed DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to subset 'post' INFO fontTools.subset:__init__.py:3788 post subsetted INFO fontTools.subset:__init__.py:3777 gasp subsetting not needed INFO fontTools.subset:__init__.py:3790 FFTM NOT subset; don't know how to subset DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to subset 'MATH' INFO fontTools.subset:__init__.py:3788 MATH subsetted DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'GDEF' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'GDEF' table DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.017s to subset 'GDEF' INFO fontTools.subset:__init__.py:3788 GDEF subsetted INFO fontTools.subset:__init__.py:3777 name subsetting not needed DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.008s to subset 'glyf' INFO fontTools.subset:__init__.py:3788 glyf subsetted DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.001s to subset GlyphOrder DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to prune 'head' INFO fontTools.subset:__init__.py:3847 head pruned DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'OS/2' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'OS/2' table INFO fontTools.subset:__init__.py:3814 OS/2 Unicode ranges pruned: [0] INFO fontTools.subset:__init__.py:3823 OS/2 CodePage ranges pruned: [0] DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to prune 'glyf' INFO fontTools.subset:__init__.py:3847 glyf pruned DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s to prune 'GDEF' INFO fontTools.subset:__init__.py:3847 GDEF pruned DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'name' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'name' table DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'gasp' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'gasp' table DEBUG fontTools.ttLib.ttFont:ttFont.py:464 Reading 'FFTM' table from disk DEBUG fontTools.ttLib.ttFont:ttFont.py:473 Decompiling 'FFTM' table DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.007s to prune 'name' INFO fontTools.subset:__init__.py:3847 name pruned _____________________________ test_2d_transform_1 ______________________________ assert_pixels = . at 0x7fff9917ee80> @assert_no_logs def test_2d_transform_1(assert_pixels): > assert_pixels(''' ________ ________ __BBBr__ __BBBB__ __BBBB__ __BBBB__ ________ ________ ''', '''
''') tests/draw/test_transform.py:8: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '2d_transform_1', width = 8, height = 8 raw = 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (2, 1) in 2d_transform_1: expected rgba(255, 255, 255), got rgba(0, 0, 255) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- INFO weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string INFO weasyprint.progress:__init__.py:289 Step 2 - Fetching and parsing CSS - CSS string INFO weasyprint.progress:__init__.py:69 Step 3 - Applying CSS INFO weasyprint.progress:document.py:229 Step 4 - Creating formatting structure INFO weasyprint.progress:page.py:966 Step 5 - Creating layout - Page 1 INFO weasyprint.progress:__init__.py:118 Step 6 - Creating PDF INFO weasyprint.progress:__init__.py:228 Step 7 - Adding PDF metadata _____________________________ test_2d_transform_2 ______________________________ assert_pixels = . at 0x7fff9cc85e40> @assert_no_logs def test_2d_transform_2(assert_pixels): > assert_pixels(''' ____________ ____________ _____BBBr___ _____BBBB___ _____BBBB___ _____BBBB___ ____________ ____________ ____________ ____________ ____________ ____________ ''', '''
''') tests/draw/test_transform.py:27: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '2d_transform_2', width = 12, height = 12 raw = 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (5, 1) in 2d_transform_2: expected rgba(255, 255, 255), got rgba(0, 0, 255) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- INFO weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string INFO weasyprint.progress:__init__.py:289 Step 2 - Fetching and parsing CSS - CSS string INFO weasyprint.progress:__init__.py:69 Step 3 - Applying CSS INFO weasyprint.progress:document.py:229 Step 4 - Creating formatting structure INFO weasyprint.progress:page.py:966 Step 5 - Creating layout - Page 1 INFO weasyprint.progress:__init__.py:118 Step 6 - Creating PDF INFO weasyprint.progress:__init__.py:228 Step 7 - Adding PDF metadata _____________________________ test_2d_transform_3 ______________________________ assert_pixels = . at 0x7fff9cc87920> @assert_no_logs def test_2d_transform_3(assert_pixels): # A translateX after the rotation is actually a translateY > assert_pixels(''' ____________ ____________ ____________ ____________ ____________ __BBBr______ __BBBB______ __BBBB______ __BBBB______ ____________ ____________ ____________ ''', '''
''') tests/draw/test_transform.py:52: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '2d_transform_3', width = 12, height = 12 raw = 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (2, 4) in 2d_transform_3: expected rgba(255, 255, 255), got rgba(0, 0, 255) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- INFO weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string INFO weasyprint.progress:__init__.py:289 Step 2 - Fetching and parsing CSS - CSS string INFO weasyprint.progress:__init__.py:69 Step 3 - Applying CSS INFO weasyprint.progress:document.py:229 Step 4 - Creating formatting structure INFO weasyprint.progress:page.py:966 Step 5 - Creating layout - Page 1 INFO weasyprint.progress:__init__.py:118 Step 6 - Creating PDF INFO weasyprint.progress:__init__.py:228 Step 7 - Adding PDF metadata _____________________________ test_2d_transform_4 ______________________________ assert_pixels = . at 0x7fff9cc87880> @assert_no_logs def test_2d_transform_4(assert_pixels): > assert_pixels(''' ____________ ____________ ____________ ____________ ____________ __BBBr______ __BBBB______ __BBBB______ __BBBB______ ____________ ____________ ____________ ''', '''
''') tests/draw/test_transform.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = '2d_transform_4', width = 12, height = 12 raw = 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (2, 4) in 2d_transform_4: expected rgba(255, 255, 255), got rgba(0, 0, 255) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- INFO weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string INFO weasyprint.progress:__init__.py:289 Step 2 - Fetching and parsing CSS - CSS string INFO weasyprint.progress:__init__.py:69 Step 3 - Applying CSS INFO weasyprint.progress:document.py:229 Step 4 - Creating formatting structure INFO weasyprint.progress:page.py:966 Step 5 - Creating layout - Page 1 INFO weasyprint.progress:__init__.py:118 Step 6 - Creating PDF INFO weasyprint.progress:__init__.py:228 Step 7 - Adding PDF metadata ______________________________ test_visibility_1 _______________________________ assert_pixels = . at 0x7fff9cc85080> @assert_no_logs def test_visibility_1(assert_pixels): > assert_pixels(''' ____________ _rBBB_rBBB__ _BBBB_BBBB__ _BBBB_BBBB__ _BBBB_BBBB__ ____________ ____________ ''', visibility_source % '') tests/draw/test_visibility.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'visibility_1', width = 12, height = 7 raw = 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (6, 1) in visibility_1: expected rgba(255, 0, 0), got rgba(238, 0, 17) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- INFO weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string INFO weasyprint.progress:__init__.py:289 Step 2 - Fetching and parsing CSS - CSS string INFO weasyprint.progress:__init__.py:69 Step 3 - Applying CSS INFO weasyprint.progress:document.py:229 Step 4 - Creating formatting structure INFO weasyprint.progress:page.py:966 Step 5 - Creating layout - Page 1 INFO weasyprint.progress:__init__.py:118 Step 6 - Creating PDF INFO weasyprint.progress:__init__.py:228 Step 7 - Adding PDF metadata ______________________________ test_visibility_3 _______________________________ assert_pixels = . at 0x7fff9cc84b80> @assert_no_logs def test_visibility_3(assert_pixels): > assert_pixels(''' ____________ ______rBBB__ ______BBBB__ ______BBBB__ ______BBBB__ ____________ ____________ ''', visibility_source % 'div { visibility: hidden } ' 'span { visibility: visible }') tests/draw/test_visibility.py:46: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'visibility_3', width = 12, height = 7 raw = 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (6, 1) in visibility_3: expected rgba(255, 0, 0), got rgba(238, 0, 17) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- INFO weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string INFO weasyprint.progress:__init__.py:289 Step 2 - Fetching and parsing CSS - CSS string INFO weasyprint.progress:__init__.py:69 Step 3 - Applying CSS INFO weasyprint.progress:document.py:229 Step 4 - Creating formatting structure INFO weasyprint.progress:page.py:966 Step 5 - Creating layout - Page 1 INFO weasyprint.progress:__init__.py:118 Step 6 - Creating PDF INFO weasyprint.progress:__init__.py:228 Step 7 - Adding PDF metadata ______________________________ test_visibility_4 _______________________________ assert_pixels = . at 0x7fff9cc840e0> @assert_no_logs def test_visibility_4(assert_pixels): > assert_pixels(''' ____________ _rBBB_rBBB__ _BBBB_BBBB__ _BBBB_BBBB__ _BBBB_BBBB__ ____________ ____________ ''', visibility_source % '@page { visibility: hidden; background: red }') tests/draw/test_visibility.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:96: in return lambda *args, **kwargs: draw.assert_pixels( tests/draw/__init__.py:58: in assert_pixels assert_pixels_equal(name, width, height, pixels, expected_pixels) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ name = 'visibility_4', width = 12, height = 7 raw = 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 > assert 0, ( ^ f'Pixel ({x}, {y}) in {name}: ' f'expected rgba{expected}, got rgba{value}') E AssertionError: Pixel (6, 1) in visibility_4: expected rgba(255, 0, 0), got rgba(238, 0, 17) tests/draw/__init__.py:107: AssertionError ------------------------------ Captured log call ------------------------------- INFO weasyprint.progress:__init__.py:162 Step 1 - Fetching and parsing HTML - HTML string INFO weasyprint.progress:__init__.py:289 Step 2 - Fetching and parsing CSS - CSS string INFO weasyprint.progress:__init__.py:69 Step 3 - Applying CSS INFO weasyprint.progress:document.py:229 Step 4 - Creating formatting structure INFO weasyprint.progress:page.py:966 Step 5 - Creating layout - Page 1 INFO weasyprint.progress:__init__.py:118 Step 6 - Creating PDF INFO weasyprint.progress:__init__.py:228 Step 7 - Adding PDF metadata =========================== short test summary info ============================ FAILED tests/draw/test_column.py::test_column_rule_normal - AssertionError: P... FAILED tests/draw/test_text.py::test_font_variant_caps_all_petite - Assertion... FAILED tests/draw/test_transform.py::test_2d_transform_1 - AssertionError: Pi... FAILED tests/draw/test_transform.py::test_2d_transform_2 - AssertionError: Pi... FAILED tests/draw/test_transform.py::test_2d_transform_3 - AssertionError: Pi... FAILED tests/draw/test_transform.py::test_2d_transform_4 - AssertionError: Pi... FAILED tests/draw/test_visibility.py::test_visibility_1 - AssertionError: Pix... FAILED tests/draw/test_visibility.py::test_visibility_3 - AssertionError: Pix... FAILED tests/draw/test_visibility.py::test_visibility_4 - AssertionError: Pix... ===== 9 failed, 3222 passed, 2 deselected, 35 xfailed in 240.28s (0:04:00) ===== >>> ERROR: weasyprint: check failed >>> weasyprint: Uninstalling dependencies... ( 1/88) Purging .makedepends-weasyprint (20251021.104142) ( 2/88) Purging pango (1.56.4-r0) ( 3/88) Purging py3-brotli-pyc (1.1.0-r2) ( 4/88) Purging py3-brotli (1.1.0-r2) ( 5/88) Purging py3-cssselect2-pyc (0.8.0-r0) ( 6/88) Purging py3-cssselect2 (0.8.0-r0) ( 7/88) Purging py3-cffi-pyc (1.17.1-r1) ( 8/88) Purging py3-cffi (1.17.1-r1) ( 9/88) Purging py3-cparser-pyc (2.22-r1) (10/88) Purging py3-cparser (2.22-r1) (11/88) Purging py3-fonttools-pyc (4.60.1-r0) (12/88) Purging py3-fonttools (4.60.1-r0) (13/88) Purging py3-pillow-pyc (11.3.0-r1) (14/88) Purging py3-pillow (11.3.0-r1) (15/88) Purging py3-pydyf-pyc (0.11.0-r0) (16/88) Purging py3-pydyf (0.11.0-r0) (17/88) Purging py3-pyphen-pyc (0.17.2-r0) (18/88) Purging py3-pyphen (0.17.2-r0) (19/88) Purging py3-tinycss2-pyc (1.4.0-r0) (20/88) Purging py3-tinycss2 (1.4.0-r0) (21/88) Purging py3-tinyhtml5-pyc (2.0.0-r0) (22/88) Purging py3-tinyhtml5 (2.0.0-r0) (23/88) Purging py3-webencodings-pyc (0.5.1-r9) (24/88) Purging py3-webencodings (0.5.1-r9) (25/88) Purging py3-zopfli-pyc (0.2.3-r2) (26/88) Purging py3-zopfli (0.2.3-r2) (27/88) Purging py3-flit-core-pyc (3.12.0-r0) (28/88) Purging py3-flit-core (3.12.0-r0) (29/88) Purging py3-gpep517-pyc (19-r0) (30/88) Purging py3-gpep517 (19-r0) (31/88) Purging py3-installer-pyc (0.7.0-r2) (32/88) Purging py3-installer (0.7.0-r2) (33/88) Purging ghostscript (10.05.1-r1) (34/88) Purging py3-pytest-xdist-pyc (3.8.0-r0) (35/88) Purging py3-pytest-xdist (3.8.0-r0) (36/88) Purging py3-execnet-pyc (2.1.1-r0) (37/88) Purging py3-execnet (2.1.1-r0) (38/88) Purging py3-pytest-pyc (8.4.2-r1) (39/88) Purging py3-pytest (8.4.2-r1) (40/88) Purging py3-iniconfig-pyc (2.3.0-r0) (41/88) Purging py3-iniconfig (2.3.0-r0) (42/88) Purging py3-packaging-pyc (25.0-r0) (43/88) Purging py3-packaging (25.0-r0) (44/88) Purging py3-parsing-pyc (3.2.3-r0) (45/88) Purging py3-parsing (3.2.3-r0) (46/88) Purging py3-pluggy-pyc (1.6.0-r0) (47/88) Purging py3-pluggy (1.6.0-r0) (48/88) Purging py3-py-pyc (1.11.0-r4) (49/88) Purging py3-py (1.11.0-r4) (50/88) Purging py3-pygments-pyc (2.19.2-r0) (51/88) Purging py3-pygments (2.19.2-r0) (52/88) Purging python3-pyc (3.12.12-r0) (53/88) Purging python3-pycache-pyc0 (3.12.12-r0) (54/88) Purging pyc (3.12.12-r0) (55/88) Purging python3 (3.12.12-r0) (56/88) Purging cairo (1.18.4-r0) (57/88) Purging cups-libs (2.4.13-r0) (58/88) Purging fribidi (1.0.16-r2) (59/88) Purging gdbm (1.26-r0) (60/88) Purging gnutls (3.8.8-r0) (61/88) Purging harfbuzz (11.3.2-r0) (62/88) Purging jbig2dec (0.20-r0) (63/88) Purging libimagequant (4.2.2-r0) (64/88) Purging libpanelw (6.5_p20251010-r0) (65/88) Purging libwebpdemux (1.6.0-r0) (66/88) Purging libwebpmux (1.6.0-r0) (67/88) Purging libxft (2.3.9-r0) (68/88) Purging libxt (1.3.1-r0) (69/88) Purging mpdecimal (4.0.1-r0) (70/88) Purging nettle (3.10.2-r0) (71/88) Purging openjpeg (2.5.3-r1) (72/88) Purging pixman (0.46.4-r0) (73/88) Purging tiff (4.7.1-r0) (74/88) Purging xz-libs (5.8.1-r0) (75/88) Purging zopfli (1.0.3-r3) (76/88) Purging avahi-libs (0.8-r22) (77/88) Purging dbus-libs (1.16.2-r1) (78/88) Purging glib (2.86.0-r1) (79/88) Purging graphite2 (1.3.14-r6) (80/88) Purging libmount (2.41.2-r0) (81/88) Purging libblkid (2.41.2-r0) (82/88) Purging libeconf (0.8.0-r0) (83/88) Purging libsm (1.2.6-r0) (84/88) Purging libice (1.1.2-r0) (85/88) Purging libintl (0.24.1-r1) (86/88) Purging libwebp (1.6.0-r0) (87/88) Purging libsharpyuv (1.6.0-r0) (88/88) Purging libuuid (2.41.2-r0) busybox-1.37.0-r24.trigger: Executing script... fontconfig-2.17.1-r0.trigger: Executing script... mkfontscale-1.2.3-r1.trigger: Executing script... OK: 579 MiB in 151 packages