parameters: (model_instance, serialize=True)
return_statement: return result
docstring: Returns the model properties as a dict
  
      Args:
          model_instance (one of your model instances): the model instance that
              will be converted to a dict.
  
      Keyword Args:
          serialize (bool): if True, the keys in the dict will be values from
              attribute_map
docstring_summary: Returns the model properties as a dict
docstring_tokens: Returns the model properties as a dict
function: def model_to_dict(model_instance, serialize=True):
      """Returns the model properties as a dict
  
      Args:
          model_instance (one of your model instances): the model instance that
              will be converted to a dict.
  
      Keyword Args:
          serialize (bool): if True, the keys in the dict will be values from
              attribute_map
      """
      result = {}
  
      model_instances = [model_instance]
      if model_instance._composed_schemas:
          model_instances.extend(model_instance._composed_instances)
      seen_json_attribute_names = set()
      used_fallback_python_attribute_names = set()
      py_to_json_map = {}
      for model_instance in model_instances:
          for attr, value in model_instance._data_store.items():
              if serialize:
                  # we use get here because additional property key names do not
                  # exist in attribute_map
                  try:
                      attr = model_instance.attribute_map[attr]
                      py_to_json_map.update(model_instance.attribute_map)
                      seen_json_attribute_names.add(attr)
                  except KeyError:
                      used_fallback_python_attribute_names.add(attr)
              if isinstance(value, list):
                 if not value:
                     # empty list or None
                     result[attr] = value
                 else:
                     res = []
                     for v in value:
                         if isinstance(v, PRIMITIVE_TYPES) or v is None:
                             res.append(v)
                         elif isinstance(v, ModelSimple):
                             res.append(v.value)
                         else:
                             res.append(model_to_dict(v, serialize=serialize))
                     result[attr] = res
              elif isinstance(value, dict):
                  result[attr] = dict(map(
                      lambda item: (item[0],
                                    model_to_dict(item[1], serialize=serialize))
                      if hasattr(item[1], '_data_store') else item,
                      value.items()
                  ))
              elif isinstance(value, ModelSimple):
                  result[attr] = value.value
              elif hasattr(value, '_data_store'):
                  result[attr] = model_to_dict(value, serialize=serialize)
              else:
                  result[attr] = value
      if serialize:
          for python_key in used_fallback_python_attribute_names:
              json_key = py_to_json_map.get(python_key)
              if json_key is None:
                  continue
              if python_key == json_key:
                  continue
              json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names
              if json_key_assigned_no_need_for_python_key:
                  del result[python_key]
  
      return result
function_tokens: def model_to_dict ( model_instance , serialize = True ) : result = { } model_instances = [ model_instance ] if model_instance . _composed_schemas : model_instances . extend ( model_instance . _composed_instances ) seen_json_attribute_names = set ( ) used_fallback_python_attribute_names = set ( ) py_to_json_map = { } for model_instance in model_instances : for attr , value in model_instance . _data_store . items ( ) : if serialize : # we use get here because additional property key names do not # exist in attribute_map try : attr = model_instance . attribute_map [ attr ] py_to_json_map . update ( model_instance . attribute_map ) seen_json_attribute_names . add ( attr ) except KeyError : used_fallback_python_attribute_names . add ( attr ) if isinstance ( value , list ) : if not value : # empty list or None result [ attr ] = value else : res = [ ] for v in value : if isinstance ( v , PRIMITIVE_TYPES ) or v is None : res . append ( v ) elif isinstance ( v , ModelSimple ) : res . append ( v . value ) else : res . append ( model_to_dict ( v , serialize = serialize ) ) result [ attr ] = res elif isinstance ( value , dict ) : result [ attr ] = dict ( map ( lambda item : ( item [ 0 ] , model_to_dict ( item [ 1 ] , serialize = serialize ) ) if hasattr ( item [ 1 ] , '_data_store' ) else item , value . items ( ) ) ) elif isinstance ( value , ModelSimple ) : result [ attr ] = value . value elif hasattr ( value , '_data_store' ) : result [ attr ] = model_to_dict ( value , serialize = serialize ) else : result [ attr ] = value if serialize : for python_key in used_fallback_python_attribute_names : json_key = py_to_json_map . get ( python_key ) if json_key is None : continue if python_key == json_key : continue json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names if json_key_assigned_no_need_for_python_key : del result [ python_key ] return result