diff --git a/funcs_common.py b/funcs_common.py index cca9b4f..6c5ec7c 100644 --- a/funcs_common.py +++ b/funcs_common.py @@ -7,7 +7,7 @@ import typing as _t import re as _re -from frozendict import deepfreeze as _deepfreeze +from frozendict import deepfreeze as _deepfreeze, frozendict as _frozendict from server import PromptServer as _PromptServer @@ -71,7 +71,9 @@ def _verify_input_dict(input_dict: _t.Dict[str, _T] = None, error_if_none=False) raise TypeError("No input-dict") return - if not isinstance(input_dict, dict): + # In py3.10, frozendict isn't a dict, but is a `typing.Mapping`. + # So, this many types to check against: + if not isinstance(input_dict, (dict, _frozendict, _t.Mapping)): raise TypeError(f"Input-dict isn't a dict. Got: {input_dict!r}") errors_dict: _t.Dict[_t.Any, str] = dict() diff --git a/node_dict_preview.py b/node_dict_preview.py index e599de3..beacc28 100644 --- a/node_dict_preview.py +++ b/node_dict_preview.py @@ -7,7 +7,7 @@ import typing as _t from inspect import cleandoc as _cleandoc from pprint import pformat as _pformat -from frozendict import deepfreeze as _deepfreeze +from frozendict import deepfreeze as _deepfreeze, frozendict as _frozendict from . import _meta from .docstring_formatter import format_docstring as _format_docstring @@ -24,7 +24,13 @@ def _to_regular_dict_recursive_copy(input_dict: dict = None) -> dict: if not input_dict: return dict() return { - k: (_to_regular_dict_recursive_copy(v) if isinstance(v, dict) else v) + k: ( + _to_regular_dict_recursive_copy(v) + # In py3.10, frozendict isn't a dict, but is a `typing.Mapping`. + # So, this many types to check against: + if isinstance(v, (dict, _frozendict, _t.Mapping)) + else v + ) for k, v in input_dict.items() }