class_docstr: Cache stores downloaded objects, notably apache-rat.jar. 
docstr: Get or Insert a key from the cache. If the key is not found, the
  `create` closure will be evaluated.
  
  The `create` closure takes a single parameter, the path where the
  object should be store. The file should only be created upon success.
docstr_tok: ["Get","or","Insert","a","key","from","the","cache",".","If","the","key","is","not","found",",","the","`","create","`","closure","will","be","evaluated",".","The","`","create","`","closure","takes","a","single","parameter",",","the","path","where","the","object","should","be","store",".","The","file","should","only","be","created","upon","success","."]
code: def get_or_insert(self, key, create):
      """
      Get or Insert a key from the cache. If the key is not found, the
      `create` closure will be evaluated.
  
      The `create` closure takes a single parameter, the path where the
      object should be store. The file should only be created upon success.
      """
      path = self.key_path(key)
  
      if not path.exists():
          create(path)
  
      return path
  
file_path: arrow/dev/archery/archery/utils/cache.py
imports: from pathlib import Path
  import os
  from urllib.request import urlopen
  from .logger import logger
label_desc: Use image node_id 5 for calling the Cache obj's underlying member method code with example usage: obj.get_or_insert(key, create) and returns: path