ó
'![c           @@ sì   d  Z  d d l m Z m Z d d l Z d d l Z d d l m Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  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'   Utility methods for docstring checking.i    (   t   absolute_importt   print_functionN(   t   utilsc         C@ s   t  |  ƒ t  |  j d ƒ ƒ S(   s„   The number of leading spaces in a string

    :param str s: input string

    :rtype: int
    :return: number of leading spaces
    t    (   t   lent   lstrip(   t   s(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   space_indentation   s    c         C@ sp   |  j  r |  j  j n g  } xN | D]F } t | t j ƒ r" | j d k r" t | j t j ƒ r" | j j Sq" Wd S(   s  Get the name of the property that the given node is a setter for.

    :param node: The node to get the property name for.
    :type node: str

    :rtype: str or None
    :returns: The name of the property that the node is a setter for,
        or None if one could not be found.
    t   setterN(
   t
   decoratorst   nodest
   isinstancet   astroidt	   Attributet   attrnamet   exprt   Namet   namet   None(   t   nodeR	   t	   decorator(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   get_setters_property_name#   s    
c         C@ sp   d } t |  ƒ } t j |  ƒ } | rl | rl | j |  j ƒ } x* | D] } t j | ƒ rF | } PqF qF Wn  | S(   s+  Get the property node for the given setter node.

    :param node: The node to get the property for.
    :type node: astroid.FunctionDef

    :rtype: astroid.FunctionDef or None
    :returns: The node relating to the property of the given setter node,
        or None if one could not be found.
    N(   R   R   R   t   node_frame_classt   getattrR   t   decorated_with_property(   R   t	   property_t   property_namet
   class_nodet   class_attrst   attr(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   get_setters_property6   s    
c         C@ s9   |  j  } | d k r t St | t j ƒ o7 | j  d k S(   s  Check if a return node returns a value other than None.

    :param return_node: The return node to check.
    :type return_node: astroid.Return

    :rtype: bool
    :return: True if the return node returns a value other than None,
        False otherwise.
    N(   t   valueR   t   FalseR   R   t   Const(   t   return_nodet   returns(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   returns_somethingN   s    
	c         @ sÿ  g  } t  ˆ  j t j ƒ rE t j ˆ  j ƒ } | rÂ| j g } qÂn}t  ˆ  j t j ƒ rJt  ˆ  j j t j ƒ rJt j ˆ  j j ƒ } t  | t j	 ƒ r¨ | j g } qÂt  | t j
 ƒ rÂxŠ | j t j ƒ D]s } | j ƒ  | k rë qÍ n  t j | j ƒ } | rÍ t  | t j t j	 f ƒ rÍ t j | ƒ rÍ | j | j ƒ qÍ qÍ WqÂnx ˆ  j d k rÂˆ  j } x& | rŠt  | t j ƒ rŠ| j } qeW| rÂ| j rÂt j | j ƒ } d „  | Dƒ } qÂn  y t ‡  f d †  | Dƒ ƒ SWn t j k
 rút ƒ  SXd S(   sZ  
    Gets all of the possible raised exception types for the given raise node.

    .. note::

        Caught exception types are ignored.


    :param node: The raise node to find exception types for.
    :type node: astroid.node_classes.NodeNG

    :returns: A list of exception types possibly raised by :param:`node`.
    :rtype: set(str)
    c         s@ s'   |  ] } | t  j k	 r | j Vq d  S(   N(   R   t   UninferableR   (   t   .0t   exc(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pys	   <genexpr>Š   s    c         3@ s'   |  ] } t  j ˆ  | ƒ s | Vq d  S(   N(   R   t   node_ignores_exception(   R&   R'   (   R   (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pys	   <genexpr>   s    N(   R   R'   R   R   R   t
   safe_inferR   t   Callt   funct   ClassDeft   FunctionDeft   nodes_of_classt   Returnt   frameR   t   Instancet   inherit_from_std_ext   appendR   t   parentt   ExceptHandlert   typet   unpack_infert   sett   InferenceError(   R   t   excst   inferredt   targett   rett   valt   handlert   inferred_excs(    (   R   sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   possible_exc_types`   s:    !	c         C@ sC   x6 t  t t t g D]" } | |  ƒ } | j ƒ  r | Sq Wt |  ƒ S(   N(   t   SphinxDocstringt   EpytextDocstringt   GoogleDocstringt   NumpyDocstringt   is_validt	   Docstring(   t	   docstringt   docstring_typet   instance(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   docstringify”   s    	RG   c           B@ s–   e  Z e j d  e j e j Bƒ Z d Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z RS(   s=   
        For\s+the\s+(other)?\s*parameters\s*,\s+see
        c         C@ s   | p	 d } | j  ƒ  |  _ d  S(   Nt    (   t
   expandtabst   doc(   t   selfRN   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   __init__«   s    c         C@ s   t  S(   N(   R    (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRF   ¯   s    c         C@ s   t  ƒ  S(   N(   R8   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt
   exceptions²   s    c         C@ s   t  S(   N(   R    (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt
   has_paramsµ   s    c         C@ s   t  S(   N(   R    (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   has_returns¸   s    c         C@ s   t  S(   N(   R    (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt	   has_rtype»   s    c         C@ s   t  S(   N(   R    (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   has_property_returns¾   s    c         C@ s   t  S(   N(   R    (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   has_property_typeÁ   s    c         C@ s   t  S(   N(   R    (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt
   has_yieldsÄ   s    c         C@ s   t  S(   N(   R    (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   has_yields_typeÇ   s    c         C@ s   t  ƒ  t  ƒ  f S(   N(   R8   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   match_param_docsÊ   s    c         C@ s   |  j  j |  j ƒ d  k	 S(   N(   t   re_for_parameters_seet   searchRN   R   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   params_documented_elsewhereÍ   s    N(   t   __name__t
   __module__t   ret   compilet   Xt   SRZ   R   t   supports_yieldsRP   RF   RQ   RR   RS   RT   RU   RV   RW   RX   RY   R\   (    (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRG   ž   s   											RB   c           B@ sY  e  Z d  Z d j d e ƒ Z d j e ƒ Z d j d e d e ƒ Z e j e e j	 e j
 Bƒ Z d j d e ƒ Z e j e e j	 e j
 Bƒ Z d j d e ƒ Z e j e e j	 e j
 Bƒ Z d j d e ƒ Z e j e e j	 e j
 Bƒ Z e j d	 ƒ Z e j d
 ƒ Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   [\w\.]+s‰   
        {type}                        # a container type
        [\(\[] [^\n\s]+ [\)\]]        # with the contents of the container
    R6   sx   
        (?::\w+:)?                    # optional tag
        `{0}`                         # what to reference
        sè  
        :                       # initial colon
        (?:                     # Sphinx keywords
        param|parameter|
        arg|argument|
        key|keyword
        )
        \s+                     # whitespace

        (?:                     # optional type declaration
        ({type}|{container_type})
        \s+
        )?

        (\w+)                   # Parameter name
        \s*                     # whitespace
        :                       # final colon
        t   container_typesó   
        :type                   # Sphinx keyword
        \s+                     # whitespace
        ({type})                # Parameter name
        \s*                     # whitespace
        :                       # final colon
        sš   
        :type:                  # Sphinx keyword
        \s+                     # whitespace
        {type}                  # type declaration
        s´  
        :                       # initial colon
        (?:                     # Sphinx keyword
        raises?|
        except|exception
        )
        \s+                     # whitespace

        (?:                     # type declaration
        ({type})
        \s+
        )?

        (\w+)                   # Parameter name
        \s*                     # whitespace
        :                       # final colon
        s   :rtype:s
   :returns?:c         C@ sm   t  |  j j |  j ƒ pi |  j j |  j ƒ pi |  j j |  j ƒ pi |  j j |  j ƒ pi |  j j |  j ƒ ƒ S(   N(   t   boolt   re_param_in_docstringR[   RN   t   re_raise_in_docstringt   re_rtype_in_docstringt   re_returns_in_docstringt   re_property_type_in_docstring(   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRF     s
    c         C@ sL   t  ƒ  } x< t j |  j |  j ƒ D]" } | j d ƒ } | j | ƒ q" W| S(   Ni   (   R8   R_   t   finditerRg   RN   t   groupt   add(   RO   t   typest   matcht
   raise_type(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRQ   $  s
    	c         C@ s&   |  j  s t S|  j j |  j  ƒ d  k	 S(   N(   RN   R    Rf   R[   R   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRR   -  s    	c         C@ s&   |  j  s t St |  j j |  j  ƒ ƒ S(   N(   RN   R    Re   Ri   R[   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRS   3  s    	c         C@ s&   |  j  s t St |  j j |  j  ƒ ƒ S(   N(   RN   R    Re   Rh   R[   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRT   9  s    	c         C@ s$   |  j  s t S|  j  j ƒ  j d ƒ S(   Nt   :(   RN   R    R   t
   startswith(   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRU   ?  s    	c         C@ s&   |  j  s t St |  j j |  j  ƒ ƒ S(   N(   RN   R    Re   Rj   R[   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRV   G  s    	c         C@ s¥   t  ƒ  } t  ƒ  } xg t j |  j |  j ƒ D]M } | j d ƒ } | j | ƒ | j d ƒ } | d  k	 r+ | j | ƒ q+ q+ W| j t j	 |  j
 |  j ƒ ƒ | | f S(   Ni   i   (   R8   R_   Rk   Rf   RN   Rl   Rm   R   t   updatet   findallt   re_type_in_docstring(   RO   t   params_with_doct   params_with_typeRo   R   t
   param_type(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRY   M  s    		(   R]   R^   t   re_typet   formatt   re_simple_container_typet   re_xreft   re_param_rawR_   R`   Ra   Rb   Rf   t   re_type_rawRu   t   re_property_type_rawRj   t   re_raise_rawRg   Rh   Ri   R    Rc   RF   RQ   RR   RS   RT   RU   RV   RY   (    (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRB   Ñ   s.   								RC   c           B@ sú   e  Z d  Z e j e j j d d d ƒ e j e j	 Bƒ Z
 e j e j j d d d ƒ e j e j	 Bƒ Z e j e j j d d d ƒ e j e j	 Bƒ Z e j e j j d d d ƒ e j e j	 Bƒ Z e j d e j e j	 Bƒ Z e j d ƒ Z d „  Z RS(   s€  
    Epytext is similar to Sphinx. See the docs:
        http://epydoc.sourceforge.net/epytext.html
        http://epydoc.sourceforge.net/fields.html#fields

    It's used in PyCharm:
        https://www.jetbrains.com/help/pycharm/2016.1/creating-documentation-comments.html#d848203e314
        https://www.jetbrains.com/help/pycharm/2016.1/using-docstrings-to-specify-types.html
    Rq   t   @i   sÂ   
        @                       # initial "at" symbol
        (?:                     # Epytext keyword
        rtype|returntype
        )
        :                       # final colon
        s
   @returns?:c         C@ s4   |  j  s t S|  j ƒ  r0 |  j  j ƒ  j d ƒ St S(   NR   (   RN   R    RV   R   Rr   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRU   €  s
    	(   R]   R^   t   __doc__R_   R`   RB   R}   t   replaceRa   Rb   Rf   R~   Ru   R   Rj   R€   Rg   Rh   Ri   RU   (    (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRC   \  s"   	RD   c           B@ su  e  Z e j Z e j Z d  j d e d e ƒ Z d j d e d e d e ƒ Z d Z e	 j
 e j d ƒ e	 j e	 j Be	 j Bƒ Z e	 j
 e j d ƒ e	 j e	 j Be	 j Bƒ Z e	 j
 d j d e ƒ e	 j e	 j Be	 j Bƒ Z e	 j
 e j d	 ƒ e	 j e	 j Be	 j Bƒ Z e	 j
 d
 j d e ƒ e	 j e	 j Be	 j Bƒ Z e	 j
 e j d ƒ e	 j e	 j Be	 j Bƒ Z e	 j
 d j d e ƒ e	 j e	 j Be	 j Bƒ Z e	 j
 d j d e ƒ e	 j e	 j Be	 j Bƒ Z e	 j
 e j d ƒ e	 j e	 j Be	 j Bƒ Z e Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ e% d „  ƒ Z& d „  Z' RS(   s‰   
        (?:{type}|{xref})             # a container type
        [\(\[] [^\n]+ [\)\]]          # with the contents of the container
    R6   t   xrefsh   
        (?:{container_type}|{type}|{xref})
        (?:\s+or\s+(?:{container_type}|{type}|{xref}))*
    Rd   sy   
        ^([ ]*)   {0} \s*:   \s*$     # Google parameter header
        (  .* )                       # section
        s   (?:Args|Arguments|Parameters)s&   Keyword\s(?:Args|Arguments|Parameters)s  
        \s*  \*{{0,2}}(\w+)             # identifier potentially with asterisks
        \s*  ( [(]
            {type}
            [)] )? \s* :                # optional type declaration
        \s*  (.*)                       # beginning of optional description
    t   Raisessˆ   
        \s*  ({type}) \s* :              # identifier
        \s*  (.*)                        # beginning of optional description
    s   Returns?s   
        \s* ({type}:)?                    # identifier
        \s* (.*)                          # beginning of description
    s~   
        ^{type}:                       # indentifier
        \s* (.*)                       # Summary line / description
    s   Yields?c         C@ sp   t  |  j j |  j ƒ pl |  j j |  j ƒ pl |  j j |  j ƒ pl |  j j |  j ƒ pl |  j j |  j ƒ  ƒ ƒ S(   N(	   Re   t   re_param_sectionR[   RN   t   re_raise_sectiont   re_returns_sectiont   re_yields_sectiont   re_property_returns_linet   _first_line(   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRF   Û  s
    c         C@ s&   |  j  s t S|  j j |  j  ƒ d  k	 S(   N(   RN   R    R†   R[   R   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRR   â  s    	c         C@ sk   |  j  s t S|  j |  j ƒ } xE | D]= } |  j j | ƒ } | sJ q& n  | j d ƒ } | r& t Sq& Wt S(   Ni   (   RN   R    t   _parse_sectionRˆ   t   re_returns_lineRo   Rl   t   True(   RO   t   entriest   entryRo   t   return_desc(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRS   è  s    	c         C@ sk   |  j  s t S|  j |  j ƒ } xE | D]= } |  j j | ƒ } | sJ q& n  | j d ƒ } | r& t Sq& Wt S(   Ni   (   RN   R    RŒ   Rˆ   R   Ro   Rl   RŽ   (   RO   R   R   Ro   t   return_type(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRT   ø  s    	c         C@ sY   |  j  ƒ  } t |  j j | ƒ pT |  j j | ƒ pT |  j j | ƒ pT |  j j | ƒ ƒ S(   N(   R‹   Re   R†   R[   R‡   Rˆ   R‰   (   RO   t
   first_line(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRU     s
    c         C@ s)   |  j  s t St |  j j |  j ƒ  ƒ ƒ S(   N(   RN   R    Re   RŠ   Ro   R‹   (   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRV     s    	c         C@ sk   |  j  s t S|  j |  j ƒ } xE | D]= } |  j j | ƒ } | sJ q& n  | j d ƒ } | r& t Sq& Wt S(   Ni   (   RN   R    RŒ   R‰   t   re_yields_lineRo   Rl   RŽ   (   RO   R   R   Ro   t
   yield_desc(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRW     s    	c         C@ sk   |  j  s t S|  j |  j ƒ } xE | D]= } |  j j | ƒ } | sJ q& n  | j d ƒ } | r& t Sq& Wt S(   Ni   (   RN   R    RŒ   R‰   R”   Ro   Rl   RŽ   (   RO   R   R   Ro   t
   yield_type(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRX   '  s    	c         C@ s‚   t  ƒ  } |  j |  j ƒ } x` | D]X } |  j j | ƒ } | sF q" n  | j d ƒ } | j d ƒ } | r" | j | ƒ q" q" W| S(   Ni   i   (   R8   RŒ   R‡   t   re_raise_lineRo   Rl   Rm   (   RO   Rn   R   R   Ro   t   exc_typet   exc_desc(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRQ   7  s    	c   	      C@ sÏ   t  ƒ  } t  ƒ  } |  j |  j ƒ } | j |  j |  j ƒ ƒ x… | D]} } |  j j | ƒ } | sh qD n  | j d ƒ } | j d ƒ } | j d ƒ } | r« | j | ƒ n  | rD | j | ƒ qD qD W| | f S(   Ni   i   i   (	   R8   RŒ   R†   t   extendt   re_keyword_param_sectiont   re_param_lineRo   Rl   Rm   (	   RO   Rv   Rw   R   R   Ro   t
   param_nameRx   t
   param_desc(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRY   G  s     		c         C@ s   |  j  j ƒ  j d d ƒ d S(   Ns   
i   i    (   RN   R   t   split(   RO   (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyR‹   ]  s    c         C@ s   t  |  j d ƒ ƒ d S(   Ni   (   R   Rl   (   t   section_match(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   min_section_indent`  s    c   	      C@ s
  | j  |  j ƒ } | d  k r" g  S|  j | ƒ } g  } g  } t } x¡ | j d ƒ j ƒ  D]Š } | j ƒ  sq qY n  t | ƒ } | | k  r Pn  | r¢ | } t	 } n  | | k rÖ | rÖ | j
 d j | ƒ ƒ g  } qÖ n  | j
 | ƒ qY W| r| j
 d j | ƒ ƒ n  | S(   Ni   s   
(   R[   RN   R   R¡   RŽ   Rl   t
   splitlinest   stripR   R    R3   t   join(	   RO   t
   section_reR    t   min_indentationR   R   t   is_firstt   linet   indentation(    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRŒ   d  s0    	((   R]   R^   RB   Ry   R|   Rz   t   re_container_typet   re_multiple_typet   _re_section_templateR_   R`   Ra   Rb   t   MR†   R›   Rœ   R‡   R—   Rˆ   R   RŠ   R‰   R”   RŽ   Rc   RF   RR   RS   RT   RU   RV   RW   RX   RQ   RY   R‹   t   staticmethodR¡   RŒ   (    (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRD     sb   			)														RE   c           B@ sh  e  Z d  Z e j e j d ƒ e j e j Be j Bƒ Z	 e j d j d e
 j ƒ e j e j Bƒ Z e j e j d ƒ e j e j Be j Bƒ Z e j d j d e
 j ƒ e j e j Be j Bƒ Z e j e j d ƒ e j e j Be j Bƒ Z e j d j d e
 j ƒ e j e j Be j Bƒ Z e j e j d ƒ e j e j Be j Bƒ Z e Z e Z e d	 „  ƒ Z RS(
   sª   
        ^([ ]*)   {0}   \s*?$          # Numpy parameters header
        \s*     [-=]+   \s*?$          # underline
        (  .* )                        # section
    s   (?:Args|Arguments|Parameters)s  
        \s*  (\w+)                      # identifier
        \s*  :
        \s*  (?:({type})(?:,\s+optional)?)? # optional type declaration
        \n                              # description starts on a new line
        \s* (.*)                        # description
    R6   R…   s_   
        \s* ({type})$   # type declaration
        \s* (.*)        # optional description
    s   Returns?sl   
        \s* ({type})$ # type declaration
        \s* (.*)                       # optional description
    s   Yields?c         C@ s   t  |  j d ƒ ƒ S(   Ni   (   R   Rl   (   R    (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyR¡   ¿  s    (   R]   R^   R¬   R_   R`   Rz   Ra   Rb   R­   R†   RD   R«   Rœ   R‡   Ry   R—   Rˆ   R   R‰   R”   RŽ   Rc   R®   R¡   (    (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyRE   Š  s4   		,		(   R‚   t
   __future__R    R   R_   R   t   pylint.checkersR   R   R   R   R$   RA   RK   t   objectRG   RB   RC   RD   RE   (    (    (    sB   lib/python2.7/site-packages/pylint/extensions/_check_docs_utils.pyt   <module>   s   					4	
3‹1ý