@Greg - yes I did uncomment that line, a long time ago as the original 
installation (2020???) was working well.
I've also tried updating WeeWx to V5.2.0 to see if that made a difference - 
nope.
For fun, I've comment out all of the __getattr__ function and the error 
message is now:

Caught unrecoverable exception in generator 
'weewx.cheetahgenerator.CheetahGenerator'
****  'XmlFileHelper' object has no attribute 'root'
****  Traceback (most recent call last):
****    File 
"/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/reportengine.py", 
line 248, in run
****      obj.start()
****    File 
"/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/reportengine.py", 
line 465, in start
****      self.run()
****    File 
"/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", 
line 163, in run
****      self.init_extensions(gen_dict[section_name])
****    File 
"/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", 
line 196, in init_extensions
****      self.search_list_objs.append(klass(self))
****    File "/home/weewx/bin/user/aussearch.py", line 253, in __init__
****      generator.converter)
****    File "/home/weewx/bin/user/aussearch.py", line 422, in __init__
****      if file_stale and self.root is not None:
****  AttributeError: 'XmlFileHelper' object has no attribute 'root'
****  Generator terminated

That error had me intrigued so I went back to the 'XmlFileHelper' class and 
put a 'log.error' at the start of the __init__ function to print out the 
file name it was trying to process. the result is:

ERROR user.aussearch: >>> xml_file is 
ftp://ftp.bom.gov.au/anon/gen/fwo/IDV10753.xml
ERROR user.aussearch: >>> xml_file is 
ftp://ftp.bom.gov.au/anon/gen/fwo/IDV10751.xml
ERROR user.aussearch: >>> xml_file is 
http://www.bom.gov.au/fwo/IDZ00059.warnings_vic.xml
ERROR weewx.reportengine: Caught unrecoverable exception in generator 
'weewx.cheetahgenerator.CheetahGenerator'
ERROR weewx.reportengine:         ****  'XmlFileHelper' object has no 
attribute 'root'
ERROR weewx.reportengine:         ****  Traceback (most recent call last):
ERROR weewx.reportengine:         ****    File 
"/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/reportengine.py", 
line 248, in run
ERROR weewx.reportengine:         ****      obj.start()
ERROR weewx.reportengine:         ****    File 
"/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/reportengine.py", 
line 465, in start
ERROR weewx.reportengine:         ****      self.run()
ERROR weewx.reportengine:         ****    File 
"/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", 
line 163, in run
ERROR weewx.reportengine:         ****     
 self.init_extensions(gen_dict[section_name])
ERROR weewx.reportengine:         ****    File 
"/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py", 
line 196, in init_extensions
ERROR weewx.reportengine:         ****     
 self.search_list_objs.append(klass(self))
ERROR weewx.reportengine:         ****    File 
"/home/weewx/bin/user/aussearch.py", line 253, in __init__
ERROR weewx.reportengine:         ****      generator.converter)
ERROR weewx.reportengine:         ****    File 
"/home/weewx/bin/user/aussearch.py", line 424, in __init__
ERROR weewx.reportengine:         ****      if file_stale and self.root is 
not None:
ERROR weewx.reportengine:         ****  AttributeError: 'XmlFileHelper' 
object has no attribute 'root'
ERROR weewx.reportengine:         ****  Generator terminated

I assume the error occurred in the last file listed but that file does 
exist on the web site:

<rss xmlns:atom="http://www.w3.org/2005/Atom"; version="2.0">
<channel>
<title>Weather Warnings for Victoria. Issued by the Australian Bureau of 
Meteorology</title>
<link>http://www.bom.gov.au/fwo/IDZ00059.warnings_vic.xml</link>
<atom:link href="http://www.bom.gov.au/fwo/IDZ00059.warnings_vic.xml"; 
rel="self" type="application/rss+xml"/>
<description>Current weather warnings for Victoria, Australia including 
strong wind, gale, storm force and hurricane force wind warnings; tsunami; 
damaging waves; abnormally high tides; tropical cyclones; severe 
thunderstorms; severe weather; fire weather; flood; frost; driving; 
bushwalking; sheep graziers and other agricultural warnings.</description>
<language>en-au</language>
<copyright>Copyright: (C) Copyright Commonwealth of Australia 2010, Bureau 
of Meteorology (ABN 92637 533532), see 
http://www.bom.gov.au/other/copyright.shtml for terms and conditions of 
reuse.</copyright>
<webMaster>[email protected] (Help desk)</webMaster>
<pubDate>Thu, 12 Feb 2026 08:27:29 GMT</pubDate>
<lastBuildDate>Thu, 12 Feb 2026 08:27:29 GMT</lastBuildDate>
<generator>Australian Bureau of Meteorology</generator>
<ttl>10</ttl>
<image>
<url>http://www.bom.gov.au/images/bom_logo_inline.gif</url>
<title>Weather Warnings for Victoria. Issued by the Australian Bureau of 
Meteorology</title>
<link>http://www.bom.gov.au/fwo/IDZ00059.warnings_vic.xml</link>
</image>
<item>
<title>12/16:15 EDT Marine Wind Warning Summary for Victoria</title>
<link>http://www.bom.gov.au/vic/warnings/marinewind.shtml</link>
<pubDate>Thu, 12 Feb 2026 05:15:17 GMT</pubDate>
<guid 
isPermaLink="false">http://www.bom.gov.au/vic/warnings/marinewind.shtml</guid>
</item>
</channel>
</rss>

The first 2 files mentioned above are in the weewx-cache/aussearch folder 
but the 3rd one (the 'VIC_WARNINGS' in the skins.conf file) isn't. 
Therefore the file will be marked as 'stale' (line 409) and an attempt is 
made to download the file. However (changing a few of the 'log.debug' to 
'log.error' calls) the 'FileFetch.fetch()' fails with:

ERROR user.aussearch: >>>> aussearch: bad file download xml file 
http://www.bom.gov.au/fwo/IDZ00059.warnings_vic.xml: Bad response 301 for 
url http://www.bom.gov.au/fwo/IDZ00059.warnings_vic.xml

which is caught in the 'except' clause. The problem is that this completely 
bypasses any place where 'self.root' is defined. The solution is to add a 
'self.root = None' just below the 'if file_stale: where it tries to read 
the file.
The same is true for the 'JsonFileHelper' class.
I don't know why the files are not being downloaded (the '301' error 
response) but at least this stops the reporter crashing.

(Apologies for the length of this post but I was working through the issue 
as I wrote it.)
On Thursday, 12 February 2026 at 11:35:00 am UTC+11 Greg from Oz wrote:

> Did you uncomment this bit in the skin.conf?
>
> # To use the aussearch extensions in this skin
>     # you need to have downloaded Auusearch user extension as per
>     # 
> https://github.com/dcapslock/weewx-responsive-skin/wiki/Australian-%27Search%27-Extensions
>     # end then uncomment the line below
>     # search_list_extensions = user.aussearch.ausutils
>
>
> On Thursday, 12 February 2026 at 11:29:07 UTC+11 Greg from Oz wrote:
>
>> The aussearch.py dated 4th Feb is the same as I am using.
>> I have my weewx installed via pip and is using python 3.13. (don't know 
>> if that makes a difference or not)
>>
>> Under skins/Responsive I have:
>> ├── aussearch
>> ├── DATA
>> ├── font
>> ├── icons
>> ├── lang
>> ├── NOAA
>> └── TEST
>>
>> in aussearch I have:
>> .rw-r--r--  649k root 2026-02-12 09:51 IDN11060.xml
>> .rw-r--r--  7.8k root 2026-02-12 09:55 IDN11113.xml
>> .rw-r--r--  129k root 2026-02-12 11:11 IDN60801.95762.json
>> .rw-r--r--  2.2k root 2026-02-12 11:11 IDZ00054.warnings_nsw.xml
>>
>> And they are being updated as you can tell by the time stamp.
>>
>> My site is here:
>> https://weather.ubeaut.work/
>>
>>
>> On Thursday, 12 February 2026 at 11:18:22 UTC+11 Carlingford Weather 
>> wrote:
>>
>>> Check if you have old cache files the specified or default aussearch 
>>> cache location. 
>>>
>>> ------------------------------
>>> *From:* [email protected] <[email protected]> on behalf 
>>> of Susan Mackay <[email protected]>
>>> *Sent:* Thursday, February 12, 2026 11:13:27 AM
>>>
>>> *To:* weewx-user <[email protected]>
>>> *Subject:* Re: [weewx-user] Re: Weewx Responsive Skin - Aus Forecast 
>>> Extension
>>> OK - now I'm properly confused. 
>>> I deleted all 'aussearch.py' files and copied the downloaded file into 
>>> bin/user. (I know that the Python system found it as it created a 
>>> corresponding .pyc file in __pycache__). However the error was the same.
>>> So I deleted that and downloaded the file again from 
>>> https://github.com/Lint-Free-Technology/weewx-responsive-skin/blob/master/Aus/aussearch.py.
>>>  
>>> Github shows that the file was edited 2 weeks ago so I take it that this is 
>>> the latest version.
>>> Again the same error.
>>> So I edited the file to include a couple of print statements just before 
>>> the reference to 'self.root_node', one of which tried to print out the 
>>> value. The recursion occurred on that print statement.
>>> Am I copying the correct 'aussearch.py' version and, if not, where is it?
>>> Susan (VK3ANZ)
>>>
>>> On Wednesday, 11 February 2026 at 8:47:21 pm UTC+11 Greg from Oz wrote:
>>>
>>> The new aussearch.py has to go into where your other user scripts are. 
>>> Like bin/user folder in the weewx structure.
>>>
>>> On Wednesday, 11 February 2026 at 20:34:13 UTC+11 Susan Mackay wrote:
>>>
>>> Thanks for the pointers. 
>>> I downloaded the .zip file (as above) and expanded it. I then copied the 
>>> 'Aus' and 'Responsive' directories into the 'skins' folder.
>>> I edited the skins.conf file to refer to my location (basically I copied 
>>> the information from the old version of the file, adjusting as required).
>>> However I now get the error:
>>>
>>> Caught unrecoverable exception in generator 
>>> 'weewx.cheetahgenerator.CheetahGenerator'
>>> ****  maximum recursion depth exceeded
>>> ****  Traceback (most recent call last):
>>> ****    File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/reportengine.py", 
>>> line 220, in run
>>> ****      obj.start()
>>> ****    File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/reportengine.py", 
>>> line 409, in start
>>> ****      self.run()
>>> ****    File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py",
>>>  
>>> line 163, in run
>>> ****      self.init_extensions(gen_dict[section_name])
>>> ****    File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weewx/cheetahgenerator.py",
>>>  
>>> line 196, in init_extensions
>>> ****      self.search_list_objs.append(klass(self))
>>> ****    File "/home/weewx/bin/user/aussearch.py", line 253, in __init__
>>> ****      generator.converter)
>>> ****    File "/home/weewx/bin/user/aussearch.py", line 422, in __init__
>>> ****      if file_stale and self.root is not None:
>>> ****    File "/home/weewx/bin/user/aussearch.py", line 439, in 
>>> __getattr__
>>> ****      if self.root_node is not None:
>>> ****    File "/home/weewx/bin/user/aussearch.py", line 439, in 
>>> __getattr__
>>> ****      if self.root_node is not None:
>>> ****    File "/home/weewx/bin/user/aussearch.py", line 439, in 
>>> __getattr__
>>> ****      if self.root_node is not None:
>>> ****    [Previous line repeated 491 more times]
>>> ****  RecursionError: maximum recursion depth exceeded
>>> ****  Generator terminated
>>>
>>> The relevant code (from Line 433) of aussearch.py is
>>>
>>>     def __getattr__(self, child_or_attrib):
>>>         # This is to get around bugs in the Python version of Cheetah's 
>>> namemapper:
>>>         if child_or_attrib in ['__call__', 'has_key']:
>>>             print("aussearch: XmlFileHelper file: %s, __getattr__ called 
>>> for %s" % (self.xml_file, child_or_attrib))
>>>             raise AttributeError
>>>         
>>>         if self.root_node is not None:
>>>             return getattr(self.root_node, child_or_attrib)
>>>         else:
>>>             raise AttributeError
>>>
>>> with line 439 being:
>>>
>>>         if self.root_node is not None:
>>>
>>> My 'guess' is that the attempt to get "self.root_node" is recursively 
>>> calling the "__getattr__" function
>>>
>>> Any idea what is hapening here?
>>> On Wednesday, 11 February 2026 at 10:31:01 am UTC+11 Greg from Oz wrote:
>>>
>>> That's probably why I installed it manually......:)
>>> It was a long time ago I installed it.
>>> On Wednesday, 11 February 2026 at 10:16:49 UTC+11 Glenn McKechnie wrote:
>>>
>>> Susan,
>>>
>>> Just had a quick look at the origin files (both sites) and the error 
>>> message is because there is no install.py file within the tree.
>>> ie:- It doesn't install using the weectl stanza, it's not structured 
>>> that way. 
>>>
>>> It needs to be installed manually.
>>> The skin directory is "Responsive". Place that with in the weewx skin 
>>> directory and manually edit weewx.conf to point to it etc.
>>>
>>>
>>> Cheers
>>>  Glenn (VK3GLN)
>>>
>>> Various WeeWx addons at
>>> https://github.com/glennmckechnie
>>>
>>>
>>> On Wed, 11 Feb 2026 at 10:09, Greg Reive <[email protected]> wrote:
>>>
>>> I think if you download the zip file and install the extension it might 
>>> work? It won't like the .git extension filename.
>>> I manually installed mine.
>>>
>>> On Wed, 11 Feb 2026 at 10:04, Susan Mackay <[email protected]> wrote:
>>>
>>> (I think my question follows on from Greg's answer - apologies if not) 
>>> I have just tried to reinstall the Responsive skin using Greg's link 
>>> from above.
>>> I'm using Weewx 5.0.1 (and yes, i know there are more recent versions) 
>>> on a Raspberry Pi running Buster.
>>> I've tried 2 ways and get 2 separate errors.
>>>
>>> First:
>>>
>>> (weewx-venv) xxxx:~/weewx-venv $ ./bin/weectl extension install 
>>> https://github.com/Lint-Free-Technology/weewx-responsive-skin.git
>>> Using configuration file /home/weewx/weewx.conf
>>> Install extension '
>>> https://github.com/Lint-Free-Technology/weewx-responsive-skin.git' 
>>> (y/n)? y
>>> Traceback (most recent call last):
>>>   File "./bin/weectl", line 10, in <module>
>>>     sys.exit(main())
>>>   File "/home/pi/weewx-venv/lib/python3.7/site-packages/weectl.py", line 
>>> 66, in main
>>>     namespace.func(namespace)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weectllib/__init__.py", 
>>> line 121, in dispatch
>>>     namespace.action_func(config_dict, namespace)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weectllib/extension_cmd.py",
>>>  
>>> line 116, in install_extension
>>>     ext.install_extension(namespace.source, no_confirm=namespace.yes)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weecfg/extension.py", line 
>>> 124, in install_extension
>>>     raise IOError(f"Unknown extension type found at '{extension_path}'")
>>> OSError: Unknown extension type found at '
>>> https://github.com/Lint-Free-Technology/weewx-responsive-skin.git'
>>> I think this may be more related to the WeeWx not recognising the .git 
>>> extension but I'm not sure.
>>> I copied the zip file to the Pi and got the Second error which is:
>>>
>>> (weewx-venv) xxxx:~/weewx-venv $ ./bin/weectl extension install 
>>> /mnt/pishare/weewx-responsive-skin-master.zip 
>>> Using configuration file /home/weewx/weewx.conf
>>> Install extension '/mnt/pishare/weewx-responsive-skin-master.zip' (y/n)? 
>>> y
>>> Extracting from zip archive /mnt/pishare/weewx-responsive-skin-master.zip
>>> Traceback (most recent call last):
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weecfg/__init__.py", line 
>>> 714, in get_extension_installer
>>>     __import__('install')
>>> ModuleNotFoundError: No module named 'install'
>>>
>>> During handling of the above exception, another exception occurred:
>>>
>>> Traceback (most recent call last):
>>>   File "./bin/weectl", line 10, in <module>
>>>     sys.exit(main())
>>>   File "/home/pi/weewx-venv/lib/python3.7/site-packages/weectl.py", line 
>>> 66, in main
>>>     namespace.func(namespace)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weectllib/__init__.py", 
>>> line 121, in dispatch
>>>     namespace.action_func(config_dict, namespace)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weectllib/extension_cmd.py",
>>>  
>>> line 116, in install_extension
>>>     ext.install_extension(namespace.source, no_confirm=namespace.yes)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weecfg/extension.py", line 
>>> 138, in install_extension
>>>     extension_name = self._install_from_file(extension_path, filetype)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weecfg/extension.py", line 
>>> 168, in _install_from_file
>>>     extension_name = self.install_from_dir(extension_dir)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weecfg/extension.py", line 
>>> 179, in install_from_dir
>>>     installer_path, installer = 
>>> weecfg.get_extension_installer(extension_dir)
>>>   File 
>>> "/home/pi/weewx-venv/lib/python3.7/site-packages/weecfg/__init__.py", line 
>>> 716, in get_extension_installer
>>>     raise ExtensionError("Cannot find 'install' module in %s" % 
>>> extension_installer_dir)
>>> weecfg.ExtensionError: Cannot find 'install' module in 
>>> /tmp/tmpkrjxk9dm/weewx-responsive-skin-master/
>>>
>>> What am I doing wrong?
>>> Susan
>>> On Wednesday, 4 February 2026 at 4:54:48 pm UTC+11 Greg from Oz wrote:
>>>
>>> The forecast and the weather warning were causing the Responsive skin to 
>>> crash.
>>> Darryn has fixed the crashes and now everything is working again.
>>>
>>> https://github.com/dcapslock/weewx-responsive-skin
>>>
>>> This new BOM website is taking a while to iron all the bugs out.
>>>
>>> My site is here: https://weather.ubeaut.work/
>>>
>>> Thanks again Daryn. I still really like this skin for weewx.
>>>
>>>
>>> On Saturday, 6 February 2021 at 22:52:28 UTC+11 Greg from Oz wrote:
>>>
>>> Yes my icons disappeared as my site is https but I changed a setting on 
>>> the browser just for my site. 
>>>
>>> On chrome it is called insecure content. 
>>>
>>> Then the icons came back again.
>>>
>>>
>>>
>>> On Saturday, 6 February 2021 at 20:41:16 UTC+11 Darryn Capes-Davis wrote:
>>>
>>> Hi All, 
>>>
>>> Long time since my last post. A few months ago I noticed that my iPhone 
>>> stopped showing the BOM Forecast icons. With the change to everything 
>>> needing to be HTTPS, the BOM HTTP only icons will only continue to 
>>> disappear if you host the Responsive skin on HTTPS, like I do at 
>>> https://carlingfordweather.sydney, and you use a modern strict browser. 
>>>
>>> So I took time to source some weather icons and adjust and size to suit 
>>> the Aus Forecast part of the Responsive skin. The changes have been push to 
>>> GitHub - https://github.com/dcapslock/weewx-responsive-skin
>>>
>>> Also included is some exception handling to mark corrupt downloaded 
>>> forecast files as stale.
>>>
>>> Regards
>>>
>>> Darryn Capes-Davis
>>> https://carlingfordweather.sydney 
>>>
>>> -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "weewx-user" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/weewx-user/tsujx_iCtFc/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> [email protected].
>>> To view this discussion visit 
>>> https://groups.google.com/d/msgid/weewx-user/f7b04572-fc95-437f-81df-85325a2419a0n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/weewx-user/f7b04572-fc95-437f-81df-85325a2419a0n%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/CAD_tbc9LHv%3DQ_8iuKYdo70Qpg%2B2BCfvwFYZa-bONAhwCEbB%2BPA%40mail.gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/weewx-user/CAD_tbc9LHv%3DQ_8iuKYdo70Qpg%2B2BCfvwFYZa-bONAhwCEbB%2BPA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "weewx-user" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/weewx-user/tsujx_iCtFc/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> [email protected].
>>> To view this discussion visit 
>>> https://groups.google.com/d/msgid/weewx-user/f1936929-5b06-4aa7-bd39-9a3c264fc009n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/weewx-user/f1936929-5b06-4aa7-bd39-9a3c264fc009n%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/0a782061-b994-48fa-ad25-320d4c718c4dn%40googlegroups.com.

Reply via email to