Skip to content
This repository was archived by the owner on Aug 26, 2025. It is now read-only.

Commit 824d7f0

Browse files
authored
Inherit TerraformJSONBase from Mapping ABC (#62)
Inhering from collections.abc.Mapping gives us __contains__, keys, items, values, get, __eq__, and __ne__ for free. It also makes objects behave more dict-like
1 parent 4747bc2 commit 824d7f0

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

tftest.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def parse_args(init_vars=None, tf_vars=None, targets=None, **kw):
154154
return cmd_args
155155

156156

157-
class TerraformJSONBase(object):
157+
class TerraformJSONBase(collections.abc.Mapping):
158158
"Base class for JSON wrappers."
159159

160160
def __init__(self, raw):
@@ -163,6 +163,12 @@ def __init__(self, raw):
163163
def __bytes__(self):
164164
return bytes(self._raw)
165165

166+
def __getitem__(self, index):
167+
return self._raw[index]
168+
169+
def __iter__(self):
170+
return iter(self._raw)
171+
166172
def __len__(self):
167173
return len(self._raw)
168174

@@ -187,12 +193,6 @@ def __getattr__(self, name):
187193
def __getitem__(self, name):
188194
return self._raw[name].get('value')
189195

190-
def __contains__(self, name):
191-
return name in self._raw
192-
193-
def __iter__(self):
194-
return iter(self._raw)
195-
196196

197197
class TerraformPlanModule(TerraformJSONBase):
198198
"Minimal wrapper for parsed plan output modules."
@@ -218,12 +218,6 @@ def resources(self):
218218
for res in self._raw.get('resources', []))
219219
return self._resources
220220

221-
def __getitem__(self, name):
222-
return self._raw[name]
223-
224-
def __contains__(self, name):
225-
return name in self._raw
226-
227221

228222
class TerraformPlanOutput(TerraformJSONBase):
229223
"Minimal wrapper for Terraform plan JSON output."

0 commit comments

Comments
 (0)