>>> weasyprint: Building community/weasyprint 65.1-r0 (using abuild 3.16.0_rc4-r0) started Thu, 06 Nov 2025 08:34:46 +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/110) Installing libxau (1.0.12-r0) ( 2/110) Installing libmd (1.1.0-r0) ( 3/110) Installing libbsd (0.12.2-r0) ( 4/110) Installing libxdmcp (1.1.5-r1) ( 5/110) Installing libxcb (1.17.0-r0) ( 6/110) Installing libx11 (1.8.12-r1) ( 7/110) Installing libxrender (0.9.12-r0) ( 8/110) Installing libbz2 (1.0.8-r6) ( 9/110) Installing libpng (1.6.49-r0) ( 10/110) Installing freetype (2.13.3-r0) ( 11/110) Installing fontconfig (2.17.1-r0) ( 12/110) Installing libxft (2.3.9-r0) ( 13/110) Installing libxext (1.3.6-r2) ( 14/110) Installing pixman (0.46.4-r0) ( 15/110) Installing cairo (1.18.4-r0) ( 16/110) Installing fribidi (1.0.16-r2) ( 17/110) Installing libffi (3.5.2-r0) ( 18/110) Installing libintl (0.24.1-r1) ( 19/110) Installing libeconf (0.8.0-r0) ( 20/110) Installing libblkid (2.41.2-r0) ( 21/110) Installing libmount (2.41.2-r0) ( 22/110) Installing glib (2.86.1-r0) ( 23/110) Installing graphite2 (1.3.14-r6) ( 24/110) Installing harfbuzz (11.3.2-r0) ( 25/110) Installing pango (1.56.4-r0) ( 26/110) Installing gdbm (1.26-r0) ( 27/110) Installing xz-libs (5.8.1-r0) ( 28/110) Installing mpdecimal (4.0.1-r0) ( 29/110) Installing libpanelw (6.5_p20251010-r0) ( 30/110) Installing sqlite-libs (3.51.0-r0) ( 31/110) Installing python3 (3.12.12-r0) ( 32/110) Installing python3-pycache-pyc0 (3.12.12-r0) ( 33/110) Installing pyc (3.12.12-r0) ( 34/110) Installing py3-brotli-pyc (1.1.0-r2) ( 35/110) Installing python3-pyc (3.12.12-r0) ( 36/110) Installing py3-brotli (1.1.0-r2) ( 37/110) Installing py3-webencodings (0.5.1-r9) ( 38/110) Installing py3-webencodings-pyc (0.5.1-r9) ( 39/110) Installing py3-tinycss2 (1.4.0-r0) ( 40/110) Installing py3-tinycss2-pyc (1.4.0-r0) ( 41/110) Installing py3-cssselect2 (0.8.0-r0) ( 42/110) Installing py3-cssselect2-pyc (0.8.0-r0) ( 43/110) Installing py3-cparser (2.22-r1) ( 44/110) Installing py3-cparser-pyc (2.22-r1) ( 45/110) Installing py3-cffi (1.17.1-r1) ( 46/110) Installing py3-cffi-pyc (1.17.1-r1) ( 47/110) Installing py3-fonttools (4.60.1-r0) ( 48/110) Installing py3-fonttools-pyc (4.60.1-r0) ( 49/110) Installing libimagequant (4.2.2-r0) ( 50/110) Installing libjpeg-turbo (3.1.2-r0) ( 51/110) Installing lcms2 (2.17-r0) ( 52/110) Installing openjpeg (2.5.4-r1) ( 53/110) Installing libsharpyuv (1.6.0-r0) ( 54/110) Installing libwebp (1.6.0-r0) ( 55/110) Installing tiff (4.7.1-r0) ( 56/110) Installing libwebpdemux (1.6.0-r0) ( 57/110) Installing libwebpmux (1.6.0-r0) ( 58/110) Installing py3-pillow (11.3.0-r1) ( 59/110) Installing py3-pillow-pyc (11.3.0-r1) ( 60/110) Installing py3-pydyf (0.11.0-r0) ( 61/110) Installing py3-pydyf-pyc (0.11.0-r0) ( 62/110) Installing py3-pyphen (0.17.2-r0) ( 63/110) Installing py3-pyphen-pyc (0.17.2-r0) ( 64/110) Installing py3-tinyhtml5 (2.0.0-r0) ( 65/110) Installing py3-tinyhtml5-pyc (2.0.0-r0) ( 66/110) Installing zopfli (1.0.3-r3) ( 67/110) Installing py3-zopfli (0.2.3-r2) ( 68/110) Installing py3-zopfli-pyc (0.2.3-r2) ( 69/110) Installing py3-flit-core (3.12.0-r0) ( 70/110) Installing py3-flit-core-pyc (3.12.0-r0) ( 71/110) Installing py3-installer (0.7.0-r2) ( 72/110) Installing py3-installer-pyc (0.7.0-r2) ( 73/110) Installing py3-gpep517 (19-r1) ( 74/110) Installing py3-gpep517-pyc (19-r1) ( 75/110) Installing encodings (1.1.0-r0) ( 76/110) Installing libfontenc (1.1.8-r0) ( 77/110) Installing mkfontscale (1.2.3-r1) ( 78/110) Installing font-dejavu (2.37-r6) ( 79/110) Installing libice (1.1.2-r0) ( 80/110) Installing libuuid (2.41.2-r0) ( 81/110) Installing libsm (1.2.6-r0) ( 82/110) Installing libxt (1.3.1-r0) ( 83/110) Installing dbus-libs (1.16.2-r1) ( 84/110) Installing avahi-libs (0.8-r22) ( 85/110) Installing nettle (3.10.2-r0) ( 86/110) Installing libtasn1 (4.20.0-r0) ( 87/110) Installing p11-kit (0.25.5-r2) ( 88/110) Installing gnutls (3.8.8-r0) ( 89/110) Installing cups-libs (2.4.13-r0) ( 90/110) Installing jbig2dec (0.20-r0) ( 91/110) Installing ghostscript (10.05.1-r1) ( 92/110) Installing py3-iniconfig (2.3.0-r0) ( 93/110) Installing py3-iniconfig-pyc (2.3.0-r0) ( 94/110) Installing py3-parsing (3.2.3-r0) ( 95/110) Installing py3-parsing-pyc (3.2.3-r0) ( 96/110) Installing py3-packaging (25.0-r0) ( 97/110) Installing py3-packaging-pyc (25.0-r0) ( 98/110) Installing py3-pluggy (1.6.0-r0) ( 99/110) Installing py3-pluggy-pyc (1.6.0-r0) (100/110) Installing py3-py (1.11.0-r4) (101/110) Installing py3-py-pyc (1.11.0-r4) (102/110) Installing py3-pygments (2.19.2-r0) (103/110) Installing py3-pygments-pyc (2.19.2-r0) (104/110) Installing py3-pytest (8.4.2-r1) (105/110) Installing py3-pytest-pyc (8.4.2-r1) (106/110) Installing py3-execnet (2.1.1-r0) (107/110) Installing py3-execnet-pyc (2.1.1-r0) (108/110) Installing py3-pytest-xdist (3.8.0-r0) (109/110) Installing py3-pytest-xdist-pyc (3.8.0-r0) (110/110) Installing .makedepends-weasyprint (20251106.083510) busybox-1.37.0-r24.trigger: Executing script... fontconfig-2.17.1-r0.trigger: Executing script... glib-2.86.1-r0.trigger: Executing script... mkfontscale-1.2.3-r1.trigger: Executing script... OK: 725 MiB in 215 packages >>> weasyprint: Cleaning up srcdir >>> weasyprint: Cleaning up pkgdir >>> weasyprint: Cleaning up tmpdir >>> weasyprint: Fetching https://distfiles.alpinelinux.org/distfiles/edge/weasyprint-65.1.tar.gz Connecting to distfiles.alpinelinux.org (172.105.82.32:443) saving to '/var/cache/distfiles/weasyprint-65.1.tar.gz.part' weasyprint-65.1.tar. 100% |********************************| 487k 0:00:00 ETA '/var/cache/distfiles/weasyprint-65.1.tar.gz.part' saved /var/cache/distfiles/weasyprint-65.1.tar.gz: OK >>> weasyprint: Fetching https://distfiles.alpinelinux.org/distfiles/edge/weasyprint-65.1.tar.gz /var/cache/distfiles/weasyprint-65.1.tar.gz: OK >>> weasyprint: Unpacking /var/cache/distfiles/weasyprint-65.1.tar.gz... 2025-11-06 08:35:13,149 gpep517 INFO Building wheel via backend flit_core.buildapi 2025-11-06 08:35:13,170 flit_core.wheel INFO Zip timestamps will be from SOURCE_DATE_EPOCH: 2025-06-10 19:59:52+00:00 2025-11-06 08:35:13,170 flit_core.wheel INFO Copying package file(s) from weasyprint 2025-11-06 08:35:13,198 flit_core.wheel INFO Writing metadata files 2025-11-06 08:35:13,199 flit_core.wheel INFO Writing the record of files 2025-11-06 08:35:13,200 flit_core.wheel INFO Built wheel: .dist/weasyprint-65.1-py3-none-any.whl 2025-11-06 08:35:13,200 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 0x7fffe939b600> @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 0x7fffedd16340> 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.024s 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.015s 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.002s 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.007s 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.001s 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.008s to subset 'hmtx' INFO fontTools.subset:__init__.py:3788 hmtx subsetted DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.004s 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.004s 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.002s to subset 'glyf' INFO fontTools.subset:__init__.py:3788 glyf subsetted DEBUG fontTools.subset.timer:loggingTools.py:357 Took 0.000s 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.002s to prune 'name' INFO fontTools.subset:__init__.py:3847 name pruned _____________________________ test_2d_transform_1 ______________________________ assert_pixels = . at 0x7fffedd14040> @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 0x7fffedd17ba0> @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 0x7fffedd16de0> @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 0x7fffedd14d60> @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 0x7fffedd16e80> @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 0x7fffedd16700> @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 0x7fffedd14900> @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 132.49s (0:02:12) ===== >>> ERROR: weasyprint: check failed >>> weasyprint: Uninstalling dependencies... ( 1/110) Purging .makedepends-weasyprint (20251106.083510) ( 2/110) Purging pango (1.56.4-r0) ( 3/110) Purging py3-brotli-pyc (1.1.0-r2) ( 4/110) Purging py3-brotli (1.1.0-r2) ( 5/110) Purging py3-cssselect2-pyc (0.8.0-r0) ( 6/110) Purging py3-cssselect2 (0.8.0-r0) ( 7/110) Purging py3-cffi-pyc (1.17.1-r1) ( 8/110) Purging py3-cffi (1.17.1-r1) ( 9/110) Purging py3-cparser-pyc (2.22-r1) ( 10/110) Purging py3-cparser (2.22-r1) ( 11/110) Purging py3-fonttools-pyc (4.60.1-r0) ( 12/110) Purging py3-fonttools (4.60.1-r0) ( 13/110) Purging py3-pillow-pyc (11.3.0-r1) ( 14/110) Purging py3-pillow (11.3.0-r1) ( 15/110) Purging py3-pydyf-pyc (0.11.0-r0) ( 16/110) Purging py3-pydyf (0.11.0-r0) ( 17/110) Purging py3-pyphen-pyc (0.17.2-r0) ( 18/110) Purging py3-pyphen (0.17.2-r0) ( 19/110) Purging py3-tinycss2-pyc (1.4.0-r0) ( 20/110) Purging py3-tinycss2 (1.4.0-r0) ( 21/110) Purging py3-tinyhtml5-pyc (2.0.0-r0) ( 22/110) Purging py3-tinyhtml5 (2.0.0-r0) ( 23/110) Purging py3-webencodings-pyc (0.5.1-r9) ( 24/110) Purging py3-webencodings (0.5.1-r9) ( 25/110) Purging py3-zopfli-pyc (0.2.3-r2) ( 26/110) Purging py3-zopfli (0.2.3-r2) ( 27/110) Purging py3-flit-core-pyc (3.12.0-r0) ( 28/110) Purging py3-flit-core (3.12.0-r0) ( 29/110) Purging py3-gpep517-pyc (19-r1) ( 30/110) Purging py3-gpep517 (19-r1) ( 31/110) Purging py3-installer-pyc (0.7.0-r2) ( 32/110) Purging py3-installer (0.7.0-r2) ( 33/110) Purging font-dejavu (2.37-r6) ( 34/110) Purging encodings (1.1.0-r0) ( 35/110) Purging mkfontscale (1.2.3-r1) ( 36/110) Purging ghostscript (10.05.1-r1) ( 37/110) Purging py3-pytest-xdist-pyc (3.8.0-r0) ( 38/110) Purging py3-pytest-xdist (3.8.0-r0) ( 39/110) Purging py3-execnet-pyc (2.1.1-r0) ( 40/110) Purging py3-execnet (2.1.1-r0) ( 41/110) Purging py3-pytest-pyc (8.4.2-r1) ( 42/110) Purging py3-pytest (8.4.2-r1) ( 43/110) Purging py3-iniconfig-pyc (2.3.0-r0) ( 44/110) Purging py3-iniconfig (2.3.0-r0) ( 45/110) Purging py3-packaging-pyc (25.0-r0) ( 46/110) Purging py3-packaging (25.0-r0) ( 47/110) Purging py3-parsing-pyc (3.2.3-r0) ( 48/110) Purging py3-parsing (3.2.3-r0) ( 49/110) Purging py3-pluggy-pyc (1.6.0-r0) ( 50/110) Purging py3-pluggy (1.6.0-r0) ( 51/110) Purging py3-py-pyc (1.11.0-r4) ( 52/110) Purging py3-py (1.11.0-r4) ( 53/110) Purging py3-pygments-pyc (2.19.2-r0) ( 54/110) Purging py3-pygments (2.19.2-r0) ( 55/110) Purging python3-pyc (3.12.12-r0) ( 56/110) Purging python3-pycache-pyc0 (3.12.12-r0) ( 57/110) Purging pyc (3.12.12-r0) ( 58/110) Purging python3 (3.12.12-r0) ( 59/110) Purging cairo (1.18.4-r0) ( 60/110) Purging cups-libs (2.4.13-r0) ( 61/110) Purging fribidi (1.0.16-r2) ( 62/110) Purging gdbm (1.26-r0) ( 63/110) Purging gnutls (3.8.8-r0) ( 64/110) Purging harfbuzz (11.3.2-r0) ( 65/110) Purging jbig2dec (0.20-r0) ( 66/110) Purging lcms2 (2.17-r0) ( 67/110) Purging libfontenc (1.1.8-r0) ( 68/110) Purging libimagequant (4.2.2-r0) ( 69/110) Purging libpanelw (6.5_p20251010-r0) ( 70/110) Purging libwebpdemux (1.6.0-r0) ( 71/110) Purging libwebpmux (1.6.0-r0) ( 72/110) Purging libxext (1.3.6-r2) ( 73/110) Purging libxft (2.3.9-r0) ( 74/110) Purging libxrender (0.9.12-r0) ( 75/110) Purging libxt (1.3.1-r0) ( 76/110) Purging mpdecimal (4.0.1-r0) ( 77/110) Purging nettle (3.10.2-r0) ( 78/110) Purging openjpeg (2.5.4-r1) ( 79/110) Purging p11-kit (0.25.5-r2) ( 80/110) Purging pixman (0.46.4-r0) ( 81/110) Purging sqlite-libs (3.51.0-r0) ( 82/110) Purging tiff (4.7.1-r0) ( 83/110) Purging xz-libs (5.8.1-r0) ( 84/110) Purging zopfli (1.0.3-r3) ( 85/110) Purging avahi-libs (0.8-r22) ( 86/110) Purging dbus-libs (1.16.2-r1) ( 87/110) Purging fontconfig (2.17.1-r0) ( 88/110) Purging freetype (2.13.3-r0) ( 89/110) Purging glib (2.86.1-r0) ( 90/110) Purging graphite2 (1.3.14-r6) ( 91/110) Purging libmount (2.41.2-r0) ( 92/110) Purging libblkid (2.41.2-r0) ( 93/110) Purging libx11 (1.8.12-r1) ( 94/110) Purging libxcb (1.17.0-r0) ( 95/110) Purging libxdmcp (1.1.5-r1) ( 96/110) Purging libbsd (0.12.2-r0) ( 97/110) Purging libbz2 (1.0.8-r6) ( 98/110) Purging libeconf (0.8.0-r0) ( 99/110) Purging libffi (3.5.2-r0) (100/110) Purging libsm (1.2.6-r0) (101/110) Purging libice (1.1.2-r0) (102/110) Purging libintl (0.24.1-r1) (103/110) Purging libjpeg-turbo (3.1.2-r0) (104/110) Purging libmd (1.1.0-r0) (105/110) Purging libpng (1.6.49-r0) (106/110) Purging libwebp (1.6.0-r0) (107/110) Purging libsharpyuv (1.6.0-r0) (108/110) Purging libtasn1 (4.20.0-r0) (109/110) Purging libuuid (2.41.2-r0) (110/110) Purging libxau (1.0.12-r0) busybox-1.37.0-r24.trigger: Executing script... OK: 543 MiB in 105 packages