code: def __send_command(
              self, name, args=None, withcontent=False, extralines=None,
              nblines=-1):
          
          tosend = name.encode("utf-8")
          if args:
              tosend += b" " + b" ".join(self.__prepare_args(args))
          self.__dprint(b"Command: " + tosend)
          self.sock.sendall(tosend + CRLF)
          if extralines:
              for l in extralines:
                  self.sock.sendall(l + CRLF)
          code, data, content = self.__read_response(nblines)
  
          if isinstance(code, six.binary_type):
              code = code.decode("utf-8")
          if isinstance(data, six.binary_type):
              data = data.decode("utf-8")
  
          if withcontent:
              return (code, data, content)
          return (code, data)
docs: Send a command to the server.
  
          If args is not empty, we concatenate the given command with
          the content of this list. If extralines is not empty, they are
          sent one by one to the server. (CLRF are automatically
          appended to them)
  
          We wait for a response just after the command has been sent.
  
          :param name: the command to sent
          :param args: a list of arguments for this command
          :param withcontent: tells the function to return the server's response
                              or not
          :param extralines: a list of extra lines to sent after the command
          :param nblines: the number of response lines to read (all by default)
  
          :returns: a tuple of the form (code, data[, response])