class_docstr: Mix in to safely decode data that is delivered in parts
  
  This class can be used to decode data that is partially delivered.
  It detects partial encodings and stores the non-decoded data to
  combine it with additional data, that is delivered later,  and
  decodes the combined data.
  
  Any un-decoded data is stored in the 'remaining_data'-attribute.
class_docstr_tok: ["Mix","in","to","safely","decode","data","that","is","delivered","in","parts","This","class","can","be","used","to","decode","data","that","is","partially","delivered",".","It","detects","partial","encodings","and","stores","the","non-decoded","data","to","combine","it","with","additional","data",",","that","is","delivered","later",",","and","decodes","the","combined","data",".","Any","un-decoded","data","is","stored","in","the","'remaining_data'-attribute","."]
code: def __del__(self) -> None:
      if any(self.remaining_data.values()):
          logger.debug(
              "unprocessed data in AssemblingDecoderMixIn:\n"
              + "\n".join(
                  f"fd: {key}, data: {value!r}"
                  for key, value in self.remaining_data.items()
              )
              + "\n"
          )
          logger.warning("unprocessed data in AssemblingDecoderMixIn")
  
file_path: datalad/datalad/runner/utils.py
imports: from __future__ import annotations
  import logging
  from collections import defaultdict
  from typing import Optional
label_desc: Use image node_id 3 for calling the AssemblingDecoderMixIn obj's underlying member method code with example usage: obj.__del__() without return types