Fix Version/s: None
Component/s: daf_butler, obs_base
When designing the butler command line tools it is clear that life would be much simpler if an instrument could be referred to by name rather than by instrument class. It should only be instrument registration that requires the full class name. All other operations should work by specifying the name, looking up the name in registry and retrieving the class name, using doImport on that class, and instantiating the class for downstream usage.
For this to work we need two changes:
- Add the instrument class full name text string to registry.
- Have an API (butler.registry.getInstrument?) that will return an instantiated gen3 Instrument (they don't need parameters) given the name of the instrument.
It might be best to just do from .core import utils in daf_butler someday so we can use the utils module outside daf_butler without feeling bad about it (and also don't pull all of its symbols in directly), but I don't care if we do that on this ticket or not.
In fact, I'd love to just have this land quickly as I can use it immediately in my changes to ingest and visit definition.
Only a few lines to implement this. Nate Pease [X] once merged you should be able to use Instrument.fromName("HSC") to get the relevant instrument class once it's been registered. It does have to match case so LSSTCam and not lsstCam etc.
Jim Bosch to get this working quickly I had to use lsst.daf.butler.core.utils.getFullyTypeName in Instrument classes. In theory that's naughty.