Skip to content

Commit 8284d87

Browse files
committed
Convert actions to enum
1 parent e3501ee commit 8284d87

File tree

3 files changed

+26
-16
lines changed

3 files changed

+26
-16
lines changed

diffsync/diff.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
from .exceptions import ObjectAlreadyExists
2222
from .utils import intersection, OrderedDefaultDict
23+
from .enum import DiffSyncActions
2324

2425

2526
class Diff:
@@ -105,9 +106,9 @@ def order_children_default(cls, children: Mapping) -> Iterator["DiffElement"]:
105106
def summary(self) -> Mapping[Text, int]:
106107
"""Build a dict summary of this Diff and its child DiffElements."""
107108
summary = {
108-
"create": 0,
109-
"update": 0,
110-
"delete": 0,
109+
DiffSyncActions.CREATE: 0,
110+
DiffSyncActions.UPDATE: 0,
111+
DiffSyncActions.DELETE: 0,
111112
"no-change": 0,
112113
}
113114
for child in self.get_children():
@@ -224,18 +225,18 @@ def action(self) -> Optional[Text]:
224225
"""Action, if any, that should be taken to remediate the diffs described by this element.
225226
226227
Returns:
227-
str: "create", "update", "delete", or None
228+
str: DiffSyncActions ("create", "update", "delete", or None)
228229
"""
229230
if self.source_attrs is not None and self.dest_attrs is None:
230-
return "create"
231+
return DiffSyncActions.CREATE
231232
if self.source_attrs is None and self.dest_attrs is not None:
232-
return "delete"
233+
return DiffSyncActions.DELETE
233234
if (
234235
self.source_attrs is not None
235236
and self.dest_attrs is not None
236237
and any(self.source_attrs[attr_key] != self.dest_attrs[attr_key] for attr_key in self.get_attrs_keys())
237238
):
238-
return "update"
239+
return DiffSyncActions.UPDATE
239240

240241
return None
241242

@@ -328,9 +329,9 @@ def has_diffs(self, include_children: bool = True) -> bool:
328329
def summary(self) -> Mapping[Text, int]:
329330
"""Build a summary of this DiffElement and its children."""
330331
summary = {
331-
"create": 0,
332-
"update": 0,
333-
"delete": 0,
332+
DiffSyncActions.CREATE: 0,
333+
DiffSyncActions.UPDATE: 0,
334+
DiffSyncActions.DELETE: 0,
334335
"no-change": 0,
335336
}
336337
if self.action:

diffsync/enum.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,12 @@ class DiffSyncStatus(enum.Enum):
7373
SUCCESS = "success"
7474
FAILURE = "failure"
7575
ERROR = "error"
76+
77+
78+
class DiffSyncActions: # pylint: disable=too-few-public-methods
79+
"""List of valid Action for DiffSyncModel."""
80+
81+
CREATE = "create"
82+
UPDATE = "update"
83+
DELETE = "delete"
84+
NO_CHANGE = None

diffsync/helpers.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import structlog # type: ignore
2121

2222
from .diff import Diff, DiffElement
23-
from .enum import DiffSyncModelFlags, DiffSyncFlags, DiffSyncStatus
23+
from .enum import DiffSyncModelFlags, DiffSyncFlags, DiffSyncStatus, DiffSyncActions
2424
from .exceptions import ObjectNotFound, ObjectNotCreated, ObjectNotUpdated, ObjectNotDeleted, ObjectCrudException
2525
from .utils import intersection, symmetric_difference
2626

@@ -353,11 +353,11 @@ def sync_diff_element(self, element: DiffElement, parent_model: "DiffSyncModel"
353353
self.logger.warning("No object resulted from sync, will not process child objects.")
354354
return changed
355355

356-
if self.action == "create":
356+
if self.action == DiffSyncActions.CREATE:
357357
if parent_model:
358358
parent_model.add_child(model)
359359
self.dst_diffsync.add(model)
360-
elif self.action == "delete":
360+
elif self.action == DiffSyncActions.DELETE:
361361
if parent_model:
362362
parent_model.remove_child(model)
363363
if model.model_flags & DiffSyncModelFlags.SKIP_CHILDREN_ON_DELETE:
@@ -391,15 +391,15 @@ def sync_model(
391391

392392
try:
393393
self.logger.debug(f"Attempting model {self.action}")
394-
if self.action == "create":
394+
if self.action == DiffSyncActions.CREATE:
395395
if model is not None:
396396
raise ObjectNotCreated(f"Failed to create {self.model_class.get_type()} {ids} - it already exists!")
397397
model = self.model_class.create(diffsync=self.dst_diffsync, ids=ids, attrs=attrs)
398-
elif self.action == "update":
398+
elif self.action == DiffSyncActions.UPDATE:
399399
if model is None:
400400
raise ObjectNotUpdated(f"Failed to update {self.model_class.get_type()} {ids} - not found!")
401401
model = model.update(attrs=attrs)
402-
elif self.action == "delete":
402+
elif self.action == DiffSyncActions.DELETE:
403403
if model is None:
404404
raise ObjectNotDeleted(f"Failed to delete {self.model_class.get_type()} {ids} - not found!")
405405
model = model.delete()

0 commit comments

Comments
 (0)