Skip to content

Failing test with python 3.10 #51

@dvzrv

Description

@dvzrv

Hi! We're currently rebuilding all packages against python 3.10 on Arch Linux.

Upon rebuild seqdiag 2.0.0 fails on the following:

======================================================================
ERROR: test_setup_inline_svg_is_true_with_multibytes (test_rst_directives.TestRstDirectives)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/build/seqdiag/src/seqdiag-2.0.0/src/seqdiag/tests/test_rst_directives.py", line 185, in test_setup_inline_svg_is_true_with_multibytes
    doctree = publish_doctree(text)
  File "/usr/lib/python3.10/site-packages/docutils/core.py", line 482, in publish_doctree
    output = pub.publish(enable_exit_status=enable_exit_status)
  File "/usr/lib/python3.10/site-packages/docutils/core.py", line 217, in publish
    self.document = self.reader.read(self.source, self.parser,
  File "/usr/lib/python3.10/site-packages/docutils/readers/__init__.py", line 71, in read
    self.parse()
  File "/usr/lib/python3.10/site-packages/docutils/readers/__init__.py", line 77, in parse
    self.parser.parse(self.input, document)
  File "/usr/lib/python3.10/site-packages/docutils/parsers/rst/__init__.py", line 191, in parse
    self.statemachine.run(inputlines, document, inliner=self.inliner)
  File "/usr/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 170, in run
    results = StateMachineWS.run(self, input_lines, input_offset,
  File "/usr/lib/python3.10/site-packages/docutils/statemachine.py", line 241, in run
    context, next_state, result = self.check_line(
  File "/usr/lib/python3.10/site-packages/docutils/statemachine.py", line 459, in check_line
    return method(match, context, next_state)
  File "/usr/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2342, in explicit_markup
    nodelist, blank_finish = self.explicit_construct(match)
  File "/usr/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2354, in explicit_construct
    return method(self, expmatch)
  File "/usr/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2096, in directive
    return self.run_directive(
  File "/usr/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2146, in run_directive
    result = directive_instance.run()
  File "/usr/lib/python3.10/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator
    return fn(*args)
  File "/usr/lib/python3.10/site-packages/blockdiag/utils/rst/directives.py", line 178, in run
    results[0] = self.node2image(node, diagram)
  File "/usr/lib/python3.10/site-packages/blockdiag/utils/rst/directives.py", line 239, in node2image
    return self.node2image_inline_svg(node, diagram)
  File "/usr/lib/python3.10/site-packages/blockdiag/utils/rst/directives.py", line 270, in node2image_inline_svg
    content = drawer.save(size)
  File "/usr/lib/python3.10/site-packages/blockdiag/drawer.py", line 188, in save
    return self.drawer.save(self.filename, size, self.format)
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save
    self._run()
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run
    method(self.target, *args, **kwargs)
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea
    lines = self.textfolder(box, string, font, **kwargs)
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get
    return HorizontalTextFolder(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__
    self._result = self._lines()
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines
    for folded in splittext(self, line, maxwidth, measure):
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext
    textsize = metrics.textsize(text[0:i])
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize
    textsize = self.drawer.textlinesize(text, self.font)
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func
    fn.cache[key] = fn(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize
    return self._pil_drawer.textlinesize(string, font)
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func
    fn.cache[key] = fn(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize
    size = self.draw.textsize(string, font=None)
  File "/usr/lib/python3.10/site-packages/PIL/ImageDraw.py", line 563, in textsize
    return font.getsize(text, direction, features, language, stroke_width)
  File "/usr/lib/python3.10/site-packages/PIL/ImageFont.py", line 129, in getsize
    return self.font.getsize(text)
UnicodeEncodeError: 'latin-1' codec can't encode character '\u3042' in position 0: ordinal not in range(256)
-------------------- >> begin captured logging << --------------------
PIL.PngImagePlugin: DEBUG: STREAM b'IHDR' 16 13
PIL.PngImagePlugin: DEBUG: STREAM b'IDAT' 41 1216
--------------------- >> end captured logging << ---------------------

----------------------------------------------------------------------
Ran 88 tests in 0.502s

It appears that the default font used for the operation can not render unicode (see also python-pillow/Pillow#2779).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions