From 06c5ab6e3a43f8c36b3d8ab03b4f5326dd8416c7 Mon Sep 17 00:00:00 2001 From: Dylan Stephano-Shachter Date: Wed, 25 Sep 2019 06:56:31 +0300 Subject: [PATCH] Fix issue where prices are now a nested dictionary --- scrython/cards/cards_object.py | 4 ++-- scrython/foundation.py | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/scrython/cards/cards_object.py b/scrython/cards/cards_object.py index 38dac2b..71896c8 100644 --- a/scrython/cards/cards_object.py +++ b/scrython/cards/cards_object.py @@ -475,9 +475,9 @@ class CardsObject(FoundationObject): if mode not in modes: raise KeyError("{} is not a key.".format(mode)) - super(CardsObject, self)._checkForKey(mode) + super(CardsObject, self)._checkForKey('prices', mode) - return self.scryfallJson[mode] + return self.scryfallJson['prices'][mode] def related_uris(self): """A dictionary of related websites for this card diff --git a/scrython/foundation.py b/scrython/foundation.py index 9b984a6..0b4a2b7 100644 --- a/scrython/foundation.py +++ b/scrython/foundation.py @@ -30,7 +30,7 @@ class FoundationObject(object): if self.scryfallJson['object'] == 'error': raise Exception(self.scryfallJson['details']) - def _checkForKey(self, key): + def _checkForKey(self, key, nested_key=None): """Checks for a key in the scryfallJson object. This function should be considered private, and should not be accessed in production. @@ -44,6 +44,11 @@ class FoundationObject(object): if not key in self.scryfallJson: raise KeyError('This card has no key \'{}\''.format(key)) + if nested_key: + if not nested_key in self.scryfallJson[key]: + raise KeyError('This card has no key \'{}.{}\''.format(key, nested_key)) + + def _checkForTupleKey(self, parent, num, key): """Checks for a key of an object in an array. This function should be considered private, and