code: def efetch(self, db, id):
          
          db = db.lower()
          xml = self._qs.efetch({'db': db, 'id': str(id)})
          doc = le.XML(xml)
          if db in ['gene']:
              return EntrezgeneSet(doc)
          if db in ['nuccore', 'nucest', 'protein']:
              # TODO: GBSet is misnamed; it should be GBSeq and get the GBSeq XML node as root (see gbset.py)
              return GBSet(doc)
          if db in ['pubmed']:
              return PubmedArticleSet(doc)
          if db in ['snp']:
              return ExchangeSet(xml)
          if db in ['pmc']:
              return PubmedCentralArticleSet(doc)
          raise EutilsError('database {db} is not currently supported by eutils'.format(db=db))
docs: query the efetch endpoint