ó
æNXc           @   s,   d  Z  d d l m Z d „  Z d „  Z d S(   s:   A fancy version of Python's builtin :func:`dir` function.
i   (   t   string_typesc         C   s$   y t  |  | ƒ t SWn t SXd S(   sf   In recent versions of Python, hasattr() only catches AttributeError.
    This catches all errors.
    N(   t   getattrt   Truet   False(   t   objt   attr(    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/dir2.pyt   safe_hasattr   s
    c         C   se   y t  t |  ƒ ƒ } Wn t k
 r2 t  ƒ  } n Xg  | D] } t | t ƒ r: | ^ q: } t | ƒ S(   s«  dir2(obj) -> list of strings

    Extended version of the Python builtin dir(), which does a few extra
    checks, and handles Traits objects, which can confuse dir().

    This version is guaranteed to return only a list of true strings, whereas
    dir() returns anything that objects inject into themselves, even if they
    are later not really valid for attribute access (many extension libraries
    have such bugs).
    (   t   sett   dirt	   Exceptiont
   isinstanceR    t   sorted(   R   t   wordst   w(    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/dir2.pyt   dir2!   s    (N(   t   __doc__t	   py3compatR    R   R   (    (    (    sJ   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/IPython/utils/dir2.pyt   <module>   s   	