* use pathlib as much as possible
* fixstuff
* break locally to unbreak in CI 🤷
* add type on env
* debug attempt 1
* debugged
* oops, there is the actual fix
* fix 3.9 compat
* Track backend-only vars that are declared without a default value
Without this provision, declared backend vars can be accidentally shared among
all states if a mutable value is assigned to the class attribute.
* add test case for no default backend var
* Handle bool cast for optional NumberVar
If the _var_type is optional, then also check that the value is not None
* boolify the result of `and_operation`
* flip order to be more semantically pure
---------
Co-authored-by: Khaleel Al-Adhami <khaleel.aladhami@gmail.com>
* remove format_state and override behavior for bare
* pass the test cases
* only do one level of dicting dataclasses
* remove dict and replace list with set
* delete unnecessary serialize calls
* remove serialize for mutable proxy
* dang it darglint
* EventFnArgMismatch fix to support defaults args
* fixing type hint and docstring raises
* enforce stronger type checking
* unwrap var annotations :(
---------
Co-authored-by: Khaleel Al-Adhami <khaleel.aladhami@gmail.com>
* Update markdown component map to use new rx.code_block.theme enum
* change var to theme
* give the types some attention instead of ignoring them
---------
Co-authored-by: Khaleel Al-Adhami <khaleel.aladhami@gmail.com>
* lift node version restraint to allow more recent version if already installed
* add node test for latest version
* change python version
* use purple for debug logs
* update workflow
* add playwright dev dependency
* update workflow
* change test
* oops
* improve test
* update test
* fix tests
* mv units tests to a subfolder
* reorganize tests
* fix install
* update test_state
* revert node changes and only keep new tests organization
* move integration tests in tests/integration
* fix integration workflow
* fix dockerfile workflow
* fix dockerfile workflow 2
* fix shared_state
* allow classname to be state vars
* simplify join with all literal string vars
* add test case and avoid concat var operation if it's not necessary
* remove silly print statement
* simplify case where there's no var
* don't automatically do class name str to literal var
* can run with granian by setting REFLEX_USE_GRANIAN var
* granian also useable for prod mode
* adjust reload paths for granian
* move uvicorn / granian logic to their own function
* fix prod mode
* Revert "ruff formatting to unbreak `main` CI (#3964)"
This reverts commit f9be184b86.
* Revert "bump python>=3.10 for 0.6.0 (#3956)"
This reverts commit fe1833c5e1.
* drop python3.8 support
* relock dependencies
* Raise warning when < py310 is used
* Move python version check to reflex version check function
Avoid spammy deprecation warnings by only emitting warning once per project,
per reflex version, per reinit.
* Remove other references to python3.8
* [WiP] Support UI components returned from a computed var
* Get rid of nasty react hooks warning
* include @babel/standalone in the base to avoid CDN
* put window variables behind an object
* use jsx
* implement the thing
* cleanup dead test code (#3909)
* override dict in propsbase to use camelCase (#3910)
* override dict in propsbase to use camelCase
* fix underscore in dict
* dang it darglint
* [REF-3562][REF-3563] Replace chakra usage (#3872)
* [ENG-3717] [flexgen] Initialize app from refactored code (#3918)
* Remove Pydantic from some classes (#3907)
* half of the way there
* add dataclass support
* Forbid Computed var shadowing (#3843)
* get it right pyright
* fix unit tests
* rip out more pydantic
* fix weird issues with merge_imports
* add missing docstring
* make special props a list instead of a set
* fix moment pyi
* actually ignore the runtime error
* it's ruff out there
---------
Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com>
* Merging
* fixss
* fix field_name
* always import react
* move func to file
* do some weird things
* it's really ruff out there
* add docs
* how does this work
* dang it darglint
* fix the silly
* don't remove computed guy
* silly goose, don't ignore var types :D
* update code
* put f string on one line
* make it deprecated instead of outright killing it
* i hate it
* add imports from react
* assert it has evalReactComponent
* do things ig
* move get field to global context
* ooops
---------
Co-authored-by: Khaleel Al-Adhami <khaleel.aladhami@gmail.com>
Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com>
Co-authored-by: Elijah Ahianyo <elijahahianyo@gmail.com>
* state: update inherited_vars and tracking dicts when adding vars
Ensure that dynamically added vars are accounted for in dependency and
inheritence tree to avoid unrenderable or stale data.
* Regression test for dynamic route args and inherited_vars
* [flexgen] Initialize app from refactored code
Use the new /api/gen/{hash}/refactored endpoint to get refactored reflex code.
* Use _js_expr instead of _var_name
* delete most references to varr
* [REF-3562][REF-3563] Replace chakra usage (#3872)
* only one mention of var
* delete vars.py why not
* remove reflex.vars
* rename immutable var to var
* rename ivars to vars
* add vars back smh
* ruff
* no more create_safe
* reorder deprecated
* remove raises
* remove all Var.create
* move to new api
* fix unit tests
* fix pyi hopefully
* sort literals
* fix event handler issues
* update poetry
* fix silly issues i'm very silly
* add var_operation_return
* rename immutable to not immutable
* add str type
* it's ruff out there
---------
Co-authored-by: Elijah Ahianyo <elijahahianyo@gmail.com>
* half of the way there
* add dataclass support
* Forbid Computed var shadowing (#3843)
* get it right pyright
* fix unit tests
* rip out more pydantic
* fix weird issues with merge_imports
* add missing docstring
* make special props a list instead of a set
* fix moment pyi
* actually ignore the runtime error
* it's ruff out there
---------
Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com>
* fix dynamic route vars silently shadow all other vars
* add test
* fix: allow multiple dynamic routes with the same arg
* add test for multiple dynamic args with the same name
* avoid side-effects with DynamicState tests
* fix dynamic route integration test which shadowed a var
* fix darglint
* refactor to DynamicRouteVar
* old typing stuff again
* from typing_extensions import Self
try to keep typing backward compatible with older releases we support
* Raise a specific exception when encountering dynamic route arg shadowing
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* fix: Adding type propagation to ToStringOperation.
* fix: Better naming.
* fix: Added test that fails without the fix.
* Update reflex/ivars/base.py
Co-authored-by: Masen Furer <m_github@0x26.net>
* Retain mutability inside `async with self` block (#3884)
When emitting a state update, restore `_self_mutable` to the value it had
previously so that `yield` in the middle of `async with self` does not result
in an immutable StateProxy.
Fix#3869
* Include child imports in markdown component_map (#3883)
If a component in the markdown component_map contains children components, use
`_get_all_imports` to recursively enumerate them.
Fix#3880
* [REF-3570] Remove deprecated REDIS_URL syntax (#3892)
* fix: Instead of researching the type after dropping it, preserve it.
* Apply suggestions from code review
Co-authored-by: Masen Furer <m_github@0x26.net>
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* use serializer system
* add checks for unsupported operands
* and and or are now supported
* format
* remove unnecessary call to JSON
* put base before rest
* fix failing testcase
* add hinting to get static analysis to complain
* damn
* big changes
* get typeguard from extensions
* please darglint
* dangit darglint
* remove one from vars
* add without data and use it in plotly
* DARGLINT
* change format for special props
* add pyi
* delete instances of Var.create
* modify client state to work
* fixed so much
* remove every Var.create
* delete all basevar stuff
* checkpoint
* fix pyi
* get older python to work
* dangit darglint
* add simple fix to last failing testcase
* remove var name unwrapped and put client state on immutable var
* fix older python
* fox event issues
* change forms pyi
* make test less strict
* use rx state directly
* add typeignore to page_id
* implement foreach
* delete .web states folder silly
* update reflex chakra
* fix issue when on mount or on unmount is not set
* nuke Var
* run pyi
* import immutablevar in critical location
* delete unwrap vars
* bring back array ref
* fix style props in app
* /health endpoint for K8 Liveness and Readiness probes (#3855)
* Added API Endpoint
* Added API Endpoint
* Added Unit Tests
* Added Unit Tests
* main
* Apply suggestions from Code Review
* Fix Ruff Formatting
* Update Socket Events
* Async Functions
* Update find_replace (#3886)
* [REF-3592]Promote `rx.progress` from radix themes (#3878)
* Promote `rx.progress` from radix themes
* fix pyi
* add warning when accessing `rx._x.progress`
* Use correct flexgen backend URL (#3891)
* Remove demo template (#3888)
* gitignore .web (#3885)
* update overflowY in AUTO_HEIGHT_JS from hidden to scroll (#3882)
* Retain mutability inside `async with self` block (#3884)
When emitting a state update, restore `_self_mutable` to the value it had
previously so that `yield` in the middle of `async with self` does not result
in an immutable StateProxy.
Fix#3869
* Include child imports in markdown component_map (#3883)
If a component in the markdown component_map contains children components, use
`_get_all_imports` to recursively enumerate them.
Fix#3880
* [REF-3570] Remove deprecated REDIS_URL syntax (#3892)
* mixin computed vars should only be applied to highest level state (#3833)
* improve state hierarchy validation, drop old testing special case (#3894)
* fix var dependency dicts (#3842)
* Adding array to array pluck operation. (#3868)
* fix initial state without cv fallback (#3670)
* add fragment to foreach (#3877)
* Update docker-example (#3324)
* /health endpoint for K8 Liveness and Readiness probes (#3855)
* Added API Endpoint
* Added API Endpoint
* Added Unit Tests
* Added Unit Tests
* main
* Apply suggestions from Code Review
* Fix Ruff Formatting
* Update Socket Events
* Async Functions
* /health endpoint for K8 Liveness and Readiness probes (#3855)
* Added API Endpoint
* Added API Endpoint
* Added Unit Tests
* Added Unit Tests
* main
* Apply suggestions from Code Review
* Fix Ruff Formatting
* Update Socket Events
* Async Functions
* Merge branch 'main' into use-old-serializer-in-literalvar
* [REF-3570] Remove deprecated REDIS_URL syntax (#3892)
* /health endpoint for K8 Liveness and Readiness probes (#3855)
* Added API Endpoint
* Added API Endpoint
* Added Unit Tests
* Added Unit Tests
* main
* Apply suggestions from Code Review
* Fix Ruff Formatting
* Update Socket Events
* Async Functions
* [REF-3570] Remove deprecated REDIS_URL syntax (#3892)
* remove extra var
Co-authored-by: Masen Furer <m_github@0x26.net>
* resolve typo
* write better doc for var.create
* return var value when we know it's literal var
* fix unit test
* less bloat for ToOperations
* simplify ImmutableComputedVar.__get__ (#3902)
* simplify ImmutableComputedVar.__get__
* ruff it
---------
Co-authored-by: Samarth Bhadane <samarthbhadane119@gmail.com>
Co-authored-by: Elijah Ahianyo <elijahahianyo@gmail.com>
Co-authored-by: Masen Furer <m_github@0x26.net>
Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com>
Co-authored-by: Vishnu Deva <vishnu.deva12@gmail.com>
Co-authored-by: abulvenz <a.eismann@senbax.de>
* delete states if it exists
* simplify ImmutableComputedVar.__get__ (#3902)
* simplify ImmutableComputedVar.__get__
* ruff it
---------
Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com>
When emitting a state update, restore `_self_mutable` to the value it had
previously so that `yield` in the middle of `async with self` does not result
in an immutable StateProxy.
Fix#3869
* add var_operations and move some operations to the new style
* change bound style
* can't assume int anymore
* slice is not hashable (how did this work bef)
* convert to int explicitly
* move the rest of the operations to new style
* fix bool guess type
* forgot to precommit dangit
* add type ignore to bool for now
* implement disk state manager
* put states inside of a folder
* return root state all the time
* factor out code
* add docs for token expiration
* cache states directory
* call absolute on web directory
* change dir to app path when testing the backend
* remove accidental 🥒
* test disk for now
* modify schema
* only serialize specific stuff
* fix issue in types
* what is a kilometer
* create folder if it doesn't exist in write
* this code hates me
* check if the file isn't empty
* add try except clause
* add check for directory again
* test_component: improve valid/invalid event trigger tests
Add test cases for event triggers defined as annotations.
Add additional cases around lambda returning different values.
Improve assertions for invalid tests (each line needs its own `pytest.raises`).
More invalid test cases.
* [REF-3589] raise EventHandlerArgMismatch when event handler args don't match spec
Improve error message for common issue.
Previously when the event handler arguments didn't match the spec, the
traceback resulted in:
```
OSError: could not get source code
```
Now this problem is traceable as a distinct error condition and users are
empowered to debug their code and reference the documentation (to be updated)
for further information.
* raise EventFnArgMismatch when lambda args don't match event trigger spec
Improve error message for another common issue encountered in the reflex framework.
Previous error message was
```
TypeError: index.<locals>.<lambda>() takes 0 positional arguments but 1 was given
```
* Fix up lambda test cases
* call_event_fn: adjust number of args for bound methods
* Use lru_cache on expensive typing-related functions
* Skip instantiation of VarData unless data was actually merged
* Revert "integration: bump listening timeout to 1800 seconds"
This reverts commit a94eedff6d.
* Revert "integration: bump listening timeout to 1200 seconds"
This reverts commit 86563b66a4.
* [REF-3633] Introduce a workaround for enterprise users who get stuck with httpx.get SSL
Setting SSL_NO_VERIFY=1 will disable SSL verification during `reflex init`
* Also install fnm using `reflex.utils.net.get`
If the user provided an `appearance` or `color_mode` value to `rx.theme`, then
the resulting value ended up being double-double-quoted in the resulting JS
output.
Instead remove the quotes from the context.js.jinja2 and always pass appearance
as a Var.
* guess_type: if the type is optional, treat it like it's "not None"
When guessing the type for an Optional annotation, the Optional was already
being stripped off, but this value was being ignored, except for error
messages. So actually use the Optional-stripped value.
* Strip Optional when casting Var .to
* fully migrate vars into new system
* i hate rufffff (no i don't)
* fix silly pright issues (except colormode and state)
* remove all instances of Var.create
* create immutable callable var and get rid of more base vars
* implement hash for all functions
* get reflex-web to compile
* get it to compile reflex-web successfully
* fix tests
* fix pyi
* use override from typing_extension
* put plotly inside of a catch
* dicts are unusable sadly
* fix silly mistake
* overload equals to special case immutable var
* improve test_cond
* solve more CI issues, down to 94 failures
* down to 20 errors
* down to 13 errors
* pass all testcases
* fix pyright issues
* reorder things
* use get origin more
* use fixed_type logic
* various optimizations
* go back to passing test cases
* use less boilerplate
* remove unnecessary print message
* remove weird comment
* add test for html issue
* add type ignore
* fix another silly issue
* override get all var data for var operations call
* make integration tests pass
* fix immutable call var
* better logic for finding parent class
* use even better logic for finding state wrt computedvar
* only choose the ones that are defined in the same module
* small dict to large dict
* [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>
* pyproject.toml: bump to 0.6.0a1
* pyproject.toml: depend on reflex-chakra>=0.6.0a
New Var system support in reflex-chakra 0.6.0a1
* poetry.lock: relock dependencies
* integration: bump listening timeout to 1200 seconds
* integration: bump listening timeout to 1800 seconds
* Use cached_var_no_lock to avoid ImmutableVar deadlocks (#3835)
* Use cached_var_no_lock to avoid ImmutableVar deadlocks
ImmutableVar subclasses will always return the same value for a _var_name or
_get_all_var_data so there is no need to use a per-class lock to protect a
cached attribute on an instance, and doing so actually is observed to cause
deadlocks when a particular _cached_var_name creates new LiteralVar instances
and attempts to serialize them.
* remove unused module global
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
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: Alek Petuskey <alekpetuskey@Aleks-MacBook-Pro.local>
Co-authored-by: Elijah Ahianyo <elijahahianyo@gmail.com>
* 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>
* half of the way there
* implement __getitem__ for array
* add some tests
* add fixes to pyright
* fix default factory
* implement array operations
* format code
* fix pyright issue
* give up
* add object operations
* add test for merge
* pyright 🥺
* use str isntead of _var_name
Co-authored-by: Masen Furer <m_github@0x26.net>
* wrong var_type
* make to much nicer
* add subclass checking
* enhance types
* use builtin list type
* improve typing even more
* i'm awaiting october
* use even better typing
* add hash, json, and guess type method
* fix pyright issues
* add a test and fix lots of errors
* fix pyright once again
* add type inference to list
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
When using rx.vars.get_uuid_string_var, wrap the prop Var in `useMemo` so that
the value remains consistent across re-renders of the component.
Fix#3707
* implement var operation decorator
* use older syntax
* use cast and older syntax
* use something even simpler
* add some tests
* use old union tactics
* that's not how you do things
* implement arithmetic operations while we're at it
* add test
* even more operations
* can't use __bool__
* thanos snap
* forgot ruff
* use default factory
* dang it darglint
* i know i should have done that but
* convert values into literalvars
* make test pass
* use older union tactics
* add test to string var
* pright why do you hate me 🥺
* [REF-3184] Raise exception when encountering nested `async with self` blocks
Avoid deadlock when the background task already holds the mutation lock for a
given state.
* [REF-3339] get_state from background task links to StateProxy
When calling `get_state` from a background task, the resulting state instance
is wrapped in a StateProxy that is bound to the original StateProxy and shares
the same async context, lock, and mutability flag.
* If StateProxy has a _self_parent_state_proxy, retrieve the correct substate
* test_state fixup
* implement more literal vars
* fix super issue
* pyright has a bug i think
* oh we changed that
* fix docs
* literalize vars recursively
* do what masen told me :D
* use dynamic keys
* forgot .create
* adjust _var_value
* dang it darglint
* add test for serializing literal vars into js exprs
* fix silly mistake
* add handling for var and none
* use create safe
* is none bruh
* implement function vars and do various modification
* fix None issue
* clear a lot of creates that did nothing
* add tests to function vars
* added simple fix smh
* use fconcat to make an even more complicated test
* reflex.build polling: catch exceptions and retry
Extend interval to 2 seconds to reduce server load.
* Add function to check if a string looks like a generation hash
* reflex init: allow --template to be a generation hash if --ai is specified
* implement LiteralStringVar and format/retrieval mechanism
* use create safe
* add cached properties to ConcatVarOperation
* fix caches
* also include self
* fix inconsistencies in typings
* use default factory not default
* add missing docstring
* experiment with immutable var data
* solve pydantic issues
* add sorted function
* missing docs
* forgot ellipses
* give up on frozen
* dang it darglint
* fix string serialization bugs and remove unused code
* add returns statement
* whitespace moment
* add simple test for string concat
* export ConcatVarOperation
* define new JS-type var classes
* add docstring
* get rid of dataclass definitions and export all new vars
* order imports in the correct way
* only hash once
* implement format for immutable vars
* add some basic test
* make reference only after formatting
* win over pyright
* hopefully now pyright doesn't hate me
* forgot some _var_data
* i don't know how imports work
* use f_string var and remove assignments from pyi file
* override post_init to not break immutability
* add create_safe and test for it
* add module prefix to state names
* fix state names in test_app
* update state names in test_state
* fix state names in test_var
* fix state name in test_component
* fix state names in test_format
* fix state names in test_foreach
* fix state names in test_cond
* fix state names in test_datatable
* fix state names in test_colors
* fix state names in test_script
* fix state names in test_match
* fix state name in event1 fixture
* fix pyright and darglint
* fix state names in state_tree
* fix state names in redis only test
* fix state names in test_client_storage
* fix state name in js template
* add `get_state_name` and `get_full_state_name` helpers for `AppHarness`
* fix state names in test_dynamic_routes
* use new state name helpers in test_client_storage
* fix state names in test_event_actions
* fix state names in test_event_chain
* fix state names in test_upload
* fix state name in test_login_flow
* fix state names in test_input
* fix state names in test_form_submit
* ruff
* validate state module names
* wtf is going on here?
* remove comments leftover from refactoring
* adjust new test_add_style_embedded_vars
* fix state name in state.js
* fix integration/test_client_state.py
new SessionStorage feature was added with more full state names that need to be formatted in
* fix pre-commit issues in test_client_storage.py
* adjust test_computed_vars
* adjust safe-guards
* fix redis tests with new exception state
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
If pydantic v1 is already installed, there is no reason to restore the original
pydantic modules, which seems to introduce subtle incompatibilities with some
pydantic versions.
Perform the pydantic version check early on and exit for v1 before doing
anything with the sys.modules.
Fix#3642
* fix axis orientation prop
* add margin prop explanation
* active bar and on animation start
* remove data key from y-axis
* precommit and pyi generator
---------
Co-authored-by: Tom Gotsman <tomgotsman@Toms-MacBook-Pro.local>
Co-authored-by: Tom Gotsman <tomgotsman@toms-mbp.lan>
* fix: unexpected kwargs raise type error, on _replace
* add: docstring for _replace, test for invalid kwargs replace
* add: parametrize var for replace test
* fix: computed_var _replace with invalid kwargs
* - added possibility to pass front- and backend exception handlers to rx.App
- wrapped the app with ErrorBoundary component to catch rendering errors
* added missing exception handler to reflex.app._process
* regenerated pyi
* fix unit tests for exception handler validation
* fix typing error in ErrorBoudary
* - fix error_bounday pyi
- minor refactoring of error boundary
- removed error boundary from 404 page
* added missing inspect module import after merging main
* fix typing error
* Clean up ErrorBoundary component
* Remove custom _render function
* Remove special imports in Component base class
* Simplify hooks for better composability
* test_exception_handlers: also test in prod mode
* fixed color prop
* fixed error boundary bug and removed hardcoding of the frontend event exception state
* formatted the code after conflict resolution
* fixed type of the error_boundary
* ruff format
---------
Co-authored-by: Maxim Vlah <m.vlah@senbax.de>
Co-authored-by: Masen Furer <m_github@0x26.net>
* feat: Adding an event to go back just as the user would.
* fix: Simplification suggested by masenf.
* fix: And now apply the fix to the right function.
* [REF-3067] Do not purge .web/pages in dev mode
Avoid race condition in hot reload that occurs when pages are removed before
they are recreated.
Fix#3416
* use constants instead of hardcoded string
* add immutable var class
* add missing docs
* override _replace
* fix type imports
* override create as well
* remove deprecated properties and arguments
* remove unused code in ImmutableVar
* fix namespace issue
* no Self in 3.8
Ensure that reflex.utils.compat is loaded whenever `reflex` itself is imported
to try and avoid the sqlmodel metaclass conflict error that arises when
sqlmodel is imported first with pydantic v2, but reflex Model inherits from
rx.Base which is based on pydantic v1.
Fix#3515
The formatting of the upload ID had extra single quotes that were not needed.
Now that `_var_name_unwrapped` is used, any `str`-like Vars will automatically
be formatted with backticks
* split lifespan and middleware logic in separate mixin files
* fix for 3.8
* fix for unit tests
* add missing sys import
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* pyi_generator: avoid fully qualified names for reflex. types
The previous method added quite a large line diff to the pyi files, so for now,
lets just add the `Breakpoints` import to the default set along with Var,
EventHandler, Style and others.
* pyi_generator: fix generated files using ruff
also generate updated pyi files in reflex/experimental namespace
* remove black from dev dependencies
* poetry.lock: relock deps
* Update all pyi files with new formatting
* pre-commit fixes
* pyi_generator: fix __init__.pyi files again
* implement basic behavior to handle both radix and css
* add all components in theme, AND change pyi to include path of reflex types
* order type annotations in pyi_generator (#3585)
* order type annotations in pyi_generator
* run pyi_generator
* classvars should not be backend vars (#3578)
* classvars should not be backend vars
* cleanup RESERVED_BACKEND_VAR_NAMES
* order type annotations in pyi_generator (#3585)
* order type annotations in pyi_generator
* run pyi_generator
* do not validate non-cached var deps (#3576)
* do not validate non-cached var deps
* further improve Exceptions for misconfigured var deps
* order type annotations in pyi_generator (#3585)
* order type annotations in pyi_generator
* run pyi_generator
* fix git merge remains
* define function globally
* use more modern annotations
* only trigger when direct value and not state
* simplify unions
* accidentally removed avatar oop
---------
Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com>
* add computed backend vars
* finish computed backend vars, add tests
* fix token for AppHarness with redis state manager
* fix timing issues
* add unit tests for computed backend vars
* automagically mark cvs with _ prefix as backend var
* fully migrate backend computed vars
* rename is_backend_variable to is_backend_base_variable
* add integration test for implicit backend cv, adjust comments
* replace expensive backend var check at runtime
* keep stuff together
* simplify backend var check method, consistent naming, improve test typing
* fix: do not convert properties to cvs
* add test for property
* fix cached_properties with _ prefix in state cls
* Clear color mode local storage
* use the last compiled time logic to determine when to clear local storage
* precommit fix
* app harness fix
* run prettier on reflex/.templates/web/utils/helpers/color_mode.js
* make sure last_compiled_time is updated for stateless apps as well.
* set the chkara-ui-color-mode cookie instead of clearing it, so it is integrated in the app's useEffect cycle
* fix CI
* fix import formatting
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* Automatic authentication for backend on Github Codespaces
When running reflex on Github codespaces, the port forwarding mechanism
requires authentication, which happens automatically when first accessing the
port via HTTPS; however since the backend connects over the WSS protocol
instead, it gets an access error with no way to redirect to Github's
authentication servers to get the port open.
This PR adds an automatic redirection mechanism to a backend route when there
is a connection error accessing the frontend. After the backend route loads, it
redirects back to the frontend, but now it can connect to the backend via
websocket because the port forward is authenticated.
* manually update .pyi file 🫨
* Dont escape backticks in JS string interpolation
* add unit tests
* Fix darglint
* add a note to re-visit after new Var API is implemented
* tests should have a good meaning