class_docstr: Derived class needs to implement the following interface:
    * query() -- given input, return query result
    * get_doc_string() -- returns documentation for the Query Object
class_docstr_tok: ["Derived","class","needs","to","implement","the","following","interface",":","*","query","(",")","--","given","input",",","return","query","result","*","get_doc_string","(",")","--","returns","documentation","for","the","Query","Object"]
docstr: Save query object to the given local path
  
  Parameters
  ----------
  path : str
    The location to save the query object to
docstr_tok: ["Save","query","object","to","the","given","local","path","Parameters","--","--","--","--","--","path",":","str","The","location","to","save","the","query","object","to"]
code: def save(self, path):
      """Save query object to the given local path
  
      Parameters
      ----------
      path : str
        The location to save the query object to
      """
      if os.path.exists(path):
          logger.warning(
              f'Overwriting existing file "{path}" when saving query object'
          )
          rm_fn = os.remove if os.path.isfile(path) else shutil.rmtree
          rm_fn(path)
      self._save_local(path)
  
file_path: TabPy/tabpy/tabpy_tools/query_object.py
imports: import abc
  import logging
  import os
  import json
  import shutil
  import cloudpickle
label_desc: Use image node_id 5 for calling the QueryObject obj's underlying member method code with example usage: obj.save(path) without return types