code: def DetermineType(value):
    
  
    object_type = type(value)
    if not hasattr(object_type, '__name__'):
      return None
  
    type_string = getattr(object_type, '__module__', '')
    if type_string:
      type_string += '.'
  
    type_string += object_type.__name__
    return type_string
docs: Determines the type of val, returning a "full path" string.
  
    For example:
      DetermineType(5) -> __builtin__.int
      DetermineType(Foo()) -> com.google.bar.Foo
  
    Args:
      value: Any value, the value is irrelevant as only the type metadata
      is checked
  
    Returns:
      Type path string.  None if type cannot be determined.