docs: def login(self, username=None, password=None):
          """ Before doing any remote operation, the user has to login to the GMQL serivice.
          This can be done in the two following ways:
  
              * Guest mode: the user has no credentials and uses the system only as a temporary guest
              * Authenticated mode: the users has credentials and a stable remote account
  
          If neither username and password are specified, the user enters the system as a guest.
          If both are specified and they correspond to an existent user, the user enters as an
          authenticated user
  
          :param username: (optional)
          :param password: (optional)
          :return: None
          """
          if (username is None) and (password is None):
              auth_token = self.__login_guest()
          elif (username is not None) and (password is not None):
              auth_token, fullName = self.__login_credentials(username, password)
              self.logger.info("You are logged as {}".format(fullName))
          else:
              raise ValueError("you have to specify both username and password or nothing")
  
          if auth_token is not None:
              self.auth_token = auth_token
          else:
              raise ConnectionError("Impossible to retrieve the authentication token")