From 0a6d7e050d2c332e47afb7ffb2b6d50c88e8bcaa Mon Sep 17 00:00:00 2001
From: David Douard <david.douard@sdfa3.org>
Date: Wed, 11 Mar 2020 13:15:32 +0100
Subject: [PATCH] Extract the dictify() function from BaseModel.to_dict()

this function does not need to be a local function of the to_dict namespace.
---
 swh/model/model.py | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/swh/model/model.py b/swh/model/model.py
index a3809f9d..03b943f0 100644
--- a/swh/model/model.py
+++ b/swh/model/model.py
@@ -32,6 +32,20 @@ SHA1_SIZE = 20
 Sha1Git = bytes
 
 
+def dictify(value):
+    "Helper function used by BaseModel.to_dict()"
+    if isinstance(value, BaseModel):
+        return value.to_dict()
+    elif isinstance(value, Enum):
+        return value.value
+    elif isinstance(value, dict):
+        return {k: dictify(v) for k, v in value.items()}
+    elif isinstance(value, list):
+        return [dictify(v) for v in value]
+    else:
+        return value
+
+
 class BaseModel:
     """Base class for SWH model classes.
 
@@ -41,21 +55,7 @@ class BaseModel:
     def to_dict(self):
         """Wrapper of `attr.asdict` that can be overridden by subclasses
         that have special handling of some of the fields."""
-
-        def dictify(value):
-            if isinstance(value, BaseModel):
-                return value.to_dict()
-            elif isinstance(value, Enum):
-                return value.value
-            elif isinstance(value, dict):
-                return {k: dictify(v) for k, v in value.items()}
-            elif isinstance(value, list):
-                return [dictify(v) for v in value]
-            else:
-                return value
-
-        ret = attr.asdict(self, recurse=False)
-        return dictify(ret)
+        return dictify(attr.asdict(self, recurse=False))
 
     @classmethod
     def from_dict(cls, d):
-- 
GitLab