Pillow 10.0.0 Released (2023-07-01) BREAKS WeeWX V5.0.0b5

121 views
Skip to first unread message

pa...@pauland.net

unread,
Jul 1, 2023, 6:11:11 PM7/1/23
to weewx-development
New test install using pip on Debian 12.
python3 -m pip install weewx
This installed Pillow 10.0.0 which was just released (2023-07-01)
WeeWX dies with  unrecoverable exception in generator'weewx.imagegenerator.ImageGenerator'

Log:
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Initializing weewx version 5.0.0b5
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Using Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Located at /home/panders/weewx-venv/bin/python3
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Platform Linux-6.1.0-9-arm64-aarch64-with-glibc2.36
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Locale is 'en_US.UTF-8'
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Entry path: /home/panders/weewx-venv/lib/python3.11/site-packages/weewxd.py
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Using configuration file /home/panders/weewx-data/weewx.conf
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Debug is 0
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: Loading station type Simulator (weewx.drivers.simulator)
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: StdConvert target unit is 0x1
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.wxservices: StdWXCalculate will use data binding wx_binding
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: Archive will use data binding wx_binding
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: Record generation will be attempted in 'hardware'
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: Using archive interval of 300 seconds (specified in weewx configuration)
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.restx: StationRegistry: Registration not requested.
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.restx: Wunderground: Posting not enabled.
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.restx: PWSweather: Posting not enabled.
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.restx: CWOP: Posting not enabled.
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.restx: WOW: Posting not enabled.
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.restx: AWEKAS: Posting not enabled.
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: 'pyephem' detected, extended almanac data is available
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO __main__: Starting up weewx version 5.0.0b5
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: Clock error is -0.10 seconds (positive is fast)
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.manager: Starting backfill of daily summaries
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.manager: Daily summaries up to date
Jul 01 17:44:05 rpi4dev python3[5337]: weewx[5337] INFO weewx.engine: Starting main packet loop.
Jul 01 17:45:15 rpi4dev python3[5337]: weewx[5337] INFO weewx.manager: Added record 2023-07-01 17:45:00 EDT (1688247900) to database 'weewx.sdb'
Jul 01 17:45:15 rpi4dev python3[5337]: weewx[5337] INFO weewx.manager: Added record 2023-07-01 17:45:00 EDT (1688247900) to daily summary in 'weewx.sdb'
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 1.78 seconds
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.imagegenerator.ImageGenerator'
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****  module 'PIL.ImageFont' has no attribute 'LAYOUT_BASIC'
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weewx/reportengine.py", line 196, in run
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****      obj.start()
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weewx/reportengine.py", line 384, in start
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****      self.run()
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weewx/imagegenerator.py", line 37, in run
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****      self.gen_images(self.gen_ts)
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weewx/imagegenerator.py", line 109, in gen_images
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****      image = plot.render()
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****              ^^^^^^^^^^^^^
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weeplot/genplot.py", line 208, in render
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****      self._renderBottom(draw)
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weeplot/genplot.py", line 407, in _renderBottom
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****      bottom_label_font = weeplot.utilities.get_font_handle(self.bottom_label_font_path,
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weeplot/utilities.py", line 581, in get_font_handle
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****      layout_engine=ImageFont.LAYOUT_BASIC, # See note 2 above
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****                    ^^^^^^^^^^^^^^^^^^^^^^
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****  AttributeError: module 'PIL.ImageFont' has no attribute 'LAYOUT_BASIC'
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] ERROR weewx.reportengine:         ****  Generator terminated
Jul 01 17:45:17 rpi4dev python3[5337]: weewx[5337] INFO weewx.reportengine: Copied 5 files to /var/www/html

Have another instance of WeeWX V5.0.0b5 running on Debian 12 which has Pillow9.5.0. 
If I pip uninstall Pillow 10.0.0
Then pip install Pillow==9.5.0 the problem is resolved.
Crazy you can't trust upstream packages to  not introducebreaking changes.

Paul

Joel Bion

unread,
Jul 1, 2023, 6:18:24 PM7/1/23
to pa...@pauland.net, weewx-development
Is it “PIL.ImageFont.Layout.BASIC” now?
On Jul 1, 2023, at 3:11 PM, pa...@pauland.net <pa...@pauland.net> wrote:

New test install using pip on Debian 12.
--
You received this message because you are subscribed to the Google Groups "weewx-development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-developm...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-development/dae76d26-ace5-4023-ad71-a320984d5502n%40googlegroups.com.

Tom Keffer

unread,
Jul 1, 2023, 6:24:27 PM7/1/23
to pa...@pauland.net, weewx-development
Thanks for the heads up!

Recently, the "Pillow people" have been doing a lot of this. This backwards incompatibility was mentioned in 9.1.0, three years ago. Functionality hasn't changed, they've just "cleaned up" their API.

And made it much harder to support multiple versions of Pillow.



Tom Keffer

unread,
Jul 1, 2023, 6:25:30 PM7/1/23
to Joel Bion, pa...@pauland.net, weewx-development


On Sat, Jul 1, 2023 at 3:18 PM Joel Bion <jpb...@gmail.com> wrote:
Is it “PIL.ImageFont.Layout.BASIC” now?

Yes and no. It would fix the problem with V10.0, but it would break for older versions of Python. There are lots of Debian repositories out there that are still on Pillow 8.x and even earlier!

-tk

Tom Keffer

unread,
Jul 2, 2023, 12:00:28 PM7/2/23
to Joel Bion, pa...@pauland.net, weewx-development
Fixed in commit 0d30285, to appear in V5.0.0b7.

-tk

Paul R Anderson

unread,
Jul 2, 2023, 12:33:11 PM7/2/23
to Tom Keffer, Joel Bion, weewx-development
Two issues
1. Looks like you forgot to update weewx.config version string, which is why log shows 5.0.0b6 even though 5.0.0b7 is actually being run.

(weewx-venv) panders@rpi4dev:~$ pip list
Package            Version
------------------ --------
certifi            2023.5.7
charset-normalizer 3.1.0
configobj          5.0.8
CT3                3.3.1
ephem              4.1.4
geojson            3.0.1
idna               3.4
jq                 1.4.1
paho-mqtt          1.6.1
Pillow             10.0.0
pip                23.1.2
PyMySQL            1.1.0
pyserial           3.5
pyusb              1.2.1
requests           2.31.0
setuptools         66.1.1
six                1.16.0
tabulate           0.9.0
urllib3            2.0.3
weewx              5.0.0b7

2. WeeWX Still dies
log:
Jul 02 12:15:52 rpi4dev python3[6011]: weewx[6011] INFO __main__: Starting up weewx version 5.0.0b6
Jul 02 12:15:52 rpi4dev python3[6011]: weewx[6011] INFO weewx.engine: Clock error is -2.89 seconds (positive is fast)
Jul 02 12:15:52 rpi4dev python3[6011]: weewx[6011] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
Jul 02 12:15:52 rpi4dev python3[6011]: weewx[6011] INFO weewx.manager: Starting backfill of daily summaries
Jul 02 12:15:52 rpi4dev python3[6011]: weewx[6011] INFO weewx.manager: Daily summaries up to date
Jul 02 12:15:53 rpi4dev python3[6011]: weewx[6011] INFO weewx.manager: Added record 2023-07-02 12:15:00 EDT (1688314500) to database 'weewx.sdb'
Jul 02 12:15:53 rpi4dev python3[6011]: weewx[6011] INFO weewx.manager: Added record 2023-07-02 12:15:00 EDT (1688314500) to daily summary in 'weewx.sdb'
Jul 02 12:15:53 rpi4dev python3[6011]: weewx[6011] INFO weewx.engine: Starting main packet loop.
Jul 02 12:15:53 rpi4dev python3[6011]: weewx[6011] INFO user.mqtt: client established for mqtt://192.168.1.5:1883/
Jul 02 12:15:55 rpi4dev python3[6011]: weewx[6011] INFO user.gw1000: Skipping lightning count of 0: no last count
Jul 02 12:20:17 rpi4dev python3[6011]: weewx[6011] INFO weewx.manager: Added record 2023-07-02 12:20:00 EDT (1688314800) to database 'weewx.sdb'
Jul 02 12:20:17 rpi4dev python3[6011]: weewx[6011] INFO weewx.manager: Added record 2023-07-02 12:20:00 EDT (1688314800) to daily summary in 'weewx.sdb'
Jul 02 12:20:17 rpi4dev python3[6011]: weewx[6011] INFO weewx.cheetahgenerator: Generated 1 files for report TemperatureMapReport_BACKUP_NOAA_API_Format in 0.05 seconds
Jul 02 12:20:17 rpi4dev python3[6011]: weewx[6011] INFO weewx.cheetahgenerator: Generated 2 files for report LocalReport in 0.25 seconds
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] INFO weewx.imagegenerator: Generated 9 images for report LocalReport in 0.91 seconds
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'user.stackedwindrose.StackedWindRoseImageGenerator'
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****  type object 'ImageDraw' has no attribute 'textsize'
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weewx/reportengine.py", line 196, in run
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****      obj.start()
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-venv/lib/python3.11/site-packages/weewx/reportengine.py", line 384, in start
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****      self.run()
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-data/bin/user/stackedwindrose.py", line 231, in run
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****      self.gen_images(self.gen_ts)
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-data/bin/user/stackedwindrose.py", line 452, in gen_images
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****      text_w, text_h = self.draw.textsize("0 (100%)",
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****    File "/home/panders/weewx-data/bin/user/stackedwindrose.py", line 840, in textsize
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****      return ImageDraw.ImageDraw.textsize(self, string, **options)
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****  AttributeError: type object 'ImageDraw' has no attribute 'textsize'
Jul 02 12:20:18 rpi4dev python3[6011]: weewx[6011] ERROR weewx.reportengine:         ****  Generator terminated
Jul 02 12:20:23 rpi4dev python3[6011]: weewx[6011] INFO weewx.cheetahgenerator: Generated 22 files for report PaulandReport in 4.24 seconds
Jul 02 12:20:23 rpi4dev python3[6011]: weewx[6011] INFO weewx.imagegenerator: Generated 12 images for report PaulandReport in 0.86 seconds
Jul 02 12:20:23 rpi4dev python3[6011]: weewx[6011] INFO weewx.reportengine: Copied 5 files to /var/www/html
 
Paul 

Paul R Anderson

unread,
Jul 2, 2023, 12:34:49 PM7/2/23
to Tom Keffer, Joel Bion, weewx-development
Sorry, never mind.
Error is with Gary's .stackedwindrose.StackedWindRoseImageGenerator'

Paul
Reply all
Reply to author
Forward
0 new messages