* initial values for computed vars draft
* add tests, add computed_var overloads
* fix darglint
* pass initial to substates when calling dict
* add tests for for child states
* format black
* allow None as initial value
* rename runtime_only to raises_at_runtime
* cleanup unused arguments of ComputedVars
* refactor cached_var to be partial of computed_var
* test_state: augment modify_state test for writing MutableProxy
If the object contains a MutableProxy inside of it, then we get a pickling
error.
* Implement __reduce_ex__ for MutableProxy
Pass through `__reduce_ex__` onto the wrapped instance to strip it off when
cloudpickling to redis.
* base: get_value actually works with a str key
Unless the key isn't a field on the model, then it falls back to the previous
behavior of just returning the given key as is... why does it do this? I don't
know.
* Move sharding internal to StateManager
Avoid leaking sharding implementation details all over the State class and
breaking the API
* WiP StateManager based sharding
* Copy the state __dict__ when serializing to avoid breaking the instance
* State tests need to pass the correct substate token for redis
* state: when getting parent_state, set top_level=False
ensure that we don't end up with a broken tree
* test_app: get tests passing with redis by passing the correct token
refactor upload tests to suck less
* test_client_storage: look up substate key
* state.py: pass static checks
* test_dynamic_routes: working with redis state shard
* Update the remaining AppHarness tests to pass {token}_{state.get_full_name()}
* test_app: pass all tokens with state suffix
* StateManagerRedis: clean up commentary
* feat: Synchronizing localStorage between tabs using browser events
* test_client_storage: Test sync'd local storage vars
* update_vars_internal: generic handler to apply var changes to state tree
Apply fully qualified var names to each substate they are associated with. This
allows consistent updates to arbitrary state vars without having to know their
"setter" arguments, in case the user has overwritted the `set_x` name.
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* wip event handlers for state mixins
* fix computed vars, prepare event handler tests
* fix computed vars and event handlers inherited by mixins
* Base is not a mixin
* improve state inheritance tests
* wait for alerts to appear
* poll_for_content to fix flaky ci tests
* use redis-py url syntax for redis_url
* port is optional
* Add StateManagerRedis.close method
The close helper method always calls `close_connection_pool=True` so that all
outstanding redis operations can be stopped before changing event loops.
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* test_client_storage: remove race conditions for cookie assignment
Poll for default timeout for cookies to appear in the controlled browser.
* Remove use of deprecated get_token and get_sid in core
Both reflex.app and reflex.state were still using deprecated methods, which
were throwing unsolvable warnings for end users.
* Remove deprecated router functions from integration tests
Mostly removing custom "token" var and replacing with
router.session.client_token.
Also replacing `get_query_params` and `get_current_page` usage as well.
* fix upload tests
Cannot pass substate as main app state, since it blocks us from accessing
"inherited vars"
* state: do NOT reset `router` to default
When calling `.reset` to reset state vars, do NOT reset the router data, as
that could mess up internal event processing.