{"record":{"id":"6ac24a47699dcc42","repo":"reflex-dev/reflex","slug":"unexpected-keyword-arguments-unexpected-kwargs","errorCode":null,"errorMessage":"Unexpected keyword arguments: {unexpected_kwargs}","messagePattern":"Unexpected keyword arguments: (.+?)","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"packages/reflex-base/src/reflex_base/vars/base.py","lineNumber":2465,"sourceCode":"            \"fget\": kwargs.pop(\"fget\", self._fget),\n            \"initial_value\": kwargs.pop(\"initial_value\", self._initial_value),\n            \"cache\": kwargs.pop(\"cache\", self._cache),\n            \"deps\": kwargs.pop(\"deps\", copy.copy(self._static_deps)),\n            \"auto_deps\": kwargs.pop(\"auto_deps\", self._auto_deps),\n            \"interval\": kwargs.pop(\"interval\", self._update_interval),\n            \"backend\": kwargs.pop(\"backend\", self._backend),\n            \"_js_expr\": kwargs.pop(\"_js_expr\", self._js_expr),\n            \"_var_type\": kwargs.pop(\"_var_type\", self._var_type),\n            \"_var_data\": kwargs.pop(\n                \"_var_data\", VarData.merge(self._var_data, merge_var_data)\n            ),\n            \"return_type\": kwargs.pop(\"return_type\", self._var_type),\n        }\n\n        if kwargs:\n            unexpected_kwargs = \", \".join(kwargs.keys())\n            msg = f\"Unexpected keyword arguments: {unexpected_kwargs}\"\n            raise TypeError(msg)\n\n        return type(self)(**field_values)\n\n    @property\n    def _cache_attr(self) -> str:\n        \"\"\"The attribute used to cache the value on the instance.\n\n        Returns:\n            An attribute name.\n        \"\"\"\n        return f\"__cached_{self._js_expr}\"\n\n    @property\n    def _last_updated_attr(self) -> str:\n        \"\"\"The attribute used to store the last updated timestamp.\n\n        Returns:\n            An attribute name.","sourceCodeStart":2447,"sourceCodeEnd":2483,"githubUrl":"https://github.com/reflex-dev/reflex/blob/45b8ed5ab735f8a56bbb09a42384f030eb0208e7/packages/reflex-base/src/reflex_base/vars/base.py#L2447-L2483","documentation":"ComputedVar._replace rebuilds the var via type(self)(**field_values) and only forwards a known set of fields (fget, initial_value, cache, deps, auto_deps, interval, backend, _js_expr, _var_type/_return_type, etc.). If the dataclass was constructed with extra attribute kwargs that _replace does not propagate, or a caller passes unknown kwargs, the reconstruction raises this TypeError. It indicates an internal/API mismatch in how a ComputedVar is being rebuilt.","triggerScenarios":"Calling ComputedVar._replace(...) with a kwarg not in its supported set; creating a ComputedVar subclass whose __init__ accepts extra kwargs not handled by _replace, then applying _replace (e.g. during var-data merging in the compiler); version skew where _replace's field list differs from the constructor's accepted kwargs.","commonSituations":"Subclassing ComputedVar with additional constructor parameters; running mismatched reflex/reflex-base workspace versions so the field list is out of sync; internal compiler paths calling _replace on custom var subclasses.","solutions":["If subclassing ComputedVar, override _replace to include your extra fields, or avoid extra init kwargs","Run uv sync / align reflex and reflex-base versions so _replace matches the constructor","Update your fork/vendored copy if you patched ComputedVar fields without updating _replace"],"exampleFix":"# before\nclass MyComputedVar(rx.vars.ComputedVar):\n    def __init__(self, fget, my_extra=None, **kwargs):\n        super().__init__(fget, **kwargs)\n        self.my_extra = my_extra\n# later: some_var._replace(merge_var_data=...) -> TypeError\n\n# after\nclass MyComputedVar(rx.vars.ComputedVar):\n    def __init__(self, fget, my_extra=None, **kwargs):\n        super().__init__(fget, **kwargs)\n        self.my_extra = my_extra\n\n    def _replace(self, **kwargs):\n        kwargs.setdefault('my_extra', self.my_extra)\n        return super()._replace(**kwargs)","handlingStrategy":"validation","validationCode":"import inspect\n\ndef replace_safe(cv, **kwargs) -> 'ComputedVar':\n    import reflex.vars as rx_vars\n    params = set(inspect.signature(type(cv).__init__).parameters)\n    safe = {k: v for k, v in kwargs.items() if k in params or k in {'merge_var_data', 'partial', 'initial_value', '_js_expr', 'return_type'}}\n    return cv._replace(**safe)","typeGuard":null,"tryCatchPattern":"try:\n    new_var = cv._replace(**opts)\nexcept TypeError as e:\n    if 'Unexpected keyword arguments' in str(e):\n        new_var = cv._replace(merge_var_data=opts.get('merge_var_data'))\n    else:\n        raise","preventionTips":["If subclassing ComputedVar, override _replace to forward your custom fields","Keep reflex and reflex-base workspace versions in sync with uv sync","Pass only documented _replace kwargs: merge_var_data, partial, initial_value, return_type"],"tags":["reflex","computed-var","internal-api","typeerror","subclassing"],"backgroundTag":"unexpected-keyword-argument","analyzedSha":"45b8ed5ab735f8a56bbb09a42384f030eb0208e7","analyzedAt":"2026-08-28T19:25:27.644Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}