class_docstr: Holds the inventory of 2D pieces and performs cutting.
  :param max_pieces_in_inventory: Size of the inventory. If full, the oldest pieces get discarded.
  :param raw_piece_size: Size of a fresh raw (= full-size) piece.
  :param inventory_events: Inventory event dispatch proxy.
class_docstr_tok: ["Holds","the","inventory","of","2D","pieces","and","performs","cutting",".",":","param","max_pieces_in_inventory",":","Size","of","the","inventory",".","If","full",",","the","oldest","pieces","get","discarded",".",":","param","raw_piece_size",":","Size","of","a","fresh","raw","(","=","full-size",")","piece",".",":","param","inventory_events",":","Inventory","event","dispatch","proxy","."]
docstr: Log inventory statistics once per step
docstr_tok: ["Log","inventory","statistics","once","per","step"]
code: def log_step_statistics(self):
      """Log inventory statistics once per step"""
      self.inventory_events.pieces_in_inventory(self.size())
  
imports: from .events import InventoryEvents
label_desc: Use image node_id 4 for calling the Inventory obj's underlying member method code with example usage: obj.log_step_statistics() without return types