How to get a butler to the new reference object loading code?

This is not in conflict with the design of the reference loader. There will be no I/O in the constructor. Builds the indexer for use later. The actual I/O is done in the call to loadSkyCircle.

This makes a ton of sense to me. If we can come up with a reasonable region format, I’m happy to push on this sooner rather than later.

My understanding was that your new catalog loader’s constructor uses the butler to retrieve a config (using a dataset type whose name is a config parameter). If so, that is I/O – not very much I/O but a bit.

@ktl we could easily add an initialization phase with the default implementation doing nothing, if that helps make this all work more smoothly. However, it sounds as if for now @KSK’s task can take a butler in its constructor and use it to get the config, and we have several easy ways out of that once that technique is no longer permitted. I will write the RFC.

I created RFC 173 Pass a butler to the constructor of all command-line tasks. For further discussions about passing a butler to the constructor or init method of tasks, please post comments on that RFC. For further discussions about other aspects of loading reference objects (e.g. having the butler return catalogs), please continue the discussion here.

Ah, you are right. Sorry for the confusion.