code: def from_string(value):
          
          if value == None or len(value) == 0:
              return None
                  
          tokens = value.split(":")
          if len(tokens) != 5:
              raise ConfigException(
                  None, "BAD_DESCRIPTOR", "Descriptor " + str(value) + " is in wrong format"
              ).with_details("descriptor", value)
              
          return Descriptor(tokens[0].strip(), tokens[1].strip(), tokens[2].strip(), tokens[3].strip(), tokens[4].strip())
docs: Parses colon-separated list of descriptor fields and returns them as a Descriptor.
  
          :param value: colon-separated descriptor fields to initialize Descriptor.
  
          :return: a newly created Descriptor.