Cheetah Syntax Error

54 views
Skip to first unread message

Rory Gillies

unread,
May 29, 2023, 4:43:54 AM5/29/23
to weewx-user
I am trying to do a simple bit of logic to add an empty table row if two conditions are met but the Cheetah generator is throwing up a syntax error and I can't work out why. This loop generates a table of high tides, but if the first tidal event is low tide I don't want the high tide displayed in the row as it will be after the low tide. The code is:

<table class="table table-striped text-left">
    <tr>
    <td><b>Date</b></td></td><td><b>Time (local)</b></td><td><b>Height</b></td>
    </tr>
    #set $tides = $forecast.xtides
    #set $counter = 0
    #for $tide in $tides
    #set $counter = $counter + 1
    #if $counter = 1 and $tide.hilo == 'L'
<-- error generated here
    <tr>
       <td>-</td>
       <td>-</td>
       <td>-</td>
    </tr>
    #else if $counter < 28
    #set $height=$tide.offset.raw / 3.281
    #if $tide.hilo == 'H'
    <tr>
       <td>$tide.event_ts.format("%a %d %b")</td>
       <td>$tide.event_ts.format("%H:%M")</td>
       <td>
       #echo '%.2f' % $height
      m </td>
    </tr>
    #end if
    #end if
    #end for
</table>

And here's the error:

May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: Compilation of template /etc/weewx/skins/neowx-material/almanac.html.tmpl failed with exception '<class 'SyntaxError'>'
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: **** Ignoring template /etc/weewx/skins/neowx-material/almanac.html.tmpl
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: **** Reason: invalid syntax (cheetah__etc_weewx_skins_neowx_material_almanac_html_tmpl_1685348748_259715_51815.py, line 1247)
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 827, in compile
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      parseError = genParserErrorFromPythonException(
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 2045, in genParserErrorFromPythonException
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      reader = SourceReader(source, filename=filename)
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/SourceReader.py", line 19, in __init__
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      self._srcLen = len(src)
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****  TypeError: object of type 'NoneType' has no len()
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****  
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****  During handling of the above exception, another exception occurred:
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****  
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 332, in generate
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      compiled_template = Cheetah.Template.Template(
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1337, in __init__
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      self._compile(source, file, compilerSettings=compilerSettings)
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1634, in _compile
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      templateClass = self.compile(source, file,
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 832, in compile
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      raise e
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 823, in compile
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      co = compile(generatedModuleCode, __file__, 'exec')
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****    File "cheetah__etc_weewx_skins_neowx_material_almanac_html_tmpl_1685348748_259715_51815.py", line 1247
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****      if VFFSL(SL,"counter",True) = 1 and VFFSL(SL,"tide.hilo",True) == 'L': # generated from line 353, col 21
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****                                  ^
May 29 09:25:48 weather weewx[1049482] ERROR weewx.cheetahgenerator: ****  SyntaxError: invalid syntax


The code works fine without the empty row logic, and both the $counter and $tide.hilo variables are working in the rest of the code, just not when I try to use them in a logic statement.

Tom Keffer

unread,
May 29, 2023, 6:17:14 AM5/29/23
to weewx...@googlegroups.com
    #if $counter = 1 and $tide.hilo == 'L' <-- error generated here

You need another equal sign:

    #if $counter == 1 and $tide.hilo == 'L' <-- error generated here


--
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 weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/2ac8df36-f705-46f1-9101-137337784355n%40googlegroups.com.

Rory Gillies

unread,
May 29, 2023, 7:50:20 AM5/29/23
to weewx-user
Thanks Tom, I'm sure I had tried that first but it's working now, thanks!

Screenshot 2023-05-29 at 12.48.21.png

Reply all
Reply to author
Forward
0 new messages