Thanks Tom, for the explanation and the quick fix. It's applied and working.

I'll mull over your explanation, bits of it make sense - I'll need
more time for the rest ;-)

Thanks again.

On 07/02/2022, Tom Keffer <[email protected]> wrote:
> The problem here is a little technical, so bear with me.
>
> The way things work normally is that the default configuration for the
> Cheetah generator includes a TimeBinder in the search list. Because a
> TimeBinder includes an attribute 'trend', the tag $trend works.
>
> The problem is that the extension since.py also includes a TimeBinder, but
> one that has not been properly initialized. It needs a keyword argument
> "trend".
>
> Why did it work before, but not now? Because the order of evaluation of the
> search list changed. Before, it searched built-in objects first, then user
> extensions. V4.6 does it the other way around: it searches user extensions
> first, then the built-ins. This is to allow overriding the behavior of the
> built-in search list, which the since.py extension inadvertently did. So,
> when evaluating the tag $trend, the custom, not properly initialized,
> version of TimeBinder is hit first, and the built-in version is never seen.
> This re-ordering should have been mentioned in the Upgrade Guide.
>
> There are two ways to fix:
>
> 1. Properly initialize the instance of TimeBinder in since.py.
> 2. Change the logic of since.py. Frankly, I don't know why it returns a
> TimeBinder at all. It's way more complicated than it needs to be, and has
> the side effect that it's basically overriding all of the tags, including
> such mundane tags as $day, $week, etc. It gets away with this because its
> semantics are identical for these other tags.
>
> If you want a quick fix, do option #1. Here's the delta
>
>
> --- since.py 2022-02-06 04:59:19.000000000 -0800
> ***************
> *** 160,169 ****
>
> formatter=self.formatter,
>
> converter=self.converter)
>
>           tspan_binder = NewBinder(db_lookup,
> !                                 timespan.stop,
> !                                 self.generator.formatter,
> !                                 self.generator.converter)
>
>           t2 = time.time()
>           logdbg2("Since SLE executed in %0.3f seconds" % (t2-t1))
> --- 160,176 ----
>
> formatter=self.formatter,
>
> converter=self.converter)
>
> +         try:
> +             trend_dict = self.generator.skin_dict['Units']['Trend']
> +         except KeyError:
> +             trend_dict = {'time_delta': 10800,
> +                           'time_grace': 300}
> +
>           tspan_binder = NewBinder(db_lookup,
> !                                  timespan.stop,
> !                                  self.generator.formatter,
> !                                  self.generator.converter,
> !                                  trend=trend_dict)
>
>           t2 = time.time()
>           logdbg2("Since SLE executed in %0.3f seconds" % (t2-t1))
>
> But, really, since.py should be fixed so that it doesn't override default
> behavior.
>
> -tk
>
>
>
> On Sat, Feb 5, 2022 at 10:21 PM Glenn McKechnie <[email protected]>
> wrote:
>
>> Just a heads up to anyone out there that uses since.py (used to shift
>> the rain window)
>> and has upgraded to weewx.4.6.0
>>
>> I went through the process (I needed the new lang option) and for the
>> life of me couldn't work out why it kept falling over when generating
>> various skins.
>>
>> Switching to a plain skin and adding my cruft back in and lo and
>> behold it falls over when since.py is slotted back into skin.conf
>>
>> skin.conf
>> [CheetahGenerator]
>>     search_list_extensions = user.since.Since
>>
>> What then happens is that whenever the trend option is called - such
>> as in Seasons/current.inc : $trend.barometer.formatted - it raises a
>> KeyError pointing at 'trend' as the culprit.
>>
>> Attached is the script since.py and a file with the errors generated
>> by cheetahgenerator, as found in syslog.
>>
>> It's way beyond my abilities to work out why it happens, but I'd be
>> curious to know if it's fixable. :-)
>>
>> I also hope finding it prevents anyone elses hair loss. :-)
>>
>> --
>>
>> Cheers
>>  Glenn
>>
>> rorpi - read only raspberry pi & various weewx addons
>> https://github.com/glennmckechnie
>>
>> --
>> 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 on the web visit
>> https://groups.google.com/d/msgid/weewx-user/CAAraAzgTEeXkgVGFpcpnKdkcrnVwMtvyn5kJTGBe_Qin8WTnxA%40mail.gmail.com
>> .
>>
>
> --
> 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 on the web visit
> https://groups.google.com/d/msgid/weewx-user/CAPq0zEBWJcuAftEafqxYNrEJ0AfFprc-EhfL0oP883GR%2BFxqiA%40mail.gmail.com.
>


-- 


Cheers
 Glenn

rorpi - read only raspberry pi & various weewx addons
https://github.com/glennmckechnie

-- 
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 on the web visit 
https://groups.google.com/d/msgid/weewx-user/CAAraAzgiNnC8Z%3DFcvR089YnJKkptrOu0Kayfs12jD07kUQFE_Q%40mail.gmail.com.

Reply via email to