Butler.get now retrieves immediately, by default

As of RFC-286 and DM-8096 Butler.get now defaults to instantiating the data immediately (the immediate argument defaults to True). Formerly a proxy object was returned by default and unpersistence was deferred until the data was first used.

This change should be pretty much invisible to most users, The change was made for several reasons:

  • It improves error reporting, in that failure to unpersist an item is reported immediately.
  • It improves compatibility with pybind11: at present proxy objects cannot be passed to wrapped C++ code. That plan is to fix that in the next few months (by modifying our pybind11 or rethinking our proxies).
  • We don’t yet have a use case for deferred persistence (though we fully expect to need it eventually).
1 Like