diff --git a/CHANGELOG.md b/CHANGELOG.md index b78961c6d8..13d13d63b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,6 +74,9 @@ - Added `exit_cmd` to EvMore pager, to allow for calling a command (e.g. 'look') when leaving the pager. - `get_all_typeclasses` will return dict `{"path": typeclass, ...}` for all typeclasses available in the system. This is used by the new `@typeclass/list` subcommand (useful for builders etc). +- `evennia.utils.dbserialize.deserialize(obj)` is a new helper function to *completely* disconnect + a mutable recovered from an Attribute from the database. This will convert all nested `_Saver*` + classes to their plain-Python counterparts. ### General diff --git a/evennia/prototypes/tests.py b/evennia/prototypes/tests.py index 7e1b5a93f0..91d81310d1 100644 --- a/evennia/prototypes/tests.py +++ b/evennia/prototypes/tests.py @@ -588,39 +588,31 @@ class TestOLCMenu(TestEvMenu): "node_index": "|c --- Prototype wizard --- |n" } - expected_tree = [ - 'node_index', - ['node_prototype_key', - ['node_index', 'node_index', 'node_validate_prototype', - ['node_index', 'node_index'], 'node_index'], - 'node_prototype_parent', - ['node_prototype_parent', 'node_prototype_key', 'node_prototype_parent', 'node_index', - 'node_validate_prototype', 'node_index'], - 'node_typeclass', ['node_typeclass', 'node_prototype_parent', 'node_typeclass', + expected_tree = ['node_index', ['node_prototype_key', ['node_index', 'node_index', 'node_index', + 'node_validate_prototype', ['node_index', 'node_index', 'node_index'], 'node_index'], + 'node_prototype_parent', ['node_prototype_parent', 'node_prototype_key', + 'node_prototype_parent', 'node_index', 'node_validate_prototype', 'node_index'], + 'node_typeclass', ['node_typeclass', 'node_prototype_parent', 'node_typeclass', + 'node_index', 'node_validate_prototype', 'node_index'], 'node_key', ['node_typeclass', + 'node_key', 'node_index', 'node_validate_prototype', 'node_index'], 'node_aliases', + ['node_key', 'node_aliases', 'node_index', 'node_validate_prototype', 'node_index'], + 'node_attrs', ['node_aliases', 'node_attrs', 'node_index', 'node_validate_prototype', + 'node_index'], 'node_tags', ['node_attrs', 'node_tags', 'node_index', + 'node_validate_prototype', 'node_index'], 'node_locks', ['node_tags', + 'node_locks', 'node_index', 'node_validate_prototype', 'node_index'], + 'node_permissions', ['node_locks', 'node_permissions', 'node_index', + 'node_validate_prototype', 'node_index'], 'node_location', + ['node_permissions', 'node_location', 'node_index', 'node_validate_prototype', + 'node_index', 'node_index'], 'node_home', ['node_location', 'node_home', + 'node_index', 'node_validate_prototype', 'node_index', 'node_index'], + 'node_destination', ['node_home', 'node_destination', 'node_index', + 'node_validate_prototype', 'node_index', 'node_index'], + 'node_prototype_desc', ['node_prototype_key', 'node_prototype_parent', 'node_index', 'node_validate_prototype', 'node_index'], - 'node_key', ['node_typeclass', 'node_key', 'node_index', 'node_validate_prototype', - 'node_index'], - 'node_aliases', ['node_key', 'node_aliases', 'node_index', 'node_validate_prototype', - 'node_index'], - 'node_attrs', ['node_aliases', 'node_attrs', 'node_index', 'node_validate_prototype', - 'node_index'], - 'node_tags', ['node_attrs', 'node_tags', 'node_index', 'node_validate_prototype', - 'node_index'], - 'node_locks', ['node_tags', 'node_locks', 'node_index', 'node_validate_prototype', - 'node_index'], - 'node_permissions', ['node_locks', 'node_permissions', 'node_index', - 'node_validate_prototype', 'node_index'], - 'node_location', ['node_permissions', 'node_location', 'node_index', - 'node_validate_prototype', 'node_index', 'node_index'], - 'node_home', ['node_location', 'node_home', 'node_index', 'node_validate_prototype', - 'node_index', 'node_index'], - 'node_destination', ['node_home', 'node_destination', 'node_index', - 'node_validate_prototype', 'node_index', 'node_index'], - 'node_prototype_desc', ['node_prototype_key', 'node_prototype_parent', 'node_index', - 'node_validate_prototype', 'node_index'], - 'node_prototype_tags', ['node_prototype_desc', 'node_prototype_tags', 'node_index', - 'node_validate_prototype', 'node_index'], - 'node_prototype_locks', ['node_prototype_tags', 'node_prototype_locks', - 'node_validate_prototype', 'node_prototype_locks'], - 'node_validate_prototype', 'node_prototype_locks', 'node_prototype_locks', - 'node_prototype_locks', 'node_prototype_locks']] + 'node_prototype_tags', ['node_prototype_desc', 'node_prototype_tags', + 'node_index', 'node_validate_prototype', 'node_index'], + 'node_prototype_locks', ['node_prototype_tags', 'node_prototype_locks', + 'node_index', 'node_validate_prototype', 'node_index'], + 'node_validate_prototype', 'node_index', 'node_prototype_spawn', + ['node_index', 'node_index', 'node_validate_prototype'], 'node_index', + 'node_search_object', ['node_index', 'node_index', 'node_index']]]