Beispiel #1
0
 def get_info(self, id_):
     result = self._get(id=id_, response='full')
     if result:
         # classification: taxon.id name rank url
         # synonyms: synonym.name
         res = {
             k: text(result, k)
             for k in 'genus species author url'.split()
         }
         res['distribution'] = unique(
             region.split()[0]
             for region in text(result, 'distribution').split('; ')
             if region)
         if result.find('classification'):
             res['classification'] = {
                 t.rank.lower(): t.as_dict()
                 for t in [
                     Taxon(e)
                     for e in result.find('classification').findall('taxon')
                 ]
             }
         if result.find('synonyms'):
             res['synonyms'] = filter(None, [
                 text(e, 'name')
                 for e in result.find('synonyms').findall('synonym')
             ])
         return {k: v for k, v in res.items() if v}
 def update(self, taxon, data):
     if 'distribution' in data:
         taxon['tdwgregions'] = unique(data['distribution'])
     classification = data.get('classification', {})
     for key in 'kingdom phylum class order genus family'.split():
         if classification.get(key):
             taxon[key] = classification[key]['name']
     taxon[self.name + '_url'] = data['url']
 def update(self, taxon, data):
     if 'distribution' in data:
         taxon['tdwgregions'] = unique(data['distribution'])
     classification = data.get('classification', {})
     for key in 'kingdom phylum class order genus family'.split():
         if classification.get(key):
             taxon[key] = classification[key]['name']
     taxon[self.name + '_url'] = data['url']
     if 'author' in data:
         taxon['description'] = data['author']
 def get_info(self, id_):
     result = self._get(id=id_, response='full')
     if result:
         # classification: taxon.id name rank url
         # synonyms: synonym.name
         res = {k: text(result, k) for k in 'genus species author url'.split()}
         res['distribution'] = unique(
             region.split()[0] for region in
             text(result, 'distribution').split('; ') if region)
         if result.find('classification'):
             res['classification'] = {
                 t.rank.lower(): t.as_dict() for t in
                 [Taxon(e) for e in result.find('classification').findall('taxon')]}
         if result.find('synonyms'):
             res['synonyms'] = filter(
                 None,
                 [text(e, 'name') for e in result.find('synonyms').findall('synonym')])
         return {k: v for k, v in res.items() if v}
Beispiel #5
0
def format_ids(iterable):
    return ';'.join(unique(iterable))