Closed ALERTua closed 1 year ago
Ah - good catch. I pushed a new fix for #512 which hopefully doesn't break the hold kwargs. Still need to do more testing.
The fix seems to work. I've deployed basic scratch kwargs tests on my instance to detect such issues early on in the future.
from imports import *
try:
_ = pyscript.test_1
_ = pyscript.test_2
_ = pyscript.test_3
_ = pyscript.test_4
_ = pyscript.test_5
_ = pyscript.test_6
_ = pyscript.test_7
_ = pyscript.test_8
except:
pyscript.test_1 = False
pyscript.test_2 = False
pyscript.test_3 = False
pyscript.test_4 = False
pyscript.test_5 = False
pyscript.test_6 = False
pyscript.test_7 = False
pyscript.test_8 = False
TRIGGER = "sensor.datetime_full.hours"
@state_trigger(TRIGGER, kwargs=dict(my_kwarg=123))
def test1(trigger_type=None, var_name=None, value=None, old_value=None, context=None, **kwargs):
if pyscript.test_1:
return
pyscript.test_1 = True
if kwargs:
log.debug(f"test1 succeeded")
return
tools.telegram_message(f'{__name__}.test1: kwargs are empty')
@state_trigger(TRIGGER, kwargs=dict(my_kwarg=123), state_hold=1)
def test2(trigger_type=None, var_name=None, value=None, old_value=None, context=None, **kwargs):
if pyscript.test_2:
return
pyscript.test_2 = True
if kwargs:
log.debug(f"test2 succeeded")
return
tools.telegram_message(f'{__name__}.test2: kwargs are empty')
@state_trigger(TRIGGER, kwargs=dict(my_kwarg=123), state_hold_false=1)
def test3(trigger_type=None, var_name=None, value=None, old_value=None, context=None, **kwargs):
if pyscript.test_3:
return
pyscript.test_3 = True
if kwargs:
log.debug(f"test3 succeeded")
return
tools.telegram_message(f'{__name__}.test3: kwargs are empty')
@state_trigger(TRIGGER, kwargs=dict(my_kwarg=123), state_check_now=True)
def test4(trigger_type=None, var_name=None, value=None, old_value=None, context=None, **kwargs):
if pyscript.test_4:
return
pyscript.test_4 = True
if kwargs:
log.debug(f"test4 succeeded")
return
tools.telegram_message(f'{__name__}.test4: kwargs are empty')
@time_trigger("startup", kwargs=dict(my_kwarg=123))
def test5(trigger_type=None, var_name=None, value=None, old_value=None, context=None, **kwargs):
if pyscript.test_5:
return
pyscript.test_5 = True
if kwargs:
log.debug(f"test5 succeeded")
return
tools.telegram_message(f'{__name__}.test5: kwargs are empty')
After the recent master commit 7a81413ef8d8c41d09352424461a277a18f65c6e, that was a fix for https://github.com/custom-components/pyscript/issues/512, kwargs of state_trigger are empty if state_hold argument is used.
This will output
{'my_kwarg': 123}
This will output
{}
Rolling back to version 1.5.0 fixes the issue.