docs: def Save_Generic(obj, SaveName=None, Path='./',
                   Mode='npz', compressed=False, Print=True):
      """ Save a ToFu object under file name SaveName, in folder Path
  
      ToFu provides built-in saving and loading functions for ToFu objects.
      There is now only one saving mode:
          - 'npz': saves a dict of key attributes using :meth:`numpy.savez`
  
      Good practices are:
          - save :class:`~tofu.geom.Ves` and :class:`~tofu.geom.Struct`
          - intermediate optics (:class:`~tofu.geom.Apert` and
            :class:`~tofu.geom.Lens`) generally do not need to be saved
            Indeed, they will be autoamtically included in larger objects
            like Detect or Cam objects
  
      Parameters
      ----------
      SaveName :      str
          The file name, if None (recommended) uses obj.Id.SaveName
      Path :          str
          Path where to save the file
      Mode :          str
          Flag specifying the saving mode
              - 'npz': Only mode currently available ('pck' deprecated)
      compressed :    bool
          Indicate whether to use np.savez_compressed (slower but smaller files)
  
      """
      assert type(obj.__class__) is type
      if SaveName is not None:
          C = type(SaveName) is str and not (SaveName[-4]=='.')
          assert C, "SaveName should not include the extension !"
      assert Path is None or type(Path) is str
      assert Mode in ['npz']
      assert type(compressed) is bool
      assert type(Print) is bool
      if Path is None:
          Path = obj.Id.SavePath
      else:
          obj._Id._SavePath = Path
      if Mode=='npz':
          Ext = '.npz'
      if SaveName is None:
          SaveName = obj.Id.SaveName
      else:
          obj._Id.set_SaveName(SaveName)
      pathfileext = os.path.join(Path,SaveName+Ext)
      if Ext=='.npz':
          _save_np(obj, pathfileext, compressed=compressed)
      if Print:
          print("Saved in :  "+pathfileext)