Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fully migrate vars into new system #3743

Merged
merged 48 commits into from
Aug 26, 2024
Merged
Changes from 1 commit
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
de1fbdb
fully migrate vars into new system
adhami3310 Aug 5, 2024
1eecd1f
i hate rufffff (no i don't)
adhami3310 Aug 5, 2024
450610a
fix silly pright issues (except colormode and state)
adhami3310 Aug 5, 2024
da95d0f
remove all instances of Var.create
adhami3310 Aug 5, 2024
c397cb2
create immutable callable var and get rid of more base vars
adhami3310 Aug 5, 2024
81cd679
implement hash for all functions
adhami3310 Aug 6, 2024
ea33c39
get reflex-web to compile
adhami3310 Aug 9, 2024
982e4c1
get it to compile reflex-web successfully
adhami3310 Aug 9, 2024
f6938cf
fix tests
adhami3310 Aug 12, 2024
0ae8831
fix pyi
adhami3310 Aug 12, 2024
4349d69
use override from typing_extension
adhami3310 Aug 12, 2024
854d729
put plotly inside of a catch
adhami3310 Aug 12, 2024
e0c4e97
dicts are unusable sadly
adhami3310 Aug 12, 2024
5bfc0c0
fix silly mistake
adhami3310 Aug 12, 2024
0fd4237
overload equals to special case immutable var
adhami3310 Aug 12, 2024
2c26dad
improve test_cond
adhami3310 Aug 12, 2024
2f49ce0
solve more CI issues, down to 94 failures
adhami3310 Aug 13, 2024
82a3498
down to 20 errors
adhami3310 Aug 14, 2024
39bc0c0
down to 13 errors
adhami3310 Aug 14, 2024
d516b3b
pass all testcases
adhami3310 Aug 14, 2024
e92218d
fix pyright issues
adhami3310 Aug 14, 2024
1d45f70
reorder things
adhami3310 Aug 14, 2024
777e8bc
use get origin more
adhami3310 Aug 14, 2024
75ef773
use fixed_type logic
adhami3310 Aug 15, 2024
8de75b7
various optimizations
adhami3310 Aug 15, 2024
1603e06
go back to passing test cases
adhami3310 Aug 15, 2024
9e1a35f
use less boilerplate
adhami3310 Aug 15, 2024
ab63e57
remove unnecessary print message
adhami3310 Aug 15, 2024
5a8ca04
remove weird comment
adhami3310 Aug 15, 2024
9deda27
add test for html issue
adhami3310 Aug 15, 2024
0ad21fe
add type ignore
adhami3310 Aug 15, 2024
4978b20
fix another silly issue
adhami3310 Aug 15, 2024
3d7ea37
override get all var data for var operations call
adhami3310 Aug 16, 2024
69f0d1d
make integration tests pass
adhami3310 Aug 16, 2024
85c1590
fix immutable call var
adhami3310 Aug 17, 2024
dd13dba
better logic for finding parent class
adhami3310 Aug 17, 2024
397683a
use even better logic for finding state wrt computedvar
adhami3310 Aug 17, 2024
bf1d052
only choose the ones that are defined in the same module
adhami3310 Aug 19, 2024
9fb4b67
small dict to large dict
adhami3310 Aug 19, 2024
26002a8
[REF-3591] Remove chakra-related files from immutable vars PR (#3821)
masenf Aug 22, 2024
02def8c
Merge branch 'main' into immutable-vars
masenf Aug 22, 2024
7d7f788
pyproject.toml: bump to 0.6.0a1
masenf Aug 23, 2024
8b51244
pyproject.toml: depend on reflex-chakra>=0.6.0a
masenf Aug 23, 2024
f09d2e2
Merge remote-tracking branch 'origin/main' into immutable-vars
masenf Aug 23, 2024
56f278d
poetry.lock: relock dependencies
masenf Aug 23, 2024
86563b6
integration: bump listening timeout to 1200 seconds
masenf Aug 23, 2024
a94eedf
integration: bump listening timeout to 1800 seconds
masenf Aug 23, 2024
650aa1b
Use cached_var_no_lock to avoid ImmutableVar deadlocks (#3835)
masenf Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[REF-3591] Remove chakra-related files from immutable vars PR (#3821)
* Add comments to html metadata component (#3731)

* fix: add verification for path /404 (#3723)

Co-authored-by: coolstorm <manas.gupta@fampay.in>

* Use the new state name when setting `is_hydrated` to false (#3738)

* Use `._is_mutable()` to account for parent state proxy (#3739)

When a parent state proxy is set, also allow child StateProxy._self_mutable to
override the parent's `_is_mutable()`.

* bump to 0.5.9 (#3746)

* add message when installing requirements.txt is needed for chosen template during init (#3750)

* #3752 bugfix add domain for XAxis (#3764)

* fix appharness app_source typing (#3777)

* fix import clash between connectionToaster and hooks.useState (#3749)

* use different registry when in china, fixes #3700 (#3702)

* do not reload compilation if using local app in AppHarness (#3790)

* do not reload if using local app

* Update reflex/testing.py

Co-authored-by: Masen Furer <m_github@0x26.net>

---------

Co-authored-by: Masen Furer <m_github@0x26.net>

* Bump memory on relevant actions (#3781)

Co-authored-by: Alek Petuskey <alekpetuskey@Aleks-MacBook-Pro.local>

* [REF-3334] Validate Toast Props (#3793)

* [REF-3536][REF-3537][REF-3541] Move chakra components into its repo(reflex-chakra) (#3798)

* fix get_uuid_string_var (#3795)

* minor State cleanup (#3768)

* Fix code wrap in markdown (#3755)

---------

Co-authored-by: Alek Petuskey <alek@pynecone.io>
Co-authored-by: Manas Gupta <53006261+Manas1820@users.noreply.github.com>
Co-authored-by: coolstorm <manas.gupta@fampay.in>
Co-authored-by: Thomas Brandého <thomas.brandeho@gmail.com>
Co-authored-by: Shubhankar Dimri <dimrishubhi@gmail.com>
Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com>
Co-authored-by: Khaleel Al-Adhami <khaleel.aladhami@gmail.com>
Co-authored-by: Alek Petuskey <alekpetuskey@Aleks-MacBook-Pro.local>
Co-authored-by: Elijah Ahianyo <elijahahianyo@gmail.com>
10 people authored Aug 22, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 26002a809bc39cf755052fd6da4b1e9c8a18fd16
2 changes: 1 addition & 1 deletion .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ defaults:
env:
PYTHONIOENCODING: 'utf8'
TELEMETRY_ENABLED: false
NODE_OPTIONS: '--max_old_space_size=4096'
NODE_OPTIONS: '--max_old_space_size=8192'
PR_TITLE: ${{ github.event.pull_request.title }}

jobs:
2 changes: 1 addition & 1 deletion .github/workflows/integration_tests.yml
Original file line number Diff line number Diff line change
@@ -29,7 +29,7 @@ env:
# - Best effort print lines that contain illegal chars (map to some default char, etc.)
PYTHONIOENCODING: 'utf8'
TELEMETRY_ENABLED: false
NODE_OPTIONS: '--max_old_space_size=4096'
NODE_OPTIONS: '--max_old_space_size=8192'
PR_TITLE: ${{ github.event.pull_request.title }}

jobs:
3 changes: 2 additions & 1 deletion benchmarks/test_benchmark_compile_pages.py
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@
from typing import Generator

import pytest
import reflex_chakra as rc

from benchmarks import WINDOWS_SKIP_REASON
from reflex import constants
@@ -144,7 +145,7 @@ class State(rx.State):

def index() -> rx.Component:
return rx.center(
rx.chakra.input(
rc.input(
id="token", value=State.router.session.client_token, is_read_only=True
),
rx.vstack(
5 changes: 3 additions & 2 deletions integration/test_background_task.py
Original file line number Diff line number Diff line change
@@ -13,6 +13,7 @@ def BackgroundTask():
import asyncio

import pytest
import reflex_chakra as rc

import reflex as rx
from reflex.state import ImmutableStateError
@@ -108,11 +109,11 @@ async def _triple_count(self):

def index() -> rx.Component:
return rx.vstack(
rx.chakra.input(
rc.input(
id="token", value=State.router.session.client_token, is_read_only=True
),
rx.heading(State.counter, id="counter"),
rx.chakra.input(
rc.input(
id="iterations",
placeholder="Iterations",
value=State.iterations.to_string(), # type: ignore
8 changes: 5 additions & 3 deletions integration/test_client_storage.py
Original file line number Diff line number Diff line change
@@ -17,6 +17,8 @@

def ClientSide():
"""App for testing client-side state."""
import reflex_chakra as rc

import reflex as rx

class ClientSideState(rx.State):
@@ -70,18 +72,18 @@ def set_var(self):

def index():
return rx.fragment(
rx.chakra.input(
rc.input(
value=ClientSideState.router.session.client_token,
is_read_only=True,
id="token",
),
rx.chakra.input(
rc.input(
placeholder="state var",
value=ClientSideState.state_var,
on_change=ClientSideState.set_state_var, # type: ignore
id="state_var",
),
rx.chakra.input(
rc.input(
placeholder="input value",
value=ClientSideState.input_value,
on_change=ClientSideState.set_input_value, # type: ignore
14 changes: 7 additions & 7 deletions integration/test_dynamic_routes.py
Original file line number Diff line number Diff line change
@@ -17,6 +17,8 @@ def DynamicRoute():
"""App for testing dynamic routes."""
from typing import List

import reflex_chakra as rc

import reflex as rx

class DynamicState(rx.State):
@@ -40,15 +42,13 @@ def next_page(self) -> str:

def index():
return rx.fragment(
rx.chakra.input(
rc.input(
value=DynamicState.router.session.client_token,
is_read_only=True,
id="token",
),
rx.chakra.input(
value=DynamicState.page_id, is_read_only=True, id="page_id"
),
rx.chakra.input(
rc.input(value=DynamicState.page_id, is_read_only=True, id="page_id"),
rc.input(
value=DynamicState.router.page.raw_path,
is_read_only=True,
id="raw_path",
@@ -61,10 +61,10 @@ def index():
id="link_page_next", # type: ignore
),
rx.link("missing", href="/missing", id="link_missing"),
rx.chakra.list(
rc.list(
rx.foreach(
DynamicState.order, # type: ignore
lambda i: rx.chakra.list_item(rx.text(i)),
lambda i: rc.list_item(rx.text(i)),
),
),
)
8 changes: 5 additions & 3 deletions integration/test_event_actions.py
Original file line number Diff line number Diff line change
@@ -16,6 +16,8 @@ def TestEventAction():
"""App for testing event_actions."""
from typing import List, Optional

import reflex_chakra as rc

import reflex as rx

class EventActionState(rx.State):
@@ -53,7 +55,7 @@ def get_event_triggers(self):

def index():
return rx.vstack(
rx.chakra.input(
rc.input(
value=EventActionState.router.session.client_token,
is_read_only=True,
id="token",
@@ -146,10 +148,10 @@ def index():
200
).stop_propagation,
),
rx.chakra.list(
rc.list(
rx.foreach(
EventActionState.order, # type: ignore
rx.chakra.list_item,
rc.list_item,
),
),
on_click=EventActionState.on_click("outer"), # type: ignore
8 changes: 4 additions & 4 deletions integration/test_event_chain.py
Original file line number Diff line number Diff line change
@@ -18,6 +18,8 @@ def EventChain():
import time
from typing import List

import reflex_chakra as rc

import reflex as rx

# repeated here since the outer global isn't exported into the App module
@@ -127,17 +129,15 @@ def click_yield_interim_value(self):

app = rx.App(state=rx.State)

token_input = rx.chakra.input(
token_input = rc.input(
value=State.router.session.client_token, is_read_only=True, id="token"
)

@app.add_page
def index():
return rx.fragment(
token_input,
rx.chakra.input(
value=State.interim_value, is_read_only=True, id="interim_value"
),
rc.input(value=State.interim_value, is_read_only=True, id="interim_value"),
rx.button(
"Return Event",
id="return_event",
44 changes: 24 additions & 20 deletions integration/test_form_submit.py
Original file line number Diff line number Diff line change
@@ -20,6 +20,8 @@ def FormSubmit(form_component):
"""
from typing import Dict, List

import reflex_chakra as rc

import reflex as rx

class FormState(rx.State):
@@ -35,28 +37,28 @@ def form_submit(self, form_data: Dict):
@app.add_page
def index():
return rx.vstack(
rx.chakra.input(
rc.input(
value=FormState.router.session.client_token,
is_read_only=True,
id="token",
),
eval(form_component)(
rx.vstack(
rx.chakra.input(id="name_input"),
rx.hstack(rx.chakra.pin_input(length=4, id="pin_input")),
rx.chakra.number_input(id="number_input"),
rc.input(id="name_input"),
rx.hstack(rc.pin_input(length=4, id="pin_input")),
rc.number_input(id="number_input"),
rx.checkbox(id="bool_input"),
rx.switch(id="bool_input2"),
rx.checkbox(id="bool_input3"),
rx.switch(id="bool_input4"),
rx.slider(id="slider_input", default_value=[50], width="100%"),
rx.chakra.range_slider(id="range_input"),
rc.range_slider(id="range_input"),
rx.radio(["option1", "option2"], id="radio_input"),
rx.radio(FormState.var_options, id="radio_input_var"),
rx.chakra.select(["option1", "option2"], id="select_input"),
rx.chakra.select(FormState.var_options, id="select_input_var"),
rc.select(["option1", "option2"], id="select_input"),
rc.select(FormState.var_options, id="select_input_var"),
rx.text_area(id="text_area_input"),
rx.chakra.input(
rc.input(
id="debounce_input",
debounce_timeout=0,
on_change=rx.console_log,
@@ -79,6 +81,8 @@ def FormSubmitName(form_component):
"""
from typing import Dict, List

import reflex_chakra as rc

import reflex as rx

class FormState(rx.State):
@@ -94,39 +98,39 @@ def form_submit(self, form_data: Dict):
@app.add_page
def index():
return rx.vstack(
rx.chakra.input(
rc.input(
value=FormState.router.session.client_token,
is_read_only=True,
id="token",
),
eval(form_component)(
rx.vstack(
rx.chakra.input(name="name_input"),
rx.hstack(rx.chakra.pin_input(length=4, name="pin_input")),
rx.chakra.number_input(name="number_input"),
rc.input(name="name_input"),
rx.hstack(rc.pin_input(length=4, name="pin_input")),
rc.number_input(name="number_input"),
rx.checkbox(name="bool_input"),
rx.switch(name="bool_input2"),
rx.checkbox(name="bool_input3"),
rx.switch(name="bool_input4"),
rx.slider(name="slider_input", default_value=[50], width="100%"),
rx.chakra.range_slider(name="range_input"),
rc.range_slider(name="range_input"),
rx.radio(FormState.options, name="radio_input"),
rx.select(
FormState.options,
name="select_input",
default_value=FormState.options[0],
),
rx.text_area(name="text_area_input"),
rx.chakra.input_group(
rx.chakra.input_left_element(rx.icon(tag="chevron_right")),
rx.chakra.input(
rc.input_group(
rc.input_left_element(rx.icon(tag="chevron_right")),
rc.input(
name="debounce_input",
debounce_timeout=0,
on_change=rx.console_log,
),
rx.chakra.input_right_element(rx.icon(tag="chevron_left")),
rc.input_right_element(rx.icon(tag="chevron_left")),
),
rx.chakra.button_group(
rc.button_group(
rx.button("Submit", type_="submit"),
rx.icon_button(FormState.val, icon=rx.icon(tag="plus")),
variant="outline",
@@ -148,8 +152,8 @@ def index():
functools.partial(FormSubmitName, form_component="rx.form.root"),
functools.partial(FormSubmit, form_component="rx.el.form"),
functools.partial(FormSubmitName, form_component="rx.el.form"),
functools.partial(FormSubmit, form_component="rx.chakra.form"),
functools.partial(FormSubmitName, form_component="rx.chakra.form"),
functools.partial(FormSubmit, form_component="rc.form"),
functools.partial(FormSubmitName, form_component="rc.form"),
],
ids=[
"id-radix",
10 changes: 6 additions & 4 deletions integration/test_server_side_event.py
Original file line number Diff line number Diff line change
@@ -11,6 +11,8 @@

def ServerSideEvent():
"""App with inputs set via event handlers and set_value."""
import reflex_chakra as rc

import reflex as rx

class SSState(rx.State):
@@ -39,12 +41,12 @@ def set_value_return_c(self):
@app.add_page
def index():
return rx.fragment(
rx.chakra.input(
rc.input(
id="token", value=SSState.router.session.client_token, is_read_only=True
),
rx.chakra.input(default_value="a", id="a"),
rx.chakra.input(default_value="b", id="b"),
rx.chakra.input(default_value="c", id="c"),
rc.input(default_value="a", id="a"),
rc.input(default_value="b", id="b"),
rc.input(default_value="c", id="c"),
rx.button(
"Clear Immediate",
id="clear_immediate",
Loading