diff --git a/src/aiida/storage/sqlite_zip/orm.py b/src/aiida/storage/sqlite_zip/orm.py index e0532bf04a..fff73890dc 100644 --- a/src/aiida/storage/sqlite_zip/orm.py +++ b/src/aiida/storage/sqlite_zip/orm.py @@ -17,7 +17,7 @@ from functools import singledispatch from typing import Any, List, Optional, Tuple, Union -from sqlalchemy import JSON, case, func, select, true, not_ +from sqlalchemy import JSON, case, func, select from sqlalchemy.orm.util import AliasedClass from sqlalchemy.sql import ColumnElement diff --git a/src/aiida/storage/sqlite_zip/utils.py b/src/aiida/storage/sqlite_zip/utils.py index bbc35e8ae8..e04650e717 100644 --- a/src/aiida/storage/sqlite_zip/utils.py +++ b/src/aiida/storage/sqlite_zip/utils.py @@ -11,7 +11,7 @@ import json import zipfile from pathlib import Path -from typing import Any, Dict, Optional, Union, AnyStr +from typing import Any, AnyStr, Dict, Optional, Union from sqlalchemy import event from sqlalchemy.future.engine import Engine, create_engine @@ -47,6 +47,7 @@ def sqlite_case_sensitive_like(dbapi_connection, _): cursor.execute('PRAGMA case_sensitive_like=ON;') cursor.close() + def _contains(lhs: dict | list, rhs: dict | list): if isinstance(lhs, dict) and isinstance(rhs, dict): for key in rhs: @@ -61,6 +62,7 @@ def _contains(lhs: dict | list, rhs: dict | list): else: return lhs == rhs + def _json_contains(json1_str: AnyStr, json2_str: AnyStr): try: json1 = json.loads(json1_str) @@ -69,6 +71,7 @@ def _json_contains(json1_str: AnyStr, json2_str: AnyStr): return 0 return int(_contains(json1, json2)) + def register_json_contains(dbapi_connection, _): dbapi_connection.create_function('json_contains', 2, _json_contains)