ó
î%![c           @   sĪ   d  Z  d d l Z d d l m Z d d l m Z d e f d     YZ d e f d     YZ d	 e f d
     YZ d e f d     YZ	 d e f d     YZ
 d S(   s:   This module contains some mixins for the different nodes.
iĸĸĸĸN(   t
   decorators(   t
   exceptionst   BlockRangeMixInc           B   s,   e  Z d  Z e j d    Z d d  Z RS(   s   override block range c         C   s   |  j  S(   N(   t   lineno(   t   self(    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt   blockstart_tolineno   s    c         C   sk   | |  j  k r | | f S| rX | | d j  k rC | | d j f S| | d j  d f S| | pg |  j f S(   s^   handle block line numbers range for try/finally, for, if and while
        statements
        i    iĸĸĸĸi   (   t
   fromlinenot   tolineno(   R   R   t   orelset   last(    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt   _elsed_block_range   s    
N(   t   __name__t
   __module__t   __doc__R    t   cachedpropertyR   t   NoneR
   (    (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR      s   t   FilterStmtsMixinc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s1   Mixin for statement filtering and assignment typec         C   s)   |  j    | k r | g t f S| t f S(   s@   method used in _filter_stmts to get statements and trigger break(   t	   statementt   Truet   False(   R   t   _t   nodet   _stmtst   mystmt(    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt   _get_filtered_stmts(   s    c         C   s   |  S(   N(    (   R   (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt   assign_type0   s    c         C   s<   t  j d t |   j t |   j f t d d |  j   S(   Ns`   %s.ass_type() is deprecated and slated for removal in astroid 2.0, use %s.assign_type() instead.t
   stackleveli   (   t   warningst   warnt   typeR   t   PendingDeprecationWarningR   (   R   (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt   ass_type3   s    	(   R   R   R   R   R   R   (    (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR   %   s   		t   AssignTypeMixinc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   |  S(   N(    (   R   (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR   =   s    c         C   s<   t  j d t |   j t |   j f t d d |  j   S(   Ns`   %s.ass_type() is deprecated and slated for removal in astroid 2.0, use %s.assign_type() instead.R   i   (   R   R   R   R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR   @   s    	c         C   s?   |  | k r | t  f S|  j   | k r5 | g t  f S| t f S(   s   method used in filter_stmts(   R   R   R   (   R   t   lookup_nodeR   R   R   (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR   G   s
    
(   R   R   R   R   R   (    (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR    ;   s   		t   ParentAssignTypeMixinc           B   s   e  Z d    Z d   Z RS(   c         C   s   |  j  j   S(   N(   t   parentR   (   R   (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR   T   s    c         C   s<   t  j d t |   j t |   j f t d d |  j   S(   Ns`   %s.ass_type() is deprecated and slated for removal in astroid 2.0, use %s.assign_type() instead.R   i   (   R   R   R   R   R   R   (   R   (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR   W   s    	(   R   R   R   R   (    (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR"   R   s   	t   ImportFromMixinc           B   s,   e  Z d  Z d   Z d d  Z d   Z RS(   s   MixIn for From and Import Nodesc         C   s   | S(   N(    (   R   t   framet   name(    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt   _infer_nameb   s    c         C   sz   |  j    } t |  d d  } | d k r6 |  j } n  | j | |  | j k rU | S| j | d | d | ov | d k S(   sO   return the ast for a module whose name is <modname> imported by <self>
        t   levelt   relative_onlyi   N(   t   roott   getattrR   t   modnamet   relative_to_absolute_nameR&   t   import_module(   R   R,   t   mymoduleR(   (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt   do_import_modulee   s    c         C   s~   x\ |  j  D]Q \ } } | d k r& | S| sK | j d d  d } | } n  | | k r
 | Sq
 Wt j d d |  d |  d S(	   s   get name from 'as' namet   *t   .i   i    s:   Could not find original name for {attribute} in {target!r}t   targett	   attributeN(   t   namest   splitR   t   AttributeInferenceError(   R   t   asnameR&   t   _asname(    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt	   real_namey   s    	N(   R   R   R   R'   R   R0   R:   (    (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyR$   _   s   	(   R   R   t   astroidR    R   t   objectR   R   R    R"   R$   (    (    (    s-   lib/python2.7/site-packages/astroid/mixins.pyt   <module>	   s   