docs: def get_properties(elt, keys=None, ctx=None):
      """Get elt properties.
  
      :param elt: properties elt. Not None methods or unhashable types.
      :param keys: key(s) of properties to get from elt.
          If None, get all properties.
      :type keys: list or str
      :param ctx: elt ctx from where get properties. Equals elt if None. It
          allows to get function properties related to a class or instance if
          related function is defined in base class.
  
      :return: list of properties by elt and name.
      :rtype: list
      """
  
      # initialize keys if str
      if isinstance(keys, string_types):
          keys = (keys,)
  
      result = _get_properties(elt, keys=keys, local=False, ctx=ctx)
  
      return result