* fix and test bug in config env loading
* streamline env var interpretation with @adhami3310
* improve error messages, fix invalid value for TELEMETRY_ENABLED
* just a small hint
* ruffing
* fix typo from review
If a non-root state was serialized, but its substates were not, then these
would not be populated when reloading the pickled state, because only substates
from the root were being populated with fresh versions.
Now, capture the substates from all fresh states and apply them to the
deserialized state for each substate to ensure that the entire state tree has
all substates instantiated after deserializing, even substates that were never
serialized originally.
* Shiki Code block Experimental
* refactor
* update code
* remove console.log
* add transformers to namespace
* some validations
* fix components paths
* fix ruff
* add a high-level component
* fix mapping
* fix mapping
* python 3.9+
* see if this fixes the tests
* fix pyi and annotations
* minimal update of theme and language map
* add hack for reflex-web/flexdown
* unit test file commit
* [ENG-3895] [ENG-3896] Update styling for shiki code block
* strip transformer triggers
* minor refactor
* linter
* fix pyright
* pyi fix
* add unit tests
* sneaky pyright ignore
* the transformer trigger regex should remove the language comment character
* minor refactor
* fix silly mistake
* component mapping in markdown should use the first child for codeblock
* use ternary operator in numbers.py, move code block args to class for docs discoverability
* precommit
* pyright fix
* remove id on copy button animation
* pyright fix for real
* pyi fix
* pyi fix fr
* check if svg exists
* copy event chain
* do a concatenation instead of first child
* added comment
---------
Co-authored-by: Carlos <cutillascarlos@gmail.com>
* make var system expandable
* use old syntax
* remove newer features
* that's a weird error
* remove unnecessary error message
* remove hacky getattr as it's no longer necessary
* improve color handling
* get it right pyright
* dang it darglint
* fix prototype to string
* don't try twice
* adjust test case
* add test for var alpha
* change place of type ignore
* fix json
* add name to custom var operation
* don't delete that you silly
* change logic
* remove extra word
* move all environment variables to the same place
* reorder things around
* move more variables to environment
* remove cyclical imports
* forgot default value for field
* for some reason type hints aren't being interpreted
* put the field type *before* not after
* make it get
* move a bit more
* add more fields
* move reflex dir
* add return
* put things somewhere else
* add custom error
* LiteralEventChainVar becomes an ArgsFunctionOperation
Instead of using the ArgsFunctionOperation to create the string representation
of the _js_expr, make the identity of the var an ArgsFunctionOperation so the
_args_names and _return_expr remain accessible.
Rely on the default behavior of ArgsFunctionOperation to create the
_cached_var_name / _js_expr value.
This allows the compat shim in `format_event_chain` to remain functional, as it
does special handling for ArgsFunctionOperation to retain the previous behavior
of that function (this was a regression introduced in 0.6.2).
* _var_type is EventChain; fix parent class order
* Re-fix LiteralEventChainVar inheritence list w/ comment
* [ENG-3942] LiteralEventVar becomes VarCallOperation
instead of using `.call` when constructing the `_js_expr`, have the identity of
a LiteralEventVar as a VarCallOperation to take advantage of the _var_data
carrying.
* add event overlords
* EventCallback descriptor always returns EventSpec from class
Relax actual `__get__` definition to support the multitude of overloads
* test case for event related vars carrying _var_data
---------
Co-authored-by: Khaleel Al-Adhami <khaleel.aladhami@gmail.com>
* Support aria and data props
* Fix busted docstring
* Ignore special_attributes logic for defined props
* simplify special attribute checking logic
avoid special cases in the special case handling code 🙄
* add type hinting to events
* fix pyi
* make it a list
* add on change
* dang it darglintz
* add future annotations
* add try except becuse i hate this
* add check for class
* aaaa
* sometimes you need to make hard decisions
* ono
* i hate unions
* add rx event
* move stuff around
* maybe
* special case osmething
* i don't need no test
* remove stray print
Co-authored-by: Masen Furer <m_github@0x26.net>
* remove another stray print
Co-authored-by: Masen Furer <m_github@0x26.net>
* add rx event
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* unionize base var fields types
* add tests
* fix union types for vars (#4152)
* remove 3.11 special casing
* special case on version
* fix old versions of python
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* Handle rx.State subclasses defined in function
* create a new container module: `reflex.istate.dynamic` to save references to
dynamically generated substates.
* for substates with `<locals>` in the name, copy these to the container module
and update the name to avoid duplication.
* add test for "poor man" ComponentState
Fix#4128
* test_state: disable local def handling for dupe-detection test
* Track the original module and name for type hint evaluation
Also use the original name when checking for the "mangled name" pattern when
doing undeclared Var assignment checking.
* add workflow to check dependencies on release branch
* rename action to follow convention of other actions
* update workflow
* bump poetry version
* relock deps
* update check to ignore pyright and ruff
* oops, you saw nothing
* split dep check in two job
* fix frontend dep check
* fix stuff
* hmm yeah
* nope nope nope
* sigh
* bump js versions for some packages
* fix some warnings in tests
* fix tests
* try some options
* try to set asyncio policy
* debug dep check
* fix attempt for backend dep
* clean up output for backend check
* run bun outdated on reflex-web to catch most of the packages
* fix python version
* fix python version
* add missing env
* fix bun command
* fix workdir of frontend check
* update packages version
* up-pin plotly.js version
* add debug ouput
* clean frontend dep check output
* fix output
* fix async tests for redis
* relock poetry.lock
* Non-async functions do not need pytest_asyncio.fixture
* test_state: close StateManagerRedis connection in test to avoid warning
---------
Co-authored-by: Masen Furer <m_github@0x26.net>
* Simplify StateManagerDisk implementation
* Act more like the memory state manager and only track the root state in self.states
* .load_state always loads a single state or returns None
* .populate_states is the new entry point in loading from disk and it only occurs
when the root state is not known
* much fast
* StateManagerDisk now acts much more like StateManagerMemory
Treat StateManagerDisk like StateManagerMemory for AppHarness
* Handle root_state deserialized from disk
In this case, we need to initialize the whole state tree, so any non-persistent
states will still get default values, whereas on-disk states will overwrite the
defaults.
* Cache root_state under client_token for StateManagerMemory compatibility
Mainly this just makes it easier for us to write tests that work against either
Disk or Memory state managers.
* 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
* 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>
* 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