Butler v22.0 2021-04-01

New Features

  • A Butler instance can now be configured with dataId defaults such as an instrument or skymap. [DM-27153]
  • Add butler prune-datasets command. [DM-26689]
  • Add butler query-dimension-records command [DM-27344]
  • Add --unlink option to butler prune-collection command. [DM-28857]
  • Add progress reporting option for long-lived commands. [DM-28964]
  • Add butler associate command to add existing datasets to a tagged collection. [DM-26688]
  • Add officially-supported JSON serialization for core Butler classes. [DM-28314]
  • Allow butler.get() to support dimension record values such as exposure observing day or detector name in the dataID. [DM-27152]
  • Add “direct” ingest mode to allow a file to be ingested retaining the full path to the original file. [DM-27478]

Bug Fixes

  • Fix temporal queries and clarify Timespan behavior. [DM-27985]

Other Changes and Additions

  • Make ButlerURI class immutable. [DM-29073]
  • Add ButlerURI.findFileResources method to walk the directory tree and return matching files. [DM-29011]
  • Improve infrastructure for handling test repositories. [DM-23862]

Butler Datastores

New Features

  • Implement basic file caching for use with remote datastores. [DM-29383]
  • Require that a DataId always be available to a Formatter. This allows formatters to do a consistency check such as comparing the physical filter in a dataId with that read from a file. [DM-28583]
  • Add special mode to datastore to instruct it to ignore registry on get. This is useful for Execution Butlers where registry knows in advance about all datasets but datastore does not. [DM-28648]
  • Add forget method to instruct datastore to remove all knowledge of a dataset without deleting the file artifact. [DM-29106]

Butler Registry

New Features

  • Avoid long-lived connections to database. [DM-26302]
  • Add option to flatten when setting a collection chain. [DM-29203]