{"receipt_id":"agent1-1","seq":1,"branch_id":"agent1","kind":"command","cmd":"git ls-files -z","path":null,"exit_code":0,"stdout_tail":".github/FUNDING.yml\u0000.github/workflows/doconfly.yml\u0000.github/workflows/exe.yml\u0000.github/workflows/test_samples.yml\u0000.github/workflows/tests.yml\u0000.gitignore\u0000LICENSE\u0000README.rst\u0000docs/api_reference.rst\u0000docs/changelog.rst\u0000docs/common_use_cases.rst\u0000docs/conf.py\u0000docs/contribute.rst\u0000docs/first_steps.rst\u0000docs/going_further.rst\u0000docs/index.rst\u0000docs/manpage.rst\u0000docs/support.rst\u0000pyproject.toml\u0000tests/__init__.py\u0000tests/conftest.py\u0000tests/draw/__init__.py\u0000tests/draw/svg/__init__.py\u0000tests/draw/svg/test_bounding_box.py\u0000tests/draw/svg/test_clip.py\u0000tests/draw/svg/test_defs.py\u0000tests/draw/svg/test_gradients.py\u0000tests/draw/svg/test_images.py\u0000tests/draw/svg/test_markers.py\u0000tests/draw/svg/test_opacity.py\u0000tests/draw/svg/test_paths.py\u0000tests/draw/svg/test_patterns.py\u0000tests/draw/svg/test_shapes.py\u0000tests/draw/svg/test_text.py\u0000tests/draw/svg/test_transform.py\u0000tests/draw/svg/test_units.py\u0000tests/draw/svg/test_visibility.py\u0000tests/draw/test_absolute.py\u0000tests/draw/test_background.py\u0000tests/draw/test_before_after.py\u0000tests/draw/test_box.py\u0000tests/draw/test_column.py\u0000tests/draw/test_current_color.py\u0000tests/draw/test_float.py\u0000tests/draw/test_footnote.py\u0000tests/draw/test_footnote_column.py\u0000tests/draw/test_gradient.py\u0000tests/draw/test_image.py\u0000tests/draw/test_leader.py\u0000tests/draw/test_list.py\u0000tests/draw/test_opacity.py\u0000tests/draw/test_overflow.py\u0000tests/draw/test_page.py\u0000tests/draw/test_table.py\u0000tests/draw/test_text.py\u0000tests/draw/test_transform.py\u0000tests/draw/test_visibility.py\u0000tests/draw/test_whitespace.py\u0000tests/layout/__init__.py\u0000tests/layout/test_block.py\u0000tests/layout/test_column.py\u0000tests/layout/test_flex.py\u0000tests/layout/test_footnotes.py\u0000tests/layout/test_image.py\u0000tests/layout/test_inline.py\u0000tests/layout/test_inline_block.py\u0000tests/layout/test_list.py\u0000tests/layout/test_page.py\u0000tests/layout/test_position.py\u0000tests/layout/test_shrink_to_fit.py\u0000tests/layout/test_table.py\u0000tests/resources/acid2-reference.html\u0000tests/resources/acid2-test.html\u0000tests/resources/blue.jpg\u0000tests/resources/doc1.html\u0000tests/resources/doc1_UTF-16BE.html\u0000tests/resources/icon.png\u0000tests/resources/latin1-test.css\u0000tests/resources/logo_small.png\u0000tests/resources/mini_ua.css\u0000tests/resources/not-optimized-exif.jpg\u0000tests/resources/not-optimized.jpg\u0000tests/resources/pattern-transparent.svg\u0000tests/resources/pattern.gif\u0000tests/resources/pattern.palette.png\u0000tests/resources/pattern.png\u0000tests/resources/pattern.svg\u0000tests/resources/really-a-png.svg\u0000tests/resources/really-a-svg.png\u0000tests/resources/sheet2.css\u0000tests/resources/sub_directory/sheet1.css\u0000tests/resources/user.css\u0000tests/resources/utf8-test.css\u0000tests/resources/weasyprint.otb\u0000tests/resources/weasyprint.otf\u0000tests/resources/weasyprint.woff\u0000tests/test_acid2.py\u0000tests/test_api.py\u0000tests/test_boxes.py\u0000tests/test_counters.py\u0000tests/test_css.py\u0000tests/test_css_descriptors.py\u0000tests/test_css_validation.py\u0000tests/test_float.py\u0000tests/test_fonts.py\u0000tests/test_pdf.py\u0000tests/test_presentational_hints.py\u0000tests/test_stacking.py\u0000tests/test_target.py\u0000tests/test_text.py\u0000tests/test_unicode.py\u0000tests/test_url.py\u0000tests/test_variables.py\u0000tests/testing_utils.py\u0000weasyprint/__init__.py\u0000weasyprint/__main__.py\u0000weasyprint/anchors.py\u0000weasyprint/css/__init__.py\u0000weasyprint/css/computed_values.py\u0000weasyprint/css/counters.py\u0000weasyprint/css/html5_ph.css\u0000weasyprint/css/html5_ua.css\u0000weasyprint/css/html5_ua_form.css\u0000weasyprint/css/media_queries.py\u0000weasyprint/css/properties.py\u0000weasyprint/css/targets.py\u0000weasyprint/css/tests_ua.css\u0000weasyprint/css/utils.py\u0000weasyprint/css/validation/__init__.py\u0000weasyprint/css/validation/descriptors.py\u0000weasyprint/css/validation/expanders.py\u0000weasyprint/css/validation/properties.py\u0000weasyprint/document.py\u0000weasyprint/draw.py\u0000weasyprint/formatting_structure/boxes.py\u0000weasyprint/formatting_structure/build.py\u0000weasyprint/html.py\u0000weasyprint/images.py\u0000weasyprint/layout/__init__.py\u0000weasyprint/layout/absolute.py\u0000weasyprint/layout/background.py\u0000weasyprint/layout/block.py\u0000weasyprint/layout/column.py\u0000weasyprint/layout/flex.py\u0000weasyprint/layout/float.py\u0000weasyprint/layout/inline.py\u0000weasyprint/layout/leader.py\u0000weasyprint/layout/min_max.py\u0000weasyprint/layout/page.py\u0000weasyprint/layout/percent.py\u0000weasyprint/layout/preferred.py\u0000weasyprint/layout/replaced.py\u0000weasyprint/layout/table.py\u0000weasyprint/logger.py\u0000weasyprint/matrix.py\u0000weasyprint/pdf/__init__.py\u0000weasyprint/pdf/anchors.py\u0000weasyprint/pdf/fonts.py\u0000weasyprint/pdf/metadata.py\u0000weasyprint/pdf/pdfa.py\u0000weasyprint/pdf/pdfua.py\u0000weasyprint/pdf/sRGB2014.icc\u0000weasyprint/pdf/stream.py\u0000weasyprint/stacking.py\u0000weasyprint/svg/__init__.py\u0000weasyprint/svg/bounding_box.py\u0000weasyprint/svg/css.py\u0000weasyprint/svg/defs.py\u0000weasyprint/svg/images.py\u0000weasyprint/svg/path.py\u0000weasyprint/svg/shapes.py\u0000weasyprint/svg/text.py\u0000weasyprint/svg/utils.py\u0000weasyprint/text/constants.py\u0000weasyprint/text/ffi.py\u0000weasyprint/text/fonts.py\u0000weasyprint/text/line_break.py\u0000weasyprint/urls.py\u0000","stderr_tail":"","stdout_sha256":"b22d7b9449a8877bf84c63641694fccf4dad2a7f63ec9d7d7d1ae25a12f9a3e5","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-1.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:25:15.225666Z","duration_s":0.003767,"timed_out":false,"image_before":"6ff9a4f8-89ff-44c2-aa6f-6eabb54b996f","image_after":"e6da318b-9246-4901-b77f-e346dde1cb60","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-2","seq":2,"branch_id":"agent1","kind":"command","cmd":"grep -n \"test_layout_table_auto_32\" tests/layout/test_table.py","path":null,"exit_code":0,"stdout_tail":"1113:def test_layout_table_auto_32():\n","stderr_tail":"","stdout_sha256":"f175dbdc8661c8fbdc472d3a5d4d99f855791256af993826abd3bfabc5acf5d0","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-2.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:25:22.846218Z","duration_s":0.003394,"timed_out":false,"image_before":"e6da318b-9246-4901-b77f-e346dde1cb60","image_after":"21ecebc9-23ff-41d9-a68d-d0ffad624434","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-3","seq":3,"branch_id":"agent1","kind":"command","cmd":"grep -n \"_intrinsic_dimensions\\|intrinsic.*dimension\" weasyprint/layout/table.py","path":null,"exit_code":1,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-3.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:25:30.189833Z","duration_s":0.003162,"timed_out":false,"image_before":"21ecebc9-23ff-41d9-a68d-d0ffad624434","image_after":"dce6c2d9-0654-44cd-99ac-74c3311358a2","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-4","seq":4,"branch_id":"agent1","kind":"command","cmd":"grep -n \"def \" weasyprint/layout/table.py | head -20","path":null,"exit_code":0,"stdout_tail":"13:def table_layout(context, table, bottom_space, skip_stack, containing_block,\n77:    def group_layout(group, position_y, bottom_space, page_is_empty,\n367:    def body_groups_layout(skip_stack, position_y, bottom_space,\n433:    def all_groups_layout():\n537:    def get_column_cells(table, column):\n609:def add_top_padding(box, extra_padding):\n620:def fixed_table_layout(box):\n709:def auto_table_layout(context, box, containing_block):\n812:def table_wrapper_width(context, wrapper, containing_block):\n825:def cell_baseline(cell):\n840:def find_in_flow_baseline(box, last=False, baseline_types=(boxes.LineBox,)):\n860:def distribute_excess_width(context, grid, excess_width, column_widths,\n989:def collapse_table_borders(table, grid_width, grid_height):\n1013:    def set_one_border(border_grid, box_style, side, grid_x, grid_y):\n1029:    def set_borders(box, x, y, w, h):\n1085:    def set_border_used_width(box, side, twice_width):\n1089:    def remove_borders(box):\n1095:    def max_vertical_width(x, y, h):\n1100:    def max_horizontal_width(x, y, w):\n","stderr_tail":"","stdout_sha256":"d32ba0d9c76aa09d3130972134c27be456cb41cd53c532e67bc63f92f6c17e5b","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-4.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:25:32.892711Z","duration_s":0.004873000000000001,"timed_out":false,"image_before":"dce6c2d9-0654-44cd-99ac-74c3311358a2","image_after":"d7bbeeb1-080f-4ca2-80bc-e9adf7b63100","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-5","seq":5,"branch_id":"agent1","kind":"command","cmd":"grep -n \"table_and_columns_preferred_widths\\|table.*preferred\" weasyprint/layout/preferred.py","path":null,"exit_code":0,"stdout_tail":"42:        return table_and_columns_preferred_widths(context, box, outer)[0]\n69:        return table_and_columns_preferred_widths(context, box, outer)[1]\n384:def table_and_columns_preferred_widths(context, box, outer=True):\n","stderr_tail":"","stdout_sha256":"66fddddf952e0216e18d4b3313d016f875aa0e00527768688290ea666985296c","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-5.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:25:36.617897Z","duration_s":0.003533,"timed_out":false,"image_before":"d7bbeeb1-080f-4ca2-80bc-e9adf7b63100","image_after":"bfea7c84-2655-4b30-a1a1-35893800d6f5","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-6","seq":6,"branch_id":"agent1","kind":"command","cmd":"grep -n \"def adjust\" weasyprint/layout/preferred.py","path":null,"exit_code":0,"stdout_tail":"180:def adjust(box, outer, width, left=True, right=True):\n","stderr_tail":"","stdout_sha256":"344574e6167b9a1a524026ffe66e7a83ccda62b5479f3b455d2dc9a8a7b6c4d2","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-6.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:25:59.007422Z","duration_s":0.00334,"timed_out":false,"image_before":"bfea7c84-2655-4b30-a1a1-35893800d6f5","image_after":"fc540df2-20d3-4242-8eec-0d28aa79cba1","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-7","seq":7,"branch_id":"agent1","kind":"command","cmd":"grep -n \"def min_max\" weasyprint/layout/preferred.py","path":null,"exit_code":0,"stdout_tail":"107:def min_max(box, width):\n","stderr_tail":"","stdout_sha256":"25f30808d50b001be6100eb1bbcebf34a6597b8de968508cb0d7b7fc294d7d4c","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-7.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:26:05.170058Z","duration_s":0.003277,"timed_out":false,"image_before":"fc540df2-20d3-4242-8eec-0d28aa79cba1","image_after":"f88fcefa-06fa-4848-aeaa-a56fc0f8a52e","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-8","seq":8,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-b688e099146f40cbb632861739982639/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-b688e099146f40cbb632861739982639/incoming/4be31cc6b08fc7e2a22292b43edc834015f88914fab2e26cb37913d40eca9a49 /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"4be31cc6b08fc7e2a22292b43edc834015f88914fab2e26cb37913d40eca9a49","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-8.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:26:14.445175Z","duration_s":0.00506,"timed_out":false,"image_before":"f88fcefa-06fa-4848-aeaa-a56fc0f8a52e","image_after":"5f582a5f-6b80-41d1-950c-0536923530d7","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-9","seq":9,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-4347894736ab4f26af0a8ac880180756/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-4347894736ab4f26af0a8ac880180756/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-9.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 PASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_32 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n------------ generated xml file: /opt/receipts/reports/agent1-9.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\n============================== 1 passed in 0.24s ===============================\n","stderr_tail":"","stdout_sha256":"0a8677a63d960d7facd32b5adfadf906909983bf9f4eef86aadc71997c8c8710","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-9.log","tree_digest":"6bf8c8b308ff03dba4abce618e3d265d0f7ddd1fd28ecdb72701ac7732b8de2d","tree_download_s":3.0684716671239585,"started_at":"2026-10-03T18:26:17.158336Z","duration_s":1.508005,"timed_out":false,"image_before":"5f582a5f-6b80-41d1-950c-0536923530d7","image_after":"f87dc42a-a58a-4c38-9800-00ee74630f67","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_32"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-10","seq":10,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-d13ffdf734604e26b7889d85435f53e4/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-d13ffdf734604e26b7889d85435f53e4/receipts_pytest.py tests/layout/test_table.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning -x -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-10.xml","path":null,"exit_code":1,"stdout_tail":"syprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_11 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_12 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_13 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_14 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_15 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_16 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_17 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:283 Step 2 - Fetching and parsing CSS - CSS string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_18 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-10.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_inline_table\nPASSED tests/layout/test_table.py::test_implicit_width_table_col_percent\nPASSED tests/layout/test_table.py::test_implicit_width_table_td_percent\nPASSED tests/layout/test_table.py::test_layout_table_fixed_1\nPASSED tests/layout/test_table.py::test_layout_table_fixed_2\nPASSED tests/layout/test_table.py::test_layout_table_fixed_3\nPASSED tests/layout/test_table.py::test_layout_table_fixed_4\nPASSED tests/layout/test_table.py::test_layout_table_fixed_5\nPASSED tests/layout/test_table.py::test_layout_table_auto_1\nPASSED tests/layout/test_table.py::test_layout_table_auto_2\nPASSED tests/layout/test_table.py::test_layout_table_auto_3\nPASSED tests/layout/test_table.py::test_layout_table_auto_4\nPASSED tests/layout/test_table.py::test_layout_table_auto_5\nPASSED tests/layout/test_table.py::test_layout_table_auto_6\nPASSED tests/layout/test_table.py::test_layout_table_auto_7\nPASSED tests/layout/test_table.py::test_layout_table_auto_8\nPASSED tests/layout/test_table.py::test_layout_table_auto_9\nPASSED tests/layout/test_table.py::test_layout_table_auto_10\nPASSED tests/layout/test_table.py::test_layout_table_auto_11\nPASSED tests/layout/test_table.py::test_layout_table_auto_12\nPASSED tests/layout/test_table.py::test_layout_table_auto_13\nPASSED tests/layout/test_table.py::test_layout_table_auto_14\nPASSED tests/layout/test_table.py::test_layout_table_auto_15\nPASSED tests/layout/test_table.py::test_layout_table_auto_16\nPASSED tests/layout/test_table.py::test_layout_table_auto_17\nPASSED tests/layout/test_table.py::test_layout_table_auto_18\nFAILED tests/layout/test_table.py::test_layout_table_auto_19 - assert 200.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n========================= 1 failed, 26 passed in 0.95s =========================\n","stderr_tail":"","stdout_sha256":"1500fda58bf736e96d194d69b8d0723ec7fc8b23f413e32e24221642c03e9bfc","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-10.log","tree_digest":"6bf8c8b308ff03dba4abce618e3d265d0f7ddd1fd28ecdb72701ac7732b8de2d","tree_download_s":2.3503701670560986,"started_at":"2026-10-03T18:26:25.753347Z","duration_s":1.926044,"timed_out":false,"image_before":"f87dc42a-a58a-4c38-9800-00ee74630f67","image_after":"649051e9-8a4b-4448-9320-44aaad1ec5d7","junit":{"passed":["tests/layout/test_table.py::test_inline_table","tests/layout/test_table.py::test_implicit_width_table_col_percent","tests/layout/test_table.py::test_implicit_width_table_td_percent","tests/layout/test_table.py::test_layout_table_fixed_1","tests/layout/test_table.py::test_layout_table_fixed_2","tests/layout/test_table.py::test_layout_table_fixed_3","tests/layout/test_table.py::test_layout_table_fixed_4","tests/layout/test_table.py::test_layout_table_fixed_5","tests/layout/test_table.py::test_layout_table_auto_1","tests/layout/test_table.py::test_layout_table_auto_2","tests/layout/test_table.py::test_layout_table_auto_3","tests/layout/test_table.py::test_layout_table_auto_4","tests/layout/test_table.py::test_layout_table_auto_5","tests/layout/test_table.py::test_layout_table_auto_6","tests/layout/test_table.py::test_layout_table_auto_7","tests/layout/test_table.py::test_layout_table_auto_8","tests/layout/test_table.py::test_layout_table_auto_9","tests/layout/test_table.py::test_layout_table_auto_10","tests/layout/test_table.py::test_layout_table_auto_11","tests/layout/test_table.py::test_layout_table_auto_12","tests/layout/test_table.py::test_layout_table_auto_13","tests/layout/test_table.py::test_layout_table_auto_14","tests/layout/test_table.py::test_layout_table_auto_15","tests/layout/test_table.py::test_layout_table_auto_16","tests/layout/test_table.py::test_layout_table_auto_17","tests/layout/test_table.py::test_layout_table_auto_18"],"failed":["tests/layout/test_table.py::test_layout_table_auto_19"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_19":"assert 200.0 == 300\n +  where 200.0 = <TableBox table>.width\nE   assert 200.0 == 300\n     +  where 200.0 = <TableBox table>.width"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-11","seq":11,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-9f10d98d9a314f11a0c468c723da37cf/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-9f10d98d9a314f11a0c468c723da37cf/incoming/e2a477d92421dd36ef43b2e7eacc36fc68170fb9cc7847be7b8fe9ff877241a3 /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e2a477d92421dd36ef43b2e7eacc36fc68170fb9cc7847be7b8fe9ff877241a3","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-11.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:26:42.520952Z","duration_s":0.005111,"timed_out":false,"image_before":"649051e9-8a4b-4448-9320-44aaad1ec5d7","image_after":"53a901cd-236a-4174-9c45-90aecdc7db0b","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-12","seq":12,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-f78ea3653e6d46a790bd2e1f94032d9a/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-f78ea3653e6d46a790bd2e1f94032d9a/incoming/95c79a6c084d4866537efa4f1e82b3235b306fbed563db83de2654ffc7d0c933 /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"95c79a6c084d4866537efa4f1e82b3235b306fbed563db83de2654ffc7d0c933","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-12.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:26:52.316428Z","duration_s":0.005143999999999999,"timed_out":false,"image_before":"53a901cd-236a-4174-9c45-90aecdc7db0b","image_after":"ba5ac086-10f5-4979-84d4-5cb390946ec4","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-13","seq":13,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-5e346d395ce44247b5bb2acdd65acaa1/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-5e346d395ce44247b5bb2acdd65acaa1/incoming/e31bb6f69f4b847f2fc66841ca036d2b093d6e9469ffc51d32a1a4c396ebd5cd /tmp/debug_test.py'","path":"/tmp/debug_test.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e31bb6f69f4b847f2fc66841ca036d2b093d6e9469ffc51d32a1a4c396ebd5cd","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-13.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:07.250257Z","duration_s":0.004991000000000001,"timed_out":false,"image_before":"ba5ac086-10f5-4979-84d4-5cb390946ec4","image_after":"ce935ea3-0bdf-4fe1-8aeb-0de12e5ef17d","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-14","seq":14,"branch_id":"agent1","kind":"command","cmd":"cd /Weasyprint && python /tmp/debug_test.py","path":null,"exit_code":2,"stdout_tail":"","stderr_tail":"/bin/sh: 1: cd: can't cd to /Weasyprint\n","stdout_sha256":"5809ffbc2836ecc478c81ce93fcaa0bad4ca67980892a0a659a2f872df3c6f14","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-14.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:10.875788Z","duration_s":0.001358,"timed_out":false,"image_before":"ce935ea3-0bdf-4fe1-8aeb-0de12e5ef17d","image_after":"84bbfae2-f6a7-4c74-96d8-513129752629","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-15","seq":15,"branch_id":"agent1","kind":"command","cmd":"cd /WeasyPrint && python /tmp/debug_test.py","path":null,"exit_code":1,"stdout_tail":"Rendering HTML...\nDocument has 1 pages\n","stderr_tail":"Traceback (most recent call last):\n  File \"/tmp/debug_test.py\", line 24, in <module>\n    print(f\"Page has {len(page.children)} children\")\nAttributeError: 'Page' object has no attribute 'children'\n","stdout_sha256":"fa17a89030352e8d9458dc63044e2cbdd7fffeb9e05474e7c538e4fc79fd322f","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-15.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:14.770625Z","duration_s":0.501549,"timed_out":false,"image_before":"84bbfae2-f6a7-4c74-96d8-513129752629","image_after":"76f7862b-16e1-472f-9c9e-a868523f38d0","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-16","seq":16,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-96ae487f142647c7ac1e5f5bf10f59d1/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-96ae487f142647c7ac1e5f5bf10f59d1/incoming/cd231acdd0336ed117ff8520c006dd72e2888348360adc64aa836af83f63b38f /tmp/debug_test.py'","path":"/tmp/debug_test.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"cd231acdd0336ed117ff8520c006dd72e2888348360adc64aa836af83f63b38f","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-16.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:22.494833Z","duration_s":0.005334,"timed_out":false,"image_before":"76f7862b-16e1-472f-9c9e-a868523f38d0","image_after":"df24c2f4-cf86-4a8f-ba9e-c2d367b88e02","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-17","seq":17,"branch_id":"agent1","kind":"command","cmd":"cd /WeasyPrint && python /tmp/debug_test.py","path":null,"exit_code":0,"stdout_tail":"Rendering HTML...\nDocument has 1 pages\nPage has 0 children elements\nDone.\n","stderr_tail":"","stdout_sha256":"0a9cfbad0558cfb3970c15ddd385f62677a58a979188c4fbacae17fc8c4d176d","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-17.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:25.800451Z","duration_s":0.372329,"timed_out":false,"image_before":"df24c2f4-cf86-4a8f-ba9e-c2d367b88e02","image_after":"bcbd9b6c-73d8-47e6-a5af-80aebf7bef76","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-18","seq":18,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-9b1f7cbffa284fcf82d3fb13a74aa91b/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-9b1f7cbffa284fcf82d3fb13a74aa91b/incoming/a207aa2cc23236ce8cd59c6b34a99135c6d70ae4c48d09e26c5f3933f00389ed /tmp/debug_test.py'","path":"/tmp/debug_test.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"a207aa2cc23236ce8cd59c6b34a99135c6d70ae4c48d09e26c5f3933f00389ed","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-18.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:35.569354Z","duration_s":0.004883,"timed_out":false,"image_before":"bcbd9b6c-73d8-47e6-a5af-80aebf7bef76","image_after":"60f2a946-135f-45b5-b9e7-8d1e005543cd","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-19","seq":19,"branch_id":"agent1","kind":"command","cmd":"cd /WeasyPrint && python /tmp/debug_test.py","path":null,"exit_code":1,"stdout_tail":"","stderr_tail":"Traceback (most recent call last):\n  File \"/tmp/debug_test.py\", line 6, in <module>\n    from weasyprint.testing_utils import render_pages\nModuleNotFoundError: No module named 'weasyprint.testing_utils'\n","stdout_sha256":"58ecd1b369255711d7f39878af7e0987f190bed8270a6d0b5392722f20f40971","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-19.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:38.796943Z","duration_s":0.360642,"timed_out":false,"image_before":"60f2a946-135f-45b5-b9e7-8d1e005543cd","image_after":"89caa7c8-6dc6-4874-91cc-19d569aa3c49","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-20","seq":20,"branch_id":"agent1","kind":"command","cmd":"cd /WeasyPrint && PYTHONPATH=. python /tmp/debug_test.py","path":null,"exit_code":1,"stdout_tail":"","stderr_tail":"Traceback (most recent call last):\n  File \"/tmp/debug_test.py\", line 6, in <module>\n    from weasyprint.testing_utils import render_pages\nModuleNotFoundError: No module named 'weasyprint.testing_utils'\n","stdout_sha256":"58ecd1b369255711d7f39878af7e0987f190bed8270a6d0b5392722f20f40971","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-20.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:43.191502Z","duration_s":0.355239,"timed_out":false,"image_before":"89caa7c8-6dc6-4874-91cc-19d569aa3c49","image_after":"ca73a527-d80b-4a0d-ba57-5083e4fe9456","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-21","seq":21,"branch_id":"agent1","kind":"command","cmd":"grep -n \"render_pages\\|from.*testing\" tests/layout/test_table.py | head -5","path":null,"exit_code":0,"stdout_tail":"7:from ..testing_utils import (\n8:    assert_no_logs, capture_logs, parse_all, render_pages)\n26:    page, = render_pages('''\n57:    page, = render_pages('''\n78:    page, = render_pages('''\n","stderr_tail":"","stdout_sha256":"e7087f6cea83e2e5886afd6e43b813eedadece1f30bb00b8e62cb1c208b9d219","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-21.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:47.231363Z","duration_s":0.004972,"timed_out":false,"image_before":"ca73a527-d80b-4a0d-ba57-5083e4fe9456","image_after":"b80c18a6-3970-4d42-89dd-748fb3cbb5a0","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-22","seq":22,"branch_id":"agent1","kind":"command","cmd":"cd /WeasyPrint && PYTHONPATH=. python -c \"\nfrom weasyprint.testing_utils import render_pages\nhtml_content = '''<table style=\\\"width: 400px; margin: 100px\\\"><td style=\\\"width: 500px\\\"></td></table>'''\npages = render_pages(html_content)\npage = pages[0]\nhtml, = page.children\nbody, = html.children\ntable_wrapper, = body.children\nprint(f'Table wrapper width: {table_wrapper.width}')\ntable, = table_wrapper.children\nprint(f'Table width: {table.width}')\nprint(f'Table margin width: {table.margin_width()}')\n\"","path":null,"exit_code":1,"stdout_tail":"","stderr_tail":"Traceback (most recent call last):\n  File \"<string>\", line 2, in <module>\nModuleNotFoundError: No module named 'weasyprint.testing_utils'\n","stdout_sha256":"8bbe58432fec2a8fe833ec4cd998bd6296d80fb7f0cf2155e179efb16bb625ca","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-22.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:27:51.463125Z","duration_s":0.362452,"timed_out":false,"image_before":"b80c18a6-3970-4d42-89dd-748fb3cbb5a0","image_after":"2a4e4373-0b5a-4bdd-b0dc-af4a599a2c50","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-23","seq":23,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-68b526ff734e49bdba693b1c4dd48b3f/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-68b526ff734e49bdba693b1c4dd48b3f/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-23.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 FAILED\n\n=================================== FAILURES ===================================\n__________________________ test_layout_table_auto_32 ___________________________\n\n    @assert_no_logs\n    def test_layout_table_auto_32():\n        # Table with a cell larger than the table's width\n        page, = render_pages('''\n          <table style=\"width: 400px; margin: 100px\">\n            <td style=\"width: 500px\"></td>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n>       assert table_wrapper.margin_width() == 600  # 400 + 2 * 100\nE       assert 700.0 == 600\nE        +  where 700.0 = margin_width()\nE        +    where margin_width = <BlockBox table>.margin_width\n\ntests/layout/test_table.py:1123: AssertionError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-23.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_32 - assert 700.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.29s ===============================\n","stderr_tail":"","stdout_sha256":"9aee3226804c01fe90e5fb99f984f8bc064b7fffdf21d9d3617f844192493bc5","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-23.log","tree_digest":"d53e79df67b13eb86cac5bf871baa438e9af5ad4cb0ac7f48bb3e3f250bc9774","tree_download_s":7.270496667129919,"started_at":"2026-10-03T18:27:55.774957Z","duration_s":1.5447929999999999,"timed_out":false,"image_before":"2a4e4373-0b5a-4bdd-b0dc-af4a599a2c50","image_after":"07d3bfb1-e60c-4ab6-931c-c2948b0bcb30","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_32"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_32":"assert 700.0 == 600\n +  where 700.0 = margin_width()\n +    where margin_width = <BlockBox table>.margin_width\n@assert_no_logs\n    def test_layout_table_auto_32():\n        # Table with a cell larger than the table's width\n        page, = render_pages('''\n          <table style=\"width: 400px; margin: 100px\">\n            <td style=\"width: 500px\"></td>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n>       assert table_wrapper.margin_width() == 600  # 400 + 2 * 100\nE       assert 700.0 == 600\nE        +  where 700.0 = margin_width()\nE        +    where margin_width = <BlockBox table>.margin_width\n\ntests/layout/test_table.py:1123: AssertionError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-24","seq":24,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-b8eddeaa92854e4bb9e1377bf0b1a29e/bin/busybox sh -c 'mkdir -p /tmp && cp /opt/receipts-b8eddeaa92854e4bb9e1377bf0b1a29e/incoming/94d93426a04c509569dd16656a029c8410ab54de6979c01dee59fa165e56b91e /tmp/debug_preferred.py'","path":"/tmp/debug_preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"94d93426a04c509569dd16656a029c8410ab54de6979c01dee59fa165e56b91e","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-24.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:28:14.399023Z","duration_s":0.005427,"timed_out":false,"image_before":"07d3bfb1-e60c-4ab6-931c-c2948b0bcb30","image_after":"831e5f72-9433-417b-90f0-11c941f96f3f","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-25","seq":25,"branch_id":"agent1","kind":"command","cmd":"cd /tmp && python /tmp/debug_preferred.py","path":null,"exit_code":0,"stdout_tail":"Restored original preferred.py\n","stderr_tail":"ImportError while loading conftest '/WeasyPrint/tests/conftest.py'.\ntests/conftest.py:17: in <module>\n    from weasyprint import HTML\nweasyprint/__init__.py:420: in <module>\n    from .html import (  # noqa isort:skip\nweasyprint/html.py:26: in <module>\n    from .images import SVGImage\nweasyprint/images.py:19: in <module>\n    from .layout.percent import percentage\nweasyprint/layout/__init__.py:17: in <module>\n    from ..formatting_structure import boxes, build\nweasyprint/formatting_structure/build.py:12: in <module>\n    from ..layout.table import collapse_table_borders\nweasyprint/layout/table.py:10: in <module>\n    from .preferred import max_content_width, table_and_columns_preferred_widths\nE     File \"/WeasyPrint/weasyprint/layout/preferred.py\", line 647\nE       table_max_content_width = max(\nE   IndentationError: unexpected indent\n","stdout_sha256":"25f7cc10967f570cc93466c82f974d39b130c82d0004efb6b1c90a9591345439","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-25.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:28:17.269102Z","duration_s":0.43568700000000005,"timed_out":false,"image_before":"831e5f72-9433-417b-90f0-11c941f96f3f","image_after":"b261c874-c91a-4f3d-ab01-c478f837aab7","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-26","seq":26,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-b7ecaee2444246d2a06191abad7792c8/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-b7ecaee2444246d2a06191abad7792c8/incoming/7adbd2c90a3f70b91c838fb7f7f9b86a273aa78f8894368e7819220b1d755a76 /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"7adbd2c90a3f70b91c838fb7f7f9b86a273aa78f8894368e7819220b1d755a76","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-26.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:28:24.607928Z","duration_s":0.004798,"timed_out":false,"image_before":"b261c874-c91a-4f3d-ab01-c478f837aab7","image_after":"f94bc3ef-b17d-4d72-8191-1158bd33b2b8","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-27","seq":27,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-c901ba68832349a084729301d6139c7d/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-c901ba68832349a084729301d6139c7d/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-27.xml","path":null,"exit_code":1,"stdout_tail":"um)\n                        percentage_contribution = max(\n                            percentage_contribution,\n                            diff * ratio)\n    \n                percentage_contributions.append(percentage_contribution)\n    \n            intrinsic_percentages = percentage_contributions\n    \n        # Define constrainedness\n        constrainedness = [False for i in range(grid_width)]\n        for i in range(grid_width):\n            if (column_groups[i] and column_groups[i].style['width'] != 'auto' and\n                    column_groups[i].style['width'].unit != '%'):\n                constrainedness[i] = True\n                continue\n            if (columns[i] and columns[i].style['width'] != 'auto' and\n                    columns[i].style['width'].unit != '%'):\n                constrainedness[i] = True\n                continue\n            for cell in zipped_grid[i]:\n                if (cell and cell.colspan == 1 and\n                        cell.style['width'] != 'auto' and\n                        cell.style['width'].unit != '%'):\n                    constrainedness[i] = True\n                    break\n    \n        intrinsic_percentages = [\n            min(percentage, 100 - sum(intrinsic_percentages[:i]))\n            for i, percentage in enumerate(intrinsic_percentages)]\n    \n        # Max- and min-content widths for span > 1\n        for cell in colspan_cells:\n            min_content = min_content_width(context, cell)\n            max_content = max_content_width(context, cell)\n            column_slice = slice(cell.grid_x, cell.grid_x + cell.colspan)\n            columns_min_content = sum(min_content_widths[column_slice])\n            columns_max_content = sum(max_content_widths[column_slice])\n            if table.style['border_collapse'] == 'separate':\n                spacing = (cell.colspan - 1) * table.style['border_spacing'][0]\n            else:\n                spacing = 0\n    \n            if min_content > columns_min_content + spacing:\n                excess_width = min_content - (columns_min_content + spacing)\n                distribute_excess_width(\n                    context, zipped_grid, excess_width, min_content_widths,\n                    constrainedness, intrinsic_percentages, max_content_widths,\n                    column_slice)\n    \n            if max_content > columns_max_content + spacing:\n                excess_width = max_content - (columns_max_content + spacing)\n                distribute_excess_width(\n                    context, zipped_grid, excess_width, max_content_widths,\n                    constrainedness, intrinsic_percentages, max_content_widths,\n                    column_slice)\n    \n        # Calculate the max- and min-content widths of table and columns\n        small_percentage_contributions = [\n            max_content_widths[i] / (intrinsic_percentages[i] / 100)\n            for i in range(grid_width)\n            if intrinsic_percentages[i]]\n        large_percentage_contribution_numerator = sum(\n            max_content_widths[i] for i in range(grid_width)\n            if intrinsic_percentages[i] == 0)\n        large_percentage_contribution_denominator = (\n            (100 - sum(intrinsic_percentages)) / 100)\n        if large_percentage_contribution_denominator == 0:\n            if large_percentage_contribution_numerator == 0:\n                large_percentage_contribution = 0\n            else:\n                # \"the large percentage contribution of the table [is] an\n                # infinitely large number if the numerator is nonzero [and] the\n                # denominator of that ratio is 0.\"\n                #\n                # https://dbaron.org/css/intrinsic/#autotableintrinsic\n                #\n                # Please note that \"an infinitely large number\" is not \"infinite\",\n                # and that's probably not a coincindence: putting 'inf' here breaks\n                # some cases (see #305).\n                large_percentage_contribution = sys.maxsize\n        else:\n            large_percentage_contribution = (\n                large_percentage_contribution_numerator /\n                large_percentage_contribution_denominator)\n    \n        table_min_content_width = (\n            total_horizontal_border_spacing + sum(min_content_widths))\n        table_max_content_width = (\n            total_horizontal_border_spacing + max(\n                [sum(max_content_widths), large_percentage_contribution] +\n                small_percentage_contributions))\n    \n        if table.style['width'] != 'auto' and table.style['width'].unit == 'px':\n            # \"percentages on the following properties are treated instead as\n            # though they were the following: width: auto\"\n            # https://dbaron.org/css/intrinsic/#outer-intrinsic\n            table_min_width = table_max_width = table.style['width'].value\n        else:\n            table_min_width = table_min_content_width\n            table_max_width = table_max_content_width\n    \n        # DEBUG: Table intrinsic width calculation\n>       print(f\"DEBUG: table.style.width = {table.style.width}\")\nE       AttributeError: 'ComputedStyle' object has no attribute 'width'\n\nweasyprint/layout/preferred.py:639: AttributeError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-27.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_32 - AttributeError...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.40s ===============================\n","stderr_tail":"","stdout_sha256":"bfaa4b9ff4b21622016b2502661be06bbb930aeb8b1b8bf4708443e647756f5e","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-27.log","tree_digest":"6d0ee01abbaf8f54dff4a028a50d98fff1827ea04451a056a198da2d3c11a6da","tree_download_s":10.450535124866292,"started_at":"2026-10-03T18:28:28.286167Z","duration_s":1.654461,"timed_out":false,"image_before":"f94bc3ef-b17d-4d72-8191-1158bd33b2b8","image_after":"ceba60aa-9647-4304-bb61-9a309b8026cb","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_32"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_32":"[...]       if large_percentage_contribution_denominator == 0:\n            if large_percentage_contribution_numerator == 0:\n                large_percentage_contribution = 0\n            else:\n                # \"the large percentage contribution of the table [is] an\n                # infinitely large number if the numerator is nonzero [and] the\n                # denominator of that ratio is 0.\"\n                #\n                # https://dbaron.org/css/intrinsic/#autotableintrinsic\n                #\n                # Please note that \"an infinitely large number\" is not \"infinite\",\n                # and that's probably not a coincindence: putting 'inf' here breaks\n                # some cases (see #305).\n                large_percentage_contribution = sys.maxsize\n        else:\n            large_percentage_contribution = (\n                large_percentage_contribution_numerator /\n                large_percentage_contribution_denominator)\n    \n        table_min_content_width = (\n            total_horizontal_border_spacing + sum(min_content_widths))\n        table_max_content_width = (\n            total_horizontal_border_spacing + max(\n                [sum(max_content_widths), large_percentage_contribution] +\n                small_percentage_contributions))\n    \n        if table.style['width'] != 'auto' and table.style['width'].unit == 'px':\n            # \"percentages on the following properties are treated instead as\n            # though they were the following: width: auto\"\n            # https://dbaron.org/css/intrinsic/#outer-intrinsic\n            table_min_width = table_max_width = table.style['width'].value\n        else:\n            table_min_width = table_min_content_width\n            table_max_width = table_max_content_width\n    \n        # DEBUG: Table intrinsic width calculation\n>       print(f\"DEBUG: table.style.width = {table.style.width}\")\nE       AttributeError: 'ComputedStyle' object has no attribute 'width'\n\nweasyprint/layout/preferred.py:639: AttributeError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-28","seq":28,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-fa4098da837b44c8a6c70dbc0c045da0/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-fa4098da837b44c8a6c70dbc0c045da0/incoming/7adbd2c90a3f70b91c838fb7f7f9b86a273aa78f8894368e7819220b1d755a76 /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"7adbd2c90a3f70b91c838fb7f7f9b86a273aa78f8894368e7819220b1d755a76","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-28.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:29:11.853063Z","duration_s":0.004699999999999999,"timed_out":false,"image_before":"ceba60aa-9647-4304-bb61-9a309b8026cb","image_after":"698c01bf-f373-4f7c-b387-60930123b80b","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-29","seq":29,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-51917dd01a9842d1b3c309f2853ce879/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-51917dd01a9842d1b3c309f2853ce879/incoming/699444e7a906a49af94d783d5ba8764b1973693a621b9e118723d9ee01c38dfa /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"699444e7a906a49af94d783d5ba8764b1973693a621b9e118723d9ee01c38dfa","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-29.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:29:16.698702Z","duration_s":0.004378,"timed_out":false,"image_before":"698c01bf-f373-4f7c-b387-60930123b80b","image_after":"8302ee09-5eb2-4848-9417-beb9f3607b42","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-30","seq":30,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-70e36c4732f84b38af6719049f7d76d8/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-70e36c4732f84b38af6719049f7d76d8/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-30.xml","path":null,"exit_code":1,"stdout_tail":"um)\n                        percentage_contribution = max(\n                            percentage_contribution,\n                            diff * ratio)\n    \n                percentage_contributions.append(percentage_contribution)\n    \n            intrinsic_percentages = percentage_contributions\n    \n        # Define constrainedness\n        constrainedness = [False for i in range(grid_width)]\n        for i in range(grid_width):\n            if (column_groups[i] and column_groups[i].style['width'] != 'auto' and\n                    column_groups[i].style['width'].unit != '%'):\n                constrainedness[i] = True\n                continue\n            if (columns[i] and columns[i].style['width'] != 'auto' and\n                    columns[i].style['width'].unit != '%'):\n                constrainedness[i] = True\n                continue\n            for cell in zipped_grid[i]:\n                if (cell and cell.colspan == 1 and\n                        cell.style['width'] != 'auto' and\n                        cell.style['width'].unit != '%'):\n                    constrainedness[i] = True\n                    break\n    \n        intrinsic_percentages = [\n            min(percentage, 100 - sum(intrinsic_percentages[:i]))\n            for i, percentage in enumerate(intrinsic_percentages)]\n    \n        # Max- and min-content widths for span > 1\n        for cell in colspan_cells:\n            min_content = min_content_width(context, cell)\n            max_content = max_content_width(context, cell)\n            column_slice = slice(cell.grid_x, cell.grid_x + cell.colspan)\n            columns_min_content = sum(min_content_widths[column_slice])\n            columns_max_content = sum(max_content_widths[column_slice])\n            if table.style['border_collapse'] == 'separate':\n                spacing = (cell.colspan - 1) * table.style['border_spacing'][0]\n            else:\n                spacing = 0\n    \n            if min_content > columns_min_content + spacing:\n                excess_width = min_content - (columns_min_content + spacing)\n                distribute_excess_width(\n                    context, zipped_grid, excess_width, min_content_widths,\n                    constrainedness, intrinsic_percentages, max_content_widths,\n                    column_slice)\n    \n            if max_content > columns_max_content + spacing:\n                excess_width = max_content - (columns_max_content + spacing)\n                distribute_excess_width(\n                    context, zipped_grid, excess_width, max_content_widths,\n                    constrainedness, intrinsic_percentages, max_content_widths,\n                    column_slice)\n    \n        # Calculate the max- and min-content widths of table and columns\n        small_percentage_contributions = [\n            max_content_widths[i] / (intrinsic_percentages[i] / 100)\n            for i in range(grid_width)\n            if intrinsic_percentages[i]]\n        large_percentage_contribution_numerator = sum(\n            max_content_widths[i] for i in range(grid_width)\n            if intrinsic_percentages[i] == 0)\n        large_percentage_contribution_denominator = (\n            (100 - sum(intrinsic_percentages)) / 100)\n        if large_percentage_contribution_denominator == 0:\n            if large_percentage_contribution_numerator == 0:\n                large_percentage_contribution = 0\n            else:\n                # \"the large percentage contribution of the table [is] an\n                # infinitely large number if the numerator is nonzero [and] the\n                # denominator of that ratio is 0.\"\n                #\n                # https://dbaron.org/css/intrinsic/#autotableintrinsic\n                #\n                # Please note that \"an infinitely large number\" is not \"infinite\",\n                # and that's probably not a coincindence: putting 'inf' here breaks\n                # some cases (see #305).\n                large_percentage_contribution = sys.maxsize\n        else:\n            large_percentage_contribution = (\n                large_percentage_contribution_numerator /\n                large_percentage_contribution_denominator)\n    \n        table_min_content_width = (\n            total_horizontal_border_spacing + sum(min_content_widths))\n        table_max_content_width = (\n            total_horizontal_border_spacing + max(\n                [sum(max_content_widths), large_percentage_contribution] +\n                small_percentage_contributions))\n    \n        if table.style['width'] != 'auto' and table.style['width'].unit == 'px':\n            # \"percentages on the following properties are treated instead as\n            # though they were the following: width: auto\"\n            # https://dbaron.org/css/intrinsic/#outer-intrinsic\n            table_min_width = table_max_width = table.style['width'].value\n        else:\n            table_min_width = table_min_content_width\n            table_max_width = table_max_content_width\n    \n        # DEBUG: Table intrinsic width calculation\n>       print(f\"DEBUG: table.style.width = {table.style.width}\")\nE       AttributeError: 'ComputedStyle' object has no attribute 'width'\n\nweasyprint/layout/preferred.py:639: AttributeError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-30.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_32 - AttributeError...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.41s ===============================\n","stderr_tail":"","stdout_sha256":"1748605c5b32be75126306398fbd445e5e51ac4fab736d0df67389c1f8299aab","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-30.log","tree_digest":"509d9cce147f9181bef6410ee4b531737196b2f6ebb66d4ad3b4a43cd4ff6618","tree_download_s":3.3215900829527527,"started_at":"2026-10-03T18:29:19.945409Z","duration_s":1.6501620000000001,"timed_out":false,"image_before":"8302ee09-5eb2-4848-9417-beb9f3607b42","image_after":"15821f82-674f-4c08-8c5a-05555d626d4f","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_32"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_32":"[...]       if large_percentage_contribution_denominator == 0:\n            if large_percentage_contribution_numerator == 0:\n                large_percentage_contribution = 0\n            else:\n                # \"the large percentage contribution of the table [is] an\n                # infinitely large number if the numerator is nonzero [and] the\n                # denominator of that ratio is 0.\"\n                #\n                # https://dbaron.org/css/intrinsic/#autotableintrinsic\n                #\n                # Please note that \"an infinitely large number\" is not \"infinite\",\n                # and that's probably not a coincindence: putting 'inf' here breaks\n                # some cases (see #305).\n                large_percentage_contribution = sys.maxsize\n        else:\n            large_percentage_contribution = (\n                large_percentage_contribution_numerator /\n                large_percentage_contribution_denominator)\n    \n        table_min_content_width = (\n            total_horizontal_border_spacing + sum(min_content_widths))\n        table_max_content_width = (\n            total_horizontal_border_spacing + max(\n                [sum(max_content_widths), large_percentage_contribution] +\n                small_percentage_contributions))\n    \n        if table.style['width'] != 'auto' and table.style['width'].unit == 'px':\n            # \"percentages on the following properties are treated instead as\n            # though they were the following: width: auto\"\n            # https://dbaron.org/css/intrinsic/#outer-intrinsic\n            table_min_width = table_max_width = table.style['width'].value\n        else:\n            table_min_width = table_min_content_width\n            table_max_width = table_max_content_width\n    \n        # DEBUG: Table intrinsic width calculation\n>       print(f\"DEBUG: table.style.width = {table.style.width}\")\nE       AttributeError: 'ComputedStyle' object has no attribute 'width'\n\nweasyprint/layout/preferred.py:639: AttributeError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-31","seq":31,"branch_id":"agent1","kind":"diff","cmd":"compute patch in executor staging agent1-b7bc2d752e164b668ea3d325ff344153: /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false add -A && /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false diff --cached --binary --no-ext-diff --no-textconv --no-renames d87cf15c59fc0a0c564a8cf30a21956914defca2","path":null,"exit_code":0,"stdout_tail":"diff --git a/weasyprint/layout/preferred.py b/weasyprint/layout/preferred.py\nindex 8c965fe7..ded9ec58 100644\n--- a/weasyprint/layout/preferred.py\n+++ b/weasyprint/layout/preferred.py\n@@ -635,12 +635,28 @@ def table_and_columns_preferred_widths(context, box, outer=True):\n         table_min_width = table_min_content_width\n         table_max_width = table_max_content_width\n \n+    # DEBUG: Table intrinsic width calculation\n+    print(f\"DEBUG: table.style.width = {table.style.width}\")\n+    print(f\"DEBUG: table_min_content_width (before) = {table_min_content_width}\")  \n+    print(f\"DEBUG: table_max_content_width (before) = {table_max_content_width}\")\n+    print(f\"DEBUG: table_min_width = {table_min_width}\")\n+    print(f\"DEBUG: table_max_width = {table_max_width}\")\n+    # DEBUG: Table intrinsic width calculation\n+    print(f\"DEBUG: table.style.width = {table.style.width.value if hasattr(table.style.width, 'value') and table.style.width != 'auto' else table.style.width}\")\n+    print(f\"DEBUG: table_min_content_width (before) = {table_min_content_width}\")  \n+    print(f\"DEBUG: table_max_content_width (before) = {table_max_content_width}\")\n+    print(f\"DEBUG: table_min_width = {table_min_width}\")\n+    print(f\"DEBUG: table_max_width = {table_max_width}\")\n     table_min_content_width = max(\n         table_min_content_width, adjust(\n             table, outer=False, width=table_min_width))\n     table_max_content_width = max(\n         table_max_content_width, adjust(\n             table, outer=False, width=table_max_width))\n+    print(f\"DEBUG: table_min_content_width (after) = {table_min_content_width}\")\n+    print(f\"DEBUG: table_max_content_width (after) = {table_max_content_width}\")\n+    print(f\"DEBUG: table_min_content_width (after) = {table_min_content_width}\")\n+    print(f\"DEBUG: table_max_content_width (after) = {table_max_content_width}\")\n     table_outer_min_content_width = margin_width(\n         table, margin_width(box, table_min_content_width))\n     table_outer_max_content_width = margin_width(\n","stderr_tail":"","stdout_sha256":"2195844bbef4dcbb3a22065ca8b3f8f73b5387bebceb88aecde2c777dc4f3459","log_path":null,"tree_digest":"509d9cce147f9181bef6410ee4b531737196b2f6ebb66d4ad3b4a43cd4ff6618","tree_download_s":2.605783791979775,"started_at":"2026-10-03T18:29:53.513136Z","duration_s":0.04103483282960951,"timed_out":false,"image_before":"15821f82-674f-4c08-8c5a-05555d626d4f","image_after":"15821f82-674f-4c08-8c5a-05555d626d4f","junit":null,"diff":{"files":[{"path":"weasyprint/layout/preferred.py","added":16,"deleted":0,"category":"source","status":"modified"}],"patch_sha256":"2195844bbef4dcbb3a22065ca8b3f8f73b5387bebceb88aecde2c777dc4f3459","patch_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/artifacts/agent1/agent1-31.patch"},"patch_sha256":"2195844bbef4dcbb3a22065ca8b3f8f73b5387bebceb88aecde2c777dc4f3459","dropped_paths":[],"snapshot_sha":"d87cf15c59fc0a0c564a8cf30a21956914defca2"}
{"receipt_id":"agent1-32","seq":32,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-c981c14f7d3b46fb9ef05d65af1b1c52/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-c981c14f7d3b46fb9ef05d65af1b1c52/incoming/e682950561759279a93a3fc77ad713a4f93decf6bce75f6d751b2029277f2720 /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e682950561759279a93a3fc77ad713a4f93decf6bce75f6d751b2029277f2720","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-32.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:30:27.347495Z","duration_s":0.003669,"timed_out":false,"image_before":"15821f82-674f-4c08-8c5a-05555d626d4f","image_after":"439bf2b3-a891-4920-b6ab-e44d6d9759dc","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-33","seq":33,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-1b4b2ef8d522420c904b7423f7893d88/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-1b4b2ef8d522420c904b7423f7893d88/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-33.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 400.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 400.0\nDEBUG: table_max_content_width (after) = 400.0\nPASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_32 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-33.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\n============================== 1 passed in 0.24s ===============================\n","stderr_tail":"","stdout_sha256":"3a8169ba9a50059eed48eed693080070427a7399685beeb0600d688f7bb65f48","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-33.log","tree_digest":"8eb8d330e47eff8e61a0139bb5b30bf9534597c3423e3e9ac057d3ffaadc33a2","tree_download_s":4.562183458125219,"started_at":"2026-10-03T18:30:32.231261Z","duration_s":1.4981989999999998,"timed_out":false,"image_before":"439bf2b3-a891-4920-b6ab-e44d6d9759dc","image_after":"ae16bc5c-372f-41d4-946a-c5c2c81f020b","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_32"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-34","seq":34,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-2d5bc0a577f24af4bde7ac51d21a02f5/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-2d5bc0a577f24af4bde7ac51d21a02f5/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_19 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-34.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_19 DEBUG: table_min_content_width (after) = 200.0\nDEBUG: table_max_content_width (after) = 200.0\nDEBUG: table_min_content_width (after) = 200.0\nDEBUG: table_max_content_width (after) = 200.0\nFAILED\n\n=================================== FAILURES ===================================\n__________________________ test_layout_table_auto_19 ___________________________\n\n    @assert_no_logs\n    def test_layout_table_auto_19():\n        # Column group width\n        page, = render_pages('''\n          <table style=\"width: 200px\">\n            <colgroup style=\"width: 100px\">\n              <col />\n              <col />\n            </colgroup>\n            <col style=\"width: 100px\" />\n            <tbody>\n              <tr>\n                <td>a</td>\n                <td>a</td>\n                <td>abc</td>\n              </tr>\n            </tbody>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n        table, = table_wrapper.children\n        row_group, = table.children\n        row, = row_group.children\n        td_1, td_2, td_3 = row.children\n        assert td_1.width == 100\n        assert td_2.width == 100\n        assert td_3.width == 100\n>       assert table.width == 300\nE       assert 200.0 == 300\nE        +  where 200.0 = <TableBox table>.width\n\ntests/layout/test_table.py:850: AssertionError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-34.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_19 - assert 200.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.29s ===============================\n","stderr_tail":"","stdout_sha256":"205cb454397eae698a17b3e75305f873ff950c4d55bf2b329f9fce6b974f70cc","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-34.log","tree_digest":"8eb8d330e47eff8e61a0139bb5b30bf9534597c3423e3e9ac057d3ffaadc33a2","tree_download_s":3.607909040991217,"started_at":"2026-10-03T18:30:45.649914Z","duration_s":1.5219820000000002,"timed_out":false,"image_before":"ae16bc5c-372f-41d4-946a-c5c2c81f020b","image_after":"833f8b6c-0693-4f9d-9207-94770fce5145","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_19"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_19":"assert 200.0 == 300\n +  where 200.0 = <TableBox table>.width\n@assert_no_logs\n    def test_layout_table_auto_19():\n        # Column group width\n        page, = render_pages('''\n          <table style=\"width: 200px\">\n            <colgroup style=\"width: 100px\">\n              <col />\n              <col />\n            </colgroup>\n            <col style=\"width: 100px\" />\n            <tbody>\n              <tr>\n                <td>a</td>\n                <td>a</td>\n                <td>abc</td>\n              </tr>\n            </tbody>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n        table, = table_wrapper.children\n        row_group, = table.children\n        row, = row_group.children\n        td_1, td_2, td_3 = row.children\n        assert td_1.width == 100\n        assert td_2.width == 100\n        assert td_3.width == 100\n>       assert table.width == 300\nE       assert 200.0 == 300\nE        +  where 200.0 = <TableBox table>.width\n\ntests/layout/test_table.py:850: AssertionError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-35","seq":35,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-e19b835063454bdbbce2f2def18efcaa/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-e19b835063454bdbbce2f2def18efcaa/incoming/a9ceeeb663f26af3b37a61b5cf6f3f604698dcce68fafea747d8a12d314fad49 /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"a9ceeeb663f26af3b37a61b5cf6f3f604698dcce68fafea747d8a12d314fad49","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-35.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:31:03.573273Z","duration_s":0.004787,"timed_out":false,"image_before":"833f8b6c-0693-4f9d-9207-94770fce5145","image_after":"7fbfea91-3227-4206-a70b-4d34a8f0454c","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-36","seq":36,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-7f67102dfafc429ea5cd7295ff78e6ed/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-7f67102dfafc429ea5cd7295ff78e6ed/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-36.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nFAILED\n\n=================================== FAILURES ===================================\n__________________________ test_layout_table_auto_32 ___________________________\n\n    @assert_no_logs\n    def test_layout_table_auto_32():\n        # Table with a cell larger than the table's width\n        page, = render_pages('''\n          <table style=\"width: 400px; margin: 100px\">\n            <td style=\"width: 500px\"></td>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n>       assert table_wrapper.margin_width() == 600  # 400 + 2 * 100\nE       assert 700.0 == 600\nE        +  where 700.0 = margin_width()\nE        +    where margin_width = <BlockBox table>.margin_width\n\ntests/layout/test_table.py:1123: AssertionError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-36.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_32 - assert 700.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.28s ===============================\n","stderr_tail":"","stdout_sha256":"56b518f0d3c7bfeb981008a02a325b96e9466600bdf70acd33aff87c71f61111","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-36.log","tree_digest":"d53b40f6b5f7d328a38475de3484e5ffd2e3f2f50b9e457e25f3dfbda1ad146b","tree_download_s":4.175053125014529,"started_at":"2026-10-03T18:31:11.003682Z","duration_s":1.515643,"timed_out":false,"image_before":"7fbfea91-3227-4206-a70b-4d34a8f0454c","image_after":"fe0feb9a-eec4-4bf1-a787-5152ce364818","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_32"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_32":"assert 700.0 == 600\n +  where 700.0 = margin_width()\n +    where margin_width = <BlockBox table>.margin_width\n@assert_no_logs\n    def test_layout_table_auto_32():\n        # Table with a cell larger than the table's width\n        page, = render_pages('''\n          <table style=\"width: 400px; margin: 100px\">\n            <td style=\"width: 500px\"></td>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n>       assert table_wrapper.margin_width() == 600  # 400 + 2 * 100\nE       assert 700.0 == 600\nE        +  where 700.0 = margin_width()\nE        +    where margin_width = <BlockBox table>.margin_width\n\ntests/layout/test_table.py:1123: AssertionError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-37","seq":37,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-ff959b47797443c9b9a1da8b080b7cec/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-ff959b47797443c9b9a1da8b080b7cec/incoming/9babed588d4f487f98a5acda20cff42ad5d0d167e6f496f371298eda1c793227 /WeasyPrint/weasyprint/layout/table.py'","path":"weasyprint/layout/table.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"9babed588d4f487f98a5acda20cff42ad5d0d167e6f496f371298eda1c793227","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-37.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:31:33.086021Z","duration_s":0.004506,"timed_out":false,"image_before":"fe0feb9a-eec4-4bf1-a787-5152ce364818","image_after":"d439dca7-7cf4-44a9-acb3-3491ce79fb93","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-38","seq":38,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-3dd1c96846c24d93834ddb10cf86a69d/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-3dd1c96846c24d93834ddb10cf86a69d/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-38.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nFAILED\n\n=================================== FAILURES ===================================\n__________________________ test_layout_table_auto_32 ___________________________\n\n    @assert_no_logs\n    def test_layout_table_auto_32():\n        # Table with a cell larger than the table's width\n        page, = render_pages('''\n          <table style=\"width: 400px; margin: 100px\">\n            <td style=\"width: 500px\"></td>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n>       assert table_wrapper.margin_width() == 600  # 400 + 2 * 100\nE       assert 700.0 == 600\nE        +  where 700.0 = margin_width()\nE        +    where margin_width = <BlockBox table>.margin_width\n\ntests/layout/test_table.py:1123: AssertionError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-38.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_32 - assert 700.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.28s ===============================\n","stderr_tail":"","stdout_sha256":"0a01ec6c667b92fcad20c7b5ba3f8d082455865663f492fa3a4aed3bebe8358d","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-38.log","tree_digest":"43231de8622c41722982a91b745009017d3b4f848b84ea198b9c3771b891e0e5","tree_download_s":3.2056786669418216,"started_at":"2026-10-03T18:31:36.610227Z","duration_s":1.540865,"timed_out":false,"image_before":"d439dca7-7cf4-44a9-acb3-3491ce79fb93","image_after":"350276c4-6122-4f98-a7b9-96136d9669fd","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_32"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_32":"assert 700.0 == 600\n +  where 700.0 = margin_width()\n +    where margin_width = <BlockBox table>.margin_width\n@assert_no_logs\n    def test_layout_table_auto_32():\n        # Table with a cell larger than the table's width\n        page, = render_pages('''\n          <table style=\"width: 400px; margin: 100px\">\n            <td style=\"width: 500px\"></td>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n>       assert table_wrapper.margin_width() == 600  # 400 + 2 * 100\nE       assert 700.0 == 600\nE        +  where 700.0 = margin_width()\nE        +    where margin_width = <BlockBox table>.margin_width\n\ntests/layout/test_table.py:1123: AssertionError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-39","seq":39,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-079a698a8ee24acdb43b176411e51ec2/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-079a698a8ee24acdb43b176411e51ec2/incoming/cafb9975ff064ffe7e5e841c77c49c932391d581dba5baf566bf6a90b3de139d /WeasyPrint/weasyprint/layout/table.py'","path":"weasyprint/layout/table.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"cafb9975ff064ffe7e5e841c77c49c932391d581dba5baf566bf6a90b3de139d","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-39.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:31:52.590667Z","duration_s":0.0050550000000000005,"timed_out":false,"image_before":"350276c4-6122-4f98-a7b9-96136d9669fd","image_after":"0f7f70f8-91bf-4018-b6f3-332b0d05015e","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-40","seq":40,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-a716162ffb254fceade95943c82fbbe6/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-a716162ffb254fceade95943c82fbbe6/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-40.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nTABLE LAYOUT DEBUG: table.width=400.0, min=500.0, max=400.0\nTABLE LAYOUT DEBUG: width too small, setting to min=500.0\nFAILED\n\n=================================== FAILURES ===================================\n__________________________ test_layout_table_auto_32 ___________________________\n\n    @assert_no_logs\n    def test_layout_table_auto_32():\n        # Table with a cell larger than the table's width\n        page, = render_pages('''\n          <table style=\"width: 400px; margin: 100px\">\n            <td style=\"width: 500px\"></td>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n>       assert table_wrapper.margin_width() == 600  # 400 + 2 * 100\nE       assert 700.0 == 600\nE        +  where 700.0 = margin_width()\nE        +    where margin_width = <BlockBox table>.margin_width\n\ntests/layout/test_table.py:1123: AssertionError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-40.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_32 - assert 700.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.29s ===============================\n","stderr_tail":"","stdout_sha256":"16c25ebaec2b4859a36549833e34fb3ca58ba855f1898866ea0bde7c5ab25204","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-40.log","tree_digest":"bc7301395b36d96851d0804267e80aa872c1413ec472a37f4ac059f13468005d","tree_download_s":2.3761545419692993,"started_at":"2026-10-03T18:31:55.739114Z","duration_s":1.554692,"timed_out":false,"image_before":"0f7f70f8-91bf-4018-b6f3-332b0d05015e","image_after":"1ce11bef-d1a2-4823-b8fb-43915cf5c4d4","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_32"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_32":"assert 700.0 == 600\n +  where 700.0 = margin_width()\n +    where margin_width = <BlockBox table>.margin_width\n@assert_no_logs\n    def test_layout_table_auto_32():\n        # Table with a cell larger than the table's width\n        page, = render_pages('''\n          <table style=\"width: 400px; margin: 100px\">\n            <td style=\"width: 500px\"></td>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n>       assert table_wrapper.margin_width() == 600  # 400 + 2 * 100\nE       assert 700.0 == 600\nE        +  where 700.0 = margin_width()\nE        +    where margin_width = <BlockBox table>.margin_width\n\ntests/layout/test_table.py:1123: AssertionError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-41","seq":41,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-9bb37e4f12934fdb9ca30b7b4b91102a/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-9bb37e4f12934fdb9ca30b7b4b91102a/incoming/2c0d107cc948e0d882da885a5b873ace3bb3b681e95ff238221e646a2d6ab71a /WeasyPrint/weasyprint/layout/table.py'","path":"weasyprint/layout/table.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"2c0d107cc948e0d882da885a5b873ace3bb3b681e95ff238221e646a2d6ab71a","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-41.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:32:09.658635Z","duration_s":0.004355,"timed_out":false,"image_before":"1ce11bef-d1a2-4823-b8fb-43915cf5c4d4","image_after":"e548b551-c939-474f-8146-d5fa8d4d7570","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-42","seq":42,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-7a71910e3c3f4a9abe949a0c31894f3d/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-7a71910e3c3f4a9abe949a0c31894f3d/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-42.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nTABLE LAYOUT DEBUG: table.width=400.0, min=500.0, max=400.0\nTABLE LAYOUT DEBUG: width too small, but respecting explicit width=400.0 as constraint\nPASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_32 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-42.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\n============================== 1 passed in 0.24s ===============================\n","stderr_tail":"","stdout_sha256":"92aff26974438577401c92b5e9449fd164efc6fa75b776ad5dfbfeec3060c65e","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-42.log","tree_digest":"572660db4f677ac219a5234b0bac6c9c774d3987ef6b3c7a4e813d82e7b939f2","tree_download_s":2.925154082942754,"started_at":"2026-10-03T18:32:13.753846Z","duration_s":1.503924,"timed_out":false,"image_before":"e548b551-c939-474f-8146-d5fa8d4d7570","image_after":"7dc8a979-cee5-4bc8-b97d-b25b22c340e9","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_32"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-43","seq":43,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-fc2801611ddc4be391d147418271f292/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-fc2801611ddc4be391d147418271f292/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_19 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-43.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_19 DEBUG: table_min_content_width (after) = 300.0\nDEBUG: table_max_content_width (after) = 200.0\nDEBUG: table_min_content_width (after) = 300.0\nDEBUG: table_max_content_width (after) = 200.0\nTABLE LAYOUT DEBUG: table.width=200.0, min=300.0, max=200.0\nTABLE LAYOUT DEBUG: width too small, but respecting explicit width=200.0 as constraint\nFAILED\n\n=================================== FAILURES ===================================\n__________________________ test_layout_table_auto_19 ___________________________\n\n    @assert_no_logs\n    def test_layout_table_auto_19():\n        # Column group width\n        page, = render_pages('''\n          <table style=\"width: 200px\">\n            <colgroup style=\"width: 100px\">\n              <col />\n              <col />\n            </colgroup>\n            <col style=\"width: 100px\" />\n            <tbody>\n              <tr>\n                <td>a</td>\n                <td>a</td>\n                <td>abc</td>\n              </tr>\n            </tbody>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n        table, = table_wrapper.children\n        row_group, = table.children\n        row, = row_group.children\n        td_1, td_2, td_3 = row.children\n        assert td_1.width == 100\n        assert td_2.width == 100\n        assert td_3.width == 100\n>       assert table.width == 300\nE       assert 200.0 == 300\nE        +  where 200.0 = <TableBox table>.width\n\ntests/layout/test_table.py:850: AssertionError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-43.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_19 - assert 200.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.29s ===============================\n","stderr_tail":"","stdout_sha256":"087323123bcd696c088f2bda185caa818218e0624f430ba987e2a2c720b517e1","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-43.log","tree_digest":"572660db4f677ac219a5234b0bac6c9c774d3987ef6b3c7a4e813d82e7b939f2","tree_download_s":2.6279437919147313,"started_at":"2026-10-03T18:32:24.567214Z","duration_s":1.528728,"timed_out":false,"image_before":"7dc8a979-cee5-4bc8-b97d-b25b22c340e9","image_after":"5613d5fa-2797-4324-a354-4a193f132396","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_19"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_19":"assert 200.0 == 300\n +  where 200.0 = <TableBox table>.width\n@assert_no_logs\n    def test_layout_table_auto_19():\n        # Column group width\n        page, = render_pages('''\n          <table style=\"width: 200px\">\n            <colgroup style=\"width: 100px\">\n              <col />\n              <col />\n            </colgroup>\n            <col style=\"width: 100px\" />\n            <tbody>\n              <tr>\n                <td>a</td>\n                <td>a</td>\n                <td>abc</td>\n              </tr>\n            </tbody>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n        table, = table_wrapper.children\n        row_group, = table.children\n        row, = row_group.children\n        td_1, td_2, td_3 = row.children\n        assert td_1.width == 100\n        assert td_2.width == 100\n        assert td_3.width == 100\n>       assert table.width == 300\nE       assert 200.0 == 300\nE        +  where 200.0 = <TableBox table>.width\n\ntests/layout/test_table.py:850: AssertionError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-44","seq":44,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-166674d86eff461eb22f2f865c1d8945/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-166674d86eff461eb22f2f865c1d8945/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-44.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nTABLE LAYOUT DEBUG: table.width=400.0, min=500.0, max=400.0\nTABLE LAYOUT DEBUG: width too small, but respecting explicit width=400.0 as constraint\nPASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_32 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-44.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\n============================== 1 passed in 0.25s ===============================\n","stderr_tail":"","stdout_sha256":"5083439edc240e08d4139b40da091d24198aacefbcbbdb8f6ad22d72c9d7291c","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-44.log","tree_digest":"572660db4f677ac219a5234b0bac6c9c774d3987ef6b3c7a4e813d82e7b939f2","tree_download_s":3.1531665828078985,"started_at":"2026-10-03T18:32:42.096210Z","duration_s":1.515085,"timed_out":false,"image_before":"5613d5fa-2797-4324-a354-4a193f132396","image_after":"71d8c3ad-6462-4b83-9c58-a3e0a04cd04b","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_32"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-45","seq":45,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-ed802444811a4fddbac457e125fc2b17/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-ed802444811a4fddbac457e125fc2b17/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_19 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-45.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_19 DEBUG: table_min_content_width (after) = 300.0\nDEBUG: table_max_content_width (after) = 200.0\nDEBUG: table_min_content_width (after) = 300.0\nDEBUG: table_max_content_width (after) = 200.0\nTABLE LAYOUT DEBUG: table.width=200.0, min=300.0, max=200.0\nTABLE LAYOUT DEBUG: width too small, but respecting explicit width=200.0 as constraint\nFAILED\n\n=================================== FAILURES ===================================\n__________________________ test_layout_table_auto_19 ___________________________\n\n    @assert_no_logs\n    def test_layout_table_auto_19():\n        # Column group width\n        page, = render_pages('''\n          <table style=\"width: 200px\">\n            <colgroup style=\"width: 100px\">\n              <col />\n              <col />\n            </colgroup>\n            <col style=\"width: 100px\" />\n            <tbody>\n              <tr>\n                <td>a</td>\n                <td>a</td>\n                <td>abc</td>\n              </tr>\n            </tbody>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n        table, = table_wrapper.children\n        row_group, = table.children\n        row, = row_group.children\n        td_1, td_2, td_3 = row.children\n        assert td_1.width == 100\n        assert td_2.width == 100\n        assert td_3.width == 100\n>       assert table.width == 300\nE       assert 200.0 == 300\nE        +  where 200.0 = <TableBox table>.width\n\ntests/layout/test_table.py:850: AssertionError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-45.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_19 - assert 200.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.31s ===============================\n","stderr_tail":"","stdout_sha256":"87499dc9877d3b574de475022986f81bdf3b23377119014fcaad46d9eab2fac9","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-45.log","tree_digest":"572660db4f677ac219a5234b0bac6c9c774d3987ef6b3c7a4e813d82e7b939f2","tree_download_s":3.2388890420552343,"started_at":"2026-10-03T18:32:54.626757Z","duration_s":1.565556,"timed_out":false,"image_before":"71d8c3ad-6462-4b83-9c58-a3e0a04cd04b","image_after":"57d91992-eeb3-435b-bad0-be0014eeafda","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_19"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_19":"assert 200.0 == 300\n +  where 200.0 = <TableBox table>.width\n@assert_no_logs\n    def test_layout_table_auto_19():\n        # Column group width\n        page, = render_pages('''\n          <table style=\"width: 200px\">\n            <colgroup style=\"width: 100px\">\n              <col />\n              <col />\n            </colgroup>\n            <col style=\"width: 100px\" />\n            <tbody>\n              <tr>\n                <td>a</td>\n                <td>a</td>\n                <td>abc</td>\n              </tr>\n            </tbody>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n        table, = table_wrapper.children\n        row_group, = table.children\n        row, = row_group.children\n        td_1, td_2, td_3 = row.children\n        assert td_1.width == 100\n        assert td_2.width == 100\n        assert td_3.width == 100\n>       assert table.width == 300\nE       assert 200.0 == 300\nE        +  where 200.0 = <TableBox table>.width\n\ntests/layout/test_table.py:850: AssertionError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-46","seq":46,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-c41b4f7cdfbc4a07867b2c1495e51820/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-c41b4f7cdfbc4a07867b2c1495e51820/incoming/ca382759aa5226b1da2443f6106140095915d90cbed1e283468ed205ff27bdd6 /WeasyPrint/weasyprint/layout/table.py'","path":"weasyprint/layout/table.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"ca382759aa5226b1da2443f6106140095915d90cbed1e283468ed205ff27bdd6","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-46.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:33:10.886182Z","duration_s":0.005344,"timed_out":false,"image_before":"57d91992-eeb3-435b-bad0-be0014eeafda","image_after":"369b2087-d365-4139-b7b7-6fb1d7d9de39","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-47","seq":47,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-da6778e889554ce5aa0de1ca0881aa5e/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-da6778e889554ce5aa0de1ca0881aa5e/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-47.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nPASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_32 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-47.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\n============================== 1 passed in 0.24s ===============================\n","stderr_tail":"","stdout_sha256":"a257f3721c71fb757f7d7b53be2edaa28be031b7ee242c2a61451c5421a38e3d","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-47.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":3.2622526669874787,"started_at":"2026-10-03T18:33:14.623627Z","duration_s":1.506816,"timed_out":false,"image_before":"369b2087-d365-4139-b7b7-6fb1d7d9de39","image_after":"bc5614da-447d-45a1-b7ff-0703d89d9182","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_32"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-48","seq":48,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-ce7bc35f57a948d89d3226e48cd6e9a4/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-ce7bc35f57a948d89d3226e48cd6e9a4/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_19 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-48.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_19 DEBUG: table_min_content_width (after) = 300.0\nDEBUG: table_max_content_width (after) = 200.0\nDEBUG: table_min_content_width (after) = 300.0\nDEBUG: table_max_content_width (after) = 200.0\nFAILED\n\n=================================== FAILURES ===================================\n__________________________ test_layout_table_auto_19 ___________________________\n\n    @assert_no_logs\n    def test_layout_table_auto_19():\n        # Column group width\n        page, = render_pages('''\n          <table style=\"width: 200px\">\n            <colgroup style=\"width: 100px\">\n              <col />\n              <col />\n            </colgroup>\n            <col style=\"width: 100px\" />\n            <tbody>\n              <tr>\n                <td>a</td>\n                <td>a</td>\n                <td>abc</td>\n              </tr>\n            </tbody>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n        table, = table_wrapper.children\n        row_group, = table.children\n        row, = row_group.children\n        td_1, td_2, td_3 = row.children\n        assert td_1.width == 100\n        assert td_2.width == 100\n        assert td_3.width == 100\n>       assert table.width == 300\nE       assert 200.0 == 300\nE        +  where 200.0 = <TableBox table>.width\n\ntests/layout/test_table.py:850: AssertionError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-48.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_19 - assert 200.0 =...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.31s ===============================\n","stderr_tail":"","stdout_sha256":"5e883ac515e6b916905415722164e0fb711d9aea6f59c5e760a02c582ace2614","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-48.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":2.8712071671616286,"started_at":"2026-10-03T18:33:26.389258Z","duration_s":1.57935,"timed_out":false,"image_before":"bc5614da-447d-45a1-b7ff-0703d89d9182","image_after":"4eaf53a0-087d-48ca-a394-726cf1df48cc","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_19"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_19":"assert 200.0 == 300\n +  where 200.0 = <TableBox table>.width\n@assert_no_logs\n    def test_layout_table_auto_19():\n        # Column group width\n        page, = render_pages('''\n          <table style=\"width: 200px\">\n            <colgroup style=\"width: 100px\">\n              <col />\n              <col />\n            </colgroup>\n            <col style=\"width: 100px\" />\n            <tbody>\n              <tr>\n                <td>a</td>\n                <td>a</td>\n                <td>abc</td>\n              </tr>\n            </tbody>\n          </table>\n        ''')\n        html, = page.children\n        body, = html.children\n        table_wrapper, = body.children\n        table, = table_wrapper.children\n        row_group, = table.children\n        row, = row_group.children\n        td_1, td_2, td_3 = row.children\n        assert td_1.width == 100\n        assert td_2.width == 100\n        assert td_3.width == 100\n>       assert table.width == 300\nE       assert 200.0 == 300\nE        +  where 200.0 = <TableBox table>.width\n\ntests/layout/test_table.py:850: AssertionError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-49","seq":49,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-1a7fec2fbf2c4eadb1bdade354414124/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-1a7fec2fbf2c4eadb1bdade354414124/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_1 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-49.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_1 DEBUG: table_min_content_width (after) = 38.0\nDEBUG: table_max_content_width (after) = 38.0\nDEBUG: table_min_content_width (after) = 38.0\nDEBUG: table_max_content_width (after) = 38.0\nPASSED\n\n==================================== PASSES ====================================\n___________________________ test_layout_table_auto_1 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-49.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_1\n============================== 1 passed in 0.28s ===============================\n","stderr_tail":"","stdout_sha256":"5a19bf5cb7c15de5961430652bb9c27cd41c03448bb0c1f19f847ac8b3b7466e","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-49.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":2.717359208036214,"started_at":"2026-10-03T18:33:39.566980Z","duration_s":1.517912,"timed_out":false,"image_before":"4eaf53a0-087d-48ca-a394-726cf1df48cc","image_after":"86d0e632-7508-4ac6-b970-59274fbe4979","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_1"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-50","seq":50,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-9f7ae223693d40cd899b7929b0326c81/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-9f7ae223693d40cd899b7929b0326c81/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_2 tests/layout/test_table.py::test_layout_table_auto_3 tests/layout/test_table.py::test_layout_table_auto_4 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-50.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 3 items\n\ntests/layout/test_table.py::test_layout_table_auto_2 DEBUG: table_min_content_width (after) = 23.0\nDEBUG: table_max_content_width (after) = 27.0\nDEBUG: table_min_content_width (after) = 23.0\nDEBUG: table_max_content_width (after) = 27.0\nPASSED\ntests/layout/test_table.py::test_layout_table_auto_3 DEBUG: table_min_content_width (after) = 11.0\nDEBUG: table_max_content_width (after) = 23.0\nDEBUG: table_min_content_width (after) = 11.0\nDEBUG: table_max_content_width (after) = 23.0\nPASSED\ntests/layout/test_table.py::test_layout_table_auto_4 DEBUG: table_min_content_width (after) = 27.0\nDEBUG: table_max_content_width (after) = 27.0\nDEBUG: table_min_content_width (after) = 27.0\nDEBUG: table_max_content_width (after) = 27.0\nPASSED\n\n==================================== PASSES ====================================\n___________________________ test_layout_table_auto_2 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n___________________________ test_layout_table_auto_3 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n___________________________ test_layout_table_auto_4 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-50.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_2\nPASSED tests/layout/test_table.py::test_layout_table_auto_3\nPASSED tests/layout/test_table.py::test_layout_table_auto_4\n============================== 3 passed in 0.32s ===============================\n","stderr_tail":"","stdout_sha256":"ac288cb30f6fc11c309f47cebad25780f367a26597f5fbec561c6d8d412168d4","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-50.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":3.3878197078593075,"started_at":"2026-10-03T18:33:51.568634Z","duration_s":1.554377,"timed_out":false,"image_before":"86d0e632-7508-4ac6-b970-59274fbe4979","image_after":"e16a0361-68b0-4033-bce5-a36bc67ee87b","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_2","tests/layout/test_table.py::test_layout_table_auto_3","tests/layout/test_table.py::test_layout_table_auto_4"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-51","seq":51,"branch_id":"agent1","kind":"command","cmd":"grep -n \"test_layout_table_auto_1\" tests/layout/test_table.py","path":null,"exit_code":0,"stdout_tail":"262:def test_layout_table_auto_1():\n551:def test_layout_table_auto_10():\n581:def test_layout_table_auto_11():\n623:def test_layout_table_auto_12():\n665:def test_layout_table_auto_13():\n688:def test_layout_table_auto_14():\n710:def test_layout_table_auto_15():\n728:def test_layout_table_auto_16():\n751:def test_layout_table_auto_17():\n793:def test_layout_table_auto_18():\n822:def test_layout_table_auto_19():\n","stderr_tail":"","stdout_sha256":"c9c17c4f30f19cede4f592357fcc484141a0cf7e3f1d2226120f81af622c965f","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-51.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:34:07.224164Z","duration_s":0.003427,"timed_out":false,"image_before":"e16a0361-68b0-4033-bce5-a36bc67ee87b","image_after":"6907b543-bbea-4772-818f-76e03ef3eff0","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-52","seq":52,"branch_id":"agent1","kind":"command","cmd":"grep -A 20 \"test_layout_table_auto_\" tests/layout/test_table.py | grep -B 20 \"width:\" | grep \"test_layout_table_auto_\" | sort -u","path":null,"exit_code":0,"stdout_tail":"def test_layout_table_auto_1():\ndef test_layout_table_auto_10():\ndef test_layout_table_auto_11():\ndef test_layout_table_auto_12():\ndef test_layout_table_auto_13():\ndef test_layout_table_auto_14():\ndef test_layout_table_auto_15():\ndef test_layout_table_auto_16():\ndef test_layout_table_auto_17():\ndef test_layout_table_auto_18():\ndef test_layout_table_auto_19():\ndef test_layout_table_auto_2():\ndef test_layout_table_auto_20():\ndef test_layout_table_auto_21():\ndef test_layout_table_auto_22():\ndef test_layout_table_auto_23():\ndef test_layout_table_auto_24():\ndef test_layout_table_auto_25():\ndef test_layout_table_auto_26():\ndef test_layout_table_auto_27():\ndef test_layout_table_auto_28():\ndef test_layout_table_auto_29():\ndef test_layout_table_auto_30():\ndef test_layout_table_auto_31():\ndef test_layout_table_auto_32():\ndef test_layout_table_auto_33():\ndef test_layout_table_auto_34():\ndef test_layout_table_auto_35():\ndef test_layout_table_auto_36():\ndef test_layout_table_auto_37():\ndef test_layout_table_auto_38():\ndef test_layout_table_auto_39():\ndef test_layout_table_auto_40():\ndef test_layout_table_auto_41():\ndef test_layout_table_auto_42():\ndef test_layout_table_auto_43():\ndef test_layout_table_auto_44():\ndef test_layout_table_auto_45():\ndef test_layout_table_auto_46():\ndef test_layout_table_auto_5():\ndef test_layout_table_auto_7():\ndef test_layout_table_auto_8():\ndef test_layout_table_auto_9():\n","stderr_tail":"","stdout_sha256":"6d9fb65408e20a47025f5eaa170b7e3d18e6ec1a76e6f2ddf826f503f4fa5724","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-52.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:34:17.811286Z","duration_s":0.007956,"timed_out":false,"image_before":"6907b543-bbea-4772-818f-76e03ef3eff0","image_after":"674dc518-318c-49fd-b666-46dd5446db33","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-53","seq":53,"branch_id":"agent1","kind":"command","cmd":"grep -A 10 \"test_layout_table_auto_\" tests/layout/test_table.py | grep -A 10 \"<table\" | grep \"width:\"","path":null,"exit_code":0,"stdout_tail":"      <table style=\"width: 1000px; font-family: weasyprint\">\n          <td style=\"width: 40px\">aa aa aa aa</td>\n          <td style=\"width: 40px\">aaaaaaaaaaa</td>\n          <col style=\"width: 20px\" />\n          <td style=\"width: 40px\">a</td>\n      <table style=\"border-spacing: 10px; width: 120px; margin: 5px;\n          <td style=\"width: 20px\"><img src=pattern.png></td>\n          <td><img src=pattern.png style=\"width: 40px\"></td>\n      <table style=\"border-spacing: 10px; width: 120px; margin: 5px\">\n          <td style=\"width: 60px\"></td>\n          <td style=\"width: 50px\"></td>\n          <td style=\"width: 30px\"></td>\n      <table style=\"border-spacing: 0; width: 14px; margin: 10px\">\n          <col style=\"width: 6px\" />\n          <td style=\"width: 8px\"></td>\n          <td style=\"width: 10px\"></td>\n          <td colspan=\"2\" style=\"width: 22px\"></td>\n          <td style=\"width: 8px\"></td>\n          <td style=\"width: 8px\"></td>\n          <td style=\"width: 10px\"></td>\n          <td colspan=\"2\" style=\"width: 32px\"></td>\n          <td style=\"width: 8px\"></td>\n          <td style=\"width: 8px\"></td>\n      <table style=\"width: 30px\">\n      <table style=\"width: 20px\">\n      <table style=\"width: 20px\">\n      <table style=\"width: 30px; position: absolute\">\n      <table style=\"width: 200px\">\n          <col style=\"width: 70%\" />\n          <col style=\"width: 30%\" />\n      <table style=\"width: 200px\">\n        <colgroup style=\"width: 100px\">\n        <col style=\"width: 100px\" />\n      <table style=\"width: 200px\">\n          <col style=\"width: 50px\" />\n          <col style=\"width: 30px\" />\n      <table style=\"width: 500px\">\n        <colgroup style=\"width: 100px\">\n        <colgroup style=\"width: 30%\">\n        <colgroup style=\"width: 10%\">\n        <colgroup style=\"width: 200px\">\n      <table style=\"width: 200px\">\n        <colgroup style=\"width: 20%\">\n      <table style=\"width: 200px\">\n          <col style=\"width: 70%\" />\n        <table style=\"width: 50%\">\n            <col style=\"width: 70%\" />\n      <table style=\"max-width: 300px\">\n        <td style=\"width: 400px\"></td>\n      <table style=\"width: 300px\">\n        <td style=\"width: 400px\"></td>\n      <table style=\"width: 300px; max-width: 350px\">\n        <td style=\"width: 400px\"></td>\n      <table style=\"width: 300px; max-width: 350px\">\n          <div style=\"width: 300px\"></div>\n      <table style=\"max-width: 300px; margin: 100px\">\n        <td style=\"width: 400px\"></td>\n      <table style=\"width: 300px; border-spacing: 2px\">\n        <td style=\"width: 299px\"></td>\n      <table style=\"width: 400px; margin: 100px\">\n        <td style=\"width: 500px\"></td>\n        <table style=\"min-width: 400px; margin: 100px\">\n        <table style=\"min-width: 400px; margin: 100px\"></table>\n        <table style=\"max-width: 300px; margin: 100px\">\n          <td style=\"width: 400px\"></td>\n        <td style=\"width: 50%\">\n                <td style=\"width: 100%;\"></td>\n                <td style=\"width: 48px;\">\n                <td style=\"width: 100%;\"></td>\n      <table style=\"width: 0\">\n      <div style=\"width: 100px\">\n              <td style=\"width: 30%\">a a a a a a a a</td>\n              <td style=\"width: 70px\">a a a a a a a a</td>\n              <td style=\"width: 30%\">a a a a a a a a</td>\n              <td style=\"width: 30%\" colspan=2>a a a a a a a a</td>\n              <td style=\"width: 30%\" colspan=2>a a a a a a a a</td>\n              <td style=\"width: 40%\">a a a a a a a a</td>\n              <td style=\"width: 30%\">a a a a a a a a</td>\n              <td style=\"width: 40%\">a a a a a a a a</td>\n            <td style=\"width: 200px; height: 200px\"></td>\n","stderr_tail":"","stdout_sha256":"9465ae726c07469ed5c9a545cbe65531d795618e808a1ff06b4de68b2ef1e21d","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-53.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:34:23.272365Z","duration_s":0.006660999999999999,"timed_out":false,"image_before":"674dc518-318c-49fd-b666-46dd5446db33","image_after":"27a8cf9a-b0aa-4498-a580-06a5fe6b42f8","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-54","seq":54,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-7036a240736340ba9202031c6eb5c015/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-7036a240736340ba9202031c6eb5c015/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_5 tests/layout/test_table.py::test_layout_table_auto_10 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-54.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 2 items\n\ntests/layout/test_table.py::test_layout_table_auto_5 DEBUG: table_min_content_width (after) = 296.0\nDEBUG: table_max_content_width (after) = 792.0\nDEBUG: table_min_content_width (after) = 296.0\nDEBUG: table_max_content_width (after) = 792.0\nPASSED\ntests/layout/test_table.py::test_layout_table_auto_10 DEBUG: table_min_content_width (after) = 12.0\nDEBUG: table_max_content_width (after) = 14.0\nDEBUG: table_min_content_width (after) = 12.0\nDEBUG: table_max_content_width (after) = 14.0\nPASSED\n\n==================================== PASSES ====================================\n___________________________ test_layout_table_auto_5 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:283 Step 2 - Fetching and parsing CSS - CSS string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n__________________________ test_layout_table_auto_10 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-54.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_5\nPASSED tests/layout/test_table.py::test_layout_table_auto_10\n============================== 2 passed in 0.30s ===============================\n","stderr_tail":"","stdout_sha256":"e542e4d1f50128ebd974ae2ffd3ff45772c7d817c2fd0c3128ead46263914add","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-54.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":13.174112250097096,"started_at":"2026-10-03T18:34:28.585617Z","duration_s":1.5373910000000002,"timed_out":false,"image_before":"27a8cf9a-b0aa-4498-a580-06a5fe6b42f8","image_after":"f248040e-7dea-4742-bccc-d6512b371e7f","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_5","tests/layout/test_table.py::test_layout_table_auto_10"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-55","seq":55,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-6978a4ff55034810bc46a2f0a4240a7c/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-6978a4ff55034810bc46a2f0a4240a7c/receipts_pytest.py tests/layout/test_table.py -k test_layout_table_auto_ --tb=no -q -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-55.xml","path":null,"exit_code":1,"stdout_tail":"..................F.............................x.                       [100%]\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_1\nPASSED tests/layout/test_table.py::test_layout_table_auto_2\nPASSED tests/layout/test_table.py::test_layout_table_auto_3\nPASSED tests/layout/test_table.py::test_layout_table_auto_4\nPASSED tests/layout/test_table.py::test_layout_table_auto_5\nPASSED tests/layout/test_table.py::test_layout_table_auto_6\nPASSED tests/layout/test_table.py::test_layout_table_auto_7\nPASSED tests/layout/test_table.py::test_layout_table_auto_8\nPASSED tests/layout/test_table.py::test_layout_table_auto_9\nPASSED tests/layout/test_table.py::test_layout_table_auto_10\nPASSED tests/layout/test_table.py::test_layout_table_auto_11\nPASSED tests/layout/test_table.py::test_layout_table_auto_12\nPASSED tests/layout/test_table.py::test_layout_table_auto_13\nPASSED tests/layout/test_table.py::test_layout_table_auto_14\nPASSED tests/layout/test_table.py::test_layout_table_auto_15\nPASSED tests/layout/test_table.py::test_layout_table_auto_16\nPASSED tests/layout/test_table.py::test_layout_table_auto_17\nPASSED tests/layout/test_table.py::test_layout_table_auto_18\nPASSED tests/layout/test_table.py::test_layout_table_auto_20\nPASSED tests/layout/test_table.py::test_layout_table_auto_21\nPASSED tests/layout/test_table.py::test_layout_table_auto_22\nPASSED tests/layout/test_table.py::test_layout_table_auto_23\nPASSED tests/layout/test_table.py::test_layout_table_auto_24\nPASSED tests/layout/test_table.py::test_layout_table_auto_25\nPASSED tests/layout/test_table.py::test_layout_table_auto_26\nPASSED tests/layout/test_table.py::test_layout_table_auto_27\nPASSED tests/layout/test_table.py::test_layout_table_auto_28\nPASSED tests/layout/test_table.py::test_layout_table_auto_29\nPASSED tests/layout/test_table.py::test_layout_table_auto_30\nPASSED tests/layout/test_table.py::test_layout_table_auto_31\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\nPASSED tests/layout/test_table.py::test_layout_table_auto_33\nPASSED tests/layout/test_table.py::test_layout_table_auto_34\nPASSED tests/layout/test_table.py::test_layout_table_auto_35\nPASSED tests/layout/test_table.py::test_layout_table_auto_36\nPASSED tests/layout/test_table.py::test_layout_table_auto_37\nPASSED tests/layout/test_table.py::test_layout_table_auto_38\nPASSED tests/layout/test_table.py::test_layout_table_auto_39\nPASSED tests/layout/test_table.py::test_layout_table_auto_40\nPASSED tests/layout/test_table.py::test_layout_table_auto_41\nPASSED tests/layout/test_table.py::test_layout_table_auto_42\nPASSED tests/layout/test_table.py::test_layout_table_auto_43\nPASSED tests/layout/test_table.py::test_layout_table_auto_44\nPASSED tests/layout/test_table.py::test_layout_table_auto_45\nPASSED tests/layout/test_table.py::test_layout_table_auto_46\nPASSED tests/layout/test_table.py::test_layout_table_auto_47\nPASSED tests/layout/test_table.py::test_layout_table_auto_48\nPASSED tests/layout/test_table.py::test_layout_table_auto_50\nXFAIL tests/layout/test_table.py::test_layout_table_auto_49\nFAILED tests/layout/test_table.py::test_layout_table_auto_19 - assert 200.0 =...\n1 failed, 48 passed, 71 deselected, 1 xfailed in 1.42s\n","stderr_tail":"","stdout_sha256":"b3cdab1026ab11f1065623e3938d7cb631f37c94a1523d8b20d34149dab5425b","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-55.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":7.962286415975541,"started_at":"2026-10-03T18:34:51.144253Z","duration_s":2.211573,"timed_out":false,"image_before":"f248040e-7dea-4742-bccc-d6512b371e7f","image_after":"0cdc4c37-9a7f-4891-ac6f-870ce1a31d26","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_1","tests/layout/test_table.py::test_layout_table_auto_2","tests/layout/test_table.py::test_layout_table_auto_3","tests/layout/test_table.py::test_layout_table_auto_4","tests/layout/test_table.py::test_layout_table_auto_5","tests/layout/test_table.py::test_layout_table_auto_6","tests/layout/test_table.py::test_layout_table_auto_7","tests/layout/test_table.py::test_layout_table_auto_8","tests/layout/test_table.py::test_layout_table_auto_9","tests/layout/test_table.py::test_layout_table_auto_10","tests/layout/test_table.py::test_layout_table_auto_11","tests/layout/test_table.py::test_layout_table_auto_12","tests/layout/test_table.py::test_layout_table_auto_13","tests/layout/test_table.py::test_layout_table_auto_14","tests/layout/test_table.py::test_layout_table_auto_15","tests/layout/test_table.py::test_layout_table_auto_16","tests/layout/test_table.py::test_layout_table_auto_17","tests/layout/test_table.py::test_layout_table_auto_18","tests/layout/test_table.py::test_layout_table_auto_20","tests/layout/test_table.py::test_layout_table_auto_21","tests/layout/test_table.py::test_layout_table_auto_22","tests/layout/test_table.py::test_layout_table_auto_23","tests/layout/test_table.py::test_layout_table_auto_24","tests/layout/test_table.py::test_layout_table_auto_25","tests/layout/test_table.py::test_layout_table_auto_26","tests/layout/test_table.py::test_layout_table_auto_27","tests/layout/test_table.py::test_layout_table_auto_28","tests/layout/test_table.py::test_layout_table_auto_29","tests/layout/test_table.py::test_layout_table_auto_30","tests/layout/test_table.py::test_layout_table_auto_31","tests/layout/test_table.py::test_layout_table_auto_32","tests/layout/test_table.py::test_layout_table_auto_33","tests/layout/test_table.py::test_layout_table_auto_34","tests/layout/test_table.py::test_layout_table_auto_35","tests/layout/test_table.py::test_layout_table_auto_36","tests/layout/test_table.py::test_layout_table_auto_37","tests/layout/test_table.py::test_layout_table_auto_38","tests/layout/test_table.py::test_layout_table_auto_39","tests/layout/test_table.py::test_layout_table_auto_40","tests/layout/test_table.py::test_layout_table_auto_41","tests/layout/test_table.py::test_layout_table_auto_42","tests/layout/test_table.py::test_layout_table_auto_43","tests/layout/test_table.py::test_layout_table_auto_44","tests/layout/test_table.py::test_layout_table_auto_45","tests/layout/test_table.py::test_layout_table_auto_46","tests/layout/test_table.py::test_layout_table_auto_47","tests/layout/test_table.py::test_layout_table_auto_48","tests/layout/test_table.py::test_layout_table_auto_50"],"failed":["tests/layout/test_table.py::test_layout_table_auto_19"],"errors":[],"skipped":["tests/layout/test_table.py::test_layout_table_auto_49"],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_19":"assert 200.0 == 300\n +  where 200.0 = <TableBox table>.width\nE   assert 200.0 == 300\n     +  where 200.0 = <TableBox table>.width"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-56","seq":56,"branch_id":"agent1","kind":"command","cmd":"grep -n \"Column group width\\|colgroup\" tests/layout/test_table.py","path":null,"exit_code":0,"stdout_tail":"99:        <colgroup>\n101:        </colgroup>\n192:        <colgroup>\n195:        </colgroup>\n224:        colgroup, col, tbody, tr, td { margin: 1000px }\n230:        <colgroup>\n232:        </colgroup>\n463:        <colgroup>\n465:        </colgroup>\n554:        <colgroup>\n557:        </colgroup>\n756:        colgroup, col, tbody, tr, td { margin: 1000px }\n761:        <colgroup>\n763:        </colgroup>\n797:        <colgroup>\n800:        </colgroup>\n823:    # Column group width\n826:        <colgroup style=\"width: 100px\">\n829:        </colgroup>\n858:        <colgroup>\n862:        </colgroup>\n890:        <colgroup style=\"width: 100px\">\n893:        </colgroup>\n894:        <colgroup style=\"width: 30%\">\n897:        </colgroup>\n927:        <colgroup style=\"width: 10%\">\n930:        </colgroup>\n931:        <colgroup style=\"width: 200px\">\n934:        </colgroup>\n964:        <colgroup style=\"width: 20%\">\n967:        </colgroup>\n993:        <colgroup>\n996:        </colgroup>\n1023:          <colgroup>\n1026:          </colgroup>\n2867:        <colgroup>\n2869:        </colgroup>\n2887:def test_table_bad_int_colgroup_span():\n2890:        <colgroup span=\"bad\" style=\"width:25px\">\n2892:        </colgroup>\n2914:        <colgroup style=\"display: block\"><div>a</div></colgroup>\n2920:          <colgroup style=\"display: block\"><div>a</div></colgroup>\n2927:          <colgroup style=\"display: block\"><div>a</div></colgroup>\n2934:          <colgroup style=\"display: block\"><div>a</div></colgroup>\n2941:          <colgroup style=\"display: block\"><div>a</div></colgroup>\n","stderr_tail":"","stdout_sha256":"44cbb7b80493af3050372a98643600249962a943b04361098fdc320ac62ae04a","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-56.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:35:20.221986Z","duration_s":0.003262,"timed_out":false,"image_before":"0cdc4c37-9a7f-4891-ac6f-870ce1a31d26","image_after":"0274b534-6798-4757-a1f1-c7e7a0e948f6","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-57","seq":57,"branch_id":"agent1","kind":"command","cmd":"grep -A 15 -B 5 \"width: 100px\" tests/layout/test_table.py | grep -A 15 -B 5 \"colgroup\\|col \"","path":null,"exit_code":0,"stdout_tail":"@assert_no_logs\ndef test_layout_table_fixed_4():\n    page, = render_pages('''\n      <table style=\"table-layout: fixed; border-spacing: 0;\n                    width: 100px; margin: 10px\">\n        <colgroup>\n          <col />\n          <col style=\"width: 20px\" />\n        </colgroup>\n        <tr>\n          <td></td>\n          <td style=\"width: 40px\">a</td>\n        </tr>\n      </table>\n    ''')\n    html, = page.children\n    body, = html.children\n    table_wrapper, = body.children\n    table, = table_wrapper.children\n    row_group, = table.children\n--\n\n\n@assert_no_logs\n--\n@assert_no_logs\ndef test_layout_table_auto_19():\n    # Column group width\n    page, = render_pages('''\n      <table style=\"width: 200px\">\n        <colgroup style=\"width: 100px\">\n          <col />\n          <col />\n        </colgroup>\n        <col style=\"width: 100px\" />\n        <tbody>\n          <tr>\n            <td>a</td>\n            <td>a</td>\n            <td>abc</td>\n          </tr>\n        </tbody>\n      </table>\n    ''')\n    html, = page.children\n    body, = html.children\n    table_wrapper, = body.children\n    table, = table_wrapper.children\n    row_group, = table.children\n    row, = row_group.children\n--\n@assert_no_logs\ndef test_layout_table_auto_21():\n    # Fixed-width table with column group with widths as percentages and pixels\n    page, = render_pages('''\n      <table style=\"width: 500px\">\n        <colgroup style=\"width: 100px\">\n          <col />\n          <col />\n        </colgroup>\n        <colgroup style=\"width: 30%\">\n          <col />\n          <col />\n        </colgroup>\n        <tbody>\n          <tr>\n            <td>a</td>\n            <td>a</td>\n            <td>abc</td>\n            <td>abc</td>\n          </tr>\n        </tbody>\n--\n\n@assert_no_logs\ndef test_layout_table_auto_41():\n    # Cell width as percentage in auto-width table\n    page, = render_pages('''\n      <div style=\"width: 100px\">\n","stderr_tail":"","stdout_sha256":"1d47fd13dfc304b611cf7158a6dfb7430937f8c35afe0dc376c947d8d35730f9","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-57.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:35:29.361635Z","duration_s":0.005151,"timed_out":false,"image_before":"0274b534-6798-4757-a1f1-c7e7a0e948f6","image_after":"6c6cdbc5-87dd-43e0-b2f5-1d793c51109f","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-58","seq":58,"branch_id":"agent1","kind":"command","cmd":"grep -n \"test_layout_table_auto_21\" tests/layout/test_table.py","path":null,"exit_code":0,"stdout_tail":"886:def test_layout_table_auto_21():\n","stderr_tail":"","stdout_sha256":"8ab73f3f9ba8d58abd240041be74d6d0ea881347e135ffc191177d6603fdcabd","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-58.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:35:36.859464Z","duration_s":0.0033079999999999997,"timed_out":false,"image_before":"6c6cdbc5-87dd-43e0-b2f5-1d793c51109f","image_after":"c7cbebae-07af-4951-b0c3-b5d2d9575125","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-59","seq":59,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-e37bae13f591450d922000fe87f7a923/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-e37bae13f591450d922000fe87f7a923/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_21 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-59.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_21 DEBUG: table_min_content_width (after) = 257.484375\nDEBUG: table_max_content_width (after) = 500.0\nDEBUG: table_min_content_width (after) = 257.484375\nDEBUG: table_max_content_width (after) = 500.0\nPASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_21 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-59.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_21\n============================== 1 passed in 0.25s ===============================\n","stderr_tail":"","stdout_sha256":"cf351e3d76d0d8e16e96f7e335aaeacb3dd26f1e1ee84085e5b3d5d0d5ec5667","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-59.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":3.2471979160327464,"started_at":"2026-10-03T18:35:49.073687Z","duration_s":1.513593,"timed_out":false,"image_before":"c7cbebae-07af-4951-b0c3-b5d2d9575125","image_after":"536a32fe-3108-4bf4-b5ab-0abf48c11f81","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_21"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-60","seq":60,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-3956bad226754bff9fbb20de2819c718/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-3956bad226754bff9fbb20de2819c718/incoming/e23b9e52f98281e7e05436b393ba199e09231817c554aa5fe5b8ce23e55d7e86 /WeasyPrint/weasyprint/layout/table.py'","path":"weasyprint/layout/table.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e23b9e52f98281e7e05436b393ba199e09231817c554aa5fe5b8ce23e55d7e86","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-60.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:36:09.864347Z","duration_s":0.0051140000000000005,"timed_out":false,"image_before":"536a32fe-3108-4bf4-b5ab-0abf48c11f81","image_after":"f5e7f796-eadf-40e3-982b-c8456637722e","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-61","seq":61,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-cf064344b1954599b03a0ca33b4ce80d/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-cf064344b1954599b03a0ca33b4ce80d/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-61.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nPASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_32 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-61.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\n============================== 1 passed in 0.24s ===============================\n","stderr_tail":"","stdout_sha256":"faf80e943d6c3adf86a2fc73a65ad257d472d4017aef4b78ffe95b10fddc4f3b","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-61.log","tree_digest":"d9dc18cef740a8c43c2a895b33db2f7f43b87fd2e1b073026815d0a94d9ee822","tree_download_s":2.2138106250204146,"started_at":"2026-10-03T18:36:14.066278Z","duration_s":1.511923,"timed_out":false,"image_before":"f5e7f796-eadf-40e3-982b-c8456637722e","image_after":"0989b124-46fe-4da8-9423-00c668c3fd4f","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_32"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-62","seq":62,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-1cff6a31c47e42a7b6173e57bca602dd/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-1cff6a31c47e42a7b6173e57bca602dd/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_19 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-62.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_19 DEBUG: table_min_content_width (after) = 300.0\nDEBUG: table_max_content_width (after) = 200.0\nDEBUG: table_min_content_width (after) = 300.0\nDEBUG: table_max_content_width (after) = 200.0\nPASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_19 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-62.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_19\n============================== 1 passed in 0.25s ===============================\n","stderr_tail":"","stdout_sha256":"a87153816a9e3988dd1073f6f1da77639ee56b2a3922e4cb7c9f155a24b5561e","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-62.log","tree_digest":"d9dc18cef740a8c43c2a895b33db2f7f43b87fd2e1b073026815d0a94d9ee822","tree_download_s":2.5682997081894428,"started_at":"2026-10-03T18:36:26.520597Z","duration_s":1.511526,"timed_out":false,"image_before":"0989b124-46fe-4da8-9423-00c668c3fd4f","image_after":"1b74437d-45db-4f01-93dd-10071cbeed2a","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_19"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-63","seq":63,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-e2c2feeb74bd43948de419648f7e2115/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-e2c2feeb74bd43948de419648f7e2115/receipts_pytest.py tests/layout/test_table.py -k test_layout_table_auto_ --tb=no -q -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-63.xml","path":null,"exit_code":1,"stdout_tail":"....F..F....FF.F.F.F..F.F.......................x.                       [100%]\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_1\nPASSED tests/layout/test_table.py::test_layout_table_auto_2\nPASSED tests/layout/test_table.py::test_layout_table_auto_3\nPASSED tests/layout/test_table.py::test_layout_table_auto_4\nPASSED tests/layout/test_table.py::test_layout_table_auto_6\nPASSED tests/layout/test_table.py::test_layout_table_auto_7\nPASSED tests/layout/test_table.py::test_layout_table_auto_9\nPASSED tests/layout/test_table.py::test_layout_table_auto_10\nPASSED tests/layout/test_table.py::test_layout_table_auto_11\nPASSED tests/layout/test_table.py::test_layout_table_auto_12\nPASSED tests/layout/test_table.py::test_layout_table_auto_15\nPASSED tests/layout/test_table.py::test_layout_table_auto_17\nPASSED tests/layout/test_table.py::test_layout_table_auto_19\nPASSED tests/layout/test_table.py::test_layout_table_auto_21\nPASSED tests/layout/test_table.py::test_layout_table_auto_22\nPASSED tests/layout/test_table.py::test_layout_table_auto_24\nPASSED tests/layout/test_table.py::test_layout_table_auto_26\nPASSED tests/layout/test_table.py::test_layout_table_auto_27\nPASSED tests/layout/test_table.py::test_layout_table_auto_28\nPASSED tests/layout/test_table.py::test_layout_table_auto_29\nPASSED tests/layout/test_table.py::test_layout_table_auto_30\nPASSED tests/layout/test_table.py::test_layout_table_auto_31\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\nPASSED tests/layout/test_table.py::test_layout_table_auto_33\nPASSED tests/layout/test_table.py::test_layout_table_auto_34\nPASSED tests/layout/test_table.py::test_layout_table_auto_35\nPASSED tests/layout/test_table.py::test_layout_table_auto_36\nPASSED tests/layout/test_table.py::test_layout_table_auto_37\nPASSED tests/layout/test_table.py::test_layout_table_auto_38\nPASSED tests/layout/test_table.py::test_layout_table_auto_39\nPASSED tests/layout/test_table.py::test_layout_table_auto_40\nPASSED tests/layout/test_table.py::test_layout_table_auto_41\nPASSED tests/layout/test_table.py::test_layout_table_auto_42\nPASSED tests/layout/test_table.py::test_layout_table_auto_43\nPASSED tests/layout/test_table.py::test_layout_table_auto_44\nPASSED tests/layout/test_table.py::test_layout_table_auto_45\nPASSED tests/layout/test_table.py::test_layout_table_auto_46\nPASSED tests/layout/test_table.py::test_layout_table_auto_47\nPASSED tests/layout/test_table.py::test_layout_table_auto_48\nPASSED tests/layout/test_table.py::test_layout_table_auto_50\nXFAIL tests/layout/test_table.py::test_layout_table_auto_49\nFAILED tests/layout/test_table.py::test_layout_table_auto_5 - assert 792.0 ==...\nFAILED tests/layout/test_table.py::test_layout_table_auto_8 - assert 40.0 == 70\nFAILED tests/layout/test_table.py::test_layout_table_auto_13 - assert 0 == 20\nFAILED tests/layout/test_table.py::test_layout_table_auto_14 - assert 0 == 20\nFAILED tests/layout/test_table.py::test_layout_table_auto_16 - assert 0 == 20\nFAILED tests/layout/test_table.py::test_layout_table_auto_18 - assert 67.0651...\nFAILED tests/layout/test_table.py::test_layout_table_auto_20 - assert 28.7421...\nFAILED tests/layout/test_table.py::test_layout_table_auto_23 - assert 23.8476...\nFAILED tests/layout/test_table.py::test_layout_table_auto_25 - assert 9.53906...\n9 failed, 40 passed, 71 deselected, 1 xfailed in 1.42s\n","stderr_tail":"","stdout_sha256":"cb891af2ba986725d1a82e69c13699092bc870453395d29451fb23cb4b5f9660","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-63.log","tree_digest":"d9dc18cef740a8c43c2a895b33db2f7f43b87fd2e1b073026815d0a94d9ee822","tree_download_s":3.5374810840003192,"started_at":"2026-10-03T18:36:38.178219Z","duration_s":2.18696,"timed_out":false,"image_before":"1b74437d-45db-4f01-93dd-10071cbeed2a","image_after":"443add88-4280-4e6a-8cdb-d41623e146e8","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_1","tests/layout/test_table.py::test_layout_table_auto_2","tests/layout/test_table.py::test_layout_table_auto_3","tests/layout/test_table.py::test_layout_table_auto_4","tests/layout/test_table.py::test_layout_table_auto_6","tests/layout/test_table.py::test_layout_table_auto_7","tests/layout/test_table.py::test_layout_table_auto_9","tests/layout/test_table.py::test_layout_table_auto_10","tests/layout/test_table.py::test_layout_table_auto_11","tests/layout/test_table.py::test_layout_table_auto_12","tests/layout/test_table.py::test_layout_table_auto_15","tests/layout/test_table.py::test_layout_table_auto_17","tests/layout/test_table.py::test_layout_table_auto_19","tests/layout/test_table.py::test_layout_table_auto_21","tests/layout/test_table.py::test_layout_table_auto_22","tests/layout/test_table.py::test_layout_table_auto_24","tests/layout/test_table.py::test_layout_table_auto_26","tests/layout/test_table.py::test_layout_table_auto_27","tests/layout/test_table.py::test_layout_table_auto_28","tests/layout/test_table.py::test_layout_table_auto_29","tests/layout/test_table.py::test_layout_table_auto_30","tests/layout/test_table.py::test_layout_table_auto_31","tests/layout/test_table.py::test_layout_table_auto_32","tests/layout/test_table.py::test_layout_table_auto_33","tests/layout/test_table.py::test_layout_table_auto_34","tests/layout/test_table.py::test_layout_table_auto_35","tests/layout/test_table.py::test_layout_table_auto_36","tests/layout/test_table.py::test_layout_table_auto_37","tests/layout/test_table.py::test_layout_table_auto_38","tests/layout/test_table.py::test_layout_table_auto_39","tests/layout/test_table.py::test_layout_table_auto_40","tests/layout/test_table.py::test_layout_table_auto_41","tests/layout/test_table.py::test_layout_table_auto_42","tests/layout/test_table.py::test_layout_table_auto_43","tests/layout/test_table.py::test_layout_table_auto_44","tests/layout/test_table.py::test_layout_table_auto_45","tests/layout/test_table.py::test_layout_table_auto_46","tests/layout/test_table.py::test_layout_table_auto_47","tests/layout/test_table.py::test_layout_table_auto_48","tests/layout/test_table.py::test_layout_table_auto_50"],"failed":["tests/layout/test_table.py::test_layout_table_auto_5","tests/layout/test_table.py::test_layout_table_auto_8","tests/layout/test_table.py::test_layout_table_auto_13","tests/layout/test_table.py::test_layout_table_auto_14","tests/layout/test_table.py::test_layout_table_auto_16","tests/layout/test_table.py::test_layout_table_auto_18","tests/layout/test_table.py::test_layout_table_auto_20","tests/layout/test_table.py::test_layout_table_auto_23","tests/layout/test_table.py::test_layout_table_auto_25"],"errors":[],"skipped":["tests/layout/test_table.py::test_layout_table_auto_49"],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_5":"assert 792.0 == 1000\n +  where 792.0 = <TableBox table>.width\nE   assert 792.0 == 1000\n     +  where 792.0 = <TableBox table>.width","tests/layout/test_table.py::test_layout_table_auto_8":"assert 40.0 == 70\n +  where 40.0 = <TableCellBox td>.width\nE   assert 40.0 == 70\n     +  where 40.0 = <TableCellBox td>.width","tests/layout/test_table.py::test_layout_table_auto_13":"assert 0 == 20\n +  where 0 = <TableCellBox td>.width\nE   assert 0 == 20\n     +  where 0 = <TableCellBox td>.width","tests/layout/test_table.py::test_layout_table_auto_14":"assert 0 == 20\n +  where 0 = <TableCellBox td>.width\nE   assert 0 == 20\n     +  where 0 = <TableCellBox td>.width","tests/layout/test_table.py::test_layout_table_auto_16":"assert 0 == 20\n +  where 0 = <TableCellBox td>.width\nE   assert 0 == 20\n     +  where 0 = <TableCellBox td>.width","tests/layout/test_table.py::test_layout_table_auto_18":"assert 67.06510416666667 == 140\n +  where 67.06510416666667 = <TableCellBox td>.width\nE   assert 67.06510416666667 == 140\n     +  where 67.06510416666667 = <TableCellBox td>.width","tests/layout/test_table.py::test_layout_table_auto_20":"assert 28.7421875 == 120\n +  where 28.7421875 = <TableCellBox td>.width\nE   assert 28.7421875 == 120\n     +  where 28.7421875 = <TableCellBox td>.width","tests/layout/test_table.py::test_layout_table_auto_23":"assert 23.84765625 == 100\n +  where 23.84765625 = <TableCellBox td>.width\nE   assert 23.84765625 == 100\n     +  where 23.84765625 = <TableCellBox td>.width","tests/layout/test_table.py::test_layout_table_auto_25":"assert 9.5390625 == 140\n +  where 9.5390625 = <TableCellBox td>.width\nE   assert 9.5390625 == 140\n     +  where 9.5390625 = <TableCellBox td>.width"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-64","seq":64,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-acd60101df3242f99435261bddf23442/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-acd60101df3242f99435261bddf23442/incoming/ca382759aa5226b1da2443f6106140095915d90cbed1e283468ed205ff27bdd6 /WeasyPrint/weasyprint/layout/table.py'","path":"weasyprint/layout/table.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"ca382759aa5226b1da2443f6106140095915d90cbed1e283468ed205ff27bdd6","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-64.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:36:53.118552Z","duration_s":0.0045709999999999995,"timed_out":false,"image_before":"443add88-4280-4e6a-8cdb-d41623e146e8","image_after":"95c1a966-5656-4212-b1ef-c03b8601c124","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-65","seq":65,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-84053ebff9464b69a580cf627c94d73f/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-84053ebff9464b69a580cf627c94d73f/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-65.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /WeasyPrint\nconfigfile: pyproject.toml\nplugins: xdist-3.8.0\ncollecting ... collected 1 item\n\ntests/layout/test_table.py::test_layout_table_auto_32 DEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nDEBUG: table_min_content_width (after) = 500.0\nDEBUG: table_max_content_width (after) = 400.0\nPASSED\n\n==================================== PASSES ====================================\n__________________________ test_layout_table_auto_32 ___________________________\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-65.xml ------------\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\n============================== 1 passed in 0.24s ===============================\n","stderr_tail":"","stdout_sha256":"17f7d2aa9bc6e29f4823d9727005f1cb9baefc1b01640eadae1a32af393359ad","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-65.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":3.834783042082563,"started_at":"2026-10-03T18:36:57.319165Z","duration_s":1.4869539999999999,"timed_out":false,"image_before":"95c1a966-5656-4212-b1ef-c03b8601c124","image_after":"044f91f2-abbc-4a1d-874e-381321746463","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_32"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-66","seq":66,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-33314d4b884e4a779068571f94efa66b/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-33314d4b884e4a779068571f94efa66b/receipts_pytest.py tests/layout/test_table.py -k test_layout_table_auto_ --tb=no -q -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-66.xml","path":null,"exit_code":1,"stdout_tail":"..................F.............................x.                       [100%]\n=========================== short test summary info ============================\nPASSED tests/layout/test_table.py::test_layout_table_auto_1\nPASSED tests/layout/test_table.py::test_layout_table_auto_2\nPASSED tests/layout/test_table.py::test_layout_table_auto_3\nPASSED tests/layout/test_table.py::test_layout_table_auto_4\nPASSED tests/layout/test_table.py::test_layout_table_auto_5\nPASSED tests/layout/test_table.py::test_layout_table_auto_6\nPASSED tests/layout/test_table.py::test_layout_table_auto_7\nPASSED tests/layout/test_table.py::test_layout_table_auto_8\nPASSED tests/layout/test_table.py::test_layout_table_auto_9\nPASSED tests/layout/test_table.py::test_layout_table_auto_10\nPASSED tests/layout/test_table.py::test_layout_table_auto_11\nPASSED tests/layout/test_table.py::test_layout_table_auto_12\nPASSED tests/layout/test_table.py::test_layout_table_auto_13\nPASSED tests/layout/test_table.py::test_layout_table_auto_14\nPASSED tests/layout/test_table.py::test_layout_table_auto_15\nPASSED tests/layout/test_table.py::test_layout_table_auto_16\nPASSED tests/layout/test_table.py::test_layout_table_auto_17\nPASSED tests/layout/test_table.py::test_layout_table_auto_18\nPASSED tests/layout/test_table.py::test_layout_table_auto_20\nPASSED tests/layout/test_table.py::test_layout_table_auto_21\nPASSED tests/layout/test_table.py::test_layout_table_auto_22\nPASSED tests/layout/test_table.py::test_layout_table_auto_23\nPASSED tests/layout/test_table.py::test_layout_table_auto_24\nPASSED tests/layout/test_table.py::test_layout_table_auto_25\nPASSED tests/layout/test_table.py::test_layout_table_auto_26\nPASSED tests/layout/test_table.py::test_layout_table_auto_27\nPASSED tests/layout/test_table.py::test_layout_table_auto_28\nPASSED tests/layout/test_table.py::test_layout_table_auto_29\nPASSED tests/layout/test_table.py::test_layout_table_auto_30\nPASSED tests/layout/test_table.py::test_layout_table_auto_31\nPASSED tests/layout/test_table.py::test_layout_table_auto_32\nPASSED tests/layout/test_table.py::test_layout_table_auto_33\nPASSED tests/layout/test_table.py::test_layout_table_auto_34\nPASSED tests/layout/test_table.py::test_layout_table_auto_35\nPASSED tests/layout/test_table.py::test_layout_table_auto_36\nPASSED tests/layout/test_table.py::test_layout_table_auto_37\nPASSED tests/layout/test_table.py::test_layout_table_auto_38\nPASSED tests/layout/test_table.py::test_layout_table_auto_39\nPASSED tests/layout/test_table.py::test_layout_table_auto_40\nPASSED tests/layout/test_table.py::test_layout_table_auto_41\nPASSED tests/layout/test_table.py::test_layout_table_auto_42\nPASSED tests/layout/test_table.py::test_layout_table_auto_43\nPASSED tests/layout/test_table.py::test_layout_table_auto_44\nPASSED tests/layout/test_table.py::test_layout_table_auto_45\nPASSED tests/layout/test_table.py::test_layout_table_auto_46\nPASSED tests/layout/test_table.py::test_layout_table_auto_47\nPASSED tests/layout/test_table.py::test_layout_table_auto_48\nPASSED tests/layout/test_table.py::test_layout_table_auto_50\nXFAIL tests/layout/test_table.py::test_layout_table_auto_49\nFAILED tests/layout/test_table.py::test_layout_table_auto_19 - assert 200.0 =...\n1 failed, 48 passed, 71 deselected, 1 xfailed in 1.59s\n","stderr_tail":"","stdout_sha256":"c009d5c1f99ec13793a2e8baf8f48e5fc28f11a64fcf5593050a7bb453a78e2c","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-66.log","tree_digest":"fa725ed2349bbdcf3911ba573f27ef8c820861634aac558b186875e23ae74d58","tree_download_s":4.287563208024949,"started_at":"2026-10-03T18:37:10.212044Z","duration_s":2.248107,"timed_out":false,"image_before":"044f91f2-abbc-4a1d-874e-381321746463","image_after":"55b338bd-0d49-4499-8e64-b4ddc7011be5","junit":{"passed":["tests/layout/test_table.py::test_layout_table_auto_1","tests/layout/test_table.py::test_layout_table_auto_2","tests/layout/test_table.py::test_layout_table_auto_3","tests/layout/test_table.py::test_layout_table_auto_4","tests/layout/test_table.py::test_layout_table_auto_5","tests/layout/test_table.py::test_layout_table_auto_6","tests/layout/test_table.py::test_layout_table_auto_7","tests/layout/test_table.py::test_layout_table_auto_8","tests/layout/test_table.py::test_layout_table_auto_9","tests/layout/test_table.py::test_layout_table_auto_10","tests/layout/test_table.py::test_layout_table_auto_11","tests/layout/test_table.py::test_layout_table_auto_12","tests/layout/test_table.py::test_layout_table_auto_13","tests/layout/test_table.py::test_layout_table_auto_14","tests/layout/test_table.py::test_layout_table_auto_15","tests/layout/test_table.py::test_layout_table_auto_16","tests/layout/test_table.py::test_layout_table_auto_17","tests/layout/test_table.py::test_layout_table_auto_18","tests/layout/test_table.py::test_layout_table_auto_20","tests/layout/test_table.py::test_layout_table_auto_21","tests/layout/test_table.py::test_layout_table_auto_22","tests/layout/test_table.py::test_layout_table_auto_23","tests/layout/test_table.py::test_layout_table_auto_24","tests/layout/test_table.py::test_layout_table_auto_25","tests/layout/test_table.py::test_layout_table_auto_26","tests/layout/test_table.py::test_layout_table_auto_27","tests/layout/test_table.py::test_layout_table_auto_28","tests/layout/test_table.py::test_layout_table_auto_29","tests/layout/test_table.py::test_layout_table_auto_30","tests/layout/test_table.py::test_layout_table_auto_31","tests/layout/test_table.py::test_layout_table_auto_32","tests/layout/test_table.py::test_layout_table_auto_33","tests/layout/test_table.py::test_layout_table_auto_34","tests/layout/test_table.py::test_layout_table_auto_35","tests/layout/test_table.py::test_layout_table_auto_36","tests/layout/test_table.py::test_layout_table_auto_37","tests/layout/test_table.py::test_layout_table_auto_38","tests/layout/test_table.py::test_layout_table_auto_39","tests/layout/test_table.py::test_layout_table_auto_40","tests/layout/test_table.py::test_layout_table_auto_41","tests/layout/test_table.py::test_layout_table_auto_42","tests/layout/test_table.py::test_layout_table_auto_43","tests/layout/test_table.py::test_layout_table_auto_44","tests/layout/test_table.py::test_layout_table_auto_45","tests/layout/test_table.py::test_layout_table_auto_46","tests/layout/test_table.py::test_layout_table_auto_47","tests/layout/test_table.py::test_layout_table_auto_48","tests/layout/test_table.py::test_layout_table_auto_50"],"failed":["tests/layout/test_table.py::test_layout_table_auto_19"],"errors":[],"skipped":["tests/layout/test_table.py::test_layout_table_auto_49"],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_19":"assert 200.0 == 300\n +  where 200.0 = <TableBox table>.width\nE   assert 200.0 == 300\n     +  where 200.0 = <TableBox table>.width"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-67","seq":67,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-385eb924e5aa4d4fb85fa8bac8384067/bin/busybox sh -c 'mkdir -p /WeasyPrint/weasyprint/layout && cp /opt/receipts-385eb924e5aa4d4fb85fa8bac8384067/incoming/875e3d742e957d4f77d6db136ce037ea32f8c35530fa1b79c41dbcc83e991c28 /WeasyPrint/weasyprint/layout/preferred.py'","path":"weasyprint/layout/preferred.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"875e3d742e957d4f77d6db136ce037ea32f8c35530fa1b79c41dbcc83e991c28","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-67.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:37:41.096948Z","duration_s":0.004651,"timed_out":false,"image_before":"55b338bd-0d49-4499-8e64-b4ddc7011be5","image_after":"c328450c-ab96-4aaa-8a6b-bbf793365bf8","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-68","seq":68,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-9bb61637bb9240679e2048850b5fe108/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-9bb61637bb9240679e2048850b5fe108/receipts_pytest.py tests/layout/test_table.py::test_layout_table_auto_32 -xvs -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-68.xml","path":null,"exit_code":1,"stdout_tail":"strainedness[i] = True\n                continue\n            for cell in zipped_grid[i]:\n                if (cell and cell.colspan == 1 and\n                        cell.style['width'] != 'auto' and\n                        cell.style['width'].unit != '%'):\n                    constrainedness[i] = True\n                    break\n    \n        intrinsic_percentages = [\n            min(percentage, 100 - sum(intrinsic_percentages[:i]))\n            for i, percentage in enumerate(intrinsic_percentages)]\n    \n        # Max- and min-content widths for span > 1\n        for cell in colspan_cells:\n            min_content = min_content_width(context, cell)\n            max_content = max_content_width(context, cell)\n            column_slice = slice(cell.grid_x, cell.grid_x + cell.colspan)\n            columns_min_content = sum(min_content_widths[column_slice])\n            columns_max_content = sum(max_content_widths[column_slice])\n            if table.style['border_collapse'] == 'separate':\n                spacing = (cell.colspan - 1) * table.style['border_spacing'][0]\n            else:\n                spacing = 0\n    \n            if min_content > columns_min_content + spacing:\n                excess_width = min_content - (columns_min_content + spacing)\n                distribute_excess_width(\n                    context, zipped_grid, excess_width, min_content_widths,\n                    constrainedness, intrinsic_percentages, max_content_widths,\n                    column_slice)\n    \n            if max_content > columns_max_content + spacing:\n                excess_width = max_content - (columns_max_content + spacing)\n                distribute_excess_width(\n                    context, zipped_grid, excess_width, max_content_widths,\n                    constrainedness, intrinsic_percentages, max_content_widths,\n                    column_slice)\n    \n        # Calculate the max- and min-content widths of table and columns\n        small_percentage_contributions = [\n            max_content_widths[i] / (intrinsic_percentages[i] / 100)\n            for i in range(grid_width)\n            if intrinsic_percentages[i]]\n        large_percentage_contribution_numerator = sum(\n            max_content_widths[i] for i in range(grid_width)\n            if intrinsic_percentages[i] == 0)\n        large_percentage_contribution_denominator = (\n            (100 - sum(intrinsic_percentages)) / 100)\n        if large_percentage_contribution_denominator == 0:\n            if large_percentage_contribution_numerator == 0:\n                large_percentage_contribution = 0\n            else:\n                # \"the large percentage contribution of the table [is] an\n                # infinitely large number if the numerator is nonzero [and] the\n                # denominator of that ratio is 0.\"\n                #\n                # https://dbaron.org/css/intrinsic/#autotableintrinsic\n                #\n                # Please note that \"an infinitely large number\" is not \"infinite\",\n                # and that's probably not a coincindence: putting 'inf' here breaks\n                # some cases (see #305).\n                large_percentage_contribution = sys.maxsize\n        else:\n            large_percentage_contribution = (\n                large_percentage_contribution_numerator /\n                large_percentage_contribution_denominator)\n    \n        table_min_content_width = (\n            total_horizontal_border_spacing + sum(min_content_widths))\n        table_max_content_width = (\n            total_horizontal_border_spacing + max(\n                [sum(max_content_widths), large_percentage_contribution] +\n                small_percentage_contributions))\n    \n        if table.style['width'] != 'auto' and table.style['width'].unit == 'px':\n            # \"percentages on the following properties are treated instead as\n            # though they were the following: width: auto\"\n            # https://dbaron.org/css/intrinsic/#outer-intrinsic\n            table_min_width = table_max_width = table.style['width'].value\n        else:\n            table_min_width = table_min_content_width\n            table_max_width = table_max_content_width\n    \n        if table.style['width'] == 'auto':\n            table_min_content_width = max(\n                table_min_content_width, adjust(\n                    table, outer=False, width=table_min_width))\n            table_max_content_width = max(\n                table_max_content_width, adjust(\n                    table, outer=False, width=table_max_width))\n        else:\n            # Check if table has explicit column/colgroup width specifications\n            has_explicit_column_widths = False\n            for column_group in table.column_groups:\n                for column in column_group.children:\n                    if column.style['width'] != 'auto':\n                        has_explicit_column_widths = True\n                        break\n                if has_explicit_column_widths:\n                    break\n            if not has_explicit_column_widths:\n>               for column in table.columns:\nE               AttributeError: 'TableBox' object has no attribute 'columns'\n\nweasyprint/layout/preferred.py:656: AttributeError\n------------------------------ Captured log call -------------------------------\nINFO     weasyprint.progress:__init__.py:158 Step 1 - Fetching and parsing HTML - HTML string\nINFO     weasyprint.progress:__init__.py:67 Step 3 - Applying CSS\nINFO     weasyprint.progress:document.py:237 Step 4 - Creating formatting structure\nINFO     weasyprint.progress:page.py:899 Step 5 - Creating layout - Page 1\n----------- generated xml file: /opt/receipts/reports/agent1-68.xml ------------\n=========================== short test summary info ============================\nFAILED tests/layout/test_table.py::test_layout_table_auto_32 - AttributeError...\n!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!\n============================== 1 failed in 0.41s ===============================\n","stderr_tail":"","stdout_sha256":"64bd7a24da65e2f782bc0307d1b434594d6e527590258ef60eb5d04014a147da","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-68.log","tree_digest":"62b6928fc69c1536c40d3179eef2f4c0d640b4983c76b2e86dd117bc131e150f","tree_download_s":2.6828024580609053,"started_at":"2026-10-03T18:37:47.269821Z","duration_s":1.6514039999999999,"timed_out":false,"image_before":"c328450c-ab96-4aaa-8a6b-bbf793365bf8","image_after":"8c856498-f124-4fe9-9085-d0aa608bc916","junit":{"passed":[],"failed":["tests/layout/test_table.py::test_layout_table_auto_32"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"tests/layout/test_table.py::test_layout_table_auto_32":"[...]percentage_contribution = (\n                large_percentage_contribution_numerator /\n                large_percentage_contribution_denominator)\n    \n        table_min_content_width = (\n            total_horizontal_border_spacing + sum(min_content_widths))\n        table_max_content_width = (\n            total_horizontal_border_spacing + max(\n                [sum(max_content_widths), large_percentage_contribution] +\n                small_percentage_contributions))\n    \n        if table.style['width'] != 'auto' and table.style['width'].unit == 'px':\n            # \"percentages on the following properties are treated instead as\n            # though they were the following: width: auto\"\n            # https://dbaron.org/css/intrinsic/#outer-intrinsic\n            table_min_width = table_max_width = table.style['width'].value\n        else:\n            table_min_width = table_min_content_width\n            table_max_width = table_max_content_width\n    \n        if table.style['width'] == 'auto':\n            table_min_content_width = max(\n                table_min_content_width, adjust(\n                    table, outer=False, width=table_min_width))\n            table_max_content_width = max(\n                table_max_content_width, adjust(\n                    table, outer=False, width=table_max_width))\n        else:\n            # Check if table has explicit column/colgroup width specifications\n            has_explicit_column_widths = False\n            for column_group in table.column_groups:\n                for column in column_group.children:\n                    if column.style['width'] != 'auto':\n                        has_explicit_column_widths = True\n                        break\n                if has_explicit_column_widths:\n                    break\n            if not has_explicit_column_widths:\n>               for column in table.columns:\nE               AttributeError: 'TableBox' object has no attribute 'columns'\n\nweasyprint/layout/preferred.py:656: AttributeError"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-69","seq":69,"branch_id":"agent1","kind":"command","cmd":"grep -n \"class TableBox\" /WeasyPrint/weasyprint/formatting_structure/boxes.py","path":null,"exit_code":0,"stdout_tail":"568:class TableBox(BlockLevelBox, ParentBox):\n","stderr_tail":"","stdout_sha256":"d5f0f01663b9718eb8ef0d3e1e925248a576114534fa80b7a5534ff26c8e58fd","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-69.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:37:58.980476Z","duration_s":0.003199,"timed_out":false,"image_before":"8c856498-f124-4fe9-9085-d0aa608bc916","image_after":"7598adf5-c384-45dd-a373-8188488d84c1","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-70","seq":70,"branch_id":"agent1","kind":"command","cmd":"grep -n \"columns\\|column\" /WeasyPrint/weasyprint/formatting_structure/boxes.py | grep -i table","path":null,"exit_code":0,"stdout_tail":"611:    \"\"\"Box for elements with ``display: table-column-group``\"\"\"\n645:    \"\"\"Box for elements with ``display: table-column``\"\"\"\n","stderr_tail":"","stdout_sha256":"d4a8519425e9f9f724be9233d35455ca872a6f8df70135d96033b1c05c3cbf99","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-70.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:38:04.223514Z","duration_s":0.004606,"timed_out":false,"image_before":"7598adf5-c384-45dd-a373-8188488d84c1","image_after":"f54646a5-9176-4669-bb3b-ba48c5ce0ff0","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-71","seq":71,"branch_id":"agent1","kind":"command","cmd":"grep -A 5 -B 5 \"self\\.columns\\|self\\.column\" /WeasyPrint/weasyprint/formatting_structure/boxes.py","path":null,"exit_code":0,"stdout_tail":"    # Definitions for the rules generating anonymous table boxes\n    # https://www.w3.org/TR/CSS21/tables.html#anonymous-boxes\n    tabular_container = True\n\n    def all_children(self):\n        return itertools.chain(self.children, self.column_groups)\n\n    def translate(self, dx=0, dy=0, ignore_floats=False):\n        self.column_positions = [\n            position + dx for position in self.column_positions]\n        return super().translate(dx, dy, ignore_floats)\n\n    def page_values(self):\n        return (self.style['page'], self.style['page'])\n\n","stderr_tail":"","stdout_sha256":"d261ffa4047c6ea33e0f8a7331c89065749f210e5cf96aabbc9071f65b1733d2","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-71.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:38:08.868757Z","duration_s":0.002835,"timed_out":false,"image_before":"f54646a5-9176-4669-bb3b-ba48c5ce0ff0","image_after":"ca5ec4f3-eaa4-4fa0-b0cf-3950c71a5b7d","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-72","seq":72,"branch_id":"agent1","kind":"command","cmd":"grep -n \"\\.columns\" /WeasyPrint/weasyprint/layout/preferred.py","path":null,"exit_code":0,"stdout_tail":"656:            for column in table.columns:\n","stderr_tail":"","stdout_sha256":"d42497147b32f268ba4abf7546be65a574771cf0aaa6a659a164965ecfe62ad2","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-72.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:38:16.296842Z","duration_s":0.003046,"timed_out":false,"image_before":"ca5ec4f3-eaa4-4fa0-b0cf-3950c71a5b7d","image_after":"0733ad4f-ebcd-428d-8bd8-0b4e6ef03856","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-73","seq":73,"branch_id":"agent1","kind":"command","cmd":"grep -n \"columns\" /WeasyPrint/weasyprint/formatting_structure/boxes.py","path":null,"exit_code":0,"stdout_tail":"628:        \"\"\"Return cells that originate in the group's columns.\"\"\"\n","stderr_tail":"","stdout_sha256":"cc95c1d07661e0dbf388bc3d15b4e5089a780e3bce2f4337129712f675655da9","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-73.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:38:23.656713Z","duration_s":0.003186,"timed_out":false,"image_before":"0733ad4f-ebcd-428d-8bd8-0b4e6ef03856","image_after":"9dda4da3-0f50-4012-9c33-508b80dc101f","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-74","seq":74,"branch_id":"agent1","kind":"command","cmd":"grep -rn \"columns\" /WeasyPrint/weasyprint/formatting_structure/ | grep -v \".pyc\" | head -10","path":null,"exit_code":0,"stdout_tail":"/WeasyPrint/weasyprint/formatting_structure/boxes.py:628:        \"\"\"Return cells that originate in the group's columns.\"\"\"\n/WeasyPrint/weasyprint/formatting_structure/build.py:873:    but grid_x is an explicit attribute on cells, columns and column group.\n/WeasyPrint/weasyprint/formatting_structure/build.py:880:    columns = []\n/WeasyPrint/weasyprint/formatting_structure/build.py:884:        boxes.TableColumnBox: columns,\n/WeasyPrint/weasyprint/formatting_structure/build.py:885:        boxes.TableColumnGroupBox: columns,\n/WeasyPrint/weasyprint/formatting_structure/build.py:900:        box, columns, boxes.TableColumnGroupBox))\n/WeasyPrint/weasyprint/formatting_structure/build.py:965:                    spanned_columns = range(grid_x, new_grid_x)\n/WeasyPrint/weasyprint/formatting_structure/build.py:967:                        occupied_cells.update(spanned_columns)\n","stderr_tail":"","stdout_sha256":"4ab56aa1bc07fe57f7651c7dcdeb3682bca68d9ab54fae9f77f2656af37221ba","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-74.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:38:27.747200Z","duration_s":0.0062369999999999995,"timed_out":false,"image_before":"9dda4da3-0f50-4012-9c33-508b80dc101f","image_after":"23d2b61d-2b3a-446d-b19c-d36c9045dea1","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-75","seq":75,"branch_id":"agent1","kind":"command","cmd":"grep -A 3 -B 3 \"table\\.columns\" /WeasyPrint/weasyprint/layout/preferred.py","path":null,"exit_code":0,"stdout_tail":"            if has_explicit_column_widths:\n                break\n        if not has_explicit_column_widths:\n            for column in table.columns:\n                if column.style['width'] != 'auto':\n                    has_explicit_column_widths = True\n                    break\n","stderr_tail":"","stdout_sha256":"6b97b282d375441860a04ac39c61ea7439fd5d4ffdd776f4e8dc2cd97f07c94c","log_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/logs/agent1/agent1-75.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T18:38:32.306238Z","duration_s":0.0031060000000000003,"timed_out":false,"image_before":"23d2b61d-2b3a-446d-b19c-d36c9045dea1","image_after":"cc6ba261-ff36-4c4d-a121-baf004825fb7","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-76","seq":76,"branch_id":"agent1","kind":"diff","cmd":"compute patch in executor staging agent1-5c8546495a97455b8f99698e31ced680: /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false add -A && /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false diff --cached --binary --no-ext-diff --no-textconv --no-renames d87cf15c59fc0a0c564a8cf30a21956914defca2","path":null,"exit_code":0,"stdout_tail":"diff --git a/weasyprint/layout/preferred.py b/weasyprint/layout/preferred.py\nindex 8c965fe7..651a13c5 100644\n--- a/weasyprint/layout/preferred.py\n+++ b/weasyprint/layout/preferred.py\n@@ -635,12 +635,49 @@ def table_and_columns_preferred_widths(context, box, outer=True):\n         table_min_width = table_min_content_width\n         table_max_width = table_max_content_width\n \n-    table_min_content_width = max(\n-        table_min_content_width, adjust(\n-            table, outer=False, width=table_min_width))\n-    table_max_content_width = max(\n-        table_max_content_width, adjust(\n-            table, outer=False, width=table_max_width))\n+    if table.style['width'] == 'auto':\n+        table_min_content_width = max(\n+            table_min_content_width, adjust(\n+                table, outer=False, width=table_min_width))\n+        table_max_content_width = max(\n+            table_max_content_width, adjust(\n+                table, outer=False, width=table_max_width))\n+    else:\n+        # Check if table has explicit column/colgroup width specifications\n+        has_explicit_column_widths = False\n+        for column_group in table.column_groups:\n+            for column in column_group.children:\n+                if column.style['width'] != 'auto':\n+                    has_explicit_column_widths = True\n+                    break\n+            if has_explicit_column_widths:\n+                break\n+        if not has_explicit_column_widths:\n+            for column in table.columns:\n+                if column.style['width'] != 'auto':\n+                    has_explicit_column_widths = True\n+                    break\n+\n+        if has_explicit_column_widths:\n+            # When table has explicit column/colgroup widths, allow intrinsic widths\n+            # to reflect natural content demands (may exceed explicit table width)\n+            # to honor column structure constraints\n+            table_min_content_width = max(\n+                table_min_content_width, adjust(\n+                    table, outer=False, width=table_min_width))\n+            table_max_content_width = max(\n+                table_max_content_width, adjust(\n+                    table, outer=False, width=table_max_width))\n+        else:\n+            # When table lacks explicit column widths, constrain intrinsic width\n+            # by explicit table width to prevent content overflow from expanding table\n+            explicit_width_constrained = adjust(table, outer=False, width=table_min_width)\n+            table_max_content_width = min(table_max_content_width, explicit_width_constrained)\n+            # Don't constrain min width to allow legitimate shrinking\n+    print(f\"DEBUG: table_min_content_width (after) = {table_min_content_width}\")\n+    print(f\"DEBUG: table_max_content_width (after) = {table_max_content_width}\")\n+    print(f\"DEBUG: table_min_content_width (after) = {table_min_content_width}\")\n+    print(f\"DEBUG: table_max_content_width (after) = {table_max_content_width}\")\n     table_outer_min_content_width = margin_width(\n         table, margin_width(box, table_min_content_width))\n     table_outer_max_content_width = margin_width(\ndiff --git a/weasyprint/layout/table.py b/weasyprint/layout/table.py\nindex dec83d18..d7df8e79 100644\n--- a/weasyprint/layout/table.py\n+++ b/weasyprint/layout/table.py\n@@ -738,8 +738,8 @@ def auto_table_layout(context, box, containing_block):\n         else:\n             table.width = table_max_content_width\n     else:\n-        if table.width < table_min_content_width:\n-            table.width = table_min_content_width\n+        # Always respect explicit table width - contents overflow if needed\n+        pass  # Keep table.width as specified\n \n     if not grid:\n         table.column_widths = []\n","stderr_tail":"","stdout_sha256":"180cc3fe5d783c86b380e8e6739ba3f111f49d1d69e94cef039b5e085a67d9f4","log_path":null,"tree_digest":"62b6928fc69c1536c40d3179eef2f4c0d640b4983c76b2e86dd117bc131e150f","tree_download_s":3.3334823749028146,"started_at":"2026-10-03T18:38:54.082534Z","duration_s":0.045645207865163684,"timed_out":false,"image_before":"cc6ba261-ff36-4c4d-a121-baf004825fb7","image_after":"cc6ba261-ff36-4c4d-a121-baf004825fb7","junit":null,"diff":{"files":[{"path":"weasyprint/layout/preferred.py","added":43,"deleted":6,"category":"source","status":"modified"},{"path":"weasyprint/layout/table.py","added":2,"deleted":2,"category":"source","status":"modified"}],"patch_sha256":"180cc3fe5d783c86b380e8e6739ba3f111f49d1d69e94cef039b5e085a67d9f4","patch_path":"~/dev/nebius-hackathon/pilot/v2-P/kozea__weasyprint-2087/runs/pilot-kozea__weasyprint-2087-a5888efabe/artifacts/agent1/agent1-76.patch"},"patch_sha256":"180cc3fe5d783c86b380e8e6739ba3f111f49d1d69e94cef039b5e085a67d9f4","dropped_paths":[],"snapshot_sha":"d87cf15c59fc0a0c564a8cf30a21956914defca2"}
