Skip to content

Commit 8c40de3

Browse files
committed
best effort to deprecate page
1 parent 8cde76e commit 8c40de3

4 files changed

Lines changed: 46 additions & 12 deletions

File tree

reflex/istate/data.py

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from urllib.parse import _NetlocResultMixinStr, urlsplit
77

88
from reflex import constants
9-
from reflex.utils import format
9+
from reflex.utils import console, format
1010
from reflex.utils.serializers import serializer
1111

1212

@@ -195,10 +195,25 @@ class RouterData:
195195

196196
session: SessionData = dataclasses.field(default_factory=SessionData)
197197
headers: HeaderData = dataclasses.field(default_factory=HeaderData)
198-
page: PageData = dataclasses.field(default_factory=PageData)
198+
_page: PageData = dataclasses.field(default_factory=PageData)
199199
url: ReflexURL = dataclasses.field(default=ReflexURL(""))
200200
route_id: str = ""
201201

202+
@property
203+
def page(self) -> PageData:
204+
"""Get the page data.
205+
206+
Returns:
207+
The PageData object.
208+
"""
209+
console.deprecate(
210+
"RouterData.page",
211+
"Use RouterData.url instead",
212+
deprecation_version="0.8.1",
213+
removal_version="0.9.0",
214+
)
215+
return self._page
216+
202217
@classmethod
203218
def from_router_data(cls, router_data: dict) -> "RouterData":
204219
"""Create a RouterData object from the given router_data.
@@ -212,10 +227,29 @@ def from_router_data(cls, router_data: dict) -> "RouterData":
212227
return cls(
213228
session=SessionData(router_data),
214229
headers=HeaderData(router_data),
215-
page=PageData(router_data),
230+
_page=PageData(router_data),
216231
url=ReflexURL(
217232
router_data.get(constants.RouteVar.HEADERS, {}).get("origin", "")
218233
+ router_data.get(constants.RouteVar.ORIGIN, "")
219234
),
220235
route_id=router_data.get(constants.RouteVar.PATH, ""),
221236
)
237+
238+
239+
@serializer(to=dict)
240+
def serialize_router_data(obj: RouterData) -> dict:
241+
"""Serialize a RouterData object to a dict.
242+
243+
Args:
244+
obj: the RouterData object.
245+
246+
Returns:
247+
A dict representation of the RouterData object.
248+
"""
249+
return {
250+
"session": obj.session,
251+
"headers": obj.headers,
252+
"page": obj._page,
253+
"url": obj.url,
254+
"route_id": obj.route_id,
255+
}

reflex/state.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,15 +1204,15 @@ def setup_dynamic_args(cls, args: dict[str, str]):
12041204

12051205
def argsingle_factory(param: str):
12061206
def inner_func(self: BaseState) -> str:
1207-
return self.router.page.params.get(param, "")
1207+
return self.router._page.params.get(param, "")
12081208

12091209
inner_func.__name__ = param
12101210

12111211
return inner_func
12121212

12131213
def arglist_factory(param: str):
12141214
def inner_func(self: BaseState) -> list[str]:
1215-
return self.router.page.params.get(param, [])
1215+
return self.router._page.params.get(param, [])
12161216

12171217
inner_func.__name__ = param
12181218

@@ -2466,7 +2466,7 @@ def on_load_internal(self) -> list[Event | EventSpec | event.EventCallback] | No
24662466
"""
24672467
# Do not app._compile()! It should be already compiled by now.
24682468
load_events = prerequisites.get_and_validate_app().app.get_load_events(
2469-
self.router.page.path
2469+
self.router._page.path
24702470
)
24712471
if not load_events:
24722472
self.is_hydrated = True

tests/units/test_app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1475,7 +1475,7 @@ def test_app_state_determination():
14751475
assert a3._state is None
14761476

14771477
# Referencing router enables state.
1478-
a3.add_page(rx.box(rx.text(State.router.page.full_path)), route="/")
1478+
a3.add_page(rx.box(rx.text(State.router._page.full_path)), route="/")
14791479
a3._compile_page("index")
14801480
assert a3._state is not None
14811481

tests/units/test_state.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -936,19 +936,19 @@ def test_get_client_ip(test_state, router_data):
936936

937937

938938
def test_get_current_page(test_state):
939-
assert test_state.router.page.path == ""
939+
assert test_state.router._page.path == ""
940940

941941
route = "mypage/subpage"
942942
test_state.router = RouterData.from_router_data({RouteVar.PATH: route})
943-
assert test_state.router.page.path == route
943+
assert test_state.router._page.path == route
944944

945945

946946
def test_get_query_params(test_state):
947-
assert test_state.router.page.params == {}
947+
assert test_state.router._page.params == {}
948948

949949
params = {"p1": "a", "p2": "b"}
950950
test_state.router = RouterData.from_router_data({RouteVar.QUERY: params})
951-
assert dict(test_state.router.page.params) == params
951+
assert dict(test_state.router._page.params) == params
952952

953953

954954
def test_add_var():
@@ -3289,7 +3289,7 @@ class RouterVarDepState(RouterVarParentState):
32893289

32903290
@rx.var
32913291
def foo(self) -> str:
3292-
return self.router.page.params.get("foo", "")
3292+
return self.router._page.params.get("foo", "")
32933293

32943294
foo = RouterVarDepState.computed_vars["foo"]
32953295
State._init_var_dependency_dicts()

0 commit comments

Comments
 (0)