diffsync.diff¶
Diff and DiffElement classes for DiffSync.
- class diffsync.diff.Diff¶
Bases:
objectDiff Object, designed to store multiple DiffElement object and organize them in a group.
- __init__()¶
Initialize a new, empty Diff object.
- add(element: diffsync.diff.DiffElement)¶
Add a new DiffElement to the changeset of this Diff.
- Raises
ObjectAlreadyExists – if an element of the same type and same name is already stored.
- children¶
DefaultDict for storing DiffElement objects.
self.children[group][unique_id] == DiffElement(…)
- complete()¶
Method to call when this Diff has been fully populated with data and is “complete”.
The default implementation does nothing, but a subclass could use this, for example, to save the completed Diff to a file or database record.
- get_children() → Iterator[diffsync.diff.DiffElement]¶
Iterate over all child elements in all groups in self.children.
For each group of children, check if an order method is defined, Otherwise use the default method.
- groups()¶
Get the list of all group keys in self.children.
- has_diffs() → bool¶
Indicate if at least one of the child elements contains some diff.
- Returns
True if at least one child element contains some diff
- Return type
bool
- classmethod order_children_default(children: Mapping) → Iterator[diffsync.diff.DiffElement]¶
Default method to an Iterator for children.
Since children is already an OrderedDefaultDict, this method is not doing anything special.
- str(indent: int = 0)¶
Build a detailed string representation of this Diff and its child DiffElements.
- class diffsync.diff.DiffElement(obj_type: str, name: str, keys: Mapping, source_name: str = 'source', dest_name: str = 'dest', diff_class: Type[diffsync.diff.Diff] = <class 'diffsync.diff.Diff'>)¶
Bases:
objectDiffElement object, designed to represent a single item/object that may or may not have any diffs.
- __init__(obj_type: str, name: str, keys: Mapping, source_name: str = 'source', dest_name: str = 'dest', diff_class: Type[diffsync.diff.Diff] = <class 'diffsync.diff.Diff'>)¶
Instantiate a DiffElement.
- Parameters
obj_type – Name of the object type being described, as in DiffSyncModel.get_type().
name – Human-readable name of the object being described, as in DiffSyncModel.get_shortname(). This name must be unique within the context of the Diff that is the direct parent of this DiffElement.
keys – Primary keys and values uniquely describing this object, as in DiffSyncModel.get_identifiers().
source_name – Name of the source DiffSync object
dest_name – Name of the destination DiffSync object
diff_class – Diff or subclass thereof to use to calculate the diffs to use for synchronization
- property action: Optional[str]¶
Action, if any, that should be taken to remediate the diffs described by this element.
- Returns
“create”, “update”, “delete”, or None
- Return type
str
- add_attrs(source: Optional[Mapping] = None, dest: Optional[Mapping] = None)¶
Set additional attributes of a source and/or destination item that may result in diffs.
- add_child(element: diffsync.diff.DiffElement)¶
Attach a child object of type DiffElement.
Childs are saved in a Diff object and are organized by type and name.
- Parameters
element – DiffElement
- dict() → Mapping[str, Mapping[str, Any]]¶
Build a dictionary representation of this DiffElement and its children.
- get_attrs_diffs() → Mapping[str, Mapping[str, Any]]¶
Get the dict of actual attribute diffs between source_attrs and dest_attrs.
- Returns
of the form {“-“: {key1: <value>, key2: …}, “+”: {key1: <value>, key2: …}}, where the “-“ or “+” dicts may be absent.
- Return type
dict
- get_attrs_keys() → Iterable[str]¶
Get the list of shared attrs between source and dest, or the attrs of source or dest if only one is present.
If source_attrs is not set, return the keys of dest_attrs
If dest_attrs is not set, return the keys of source_attrs
If both are defined, return the intersection of both keys
- get_children() → Iterator[diffsync.diff.DiffElement]¶
Iterate over all child DiffElements of this one.
- has_diffs(include_children: bool = True) → bool¶
Check whether this element (or optionally any of its children) has some diffs.
- Parameters
include_children – If True, recursively check children for diffs as well.
- str(indent: int = 0)¶
Build a detailed string representation of this DiffElement and its children.