docs: def save(self, path):
          """
          Saves the provenance object to a JSON file, optionally including
          checksums for inputs and outputs (which are initially produced mid-
          run) to insert during the write
  
          Parameters
          ----------
          path : str
              Path to save the generated JSON file
          inputs : dict[str, str | list[str] | list[list[str]]] | None
              Checksums of all pipeline inputs used by the pipeline. For inputs
              of matching frequency to the output derivative associated with the
              provenance object, the values of the dictionary will be single
              checksums. If the output is of lower frequency they will be lists
              of checksums or in the case of 'per_session' inputs to 'per_study'
              outputs, lists of lists of checksum. They need to be provided here
              if the provenance object was initialised without checksums
          outputs : dict[str, str] | None
              Checksums of all pipeline outputs. They need to be provided here
              if the provenance object was initialised without checksums
          """
          with open(path, 'w') as f:
              try:
                  json.dump(self.prov, f, indent=2)
              except TypeError:
                  raise ArcanaError(
                      "Could not serialise provenance record dictionary:\n{}"
                      .format(pformat(self.prov)))