Commit Graph

210 Commits

Author SHA1 Message Date
benedikt-bartscher
cace611aec
do not store new_backend_vars in State class (#2707) 2024-02-24 13:56:22 -08:00
benedikt-bartscher
93f402c773
Initial values for computed vars (#2670)
* 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
2024-02-24 13:45:07 -08:00
Masen Furer
953495775d
[REF-2045] Implement __reduce_ex__ for MutableProxy (#2688)
* 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.
2024-02-22 10:14:14 -08:00
Martin Xu
a3be76fb75
use sync redis client to sanity check (#2679) 2024-02-21 07:01:44 -08:00
Masen Furer
4601cca997
Revert "Added descriptor for backend vars (#2618)" (#2682)
This reverts commit f9d219407f.
2024-02-21 05:41:27 -08:00
Masen Furer
756bf9b0f4
[REF-1885] Shard Substates when serializing to Redis (#2574)
* 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
2024-02-21 01:50:25 -08:00
wassaf shahzad
f9d219407f
Added descriptor for backend vars (#2618)
* Added descriptor for backend vars

* Fixed darglint issue
2024-02-20 15:51:48 -08:00
abulvenz
980834605b
feat: Synchronizing localStorage between tabs using browser events (#2533)
* 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>
2024-02-20 15:14:55 -08:00
Nikhil Rao
4ad238c42c
Update deprecation version to 0.5.0 (#2642) 2024-02-16 11:23:15 -08:00
benedikt-bartscher
eabbbea171
fix EventHandlers and ComputedVars inherited by mixin classes (#2534)
* 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
2024-02-07 14:48:39 -08:00
benedikt-bartscher
1aca1b677f
fix is_backend_variable for dunder prefixed variables (#2391) 2024-01-16 17:37:05 -08:00
benedikt-bartscher
ae1a6e1acc
inherit computed vars from state mixins (#2351) 2024-01-12 14:22:38 -08:00
Masen Furer
87844c3f7d
Enable real app AppHarness tests to not specify state= (#2358) 2024-01-05 17:47:31 -08:00
jackie-pc
7388617b72
apps should no longer call "app.compile()" (#2291) 2023-12-18 16:06:21 -08:00
benedikt-bartscher
f90982ea06
use redis-py url syntax for redis_url (#2267)
* 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>
2023-12-12 10:54:10 -08:00
Masen Furer
0bbae2d3d5
[REF-1404] router_data not updated when processing events (#2255) 2023-12-04 16:45:22 -08:00
Masen Furer
60147dec65
[REF-201] Separate on_load handler from initial hydration (#1847) 2023-11-30 12:21:15 -08:00
Elijah Ahianyo
e3ee98098a
RED-1052/rx.State as Base State (#2146) 2023-11-29 09:43:33 -08:00
Masen Furer
ee87e62efa
[REF-1035] Track ComputedVar dependency per class (#2067) 2023-11-27 18:17:53 -08:00
Thomas Brandého
ed5b3818cb
update removal version of deprecated features (#2224) 2023-11-27 14:04:55 -08:00
Masen Furer
1603144c7d
[REF-889] useContext per substate (#2149) 2023-11-21 11:52:06 -08:00
Elijah Ahianyo
f7f8aa171b
Set is_hydrated var explicitly on rx.State (#2168) 2023-11-14 10:26:25 -08:00
Nikhil Rao
33e4816950
Lazy import modules in reflex (#2144) 2023-11-13 19:48:12 -08:00
Masen Furer
5e6520cb5d
Support Form controls via name attribute (no ID or ref) (#2012) 2023-11-10 12:58:59 -08:00
Masen Furer
61c9afd5a5
Support Python 3.12 (#2006) 2023-11-06 12:08:14 -08:00
Masen Furer
92dd68c51f
Improve Var type handling for better rx.Model attribute access (#2010) 2023-10-25 11:55:50 -07:00
Masen Furer
93d19d6dc3
[REF-938] Fix up radix themes issues (#2002) 2023-10-24 14:29:54 -07:00
Masen Furer
1734ba0b6d
Generate state delta from processed state instance (#2023) 2023-10-24 10:44:12 -07:00
Elijah Ahianyo
b652d40ee5
Remove Default state (#1978) 2023-10-18 09:57:27 -07:00
Masen Furer
f6a7eed359
Fix AppHarness tests (#1987)
* 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.
2023-10-18 01:46:13 +02:00
Thomas Brandého
b1bab1206d
deprecate get_ methods for router_data, use BaseVars instead (#1967) 2023-10-17 09:59:44 -07:00
Masen Furer
024cb5fa9b
Var field cleanup (#1943) 2023-10-13 14:53:55 -07:00
Elijah Ahianyo
2c4ffc879f
Deprecate rx.get_cookies (#1961) 2023-10-13 09:21:06 -07:00
Masen Furer
4b84c2a471
state: subclass of MutableState must return _mark_dirty return value (#1898) 2023-10-02 11:17:45 -07:00
Masen Furer
418f9ad569
state: get_value unwraps MutableProxy first (#1887) 2023-10-01 10:13:27 -07:00
Masen Furer
4f6b3c049b
State.reset uses deepcopy on defaults (#1889) 2023-09-29 16:33:16 -07:00
Masen Furer
5ca7f29853
MutableProxy wraps values yielded by __iter__ (#1876) 2023-09-28 17:34:46 -07:00
Thomas Brandého
dcb17103bb
code cleanup (split constants into a folder) (#1866) 2023-09-28 17:27:20 -07:00
Masen Furer
83d7a044fe
StateProxy rebinds functools.partial and methods that are bound to the proxied State (#1853) 2023-09-21 17:59:18 -07:00
Masen Furer
351611ca25
rx.background and StateManager.modify_state provides safe exclusive access to state (#1676) 2023-09-21 11:42:11 -07:00
Masen Furer
1bfb579b20
state: implement __copy__ and __deepcopy__ for MutableProxy (#1845) 2023-09-20 16:46:49 -07:00
Elijah Ahianyo
2750228dbb
Prevent Substate class shadowing (#1827) 2023-09-19 15:56:39 -07:00
Masen Furer
1430075bdc
Reassign state Var when fields on a Base instance change (#1748) 2023-09-18 13:52:10 -07:00
Masen Furer
71811a600c
Var: __bool__ and __iter__ always raise a TypeError (#1750) 2023-09-05 13:44:22 -07:00
Nikhil Rao
1d9f25be6d
Fix project hash and modernize type annotations (#1704) 2023-08-31 17:04:39 -07:00
Masen Furer
97869136bd
state: _init_mutable_fields for backend vars as well (#1729) 2023-08-31 15:50:20 -07:00
Thomas Brandého
63b5fbd7b0
add pyi_generator script (#1708) 2023-08-31 14:25:56 -07:00
Nikhil Rao
7d7b7901a9
Fix setting substate client storage (#1723) 2023-08-31 09:54:27 -07:00
Masen Furer
9fbc75d84a
Client-side storage / State integration (#1629) 2023-08-30 12:43:29 -07:00
Masen Furer
12e516da64
state: _init_event_handlers recursively (#1640) 2023-08-25 13:28:58 -07:00
Martin Xu
510b71e644
Check the yield/return from user defined event handlers are valid (#1614) 2023-08-18 01:36:30 -07:00
Elijah Ahianyo
2fa087a0fa
Event Handlers should not shadow base state methods (#1543) 2023-08-10 12:47:35 -07:00
Smit Parmar
ef78465f16
Added support for RelexSet wrapper (#1535) 2023-08-10 09:59:03 -07:00
Thomas Brandého
9222bbbdf2
fix state reset() (#1501) 2023-08-02 11:02:05 -07:00
Thomas Brandého
6555234dee
fix breadcrumb API & add get_page_crumbs method (#1387) 2023-07-28 16:40:49 -07:00
Elijah Ahianyo
3fa33bd644
List and Dict mutation on setattr (#1428) 2023-07-27 12:45:57 -07:00
Masen Furer
77c4451d24
integration/test_server_side_event.py: tests for set_value (#1390) 2023-07-21 11:50:51 -07:00
Masen Furer
cd63297fe4
state: Leading underscore functions are not backend vars (#1268) 2023-06-28 15:32:49 -07:00
Elijah Ahianyo
be48e13c71
Remove cookies (#1223) 2023-06-27 18:04:29 -07:00
Nikhil Rao
139ce38df1
Rename pynecone to reflex (#1236) 2023-06-25 16:56:55 -07:00