lincolnloop / python-qrcode

Python QR Code image generator
https://pypi.python.org/pypi/qrcode
Other
4.27k stars 662 forks source link

TypeError: Argument must be bytes or unicode, got 'list' when making svg #290

Closed hoIIer closed 1 year ago

hoIIer commented 1 year ago

The following previously working code just started breaking with no changes on my end:

import qrcode
import qrcode.image.svg

def make_qr(code_id):
    qr = qrcode.QRCode(image_factory=qrcode.image.svg.SvgPathImage)
    qr.add_data('https://foo.com?code={code_id}')
    qr.make(fit=True)
    img = qr.make_image()

code_id is a uuid string e.g. code_id = 'eefea63f-ca20-478a-b911-3303ada87832'

stack trace:

>>> img = qr.make_image()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/main.py", line 365, in make_image
    im = image_factory(
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/image/svg.py", line 145, in __init__
    super().__init__(*args, **kwargs)
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/image/svg.py", line 27, in __init__
    super().__init__(*args, **kwargs)
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/image/base.py", line 139, in __init__
    super().__init__(*args, **kwargs)
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/image/base.py", line 29, in __init__
    self._img = self.new_image(**kwargs)
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/image/svg.py", line 63, in new_image
    return self._svg(**kwargs)
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/image/svg.py", line 151, in _svg
    return super()._svg(viewBox=viewBox, **kwargs)
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/image/svg.py", line 96, in _svg
    svg = super()._svg(tag=tag, **kwargs)
  File "/Users/bob/Projects/burgers/starlette-backendapi/ve/lib/python3.9/site-packages/qrcode/image/svg.py", line 69, in _svg
    return ET.Element(
  File "src/lxml/etree.pyx", line 3039, in lxml.etree.Element
  File "src/lxml/apihelpers.pxi", line 131, in lxml.etree._makeElement
  File "src/lxml/apihelpers.pxi", line 119, in lxml.etree._makeElement
  File "src/lxml/apihelpers.pxi", line 318, in lxml.etree._initNodeAttributes
  File "src/lxml/apihelpers.pxi", line 335, in lxml.etree._addAttributeToNode
  File "src/lxml/apihelpers.pxi", line 1539, in lxml.etree._utf8
TypeError: Argument must be bytes or unicode, got 'list'