One other thing: if you have access to a decent AI coding engine, it can
probably do the necessary changes. Just feed it stackedwindrose.py and ask
it to make the necessary changes to go from V9.5 to V10.0

I've been using AI coding engines more and more and have been stunned by
just how effective they can be.

We're all obsolete.

-tk


On Sun, Aug 10, 2025 at 12:22 PM Tom Keffer <[email protected]> wrote:

> Your analysis is correct. You have two choices:
>
> 1. Downgrade to Pillow V9.5, which still uses textsize.
> 2. Make the necessary changes to stackedwindrose.py yourself.  This
> involves mostly substituting "textlength" everywhere you see "textsize",
> except that the latter returns a 2-way tuple of (width, length), while the
> former is just a simple scalar of width.
>
> -tk
>
>
>
> On Sun, Aug 10, 2025 at 11:52 AM 'Christian Peters' via weewx-user <
> [email protected]> wrote:
>
>> Hi all,
>>
>> I noticed that sadly gjr80 and all his great stuff on GIT for weewx seems
>> to be gone!?
>>
>> Now my Stacked Windrose Image Generator extension stops working on
>> Debian13 AND WEEX 5.1.0 with this error:
>>
>>  Caught unrecoverable exception in generator
>> 'user.stackedwindrose.StackedWindRoseImageGenerator'
>> 2025-08-10T20:42:38.140846+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****  type object 'ImageDraw' has no attribute
>> 'textsize'
>> 2025-08-10T20:42:38.143494+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****  Traceback (most recent call last):
>> 2025-08-10T20:42:38.143695+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****    File
>> "/usr/share/weewx/weewx/reportengine.py", line 248, in run
>> 2025-08-10T20:42:38.143873+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****      obj.start()
>> 2025-08-10T20:42:38.144061+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****      ~~~~~~~~~^^
>> 2025-08-10T20:42:38.144194+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****    File
>> "/usr/share/weewx/weewx/reportengine.py", line 465, in start
>> 2025-08-10T20:42:38.144371+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****      self.run()
>> 2025-08-10T20:42:38.144510+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****      ~~~~~~~~^^
>> 2025-08-10T20:42:38.144607+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****    File
>> "/etc/weewx/bin/user/stackedwindrose.py", line 228, in run
>> 2025-08-10T20:42:38.144717+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****      self.gen_images(self.gen_ts)
>> 2025-08-10T20:42:38.144835+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****      ~~~~~~~~~~~~~~~^^^^^^^^^^^^^
>> 2025-08-10T20:42:38.144944+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****    File
>> "/etc/weewx/bin/user/stackedwindrose.py", line 447, in gen_images
>> 2025-08-10T20:42:38.145061+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****      text_w, text_h =
>> self.draw.textsize("0 (100%)",
>> 2025-08-10T20:42:38.145204+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****
>> ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
>> 2025-08-10T20:42:38.145367+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****
>>  font=self.legend_font)
>> 2025-08-10T20:42:38.145489+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****
>>  ^^^^^^^^^^^^^^^^^^^^^^
>> 2025-08-10T20:42:38.145747+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****    File
>> "/etc/weewx/bin/user/stackedwindrose.py", line 822, in textsize
>> 2025-08-10T20:42:38.145951+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****      return
>> ImageDraw.ImageDraw.textsize(self, string, **options)
>> 2025-08-10T20:42:38.146199+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> 2025-08-10T20:42:38.146510+02:00 weewx weewxd[3909]: Traceback (most
>> recent call last):
>> 2025-08-10T20:42:38.148982+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****  AttributeError: type object 'ImageDraw'
>> has no attribute 'textsize'
>> 2025-08-10T20:42:38.149142+02:00 weewx weewxd[3909]:   File
>> "/usr/share/weewx/weewx/reportengine.py", line 248, in run
>> 2025-08-10T20:42:38.151192+02:00 weewx weewxd[3909]:     obj.start()
>> 2025-08-10T20:42:38.152532+02:00 weewx weewxd[3909]:     ~~~~~~~~~^^
>> 2025-08-10T20:42:38.153693+02:00 weewx weewxd[3909]:   File
>> "/usr/share/weewx/weewx/reportengine.py", line 465, in start
>> 2025-08-10T20:42:38.154853+02:00 weewx weewxd[3909]:     self.run()
>> 2025-08-10T20:42:38.156503+02:00 weewx weewxd[3909]:     ~~~~~~~~^^
>> 2025-08-10T20:42:38.157701+02:00 weewx weewxd[3909]:   File
>> "/etc/weewx/bin/user/stackedwindrose.py", line 228, in run
>> 2025-08-10T20:42:38.158983+02:00 weewx weewxd[3909]:
>> self.gen_images(self.gen_ts)
>> 2025-08-10T20:42:38.160126+02:00 weewx weewxd[3909]:
>> ~~~~~~~~~~~~~~~^^^^^^^^^^^^^
>> 2025-08-10T20:42:38.161340+02:00 weewx weewxd[3909]:   File
>> "/etc/weewx/bin/user/stackedwindrose.py", line 447, in gen_images
>> 2025-08-10T20:42:38.162448+02:00 weewx weewxd[3909]:     text_w, text_h =
>> self.draw.textsize("0 (100%)",
>> 2025-08-10T20:42:38.163580+02:00 weewx weewxd[3909]:
>>  ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
>> 2025-08-10T20:42:38.164748+02:00 weewx weewxd[3909]:
>>                     font=self.legend_font)
>> 2025-08-10T20:42:38.165938+02:00 weewx weewxd[3909]:
>>                     ^^^^^^^^^^^^^^^^^^^^^^
>> 2025-08-10T20:42:38.167060+02:00 weewx weewxd[3909]:   File
>> "/etc/weewx/bin/user/stackedwindrose.py", line 822, in textsize
>> 2025-08-10T20:42:38.168423+02:00 weewx weewxd[3909]:     return
>> ImageDraw.ImageDraw.textsize(self, string, **options)
>> 2025-08-10T20:42:38.169717+02:00 weewx weewxd[3909]:
>>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> 2025-08-10T20:42:38.170863+02:00 weewx weewxd[3909]: AttributeError: type
>> object 'ImageDraw' has no attribute 'textsize'
>> 2025-08-10T20:42:38.172150+02:00 weewx weewxd[3909]: ERROR
>> weewx.reportengine:         ****  Generator terminated
>>
>> Seems to be because some changes made Pillow 10.
>> My version of stackewindrose extension is Version: 3.0., Date: 7 June 2020
>>
>> Has someone forked it or patched this to get it back working with Pillow
>> 10.
>> Sadly I don't have any skills regarding python. Or can I downgrade to
>> Vers 9.x....!?
>>
>>
>> Thansk in advance!
>>
>> Regards,
>>
>> Christain
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "weewx-user" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion visit
>> https://groups.google.com/d/msgid/weewx-user/9ce297c8-4b76-497c-9faf-8d0d1d4ab2ffn%40googlegroups.com
>> <https://groups.google.com/d/msgid/weewx-user/9ce297c8-4b76-497c-9faf-8d0d1d4ab2ffn%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/weewx-user/CAPq0zECQy6Fwk12bLFd0LLvSgZ7DZh-OUCJzzyVbrOAGpj0idA%40mail.gmail.com.

Reply via email to