Python 3.4 backwards compatibility (for 'verify' job) 61/54261/2
authoryayogev <yaronyogev@gmail.com>
Wed, 21 Mar 2018 15:31:54 +0000 (17:31 +0200)
committeryayogev <yaronyogev@gmail.com>
Wed, 21 Mar 2018 15:47:01 +0000 (17:47 +0200)
cherry-picked from internal commit by ilia on 07/02/2018 19:49

Change-Id: I03caf42492785a9af5e8301ca202b00a7b4af787
Signed-off-by: yayogev <yaronyogev@gmail.com>
app/messages/message.py
app/test/api/responders_test/test_data/clique_types.py
app/utils/util.py

index eeef329..dd4c1d3 100644 (file)
@@ -8,9 +8,8 @@
 # http://www.apache.org/licenses/LICENSE-2.0                                  #
 ###############################################################################
 import datetime
-from typing import Union
 
-from bson import ObjectId
+from utils.util import merge_dicts
 
 
 class Message:
@@ -23,8 +22,8 @@ class Message:
                  msg: dict,
                  source: str,
                  env: str = None,
-                 object_id: Union[str, ObjectId] = None,
-                 display_context: Union[str, ObjectId] = None,
+                 object_id=None,
+                 display_context=None,
                  level: str = DEFAULT_LEVEL,
                  object_type: str = None,
                  ts: datetime = None,
@@ -52,18 +51,21 @@ class Message:
         self.extra = kwargs
 
     def get(self):
-        return {
-            "id": self.id,
-            "environment": self.environment,
-            "source_system": self.source_system,
-            "related_object": self.related_object,
-            "related_object_type": self.related_object_type,
-            "display_context": self.display_context,
-            "level": self.level,
-            "message": self.message,
-            "timestamp": self.timestamp,
-            "received_timestamp": self.received_timestamp,
-            "finished_timestamp": self.finished_timestamp,
-            "viewed": self.viewed,
-            **self.extra
-        }
+        return merge_dicts(
+            self.extra,
+            {
+                "id": self.id,
+                "environment": self.environment,
+                "source_system": self.source_system,
+                "related_object": self.related_object,
+                "related_object_type": self.related_object_type,
+                "display_context": self.display_context,
+                "level": self.level,
+                "message": self.message,
+                "timestamp": self.timestamp,
+                "received_timestamp": self.received_timestamp,
+                "finished_timestamp": self.finished_timestamp,
+                "viewed": self.viewed
+            }
+        )
+
index 0791bdf..4d55c8b 100644 (file)
@@ -11,6 +11,7 @@ from test.api.responders_test.test_data import base
 from test.api.responders_test.test_data.base import WRONG_MECHANISM_DRIVER, \
     CORRECT_MECHANISM_DRIVER, CORRECT_TYPE_DRIVER, WRONG_TYPE_DRIVER, \
     CORRECT_DISTRIBUTION, CORRECT_DIST_VER
+from utils.util import merge_dicts
 
 URL = "/clique_types"
 
@@ -61,8 +62,7 @@ CLIQUE_TYPES_WITH_SPECIFIC_ID = [
 ]
 
 CLIQUE_TYPES_WITH_SPECIFIC_CONFIGURATION = [
-    get_payload(update={'id': SAMPLE_IDS[0],
-                        **TEST_CONFIGURATION},
+    get_payload(update=merge_dicts(TEST_CONFIGURATION, {'id': SAMPLE_IDS[0]}),
                 delete=['environment'])
 ]
 
index 17a31c0..788eba9 100644 (file)
@@ -9,8 +9,6 @@
 ###############################################################################
 import importlib
 import signal
-from argparse import Namespace
-from typing import Dict, Callable
 
 import os
 import re
@@ -129,8 +127,8 @@ def generate_object_ids(keys, obj):
 # and convert them to dict to enforce uniformity.
 # Throws a TypeError if arguments can't be converted to dict.
 def setup_args(args: dict,
-               defaults: Dict[str, object],
-               get_cmd_args: Callable[[], Namespace] = None):
+               defaults,
+               get_cmd_args=None):
     if defaults is None:
         defaults = {}
 
@@ -171,3 +169,10 @@ def decode_aci_dn(object_id):
 def get_object_path_part(path: str, part_name: str):
     match = re.match(".*/{}/(.+?)/.*".format(part_name), path)
     return match.group(1) if match else None
+
+
+def merge_dicts(*dicts):
+    result = {}
+    for dictionary in dicts:
+        result.update(dictionary)
+    return result