Merge branch 'develop' of github.com:evennia/evennia into develop
This commit is contained in:
commit
825d5d49e7
7 changed files with 47 additions and 22 deletions
|
|
@ -328,4 +328,4 @@ class GametimeScript(DefaultScript):
|
||||||
callback()
|
callback()
|
||||||
|
|
||||||
seconds = real_seconds_until(**self.db.gametime)
|
seconds = real_seconds_until(**self.db.gametime)
|
||||||
self.restart(interval=seconds)
|
self.start(interval=seconds,force_restart=True)
|
||||||
|
|
|
||||||
|
|
@ -286,7 +286,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager):
|
||||||
categories = make_iter(category) if category else []
|
categories = make_iter(category) if category else []
|
||||||
n_keys = len(keys)
|
n_keys = len(keys)
|
||||||
n_categories = len(categories)
|
n_categories = len(categories)
|
||||||
unique_categories = sorted(set(categories))
|
unique_categories = set(categories)
|
||||||
n_unique_categories = len(unique_categories)
|
n_unique_categories = len(unique_categories)
|
||||||
|
|
||||||
dbmodel = self.model.__dbclass__.__name__.lower()
|
dbmodel = self.model.__dbclass__.__name__.lower()
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,13 @@ class TestTypedObjectManager(BaseEvenniaTest):
|
||||||
[self.obj1],
|
[self.obj1],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_get_tag_with_any_including_nones(self):
|
||||||
|
self.obj1.tags.add("tagA", "categoryA")
|
||||||
|
self.assertEqual(
|
||||||
|
self._manager("get_by_tag", ["tagA", "tagB"], ["categoryA", "categoryB", None], match="any"),
|
||||||
|
[self.obj1],
|
||||||
|
)
|
||||||
|
|
||||||
def test_get_tag_withnomatch(self):
|
def test_get_tag_withnomatch(self):
|
||||||
self.obj1.tags.add("tagC", "categoryC")
|
self.obj1.tags.add("tagC", "categoryC")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,6 @@ class GlobalScriptContainer(Container):
|
||||||
|
|
||||||
# store a hash representation of the setup
|
# store a hash representation of the setup
|
||||||
script.attributes.add("_global_script_settings", compare_hash, category="settings_hash")
|
script.attributes.add("_global_script_settings", compare_hash, category="settings_hash")
|
||||||
script.start()
|
|
||||||
|
|
||||||
return script
|
return script
|
||||||
|
|
||||||
|
|
@ -183,9 +182,12 @@ class GlobalScriptContainer(Container):
|
||||||
# populate self.typeclass_storage
|
# populate self.typeclass_storage
|
||||||
self.load_data()
|
self.load_data()
|
||||||
|
|
||||||
# start registered scripts
|
# make sure settings-defined scripts are loaded
|
||||||
for key in self.loaded_data:
|
for key in self.loaded_data:
|
||||||
self._load_script(key)
|
self._load_script(key)
|
||||||
|
# start all global scripts
|
||||||
|
for script in self._get_scripts():
|
||||||
|
script.start()
|
||||||
|
|
||||||
def load_data(self):
|
def load_data(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -239,6 +239,9 @@ class _SaverMutable(object):
|
||||||
def __gt__(self, other):
|
def __gt__(self, other):
|
||||||
return self._data > other
|
return self._data > other
|
||||||
|
|
||||||
|
def __or__(self, other):
|
||||||
|
return self._data | other
|
||||||
|
|
||||||
@_save
|
@_save
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key, value):
|
||||||
self._data.__setitem__(key, self._convert_mutables(value))
|
self._data.__setitem__(key, self._convert_mutables(value))
|
||||||
|
|
@ -450,7 +453,9 @@ def deserialize(obj):
|
||||||
elif tname in ("_SaverOrderedDict", "OrderedDict"):
|
elif tname in ("_SaverOrderedDict", "OrderedDict"):
|
||||||
return OrderedDict([(_iter(key), _iter(val)) for key, val in obj.items()])
|
return OrderedDict([(_iter(key), _iter(val)) for key, val in obj.items()])
|
||||||
elif tname in ("_SaverDefaultDict", "defaultdict"):
|
elif tname in ("_SaverDefaultDict", "defaultdict"):
|
||||||
return defaultdict(obj.default_factory, {_iter(key): _iter(val) for key, val in obj.items()})
|
return defaultdict(
|
||||||
|
obj.default_factory, {_iter(key): _iter(val) for key, val in obj.items()}
|
||||||
|
)
|
||||||
elif tname in _DESERIALIZE_MAPPING:
|
elif tname in _DESERIALIZE_MAPPING:
|
||||||
return _DESERIALIZE_MAPPING[tname](_iter(val) for val in obj)
|
return _DESERIALIZE_MAPPING[tname](_iter(val) for val in obj)
|
||||||
elif is_iter(obj):
|
elif is_iter(obj):
|
||||||
|
|
@ -614,7 +619,10 @@ def to_pickle(data):
|
||||||
elif dtype in (dict, _SaverDict):
|
elif dtype in (dict, _SaverDict):
|
||||||
return dict((process_item(key), process_item(val)) for key, val in item.items())
|
return dict((process_item(key), process_item(val)) for key, val in item.items())
|
||||||
elif dtype in (defaultdict, _SaverDefaultDict):
|
elif dtype in (defaultdict, _SaverDefaultDict):
|
||||||
return defaultdict(item.default_factory, ((process_item(key), process_item(val)) for key, val in item.items()))
|
return defaultdict(
|
||||||
|
item.default_factory,
|
||||||
|
((process_item(key), process_item(val)) for key, val in item.items()),
|
||||||
|
)
|
||||||
elif dtype in (set, _SaverSet):
|
elif dtype in (set, _SaverSet):
|
||||||
return set(process_item(val) for val in item)
|
return set(process_item(val) for val in item)
|
||||||
elif dtype in (OrderedDict, _SaverOrderedDict):
|
elif dtype in (OrderedDict, _SaverOrderedDict):
|
||||||
|
|
@ -693,7 +701,10 @@ def from_pickle(data, db_obj=None):
|
||||||
elif dtype == dict:
|
elif dtype == dict:
|
||||||
return dict((process_item(key), process_item(val)) for key, val in item.items())
|
return dict((process_item(key), process_item(val)) for key, val in item.items())
|
||||||
elif dtype == defaultdict:
|
elif dtype == defaultdict:
|
||||||
return defaultdict(item.default_factory, ((process_item(key), process_item(val)) for key, val in item.items()))
|
return defaultdict(
|
||||||
|
item.default_factory,
|
||||||
|
((process_item(key), process_item(val)) for key, val in item.items()),
|
||||||
|
)
|
||||||
elif dtype == set:
|
elif dtype == set:
|
||||||
return set(process_item(val) for val in item)
|
return set(process_item(val) for val in item)
|
||||||
elif dtype == OrderedDict:
|
elif dtype == OrderedDict:
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ class TimeScript(DefaultScript):
|
||||||
callback(*args, **kwargs)
|
callback(*args, **kwargs)
|
||||||
|
|
||||||
seconds = real_seconds_until(**self.db.gametime)
|
seconds = real_seconds_until(**self.db.gametime)
|
||||||
self.restart(interval=seconds)
|
self.start(interval=seconds,force_restart=True)
|
||||||
|
|
||||||
|
|
||||||
# Access functions
|
# Access functions
|
||||||
|
|
|
||||||
|
|
@ -62,10 +62,12 @@ class TestDbSerialize(TestCase):
|
||||||
self.obj.db.test.sort(key=lambda d: str(d))
|
self.obj.db.test.sort(key=lambda d: str(d))
|
||||||
self.assertEqual(self.obj.db.test, [{0: 1}, {1: 0}])
|
self.assertEqual(self.obj.db.test, [{0: 1}, {1: 0}])
|
||||||
|
|
||||||
def test_dict(self):
|
def test_saverdict(self):
|
||||||
self.obj.db.test = {"a": True}
|
self.obj.db.test = {"a": True}
|
||||||
self.obj.db.test.update({"b": False})
|
self.obj.db.test.update({"b": False})
|
||||||
self.assertEqual(self.obj.db.test, {"a": True, "b": False})
|
self.assertEqual(self.obj.db.test, {"a": True, "b": False})
|
||||||
|
self.obj.db.test |= {"c": 5}
|
||||||
|
self.assertEqual(self.obj.db.test, {"a": True, "b": False, "c": 5})
|
||||||
|
|
||||||
@parameterized.expand(
|
@parameterized.expand(
|
||||||
[
|
[
|
||||||
|
|
@ -88,27 +90,30 @@ class TestDbSerialize(TestCase):
|
||||||
self.assertIsInstance(value, base_type)
|
self.assertIsInstance(value, base_type)
|
||||||
self.assertNotIsInstance(value, saver_type)
|
self.assertNotIsInstance(value, saver_type)
|
||||||
self.assertEqual(value, default_value)
|
self.assertEqual(value, default_value)
|
||||||
self.obj.db.test = {'a': True}
|
self.obj.db.test = {"a": True}
|
||||||
self.obj.db.test.update({'b': False})
|
self.obj.db.test.update({"b": False})
|
||||||
self.assertEqual(self.obj.db.test, {'a': True, 'b': False})
|
self.assertEqual(self.obj.db.test, {"a": True, "b": False})
|
||||||
|
|
||||||
def test_defaultdict(self):
|
def test_defaultdict(self):
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
# baseline behavior for a defaultdict
|
# baseline behavior for a defaultdict
|
||||||
_dd = defaultdict(list)
|
_dd = defaultdict(list)
|
||||||
_dd['a']
|
_dd["a"]
|
||||||
self.assertEqual(_dd, {'a': []})
|
self.assertEqual(_dd, {"a": []})
|
||||||
|
|
||||||
# behavior after defaultdict is set as attribute
|
# behavior after defaultdict is set as attribute
|
||||||
|
|
||||||
dd = defaultdict(list)
|
dd = defaultdict(list)
|
||||||
self.obj.db.test = dd
|
self.obj.db.test = dd
|
||||||
self.obj.db.test['a']
|
self.obj.db.test["a"]
|
||||||
self.assertEqual(self.obj.db.test, {'a': []})
|
self.assertEqual(self.obj.db.test, {"a": []})
|
||||||
|
|
||||||
self.obj.db.test['a'].append(1)
|
self.obj.db.test["a"].append(1)
|
||||||
self.assertEqual(self.obj.db.test, {'a': [1]})
|
self.assertEqual(self.obj.db.test, {"a": [1]})
|
||||||
self.obj.db.test['a'].append(2)
|
self.obj.db.test["a"].append(2)
|
||||||
self.assertEqual(self.obj.db.test, {'a': [1, 2]})
|
self.assertEqual(self.obj.db.test, {"a": [1, 2]})
|
||||||
self.obj.db.test['a'].append(3)
|
self.obj.db.test["a"].append(3)
|
||||||
self.assertEqual(self.obj.db.test, {'a': [1, 2, 3]})
|
self.assertEqual(self.obj.db.test, {"a": [1, 2, 3]})
|
||||||
|
self.obj.db.test |= {"b": [5, 6]}
|
||||||
|
self.assertEqual(self.obj.db.test, {"a": [1, 2, 3], "b": [5, 6]})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue