code: def parse(self, value):
      _parse = {
          datetime.datetime: self._parse_datetime,
          datetime.timedelta: self._parse_timedelta,
          bool: self._parse_bool,
          basestring_type: self._parse_string,
      }.get(self.type, self.type)
      if self.multiple:
          self._value = []
          for part in value.split(","):
              if issubclass(self.type, numbers.Integral):
                  # allow ranges of the form X:Y (inclusive at both ends)
                  lo, _, hi = part.partition(":")
                  lo = _parse(lo)
                  hi = _parse(hi) if hi else lo
                  self._value.extend(range(lo, hi + 1))
              else:
                  self._value.append(_parse(part))
      else:
          self._value = _parse(value)
      if self.callback is not None:
          self.callback(self._value)
      return self.value()
  
imports: from __future__ import absolute_import, division, print_function
  import datetime
  import numbers
  import re
  import sys
  import os
  import textwrap
  from tornado.escape import _unicode, native_str
  from tornado.log import define_logging_options
  from tornado import stack_context
  from tornado.util import basestring_type, exec_in
label_desc: Use image node_id 3 for calling the _Option obj's underlying member method code with example usage: obj.parse(value) and returns: self