refgenie / refgenconf

A Python object for standardized reference genome assets.
http://refgenie.databio.org
BSD 2-Clause "Simplified" License
3 stars 6 forks source link

Improve error message for undefined alias #120

Closed nsheff closed 3 years ago

nsheff commented 3 years ago
In [30]: rgc.seek("bogus", "fasta")
---------------------------------------------------------------------------
UndefinedAliasError                       Traceback (most recent call last)
<ipython-input-30-e71101afb9a3> in <module>
----> 1 rgc.seek("bogus", "fasta")

~/.local/lib/python3.8/site-packages/refgenconf/refgenconf.py in seek(self, genome_name, asset_name, tag_name, seek_key, strict_exists, enclosing_dir, all_aliases, check_exist)
    706         """
    707         tag_name = tag_name or self.get_default_tag(genome_name, asset_name)
--> 708         genome_digest = self.get_genome_alias_digest(genome_name, fallback=True)
    709         genome_ids = _make_list_of_str(
    710             self.get_genome_alias(genome_digest, fallback=True, all_aliases=True)

~/.local/lib/python3.8/site-packages/refgenconf/refgenconf.py in get_genome_alias_digest(self, alias, fallback)
   1619         """
   1620         try:
-> 1621             return self[CFG_GENOMES_KEY].get_key(alias=alias)
   1622         except (yacman.UndefinedAliasError, AttributeError):
   1623             if not fallback:

~/.local/lib/python3.8/site-packages/yacman/alias.py in get_key(self, alias)
    221         if alias in list(self[IK][ALIASES_KEY].keys()):
    222             return self[IK][ALIASES_KEY][alias]
--> 223         raise UndefinedAliasError("No key defined for: {}".format(alias))
    224 
    225     def set_aliases(self, key, aliases, overwrite=False, reset_key=False):

UndefinedAliasError: No key defined for: bogus

I think it would be good to say something like "No genome found with alias 'bogus'." Instead of "No key defined for: bogus" .

As a user I don't really know what 'key' means in this context.