Skip to content

Commit 35adedd

Browse files
author
Zach Moody
authored
Merge pull request #365 from digitalocean/config-conftext-diff
Deepcopy in _parse_values
2 parents d62e5e0 + c0a81de commit 35adedd

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

pynetbox/core/response.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -268,10 +268,7 @@ def __eq__(self, other):
268268

269269
def _add_cache(self, item):
270270
key, value = item
271-
if key == "local_context_data":
272-
self._init_cache.append((key, copy.deepcopy(value)))
273-
else:
274-
self._init_cache.append((key, get_return(value)))
271+
self._init_cache.append((key, get_return(value)))
275272

276273
def _parse_values(self, values):
277274
""" Parses values init arg.
@@ -291,7 +288,7 @@ def list_parser(list_item):
291288
if k in ["custom_fields", "local_context_data"] or hasattr(
292289
lookup, "_json_field"
293290
):
294-
self._add_cache((k, v.copy()))
291+
self._add_cache((k, copy.deepcopy(v)))
295292
setattr(self, k, v)
296293
continue
297294
if lookup:

tests/unit/test_extras.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import unittest
2+
3+
import six
4+
5+
from pynetbox.models.extras import ConfigContexts
6+
7+
8+
class ExtrasTestCase(unittest.TestCase):
9+
def test_config_contexts(self):
10+
test_values = {
11+
"data": {"test_int": 123, "test_str": "testing", "test_list": [1, 2, 3],}
12+
}
13+
test = ConfigContexts(test_values, None, None)
14+
self.assertTrue(test)
15+
16+
def test_config_contexts_diff_str(self):
17+
test_values = {
18+
"data": {
19+
"test_int": 123,
20+
"test_str": "testing",
21+
"test_list": [1, 2, 3],
22+
"test_dict": {"foo": "bar"},
23+
}
24+
}
25+
test = ConfigContexts(test_values, None, None)
26+
test.data["test_str"] = "bar"
27+
self.assertEqual(test._diff(), {"data"})
28+
29+
def test_config_contexts_diff_dict(self):
30+
test_values = {
31+
"data": {
32+
"test_int": 123,
33+
"test_str": "testing",
34+
"test_list": [1, 2, 3],
35+
"test_dict": {"foo": "bar"},
36+
}
37+
}
38+
test = ConfigContexts(test_values, None, None)
39+
test.data["test_dict"].update({"bar": "foo"})
40+
self.assertEqual(test._diff(), {"data"})

0 commit comments

Comments
 (0)