From b845d9629581d72c717006d602a96421d6e9919c Mon Sep 17 00:00:00 2001 From: simon987 Date: Sat, 9 Jan 2021 19:57:31 -0500 Subject: [PATCH] Fix update in persistentstate --- hexlib/db.py | 4 ++-- setup.py | 2 +- test/test_PersistantState.py | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/hexlib/db.py b/hexlib/db.py index c2b9a9c..ff3c441 100644 --- a/hexlib/db.py +++ b/hexlib/db.py @@ -139,8 +139,8 @@ class Table: except sqlite3.IntegrityError: sql = "UPDATE %s SET (%s) = (%s) WHERE id=?" \ % (self._table, ",".join(value.keys()), ",".join("?" for _ in value.values())) - args = [key] - args.extend(_serialize(v) for v in value.values()) + args = list(_serialize(v) for v in value.values()) + args.append(key) conn.execute( sql, args diff --git a/setup.py b/setup.py index 8f7eab1..2cee2bf 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup( name="hexlib", - version="1.19", + version="1.20", description="Misc utility methods", author="simon987", author_email="me@simon987.net", diff --git a/test/test_PersistantState.py b/test/test_PersistantState.py index aa8454c..c10937b 100644 --- a/test/test_PersistantState.py +++ b/test/test_PersistantState.py @@ -33,3 +33,17 @@ class TestPersistentState(TestCase): val["id"] = 1 self.assertDictEqual(val, s["a"][1]) + + def test_update_partial(self): + s = PersistentState() + + val = {"a": 1, "b": "2", "c": b'3', "d": 4.4} + s["a"][1] = val + s["a"][1] = { + "a": 2 + } + + val["a"] = 2 + val["id"] = 1 + + self.assertDictEqual(val, s["a"][1])