Index: Flask-Security-Too-5.1.1/flask_security/core.py =================================================================== --- Flask-Security-Too-5.1.1.orig/flask_security/core.py +++ Flask-Security-Too-5.1.1/flask_security/core.py @@ -1579,7 +1579,7 @@ class Security: and "authenticator" in cv("TWO_FACTOR_ENABLED_METHODS", app=app) ) if need_qrcode: - self._check_modules("qrcode", "TWO_FACTOR or UNIFIED_SIGNIN") + self._check_modules("pyqrcodeng", "TWO_FACTOR or UNIFIED_SIGNIN") need_sms = ( cv("UNIFIED_SIGNIN", app=app) Index: Flask-Security-Too-5.1.1/flask_security/totp.py =================================================================== --- Flask-Security-Too-5.1.1.orig/flask_security/totp.py +++ Flask-Security-Too-5.1.1/flask_security/totp.py @@ -140,15 +140,11 @@ class Totp: .. versionadded:: 4.0.0 """ try: - import qrcode - import qrcode.image.svg + import pyqrcodeng - image = qrcode.make( - self.get_totp_uri(username, totp), - image_factory=qrcode.image.svg.SvgImage, - ) + image = pyqrcodeng.create(self.get_totp_uri(username, totp)) with io.BytesIO() as virtual_file: - image.save(virtual_file) + image.svg(virtual_file, scale=1) image_as_str = base64.b64encode(virtual_file.getvalue()).decode("ascii") return f"data:image/svg+xml;base64,{image_as_str}"