docs: def publishApp(self, app_info, map_info=None, fsInfo=None):
          """Publishes apps to AGOL/Portal
          
          Args:
              app_info (list): A list of JSON configuration apps to publish.
              map_info (list): Defaults to ``None``.
              fsInfo (list): Defaults to ``None``.
          Returns:
              dict: A dictionary of results objects.
              
          """
          if self.securityhandler is None:
              print ("Security handler required")
              return
          appDet = None
          try:
              app_results = []
              if isinstance(app_info, list):
                  for appDet in app_info:
                      app_results.append(self._publishAppLogic(appDet=appDet,map_info=map_info,fsInfo=fsInfo))
              else:
                  app_results.append(self._publishAppLogic(appDet=app_info,map_info=map_info,fsInfo=fsInfo))
              return app_results
  
          except (common.ArcRestHelperError) as e:
              raise e
          except Exception as e:
  
              line, filename, synerror = trace()
              raise common.ArcRestHelperError({
                  "function": "publishApp",
                  "line": line,
                  "filename":  filename,
                  "synerror": synerror,
              })
  
          finally:
              appDet = None
  
              del appDet
              gc.collect()