Skip to content

chore: upgrade weasyprint & replace python 3.9 with python 3.14#108

Open
dpinol wants to merge 1 commit into
domWalters:developfrom
dpinol:weasyprint68
Open

chore: upgrade weasyprint & replace python 3.9 with python 3.14#108
dpinol wants to merge 1 commit into
domWalters:developfrom
dpinol:weasyprint68

Conversation

@dpinol
Copy link
Copy Markdown

@dpinol dpinol commented Apr 8, 2026

Solves #107

weasyprint==62.3 has a known vulnerability https://nvd.nist.gov/vuln/detail/CVE-2025-68616
python 3.9 is end-of-life since 2025-10-31
@domWalters
Copy link
Copy Markdown
Owner

Hey,

Just tried to use Weasyprint 68.1 and I get this horrific mess:

Traceback (most recent call last):
  File "/path/to/project/.venv/bin/mkdocs", line 10, in <module>
    sys.exit(cli())
  File "/path/to/project/.venv/lib/python3.10/site-packages/click/core.py", line 1161, in __call__
    return self.main(*args, **kwargs)
  File "/path/to/project/.venv/lib/python3.10/site-packages/click/core.py", line 1082, in main
    rv = self.invoke(ctx)
  File "/path/to/project/.venv/lib/python3.10/site-packages/click/core.py", line 1697, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/path/to/project/.venv/lib/python3.10/site-packages/click/core.py", line 1443, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/path/to/project/.venv/lib/python3.10/site-packages/click/core.py", line 788, in invoke
    return __callback(*args, **kwargs)
  File "/path/to/project/.venv/lib/python3.10/site-packages/mkdocs/__main__.py", line 288, in build_command
    build.build(cfg, dirty=not clean)
  File "/path/to/project/.venv/lib/python3.10/site-packages/mkdocs/commands/build.py", line 347, in build
    config.plugins.on_post_build(config=config)
  File "/path/to/project/.venv/lib/python3.10/site-packages/mkdocs/plugins.py", line 602, in on_post_build
    return self.run_event('post_build', config=config)
  File "/path/to/project/.venv/lib/python3.10/site-packages/mkdocs/plugins.py", line 568, in run_event
    result = method(**kwargs)
  File "/path/to/project/src/mkdocs_to_pdf/plugin.py", line 134, in on_post_build
    self.generator.on_post_build(config, self.config['output_path'])
  File "/path/to/project/src/mkdocs_to_pdf/generator.py", line 176, in on_post_build
    render = html.render()
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/__init__.py", line 222, in render
    return Document._render(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/document.py", line 201, in _render
    [Page(page_box) for page_box in page_boxes],
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/document.py", line 201, in <listcomp>
    [Page(page_box) for page_box in page_boxes],
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/__init__.py", line 131, in layout_document
    pages = list(make_all_pages(context, root_box, html, pages))
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/page.py", line 1005, in make_all_pages
    page, resume_at = remake_page(i, context, root_box, html)
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/page.py", line 946, in remake_page
    page, resume_at, next_page = make_page(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/page.py", line 664, in make_page
    root_box, resume_at, next_page, _, _, _ = block_level_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 59, in block_level_layout
    return block_level_layout_switch(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 75, in block_level_layout_switch
    return block_box_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 126, in block_box_layout
    result = block_container_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 763, in block_container_layout
    next_page, new_children, new_max_lines) = _in_flow_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 557, in _in_flow_layout
    collapsing_through, max_lines) = block_level_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 59, in block_level_layout
    return block_level_layout_switch(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 75, in block_level_layout_switch
    return block_box_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 126, in block_box_layout
    result = block_container_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 763, in block_container_layout
    next_page, new_children, new_max_lines) = _in_flow_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 557, in _in_flow_layout
    collapsing_through, max_lines) = block_level_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 59, in block_level_layout
    return block_level_layout_switch(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 75, in block_level_layout_switch
    return block_box_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 126, in block_box_layout
    result = block_container_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 763, in block_container_layout
    next_page, new_children, new_max_lines) = _in_flow_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 557, in _in_flow_layout
    collapsing_through, max_lines) = block_level_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 59, in block_level_layout
    return block_level_layout_switch(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/block.py", line 86, in block_level_layout_switch
    result = grid_layout(
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/layout/grid.py", line 611, in grid_layout
    columns = _get_template_tracks(box.style['grid_template_columns'])
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/css/__init__.py", line 1222, in __missing__
    value = COMPUTER_FUNCTIONS[key](self, key, value)
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/css/computed_values.py", line 610, in grid_template
    return _track_size(style, name, values)
  File "/path/to/project/.venv/lib/python3.10/site-packages/weasyprint/css/computed_values.py", line 589, in _track_size
    elif value[0] == 'minmax()':
TypeError: 'FunctionBlock' object is not subscriptable

I tried main on weasyprint and I don't get this error. So I think I'll need to wait for weasyprint to make a new release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants