[reportlab-users] Undeclared dependency on chardet
Matt Folwell
mjf at pearson.co.uk
Thu Nov 9 08:18:10 EST 2023
reportlab/lib/rparsexml.py contains a smartDecode class, which tries to
import chardet at runtime, but reportlab doesn't declare a dependency on
chardet, so that gives an error.
Also smartDecode contains what look suspiciously like debugging print() calls.
It first appeared in Reportlab 3.6.12
rparsexml.py is only used by platypus/para.py and I realise para.py doesn't
get a lot of attention, but it would be nice if it worked in a default
installation, either by declaring the dependency, or reverting rparsexml.py
to a version that didn't try to guess at an encoding.
Minimal failing example (the paragraph content has to contain a & or < to
trigger it):
>>> from reportlab.platypus.para import Paragraph
>>> from reportlab.lib.styles import ParagraphStyle
>>> style = ParagraphStyle("trivial")
>>> Paragraph("&", style)
initial
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File
"/home/mjf/.virtualenvs/test/lib/python3.11/site-packages/reportlab/platypus/para.py",
line 2062, in Paragraph
parsedpara = rparsexml.parsexmlSimple(text,entityReplacer=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/home/mjf/.virtualenvs/test/lib/python3.11/site-packages/reportlab/lib/rparsexml.py",
line 115, in parsexmlSimple
(result, cursor) = parsexml0(xmltext,entityReplacer=entityReplacer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/home/mjf/.virtualenvs/test/lib/python3.11/site-packages/reportlab/lib/rparsexml.py",
line 163, in parsexml0
xmltext = smartDecode(xmltext)
^^^^^^^^^^^^^^^^^^^^
File
"/home/mjf/.virtualenvs/test/lib/python3.11/site-packages/reportlab/lib/rparsexml.py",
line 84, in __call__
import chardet
ModuleNotFoundError: No module named 'chardet'
--
Matt Folwell
More information about the reportlab-users
mailing list