| Does this handle nested dicts (in pickles in sql, which I had to write code to survey one time)? A queue-based traversal has flatter memory utilization for deeply nested dicts than a recursive traversal in Python without TCO. Given a visitor pattern traversal, a visit() function can receive the node path as a list of path components, and update a Counter() with a (full,path,tuple) or "delimiter\.escaped.path" key. Python collections.UserDict implements the methods necessary to proxy the dict Mapping/MutableMapping interface to self.data. For dicts with many keys, it would probably be faster to hook methods that mutate the UserDict.data dict like __setitem__, get, setdefault, update() and maybe __init__() in order to track which keys have changed instead of copying keys() into a set to do an unordered difference with a list. React requires setState() for all mutations this.state because there's no way to hook dunder methods in JS: setState() updates this.state and then notifies listeners or calls a list of functions to run when anything in this.state or when a value associated with certain keys or nested keys in this.state changes. FWIU ipyflow exposes the subscriber refcount/reflist but RxPy specifically does not:
ipyflow/core/test/test_refcount.py:
https://github.com/ipyflow/ipyflow/blob/master/core/test/tes... Anyways, For test assertions,
unittest.mock MagicMock can track call_count and call_args_list on methods that mutate a dict like __getitem__ and get(). There's also mock_calls, which keeps an ordered list of the args passed:
https://docs.python.org/3/library/unittest.mock.html |