class Vocabulary(object):
def __init__(self, voc_definition={}):
- self._definition = voc_definition
- self.strict_keys = self._definition.get('strict_tags', False)
+ self.strict_keys = voc_definition.get('strict_tags', False)
self.key_aliases = {}
for key_id, val in voc_definition.get('tags', {}).items():
self.identifier = identifier
self.aliases = aliases
+ def __getattribute__(self, name):
+ if name == 'preferred_label':
+ return self.aliases[0]
+ return super(VocabularyData, self).__getattribute__(name)
+
class VocabularyValue(VocabularyData):
def __init__(self, identifier, aliases=[]):
super(VocabularyValue, self).__init__(identifier, aliases)
self.assertEqual(vk.strict, False)
self.assertEqual(vk.identifier, 'IDTAGANIMALS')
self.assertEqual(vk.aliases, ['Animal', 'Creature'])
+ self.assertEqual(vk.preferred_label, 'Animal')
vv = vk.value_aliases['human']
self.assertEqual(vv.identifier, 'IDVALANIMAL1')
self.assertEqual(vv.aliases, ['Human', 'Homo sapiens'])
+ self.assertEqual(vv.preferred_label, 'Human')
self.assertEqual(voc['creature']['human'].identifier, vv.identifier)
self.assertEqual(voc['Creature']['Human'].identifier, vv.identifier)
self.assertEqual(voc['CREATURE']['HUMAN'].identifier, vv.identifier)
+ with self.assertRaises(KeyError):
+ inexistant = voc['foo']
def test_empty_vocabulary(self):
voc = vocabulary.Vocabulary()