Updated key check functions for less spaghetti, also fixed sets and symbology to be consistent.

This commit is contained in:
Nanda Scott 2018-04-18 20:55:11 -04:00
parent d971a6b875
commit ec2cf1a0a7
9 changed files with 63 additions and 83 deletions

View File

@ -1,5 +1,13 @@
# Changelog
## 1.5.0
Changes
- Key errors are now handled more cleanly, and doesn't return two traceback errors.
- Updated Sets to be more like the other classes in structure.
- Updated symbology to be more like the other classes in structure.
## 1.4.2
Bugfixes

View File

@ -103,15 +103,11 @@ class CardsObject(object):
raise Exception(self.scryfallJson['details'])
def _checkForKey(self, key):
try:
return self.scryfallJson[key]
except Exception:
if not key in self.scryfallJson:
raise KeyError('This card has no key \'{}\''.format(key))
def _checkForTupleKey(self, parent, num, key):
try:
return self.scryfallJson[parent][num][key]
except Exception:
if not key in self.scryfallJson[parent][num]:
raise KeyError('This tuple has no key \'{}\''.format(key))
def object(self):

View File

@ -46,9 +46,7 @@ class CatalogsObject(object):
raise Exception(self.scryfallJson['details'])
def _checkForKey(self, key):
try:
return self.scryfallJson[key]
except Exception:
if not key in self.scryfallJson:
raise KeyError('This card has no key \'{}\''.format(key))
def object(self):

View File

@ -60,15 +60,11 @@ class RulingsObject(object):
raise Exception(self.scryfallJson['details'])
def _checkForKey(self, key):
try:
return self.scryfallJson[key]
except Exception:
if not key in self.scryfallJson:
raise KeyError('This object has no key \'{}\''.format(key))
def _checkForTupleKey(self, parent, num, key):
try:
return self.scryfallJson[parent][num][key]
except Exception:
if not key in self.scryfallJson[parent][num]:
raise KeyError('This ruling has no key \'{}\''.format(key))
def object(self):

View File

@ -41,105 +41,93 @@ class Sets(SetsObject):
self._url = 'sets?'
super(Sets, self).__init__(self._url)
def _checkForKey(self, key):
try:
return self.scryfallJson[key]
except Exception:
raise KeyError('This object has no key \'{}\''.format(key))
def _checkForTupleKey(self, parent, num, key):
try:
return self.scryfallJson[parent][num][key]
except Exception:
raise KeyError('This object has no key \'{}\''.format(key))
def object(self):
self._checkForKey('object')
super(Sets, self)._checkForKey('object')
return self.scryfallJson['object']
def has_more(self):
self._checkForKey('has_more')
super(Sets, self)._checkForKey('has_more')
return self.scryfallJson['has_more']
def data(self):
self._checkForKey('data')
super(Sets, self)._checkForKey('data')
return self.scryfallJson['data']
def data_length(self):
self._checkForKey('data')
super(Sets, self)._checkForKey('data')
return len(self.scryfallJson['data'])
def set_object(self, num):
self._checkForTupleKey('data', num, 'object')
super(Sets, self)._checkForTupleKey('data', num, 'object')
return self.scryfallJson['data'][num]['object']
def set_code(self, num):
self._checkForTupleKey('data', num, 'code')
super(Sets, self)._checkForTupleKey('data', num, 'code')
return self.scryfallJson['data'][num]['code']
def set_mtgo_code(self, num):
self._checkForTupleKey('data', num, 'mtgo_code')
super(Sets, self)._checkForTupleKey('data', num, 'mtgo_code')
return self.scryfallJson['data'][num]['mtgo_code']
def set_name(self, num):
self._checkForTupleKey('data', num, 'name')
super(Sets, self)._checkForTupleKey('data', num, 'name')
return self.scryfallJson['data'][num]['name']
def set_set_type(self, num):
self._checkForTupleKey('data', num, 'set_type')
super(Sets, self)._checkForTupleKey('data', num, 'set_type')
return self.scryfallJson['data'][num]['set_type']
def set_released_at(self, num):
self._checkForTupleKey('data', num, 'released_at')
super(Sets, self)._checkForTupleKey('data', num, 'released_at')
return self.scryfallJson['data'][num]['released_at']
def set_block_code(self, num):
self._checkForTupleKey('data', num, 'block_code')
super(Sets, self)._checkForTupleKey('data', num, 'block_code')
return self.scryfallJson['data'][num]['block_code']
def set_block(self, num):
self._checkForTupleKey('data', num, 'block')
super(Sets, self)._checkForTupleKey('data', num, 'block')
return self.scryfallJson['data'][num]['block']
def set_parent_set_code(self, num):
self._checkForTupleKey('data', num, 'parent_set_code')
super(Sets, self)._checkForTupleKey('data', num, 'parent_set_code')
return self.scryfallJson['data'][num]['parent_set_code']
def set_card_count(self, num):
self._checkForTupleKey('data', num, 'card_count')
super(Sets, self)._checkForTupleKey('data', num, 'card_count')
return self.scryfallJson['data'][num]['card_count']
def set_digital(self, num):
self._checkForTupleKey('data', num, 'digital')
super(Sets, self)._checkForTupleKey('data', num, 'digital')
return self.scryfallJson['data'][num]['digital']
def set_foil(self, num):
self._checkForTupleKey('data', num, 'foil')
super(Sets, self)._checkForTupleKey('data', num, 'foil')
return self.scryfallJson['data'][num]['foil']
def set_icon_svg_uri(self, num):
self._checkForTupleKey('data', num, 'icon_svg_uri')
super(Sets, self)._checkForTupleKey('data', num, 'icon_svg_uri')
return self.scryfallJson['data'][num]['icon_svg_uri']
def set_search_uri(self, num):
self._checkForTupleKey('data', num, 'search_uri')
super(Sets, self)._checkForTupleKey('data', num, 'search_uri')
return self.scryfallJson['data'][num]['search_uri']

View File

@ -56,8 +56,12 @@ class SetsObject(object):
raise Exception(self.scryfallJson['details'])
def _checkForKey(self, key):
if not key in self.scryfallJson:
raise KeyError('This object has no key \'{}\''.format(key))
def _checkForTupleKey(self, parent, num, key):
try:
return self.scryfallJson[key]
return self.scryfallJson[parent][num][key]
except Exception:
raise KeyError('This object has no key \'{}\''.format(key))

View File

@ -28,43 +28,37 @@ class ParseMana(SymbologyObject):
self.url = 'symbology/parse-mana?cost=' + self.cost
super(ParseMana, self).__init__(self.url)
def _checkForKey(self, key):
try:
return self.scryfallJson[key]
except Exception:
raise KeyError('This object has no key \'{}\''.format(key))
def object(self):
self._checkForKey('object')
super(ParseMana, self)._checkForKey('object')
return self.scryfallJson['object']
def mana_cost(self):
self._checkForKey('cost')
super(ParseMana, self)._checkForKey('cost')
return self.scryfallJson['cost']
def cmc(self):
self._checkForKey('cmc')
super(ParseMana, self)._checkForKey('cmc')
return self.scryfallJson['cmc']
def colors(self):
self._checkForKey('colors')
super(ParseMana, self)._checkForKey('colors')
return self.scryfallJson['colors']
def colorless(self):
self._checkForKey('colorless')
super(ParseMana, self)._checkForKey('colorless')
return self.scryfallJson['colorless']
def monocolored(self):
self._checkForKey('monocolored')
super(ParseMana, self)._checkForKey('monocolored')
return self.scryfallJson['monocolored']
def multicolored(self):
self._checkForKey('multicolored')
super(ParseMana, self)._checkForKey('multicolored')
return self.scryfallJson['multicolored']

View File

@ -33,74 +33,62 @@ class Symbology(SymbologyObject):
self.url = 'symbology?'
super(Symbology, self).__init__(self.url)
def _checkForKey(self, key):
try:
return self.scryfallJson[key]
except Exception:
raise KeyError('This object ahs no key \'{}\''.format(key))
def _checkForTupleKey(self, parent, num, key):
try:
return self.scryfallJson[parent][num][key]
except Exception:
raise KeyError('This object has no key \'{}\''.format(key))
def object(self):
self._checkForKey('object')
super(Symbology, self)._checkForKey('object')
return self.scryfallJson['object']
def has_more(self):
self._checkForKey('has_more')
super(Symbology, self)._checkForKey('has_more')
return self.scryfallJson['has_more']
def data(self):
self._checkForKey('has_more')
super(Symbology, self)._checkForKey('has_more')
return self.scryfallJson['data']
def data_length(self):
self._checkForKey('data')
super(Symbology, self)._checkForKey('data')
return len(self.scryfallJson['data'])
def symbol_symbol(self, num):
self._checkForTupleKey('data', num, 'symbol')
super(Symbology, self)._checkForTupleKey('data', num, 'symbol')
return self.scryfallJson['data'][num]['symbol']
def symbol_loose_variant(self, num):
self._checkForTupleKey('data', num, 'loose_variant')
super(Symbology, self)._checkForTupleKey('data', num, 'loose_variant')
return self.scryfallJson['data'][num]['loose_variant']
def symbol_transposable(self, num):
self._checkForTupleKey('data', num, 'transposable')
super(Symbology, self)._checkForTupleKey('data', num, 'transposable')
return self.scryfallJson['data'][num]['transposable']
def symbol_represents_mana(self, num):
self._checkForTupleKey('data', num, 'represents_mana')
super(Symbology, self)._checkForTupleKey('data', num, 'represents_mana')
return self.scryfallJson['data'][num]['represents_mana']
def symbol_cmc(self, num):
self._checkForTupleKey('data', num, 'cmc')
super(Symbology, self)._checkForTupleKey('data', num, 'cmc')
return self.scryfallJson['data'][num]['cmc']
def symbol_appears_in_mana_costs(self, num):
self._checkForTupleKey('data', num, 'appears_in_mana_costs')
super(Symbology, self)._checkForTupleKey('data', num, 'appears_in_mana_costs')
return self.scryfallJson['data'][num]['appears_in_mana_costs']
def symbol_funny(self, num):
self._checkForTupleKey('data', num, 'funny')
super(Symbology, self)._checkForTupleKey('data', num, 'funny')
return self.scryfallJson['data'][num]['funny']
def symbol_colors(self, num):
self._checkForTupleKey('data', num, 'colors')
super(Symbology, self)._checkForTupleKey('data', num, 'colors')
return self.scryfallJson['data'][num]['colors']

View File

@ -41,3 +41,11 @@ class SymbologyObject(object):
if self.scryfallJson['object'] == 'error':
raise Exception(self.scryfallJson['details'])
def _checkForKey(self, key):
if not key in self.scryfallJson:
raise KeyError('This object ahs no key \'{}\''.format(key))
def _checkForTupleKey(self, parent, num, key):
if not key in self.scryfallJson[parent][num]:
raise KeyError('This object has no key \'{}\''.format(key))