code: def save(self_or_cls, obj, basename, fmt='auto', key={}, info={}, options=None, **kwargs):
          
          if info or key:
              raise Exception('Renderer does not support saving metadata to file.')
  
          if isinstance(obj, (Plot, NdWidget)):
              plot = obj
          else:
              with StoreOptions.options(obj, options, **kwargs):
                  plot = self_or_cls.get_plot(obj)
  
          if (fmt in list(self_or_cls.widgets.keys())+['auto']) and len(plot) > 1:
              with StoreOptions.options(obj, options, **kwargs):
                  if isinstance(basename, basestring):
                      basename = basename+'.html'
                  self_or_cls.export_widgets(plot, basename, fmt)
              return
  
          rendered = self_or_cls(plot, fmt)
          if rendered is None: return
          (data, info) = rendered
          encoded = self_or_cls.encode(rendered)
          prefix = self_or_cls._save_prefix(info['file-ext'])
          if prefix:
              encoded = prefix + encoded
          if isinstance(basename, (BytesIO, StringIO)):
              basename.write(encoded)
              basename.seek(0)
          else:
              filename ='%s.%s' % (basename, info['file-ext'])
              with open(filename, 'wb') as f:
                  f.write(encoded)
docs: Save a HoloViews object to file, either using an explicitly
          supplied format or to the appropriate default.