lincolnloop / python-qrcode

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

best_fit raises ValueError(invalid version) instead of DataOverflowError #322

Open guusbertens opened 1 year ago

guusbertens commented 1 year ago

The main branch currently raises a ValueError if a too large input is provided:

(qrcode) guube@xavier:~/qrcode$ qr < ../lorumipsum8000.txt 
Traceback (most recent call last):
  File "/home/guube/qrcode/bin/qr", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/guube/qrcode/python-qrcode/qrcode/console_scripts.py", line 119, in main
    qr.print_ascii(tty=not opts.ascii)
  File "/home/guube/qrcode/python-qrcode/qrcode/main.py", line 306, in print_ascii
    self.make()
  File "/home/guube/qrcode/python-qrcode/qrcode/main.py", line 160, in make
    self.best_fit(start=self.version)
                        ^^^^^^^^^^^^
  File "/home/guube/qrcode/python-qrcode/qrcode/main.py", line 108, in version
    self.best_fit()
  File "/home/guube/qrcode/python-qrcode/qrcode/main.py", line 232, in best_fit
    self.version = bisect_left(
    ^^^^^^^^^^^^
  File "/home/guube/qrcode/python-qrcode/qrcode/main.py", line 115, in version
    util.check_version(value)
  File "/home/guube/qrcode/python-qrcode/qrcode/util.py", line 185, in check_version
    raise ValueError(f"Invalid version (was {version}, expected 1 to 40)")
ValueError: Invalid version (was 41, expected 1 to 40)

This should be a DataOverflowError.