code: def camelize(string, uppercase_first_letter=True):
      
      if uppercase_first_letter:
          return re.sub(r"(?:^|_)(.)", lambda m: m.group(1).upper(), string)
      else:
          return string[0].lower() + camelize(string)[1:]
docs: Convert strings to CamelCase.
  
      Examples::
  
          >>> camelize("device_type")
          "DeviceType"
          >>> camelize("device_type", False)
          "deviceType"
  
      :func:`camelize` can be thought of as a inverse of :func:`underscore`,
      although there are some cases where that does not hold::
  
          >>> camelize(underscore("IOError"))
          "IoError"
  
      :param uppercase_first_letter: if set to `True` :func:`camelize` converts
          strings to UpperCamelCase. If set to `False` :func:`camelize` produces
          lowerCamelCase. Defaults to `True`.