Skip to content

Commit f3b0d0b

Browse files
committed
Guard None access
1 parent c0058ea commit f3b0d0b

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

nest/nest.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,11 @@ def online(self):
269269

270270
@property
271271
def structure(self):
272-
return Structure(self._device['structure_id'],
273-
self._nest_api)
272+
if 'structure_id' in self._device:
273+
return Structure(self._device['structure_id'],
274+
self._nest_api)
275+
else:
276+
return None
274277

275278
@property
276279
def where(self):
@@ -299,7 +302,7 @@ def where(self, value):
299302

300303
@property
301304
def description(self):
302-
return self._device['name_long']
305+
return self._device.get('name_long')
303306

304307
@property
305308
def is_thermostat(self):
@@ -321,7 +324,7 @@ def is_thermostat(self):
321324

322325
@property
323326
def _device(self):
324-
return self._devices[THERMOSTATS][self._serial]
327+
return self._devices.get(THERMOSTATS, {}).get(self._serial, {})
325328

326329
@property
327330
def _shared(self):
@@ -335,7 +338,7 @@ def _track(self):
335338

336339
@property
337340
def software_version(self):
338-
return self._device['software_version']
341+
return self._device.get('software_version')
339342

340343
@property
341344
def fan(self):
@@ -509,7 +512,7 @@ def _round_temp(self, temp):
509512

510513
@property
511514
def temperature_scale(self):
512-
return self._device['temperature_scale']
515+
return self._device.get('temperature_scale')
513516

514517
@property
515518
def is_locked(self):
@@ -552,11 +555,11 @@ def temperature(self, value):
552555
@property
553556
def target(self):
554557
if self.mode == 'heat-cool':
555-
low = self._device[self._temp_key('target_temperature_low')]
556-
high = self._device[self._temp_key('target_temperature_high')]
558+
low = self._device.get(self._temp_key('target_temperature_low'))
559+
high = self._device.get(self._temp_key('target_temperature_high'))
557560
return LowHighTuple(low, high)
558561

559-
return self._device[self._temp_key('target_temperature')]
562+
return self._device.get(self._temp_key('target_temperature'))
560563

561564
@target.setter
562565
def target(self, value):
@@ -677,7 +680,7 @@ def is_smoke_co_alarm(self):
677680

678681
@property
679682
def _device(self):
680-
return self._devices[SMOKE_CO_ALARMS][self._serial]
683+
return self._devices.get(SMOKE_CO_ALARMS, {}).get(self._serial, {})
681684

682685
@property
683686
def auto_away(self):
@@ -1104,7 +1107,7 @@ def is_camera(self):
11041107

11051108
@property
11061109
def _device(self):
1107-
return self._devices[CAMERAS][self._serial]
1110+
return self._devices.get(CAMERAS, {}).get(self._serial, {})
11081111

11091112
@property
11101113
def ongoing_event(self):
@@ -1348,7 +1351,8 @@ def web_url(http://github.com/self):
13481351
class Structure(NestBase):
13491352
@property
13501353
def _structure(self):
1351-
return self._nest_api._status[STRUCTURES][self._serial]
1354+
return self._nest_api._status.get(
1355+
STRUCTURES, {}).get(self._serial, {})
13521356

13531357
def __repr__(self):
13541358
return str(self._structure)
@@ -1889,15 +1893,15 @@ def _status(self):
18891893

18901894
@property
18911895
def _metadata(self):
1892-
return self._status[METADATA]
1896+
return self._status.get(METADATA, {})
18931897

18941898
@property
18951899
def client_version(self):
1896-
return self._metadata['client_version']
1900+
return self._metadata.get('client_version')
18971901

18981902
@property
18991903
def _devices(self):
1900-
return self._status[DEVICES]
1904+
return self._status.get(DEVICES, {})
19011905

19021906
@property
19031907
def devices(self):
@@ -1929,7 +1933,7 @@ def cameras(self):
19291933
@property
19301934
def structures(self):
19311935
return [Structure(stid, self)
1932-
for stid in self._status[STRUCTURES]]
1936+
for stid in self._status.get(STRUCTURES, [])]
19331937

19341938
@property
19351939
def urls(self):

0 commit comments

Comments
 (0)