code: def from_text(rdclass, rdtype, tok, origin = None, relativize = True):
      
  
      if isinstance(tok, str):
          tok = dns.tokenizer.Tokenizer(tok)
      cls = get_rdata_class(rdclass, rdtype)
      if cls != GenericRdata:
          # peek at first token
          token = tok.get()
          tok.unget(token)
          if token.is_identifier() and \
             token.value == r'\#':
              #
              # Known type using the generic syntax.  Extract the
              # wire form from the generic syntax, and then run
              # from_wire on it.
              #
              rdata = GenericRdata.from_text(rdclass, rdtype, tok, origin,
                                             relativize)
              return from_wire(rdclass, rdtype, rdata.data, 0, len(rdata.data),
                               origin)
      return cls.from_text(rdclass, rdtype, tok, origin, relativize)
docs: Build an rdata object from text format.
  
      This function attempts to dynamically load a class which
      implements the specified rdata class and type.  If there is no
      class-and-type-specific implementation, the GenericRdata class
      is used.
  
      Once a class is chosen, its from_text() class method is called
      with the parameters to this function.
  
      @param rdclass: The rdata class
      @type rdclass: int
      @param rdtype: The rdata type
      @type rdtype: int
      @param tok: The tokenizer
      @type tok: dns.tokenizer.Tokenizer
      @param origin: The origin to use for relative names
      @type origin: dns.name.Name
      @param relativize: Should names be relativized?
      @type relativize: bool
      @rtype: dns.rdata.Rdata instance