code: def _normalize_attrs(attrs, null=None):
    
    if attrs:
      items = sorted((_normalize_name(k), _normalize_value(v, null)) for (k, v) in attrs.items())
  
      if null is None:
        return OrderedDict((k, v) for (k, v) in items if v is not None)
      else:
        return OrderedDict(items)
    else:
      return {}
docs: Returns an OrderedDict of attirbutes with the keys normalized by _normalize_name and the values
    normalized by _normalize_value. The value of :null: is passed to _normalize_value. However, if
    :null: is None, any values that are None are left out of the returned dict.
  
    An OrderedDict is returned so that the attributes are always printed in the same order for similar
    objects.
  
    :attrs: a dict whose keys can be passed to _normalize_name and whose values can be passed to
            _normalize_value
    :null: either a string to be put in place of values that are None, or None, which will cause
           values that are None to be left out of the returned dict