18574: Adds 'preferred_label' virtual attribute. Avoids storing the voc twice.
[arvados.git] / sdk / python / arvados / vocabulary.py
index 643e167e6bfcb724ae1839ae45b24d76a6cfa19b..1791566b584fda1bf05dd18542b665edb9bb9c53 100644 (file)
@@ -15,8 +15,7 @@ def load_vocabulary(api_client=api('v1')):
 
 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():
@@ -39,6 +38,11 @@ class VocabularyData(object):
         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)