diff --git a/src/linkahead/apiutils.py b/src/linkahead/apiutils.py index 38d2db5c2ae60eb30e60ccecbe413fc70903c4b6..f10d8f0ac37d8883d23aada8f6244d4f9bc5772f 100644 --- a/src/linkahead/apiutils.py +++ b/src/linkahead/apiutils.py @@ -622,11 +622,14 @@ def merge_entities(entity_a: Entity, return entity_a -def describe_diff(olddiff: dict[str, Any], newdiff: dict[str, Any], - name: str = None, - as_update: bool = True, - label_old: str = "old version", - label_new: str = "new version") -> str: +def describe_diff(entity0_diff: dict[str, Any], entity1_diff: dict[str, Any], + name: Optional[str] = None, + as_update: Optional[bool] = None, + label_e0: str = "first version", + label_e1: str = "second version", + olddiff: Any = None, + newdiff: Any = None, + ) -> str: """ Generate a textual description of the differences between two entities. These can be generated using :func:`compare_entities` and used within this function like this: @@ -636,25 +639,25 @@ def describe_diff(olddiff: dict[str, Any], newdiff: dict[str, Any], Arguments: ---------- - olddiff: dict[str, Any] + entity0_diff: dict[str, Any] First element of the tuple output of :func:`compare_entities`. This is referred to as the "old" version. - newdiff: dict[str, Any] + entity1_diff: dict[str, Any] Second element of the tuple output of :func:`compare_entities`. This is referred to as the "new" version. - name: str + name: Optional[str] Default None. Name of the entity that will be shown in the output text. - as_update: bool - Default True. Not used anymore. + as_update: Optional[bool] + Default None. Not used anymore. - label_old: str + label_e0: str Can be used to set a custom label for the diff that is associated with the old entity. - label_new: str + label_e1: str Can be used to set a custom label for the diff that is associated with the new entity. Returns: @@ -664,42 +667,51 @@ def describe_diff(olddiff: dict[str, Any], newdiff: dict[str, Any], """ description = "" - for attr in list(set(list(olddiff.keys()) + list(newdiff.keys()))): + if as_update: + warnings.warn("'as_update' is deprecated. Do not use it.", DeprecationWarning) + if olddiff: + warnings.warn("'olddiff' is deprecated. Use 'entity0_diff' instead.", DeprecationWarning) + entity0_diff=olddiff + if newdiff: + warnings.warn("'newdiff' is deprecated. Use 'entity1_diff' instead.", DeprecationWarning) + entity1_diff=newdiff + + for attr in list(set(list(entity0_diff.keys()) + list(entity1_diff.keys()))): if attr == "parents" or attr == "properties": continue description += "{} differs:\n".format(attr) - description += label_old + ": {}\n".format( - olddiff[attr] if attr in olddiff else "not set") - description += label_new + ": {}\n\n".format( - newdiff[attr] if attr in newdiff else "not set") + description += label_e0 + ": {}\n".format( + entity0_diff[attr] if attr in entity0_diff else "not set") + description += label_e1 + ": {}\n\n".format( + entity1_diff[attr] if attr in entity1_diff else "not set") - if len(olddiff["parents"]) > 0: - description += ("Parents that are only in the " + label_old + ":\n" - + ", ".join(olddiff["parents"]) + "\n") + if len(entity0_diff["parents"]) > 0: + description += ("Parents that are only in the " + label_e0 + ":\n" + + ", ".join(entity0_diff["parents"]) + "\n") - if len(newdiff["parents"]) > 0: - description += ("Parents that are only in the " + label_new + ":\n" - + ", ".join(olddiff["parents"]) + "\n") + if len(entity1_diff["parents"]) > 0: + description += ("Parents that are only in the " + label_e1 + ":\n" + + ", ".join(entity0_diff["parents"]) + "\n") - for prop in list(set(list(olddiff["properties"].keys()) - + list(newdiff["properties"].keys()))): + for prop in list(set(list(entity0_diff["properties"].keys()) + + list(entity1_diff["properties"].keys()))): description += "property {} differs:\n".format(prop) - if prop not in olddiff["properties"]: - description += "it does not exist in the " + label_old + ":\n" - elif prop not in newdiff["properties"]: - description += "it does not exist in the " + label_new + ":\n" + if prop not in entity0_diff["properties"]: + description += "it does not exist in the " + label_e0 + ":\n" + elif prop not in entity1_diff["properties"]: + description += "it does not exist in the " + label_e1 + ":\n" else: - description += label_old + ": {}\n".format( - olddiff["properties"][prop]) - description += label_new + ": {}\n\n".format( - newdiff["properties"][prop]) + description += label_e0 + ": {}\n".format( + entity0_diff["properties"][prop]) + description += label_e1 + ": {}\n\n".format( + entity1_diff["properties"][prop]) if description != "": description = ("## Difference between the " + - label_old + + label_e0 + " and the " + - label_new + + label_e1 + " of {}\n\n".format(name)) + description return description