
[]c           @@  se  d  d l  m Z d  d l Z e j d e d e d e d e d e d e d	 e d
 e d e d e d e d e d e d e  d  d l Z d  d l Z d d l m Z d d l m	 Z	 d d l m
 Z
 d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z m Z d d l m Z m Z m Z d d l m Z m Z d d l m Z d d l m Z m Z d d l m Z m Z m Z m Z d d l  m! Z! d  e f d!     YZ" d" e f d#     YZ# d$ e f d%     YZ$ d& Z% d' Z& d( Z' d) e f d*     YZ( d+   Z) d,   Z* d-   Z+ d.   Z, d/   Z- d0 e e" f d1     YZ. d2 e e" f d3     YZ/ d4 e f d5     YZ0 d6 e e" f d7     YZ1 d8 e e" f d9     YZ2 d: e e" f d;     YZ3 d< e e" f d=     YZ4 d> e f d?     YZ5 d@ e f dA     YZ6 dB e f dC     YZ7 dD e f dE     YZ8 dF e f dG     YZ9 dH e f dI     YZ: dJ e e" f dK     YZ; dL e f dM     YZ< dN e f dO     YZ= dP e f dQ     YZ> dR e f dS     YZ? dT e f dU     YZ@ dV e e" f dW     YZA dX e f dY     YZB dZ e f d[     YZC d\ e f d]     YZD d^ e f d_     YZE d S(`   i    (   t   absolute_importNt
   PyrexTypest   Namingt	   ExprNodest   Nodest   Optionst	   UtilNodest   LetNodet
   LetRefNodet   TreeFragmentt   EncodedStringt   errort   warningt   copyt   _unicodei   (   R   (   R   (   R   (   R   (   R   (   t   Builtin(   t   Errors(   t   VisitorTransformt   TreeVisitor(   t   CythonTransformt   EnvTransformt   ScopeTrackingTransform(   R   R   (   R	   (   R
   R   (   R   R   t   CompileErrort   InternalError(   t   UtilityCodet   SkipDeclarationsc           B@  sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s)  
    Variable and function declarations can often have a deep tree structure,
    and yet most transformations don't need to descend to this depth.

    Declaration nodes are removed after AnalyseDeclarationsTransform, so there
    is no need to use this for transformations after that point.
    c         C@  s   | S(   N(    (   t   selft   node(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CTypeDefNode%   s    c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CVarDefNode(   s    c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CDeclaratorNode+   s    c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CBaseTypeNode.   s    c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CEnumDefNode1   s    c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CStructOrUnionDefNode4   s    (	   t   __name__t
   __module__t   __doc__R   R   R   R   R    R!   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR      s   					t   NormalizeTreec           B@  sk   e  Z d  Z d   Z d   Z e d  Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z RS(   s\  
    This transform fixes up a few things after parsing
    in order to make the parse tree more suitable for
    transforms.

    a) After parsing, blocks with only one statement will
    be represented by that statement, not by a StatListNode.
    When doing transforms this is annoying and inconsistent,
    as one cannot in general remove a statement in a consistent
    way and so on. This transform wraps any single statements
    in a StatListNode containing a single statement.

    b) The PassStatNode is a noop and serves no purpose beyond
    plugging such one-statement blocks; i.e., once parsed a
`    "pass" can just as well be represented using an empty
    StatListNode. This means less special cases to worry about
    in subsequent transforms (one always checks to see if a
    StatListNode has no children to see if the block is empty).
    c         C@  s,   t  t |   j |  t |  _ t |  _ d  S(   N(   t   superR%   t   __init__t   Falset   is_in_statlistt
   is_in_expr(   R   t   context(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'   M   s    	c         C@  s,   |  j  } t |  _  |  j |  | |  _  | S(   N(   R*   t   Truet   visitchildren(   R   R   t   stacktmp(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ExprNodeR   s
    			c         C@  s`   |  j  } | |  _  |  j |  | |  _  |  j  rX |  j rX t j d | j d | g  S| Sd  S(   Nt   post   stats(   R)   R-   R*   R   t   StatListNodeR0   (   R   R   t   is_listcontainerR.   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_StatNodeY   s    			c         C@  s#   t  |  _ |  j |  t |  _ | S(   N(   R,   R)   R-   R(   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_StatListNodec   s    		c         C@  s   |  j  | t  S(   N(   R4   R,   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ParallelAssignmentNodei   s    c         C@  s   |  j  | t  S(   N(   R4   R,   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    l   s    c         C@  s   |  j  | t  S(   N(   R4   R,   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR!   o   s    c         C@  s*   |  j  s" t j d | j d g   Sg  Sd S(   s   Eliminate PassStatNodeR0   R1   N(   R)   R   R2   R0   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_PassStatNoder   s    	c         C@  s*   | j  j r |  j |  S|  j |  Sd S(   s!   Eliminate useless string literalsN(   t   exprt   is_string_literalR7   R4   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ExprStatNodey   s    c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR      s    (   R"   R#   R$   R'   R/   R(   R4   R5   R6   R    R!   R7   R:   R   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR%   8   s   		
						t   PostParseErrorc           B@  s   e  Z RS(    (   R"   R#   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR;      s    sH   Cannot assign default value to fields in cdef classes, structs or unionss0   Invalid buffer defaults specification (see docs)s0   Special attributes must not have a type declaredt	   PostParsec           B@  sz   e  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(   sf  
    Basic interpretation of the parse tree, as well as validity
    checking that can be done on a very basic level on the parse
    tree (while still not being a problem with the basic syntax,
    as such).

    Specifically:
    - Default values to cdef assignments are turned into single
    assignments following the declaration (everywhere but in class
    bodies, where they raise a compile error)

    - Interpret some node structures into Python runtime values.
    Some nodes take compile-time arguments (currently:
    TemplatedTypeNode[args] and __cythonbufferdefaults__ = {args}),
    which should be interpreted. This happens in a general way
    and other steps should be taken to ensure validity.

    Type arguments cannot be interpreted in this way.

    - For __cythonbufferdefaults__ the arguments are checked for
    validity.

    TemplatedTypeNode has its directives interpreted:
    Any first positional argument goes into the "dtype" attribute,
    any "ndim" keyword argument goes into the "ndim" attribute and
    so on. Also it is checked that the directive combination is valid.
    - __cythonbufferdefaults__ attributes are parsed and put into the
    type information.

    Note: Currently Parsing.py does a lot of interpretation and
    reorganization that can be refactored into this transform
    if a more pure Abstract Syntax Tree is wanted.
    c         C@  s-   t  t |   j |  i |  j d 6|  _ d  S(   Nt   __cythonbufferdefaults__(   R&   R<   R'   t   handle_bufferdefaultst   specialattribute_handlers(   R   R+   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'      s    c         C@  s   t    } | j | j  | j s@ | j s@ t | j t j  ra t j	 | j j
 d | j } n t j | j j
 d | j } t j | j
 d | j d | j d | j d | j d | d d  | _ |  j |  | S(	   NR8   t   valuet   namet   argst   star_argt   starstar_argt   bodyt   doc(   t   YieldNodeCollectorR-   t   result_exprt	   has_yieldt	   has_awaitt
   isinstanceR   t   YieldExprNodeR   t   ExprStatNodeR0   t   ReturnStatNodet   DefNodeRA   RB   RC   RD   t   Nonet   def_node(   R   R   t	   collectorRE   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_LambdaNode   s    	'	c         C@  sr   t    } | j | j  t j | j d | j d d  d g  d d  d d  d | j d | j | _	 |  j |  | S(   NRA   RF   RB   RC   RD   RE   t   is_async_def(
   RG   R-   t   loopR   RO   R0   RA   RP   RJ   RQ   (   R   R   RR   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_GeneratorExpressionNode   s    	c         C@  sK   | j  s: t   } | j | j  | j r: t | _  q: n  |  j |  | S(   N(   t   has_local_scopeRG   R-   RU   RJ   R,   (   R   R   RR   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ComprehensionNode   s    			c         C@  sL   t  | j t j  s* t | j t   n  | j |  j _ | j |  j _	 d  S(   N(
   RK   t   defaultR   t   DictNodeR;   R0   t   ERR_BUF_DEFAULTSt
   scope_nodet   buffer_defaults_nodet   buffer_defaults_pos(   R   t   decl(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR>      s    c   	   
   C@  s  y|  j  |  | g } g  } xP| j D]E} | } x t | t j  rV | j } q8 Wt | t j  ra| j d  k	 ra|  j	 d	 k r t |  j
 t j  r |  j j | j  } | r | | k	 r t | j t   n  | |  q) q n  t | j t   n  |  j	 d k } | j t j | j d t j | j d | j d | j d |  d  | _ qan  | j |  q) W| | _ | SWn$ t k
 r} |  j j |  d  SXd  S(
   Nt   cclasst   pyclasst   structt   modulet   lhsRA   t   rhst   first(   s   cclasss   pyclasss   struct(   R-   t   declaratorsRK   R   t   CPtrDeclaratorNodet   baset   CNameDeclaratorNodeRY   RP   t
   scope_typeR\   t   CClassDefNodeR?   t   getRA   R;   R0   t   ERR_INVALID_SPECIALATTR_TYPEt   ERR_CDEF_INCLASSt   appendt   SingleAssignmentNodeR   t   NameNodeR+   t   nonfatal_error(	   R   R   R1   t   newdeclsR_   t   declbaset   handlert   first_assignmentt   e(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR      s<    	
		c         C@  s)   |  j  |  |  j | | j | j g  S(   N(   R-   t   _visit_assignment_nodeRd   Re   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_SingleAssignmentNode  s    c         C@  s*   |  j  |  |  j | | j | j g  S(   N(   R-   Ry   t   lhs_listRe   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CascadedAssignmentNode  s    c         C@  s  t  g  | D] } | j s" | j r
 d ^ q
  d k  r; | Sg  } t | |  g  } t | |  g  } x | D]| } | d  } | d } t |  d k r t j | j d | d d | } n t j	 | j d | d | } | j
 |  qn Wt |  d k r| d }	 n t j | d j d | }	 | rg  | D] }
 |
 j |
 f ^ q6} t |  x3 | d	 d	 d  D] \ } } t | |	  }	 qoWn  |	 S(
   sg   Flatten parallel assignments into separate single
        assignments or cascaded assignments.
        i   i   iRd   i    Re   R{   R1   N(   t   sumt   is_sequence_constructorR9   t   flatten_parallel_assignmentst   eliminate_rhs_duplicatest   lenR   Rq   R0   t   CascadedAssignmentNodeRp   t   ParallelAssignmentNodet
   expressiont   sort_common_subsequencesR   (   R   R   t	   expr_listR8   t   expr_list_listt	   temp_refst   nodesR{   Re   t   assign_nodet   tempt   duplicates_and_tempst   _t   temp_ref(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRy     s6    '


 c         C@  sA   x: | j  D]/ } | j r, |  j | |  q
 | j |  q
 W| S(   N(   RB   R~   t   _flatten_sequenceRp   (   R   t   seqt   resultt   arg(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   >  s
    	c         C@  s&   |  j  |  |  j | g   | _ | S(   N(   R-   R   RB   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_DelStatNodeF  s    c         C@  s   | j  r t j | j d t j | j j d | j j g d t } t j	 | j d t j
 | j d | j d t j	 | j d | g g | _ n  |  j |  | S(   NRB   RA   t   ignore_nonexistingR1   RE   t   finally_clause(   t   is_except_asR   t   DelStatNodeR0   R   Rr   t   targetRA   R,   R2   t   TryFinallyStatNodeRE   R-   (   R   R   t
   del_target(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ExceptClauseNodeK  s     							(   R"   R#   R$   R'   RS   RV   RX   R>   R   Rz   R|   Ry   R   R   R   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR<      s   !						-			(		c         @  s   t     i        f d     x" |  D] } | d }   |  q. W sV d S  f d    x5  D]- } | j ro t t  | j   | _ qo qo Wx" |  D] }  | d  | d <q Wd S(   s   Replace rhs items by LetRefNodes if they appear more than once.
    Creates a sequence of LetRefNodes that set up the required temps
    and appends them to ref_node_sequence.  The input list is modified
    in-place.
    c         @  s   |  j  s |  j r d  S|   k rW |   k r t |   } |  |  < j |  q n7  j |   |  j r x |  j D] }   |  qw Wn  d  S(   N(   t
   is_literalt   is_nameR   Rp   t   addR~   RB   (   R   t   ref_nodet   item(   t   find_duplicatest   ref_node_sequencet	   ref_nodest
   seen_nodes(    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   g  s    
	iNc         @  s?   |    k r   |  S|  j  r; t t  |  j   |  _ n  |  S(   N(   R~   t   listt   mapRB   (   R   (   R   t   substitute_nodes(    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   }  s
    	(   t   setR~   R   R   RB   (   R   R   R   Re   R   (    (   R   R   R   R   R   ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   _  s    	
	"c         @  s     f d       f d   } x t  |   D] \ } } | d } | } x> t | d d d  D]& } | | |  | d  r^ | } q^ q^ W| | k r+ x, t | | d  D] } |  | d |  | <q W| |  | <q+ q+ Wd S(   s  Sort items/subsequences so that all items and subsequences that
    an item contains appear before the item itself.  This is needed
    because each rhs item must only be evaluated once, so its value
    must be evaluated first and then reused when packing sequences
    that contain it.

    This implies a partial order, and the sort must be stable to
    preserve the original order as much as possible, so we use a
    simple insertion sort (which is very fast for short sequences, the
    normal case in practice).
    c         @  sD   x= |  D]5 } | | k r t  S| j r   | j |  r t  Sq Wt S(   N(   R,   R~   RB   R(   (   R   t   xR   (   t   contains(    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         @  s   | j  o   | j |   S(   N(   R~   RB   (   t   at   b(   R   (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt
   lower_than  s    i   ii    N(   t	   enumeratet   range(   t   itemsR   R0   R   t   keyt   new_post   i(    (   R   ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    
c         C@  sj   g  } |  j  } |  j } |  j } | j } x9 | D]1 } | |  } | j | | d | d |  q1 W| S(   NR@   t   constant_result(   R0   t	   __class__R@   Rp   (   t   literalt   charsR0   t   stypet   svalt	   sval_typet   chart   cval(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt#   unpack_string_to_character_literals  s    				#c      
   C@  s  |  d } | j  p" t | t j  sM t g  |  d  D] } | j  ^ q4  r^ | j |   d  Sg  } | j  ry | j } n | j r t |  } n  t	 |  } g  t
 |  D] } g  ^ q } g  }	 x|  d  D]} | j  s| j r t | j d  n  | j |  q n  t	 | j  }
 t g  | j D] } | j r'd ^ q' } | d k rzt | j d  | j | | g  q q |
 | | k rt | j d | | d k rd pd f  | j | | g  q q | rt | |	 | j |  q |
 | k  r-t | j d |
 | f  | j | | g  q q x- t | | j  D] \ } } | j |  q@Wq W| r| j |  | j |  n  x@ t | |  D]/ \ } } | r| j |  t | |  qqWx8 |	 D]0 } | d	 j  rt | |  q| j |  qWd  S(
   Nis4   starred assignment target must be in a list or tuplei   s,   more than 1 starred expression in assignments#   need more than %d value%s to unpackt   st    s/   too many values to unpack (expected %d, got %d)i    (   R~   RK   R   t   UnicodeNodeR}   Rp   RB   R9   R   R   R   t
   is_starredR   R0   t   map_starred_assignmentt   zipR   (   t   inputt   outputRe   Rd   t   complete_assignmentst   rhs_argst   rhs_sizeR   t   lhs_targetst   starred_assignmentst   lhs_sizeR8   t   starred_targetst   targetst   cascade(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     sf    
'				+ 	c         C@  s%  xi t  t |  |   D]F \ } \ } } | j rO | } t |  | d } Pn  | j |  q Wt d   xC t  t |  | | | d   D] \ } \ } } | j |  q W| | j }	 | | }
 | r |
 |  }
 n  |
 r |
 d j } n	 |	 j } | j |	 t j	 d | d |
  g  d  S(   Ni   s6   no starred arg found when splitting starred assignmenti    R0   RB   (
   R   R   R   R   Rp   R   R   R0   R   t   ListNode(   R   R   t   lhs_argsR   R   R   R8   t   starredt   lhs_remainingR   t   starred_rhsR0   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s&    	(	$
	t   PxdPostParsec           B@  s5   e  Z d  Z d Z d Z d   Z d   Z d   Z RS(   s  
    Basic interpretation/validity checking that should only be
    done on pxd trees.

    A lot of this checking currently happens in the parser; but
    what is listed below happens here.

    - "def" functions are let through only if they fill the
    getbuffer/releasebuffer slots

    - cdef functions are let through only if they are on the
    top level and are declared "inline"
    s>   function definition in pxd file must be declared 'cdef inline's5   inline function definition in pxd file cannot be '%s'c         C@  s   d |  _  t t |   j |  S(   Nt   pxd(   Rk   R&   R   t   __call__(   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   3  s    	c         C@  s,   |  j  } d |  _  |  j |  | |  _  | S(   NR`   (   Rk   R-   (   R   R   t   old(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CClassDefNode7  s
    			c         C@  s   |  j  } t | t j  rB |  j d k rB | j d k rB d  } n  t | t j  r d | j k r |  j d	 k r t	 | _
 | j d k r |  j | j } q | j r |  j d } q d  } q |  j  } n  | r |  j j t | j |   d  S| Sd  S(
   NR`   t   __getbuffer__t   __releasebuffer__u   inlineR   t   privatet   api(   s   __getbuffer__s   __releasebuffer__(   s   pxds   cclass(   t   ERR_INLINE_ONLYRK   R   RO   Rk   RA   RP   t   CFuncDefNodet	   modifiersR,   t   inline_in_pxdt
   visibilityt   ERR_NOGO_WITH_INLINER   R+   Rs   R;   R0   (   R   R   t   err(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_FuncDefNode>  s$    	!				(   R"   R#   R$   R   R   R   R   R   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   "  s   		t   TrackNumpyAttributesc           B@  s,   e  Z d    Z d   Z d   Z e j Z RS(   c         C@  s#   t  t |   j   t   |  _ d  S(   N(   R&   R   R'   R   t   numpy_module_names(   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'   ]  s    c         C@  s/   | j  d k r+ |  j j | j p$ d  n  | S(   Nu   numpy(   t   module_nameR   R   t   as_name(   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CImportStatNodea  s    c         C@  sJ   |  j  |  | j } | j r1 | j |  j k s: | j rF t | _ n  | S(   N(   R-   t   objR   RA   R   t   is_numpy_attributeR,   (   R   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_AttributeNodef  s
    	$(   R"   R#   R'   R   R   R   t   recurse_to_childrent
   visit_Node(    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   [  s   			t   InterpretCompilerDirectivesc           B@  s  e  Z d  Z i	 e j d 6e j d 6e j d 6e j e d  d 6e j e d  d 6e j e	 d  d 6e j e	 d  d	 6e j
 d
 6e j d 6Z i e j d  d 6Z e d d d d d d d d d d d g  Z e j e  e d d d g  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 d(   Z d)   Z  d*   Z! d+   Z" d,   Z# d-   Z$ d.   Z% d/   Z& RS(0   sq  
    After parsing, directives can be stored in a number of places:
    - #cython-comments at the top of the file (stored in ModuleNode)
    - Command-line arguments overriding these
    - @cython.directivename decorators
    - with cython.directivename: statements

    This transform is responsible for interpreting these various sources
    and store the directive in two ways:
    - Set the directives attribute of the ModuleNode for global directives.
    - Use a CompilerDirectivesNode to override directives for a subtree.

    (The first one is primarily to not have to modify with the tree
    structure, so that ModuleNode stay on top.)

    The directives are stored in dictionaries from name to value in effect.
    Each such dictionary is always filled in for all possible directives,
    using default values where no value is given by the user.

    The available directives are controlled in Options.py.

    Note that we have to run this prior to analysis, and so some minor
    duplication of functionality has to occur: We manually track cimports
    and which names the "cython" module may have been imported to.
    t   typeofs   operator.addresss   operator.dereferences   ++s   operator.preincrements   --s   operator.predecrements   operator.postincrements   operator.postdecrements   operator.typeidt   addresst   ,s   operator.commat   declaret   unionRb   t   typedeft   sizeoft   castt   pointert   compiledt   NULLt
   fused_typet   parallelt   pranget   threadidc         C@  s   t  t |   j |  t   |  _ i d d 6|  _ i  |  _ t j t	 j
    } x3 | j   D]% \ } } t j |  | t |  <q] W| |  _ d  S(   Nt   staticmethod(   R&   R   R'   R   t   cython_module_namest   directive_namest   parallel_directivesR   t   deepcopyR   t   get_directive_defaultsR   R   t
   directives(   R   R+   t   compilation_directive_defaultsR  R   R@   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'     s    	c         C@  s|   t  j j | d   } | rN | | k rN |  j j t | d | | f   t S| t  j k rt t	 | d | f  n  t
 Sd  S(   Ns4   The %s compiler directive is not allowed in %s scopes   Invalid directive: '%s'.(   R   t   directive_scopesRm   RP   R+   Rs   R;   R(   t   directive_typesR   R,   (   R   R0   t	   directivet   scopet   legal_scopes(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   check_directive_scope  s    c         C@  s   xR t  | j  D]A } |  j | j | d  s |  j | j | d  | j | =q q W| j |  _ |  j j | j  |  j | _ |  j	 | _	 |  j
 |  |  j | _ | S(   NRc   (   t   sortedt   directive_commentsR  R0   t   wrong_scope_errorR
  t   module_scopeR  t   updateR  R-   R   (   R   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ModuleNode  s    c         C@  s+   | t  j k p* | |  j k p* t j |  S(   N(   R   R  t   special_methodsR   t   parse_basic_type(   R   RA   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   is_cython_directive  s    c         C@  s   | d j  d  } | r | j d  } | d k rD d |  j d <nm | d k rx x^ |  j D] } d | |  j | <qZ Wn9 t |  d k s | d |  j k r t | d	 |  n  |  j j t j	 d
 d   n  | S(   s   
        Checks to see if fullname (e.g. cython.parallel.prange) is a valid
        parallel directive. If it is a star import it also updates the
        parallel_directives.
        t   .s   cython.parallel.u   cython.parallelu   parallelu   cython.parallel.*u   cython.parallel.%si   is   No such directive: %st   InitThreadss   ModuleSetupCode.c(
   t
   startswitht   splitR  t   valid_parallel_directivesR   R   R  t   use_utility_codeR   t   load_cached(   R   t	   full_nameR0   R   R	  RA   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   is_parallel_directive  s    	c         C@  s   | j  d k r+ |  j j | j p$ d  n | j  j d  r| j  j d  ri t | j | j  d  n  | j  d k r | j r | j d k r | j  |  j | j <n  |  j j d  | j  |  j d <|  j j	 t
 j d d   n3 | j r| j  d |  j | j <n |  j j d  d  S| S(	   Nu   cythonu   cython.u   cython.parallel.s    is not a moduleu   cython.parallelR  s   ModuleSetupCode.ci   (   R   R   R   R   R  R   R0   R  R  R  R   R  R  RP   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s"    		c   
      C@  s!  | j  r| j d k s+ | j j d  r| j d d } g  } x | j D] \ } } } } | | } d | }	 |  j |	 | j  r |	 |  j | p | <qL |  j |  r | |  j | p | <| d  k	 r|  j
 j t | d   qqL | j | | | | f  qL W| sd  S| | _ n  | S(   Nu   cythonu   cython.u   .i   s0   Compiler directive imports must be plain imports(   t   relative_levelR   R  t   imported_namesR  R0   R  R  R  RP   R+   Rs   R;   Rp   (
   R   R   t	   submodulet   newimpR0   RA   R   t   kindR  t   qualified_name(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_FromCImportStatNode  s&    
!

c         C@  s   | j  j j d k s- | j  j j j d  r | j  j j d d } g  } x | j D]} \ } } | | } d | } |  j | | j  r | |  j | j <qT |  j	 |  r | |  j
 | j <qT | j | | f  qT W| s d  S| | _ n  | S(   Nu   cythonu   cython.u   .i   (   Rc   R   R@   R  R   R  R0   R  RA   R  R  Rp   RP   (   R   R   R!  R"  RA   t	   name_nodeR  R$  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_FromImportStatNode!  s     

c         C@  s   t  | j t j  r | j j j } | d j d  } | d k rN | rN | S| j j j } | j j } t	 j
 | j d | d | } |  j |  } n |  j |  | S(   Nu   .u   cython.parallel.u   cythonR   R   (   RK   Re   R   t
   ImportNodeR   R@   R  Rd   RA   R   t   CImportStatNodeR0   R   R-   (   R   R   R   t   is_parallelR   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRz   4  s    	c         C@  sO   | j  |  j k r t | _ n- |  j j | j   } | d  k	 rK | | _ n  | S(   N(   RA   R   R,   t   is_cython_moduleR  Rm   RP   t   cython_attribute(   R   R   R	  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_NameNodeH  s    c         C@  s!   |  j  | j  |  j |  | S(   N(   t   visitt   cppclassR-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_NewExprNodeQ  s    c      	   C@  s)  t  | t j  ra|  j | j  | j j   } | r%t j j |  } | r^| j	   \ } } g  } g  } | d  k	 r2| t k	 r2xw | j D]l } | \ }	 }
 d | |	 j f } t j j |  r | j |  j | |
 g d  | j   q | j |  q W| sd  } n	 | | _ | r2| r2| r2| Sn  | j |  j | | | | j j   | Sq%n t  | t j t j f  r%|  j |  | j   } | r%t j j |  } | t k rt j | j d t } |  j | | g d  | j  g S| d  k r	| d  f g St | j d |   q%n  d  S(   Ns   %s.%sR@   s5   The '%s' directive should be used as a function call.(   RK   R   t   CallNodeR.  t   functiont   as_cython_attributeR   R  Rm   t   explicit_args_kwdsRP   t   dictt   key_value_pairsR@   Rp   t   try_to_parse_directiveR0   t   AttributeNodeRr   t   boolt   BoolNodeR,   R;   (   R   R   t   optnamet   directivetypeRB   t   kwdsR  R6  t   keyvalueR   R@   t   sub_optnameR   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   try_to_parse_directivesV  sH    (		%
c         C@  sL  | d k r/ |  j  j r/ t | d |   n | d k rt |  d k } t } | r | j r | j d } t | j  d k r | j j r | j j d k r t	 | j t
 j  r | j j } q t } n  | r t | d   n  d | r | d n d  | f f St j j |  } t |  d k rUt	 | d t
 j  rU| t j   | f S| t k r| d  k	 st |  d k st	 | d t
 j  rt | d |   n  | | d j f S| t k r+| d  k	 st |  d k st	 | d t
 j  rt | d	 |   n  | t | d j  f S| t k r| d  k	 sut |  d k sut	 | d t
 j t
 j f  rt | d
 |   n  | t | d j  f S| t k r| d  k	 st |  d k rt | d |   n  | | d f S| t k rYt |  d k r$t | d |   n  | t g  | j D] \ }	 }
 |	 j |
 f ^ q4 f S| t k r| rt | j  d k rt | d |   n  | g  | D] } t | j  ^ qf St |  r<| d  k	 st |  d k st	 | d t
 j t
 j f  rt | d
 |   n  | | | t | d j   f St sHt  d  S(   Nt
   np_pythrans.   The %s directive can only be used in C++ mode.t	   exceptvali   i    t   checksY   The exceptval directive takes 0 or 1 positional arguments and the boolean keyword "check"s8   The %s directive takes one compile-time boolean arguments8   The %s directive takes one compile-time integer arguments7   The %s directive takes one compile-time string arguments(   The %s directive takes one type arguments1   The %s directive takes no prepositional argumentss+   The %s directive takes no keyword arguments(   R+   t   cppR;   R   R,   R6  R   R9   R@   RK   R   R:  RP   R   R  Rm   t   NoneNodeR  R9  t   intt   IntNodet   strt
   StringNodeR   t   typeR5  R   t   callableR(   t   AssertionError(   R   R;  RB   R=  R0   t	   arg_errorRC  t   kwR<  R   R@   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR7    sr    	 (55!5&! c         C@  s   | s |  j  |  S|  j } t |  } | j |  | | k rN |  j  |  S| |  _ |  j  |  } | |  _ t | t j  s t j | j d | g } n  t j d | j d | d |  S(   NR1   R0   RE   R  (	   R   R  R5  R  RK   R   R2   R0   t   CompilerDirectivesNode(   R   R   R  t   old_directivest   new_directivest   retbody(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_with_directives  s    				c         C@  s"   |  j  | d  } |  j | |  S(   NR2  (   t   _extract_directivesRS  (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         C@  s   |  j  | d  } xa | j   D]S \ } } | d k rC | | _ q | d k r |  j j t | j d |   q q W|  j | |  S(   NR2  t   localst   finalR   sX   Cdef functions can only take cython.locals(), staticmethod, or final decorators, got %s.(   s   finals   staticmethod(   RT  R   t   directive_localsR+   Rs   R;   R0   RS  (   R   R   R  RA   R@   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         C@  s"   |  j  | d  } |  j | |  S(   NR`   (   RT  RS  (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         C@  s"   |  j  | d  } |  j | |  S(   NR/  (   RT  RS  (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CppClassNode  s    c         C@  s"   |  j  | d  } |  j | |  S(   Nt   class(   RT  RS  (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_PyClassDefNode  s    c         C@  s"  | j  s i  Sg  } g  } g  } x | j  d  d  d  D] } |  j | j  } | d  k	 rx | D] } |  j | j | d |  r | \ }	 }
 |  j j |	 t    |
 k r | j	 |  n  | d d k r | j	 |  q n  | d d k ra | d k ra d } qa qa Wq6 | j	 |  q6 W| ri| d k sPt
 | t j t j t j f  rit | d j d   n  | d  d  d  | d  d  d  | _  i  } x | D]} } | \ }	 }
 |	 | k r| |	 } t
 | t  r| j |
  qt
 | t  r| j |
  q|
 | |	 <q|
 | |	 <qW| S(   Nii    R   R`   RY  s8   Cdef functions/classes cannot take arbitrary decorators.(   t
   decoratorsR@  t	   decoratorRP   R  R0   R  Rm   t   objectRp   RK   R   R   Rl   t   CVarDefNodeR;   R5  R  R   t   extend(   R   R   t
   scope_nameR  t   realdecst   botht   decRQ  R	  RA   R@   t   optdictt	   old_value(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRT    sD    	!'
c         C@  s   i  } x |  j  | j  p g  D] } | d  k	 r | j d  k	 r_ |  j j t | j d   q | \ } } | d k r t j	 | j d | d | j
 } |  j |  S|  j | j | d  r | | | <q q q W| r |  j | j
 |  S|  j |  S(   Ns6   Compiler directive with statements cannot contain 'as't   nogilt   gilt   stateRE   s   with statement(   s   nogils   gil(   R@  t   managerRP   R   R+   Rs   R;   R0   R   t   GILStatNodeRE   R   R  RS  (   R   R   t   directive_dictR	  RA   R@   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_WithStatNode   s    	!('   R"   R#   R$   R   t
   TypeofNodet   AmpersandNodet   DereferenceNodet   inc_dec_constructorR,   R(   t
   TypeidNodet   unop_method_nodest   c_binop_constructort   binop_method_nodesR   R  R  R  R'   R  R  R  R  R   R%  R'  Rz   R-  R0  R@  R7  RS  R   R   R   RX  RZ  RT  Rl  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   p  sT   



	
												,	?							.t   ParallelRangeTransformc           B@  s   e  Z d  Z d Z e Z e Z d Z i e	 j
 d 6e j d 6e	 j d 6Z d   Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z RS(   s  
    Transform cython.parallel stuff. The parallel_directives come from the
    module node, set there by InterpretCompilerDirectives.

        x = cython.parallel.threadavailable()   -> ParallelThreadAvailableNode
        with nogil, cython.parallel.parallel(): -> ParallelWithBlockNode
            print cython.parallel.threadid()    -> ParallelThreadIdNode
            for i in cython.parallel.prange(...):  -> ParallelRangeNode
                ...
    u   cython.parallel.parallelu   cython.parallel.threadidu   cython.parallel.prangec         C@  s   | j  |  j k p | j S(   N(   RA   R  R+  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   node_is_parallel_directiveU  s    c         C@  s   |  j  r d j |  j  } nC |  j |  j d } d | d j |  j d  f } | j d  } |  j j |  } | d k r |  j  o |  j d d k r t | j	 d |  n  t
 |  _  d |  _ | S(   s   
        Figure out which parallel directive was used and return the associated
        Node class.

        E.g. for a cython.parallel.prange() call we return ParallelRangeNode
        R  i    s   %s.%si   R   s   Invalid directive: %sN(   t   namenode_is_cython_modulet   joint   parallel_directiveR  t   rstript   directive_to_nodeRm   RP   R   R0   R(   (   R   R   R	  t   cls(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   get_directive_class_nodeX  s    			c         C@  s&   | j  r" | j  |  _  |  j |  S| S(   sd   
        If any parallel directives were imported, copy them over and visit
        the AST
        (   R  R   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  q  s    	c         C@  s1   |  j  |  r- | j g |  _ | j |  _ n  | S(   N(   Rv  RA   Ry  R+  Rw  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR-  }  s    c         C@  s0   |  j  |  |  j r, |  j j | j  n  | S(   N(   R-   Ry  Rp   t	   attribute(   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    	c         C@  s   |  j  | j  |  j s | St | t j  rG | j j } | j } n | j } i  } |  j	 |  } | r | | j
 d | d | } n  | S(   NRB   t   kwargs(   R.  R2  Ry  RK   R   t   GeneralCallNodet   positional_argsRB   t   keyword_argsR}  R0   (   R   R   RB   R  t   parallel_directive_class(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CallNode  s    		c         C@  s   |  j  | j  } t | t j  rz |  j d k rI t | j j d  n  d |  _ |  j  | j  } d |  _ | | _ | S|  j
 r |  j |  } | s d S| t j k r t | j d  d Sn  |  j  | j  | _ | S(   s.   Rewrite with cython.parallel.parallel() blockss   parallel withs*   Nested parallel with blocks are disalloweds%   The parallel directive must be calledN(   R.  Ri  RK   R   t   ParallelWithBlockNodeRh  R   R0   RE   RP   Ry  R}  (   R   R   t   newnodeRE   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRl    s&    
				c         C@  s   |  j  | j  |  j  | j  t | j j t j  } |  j } | r | j j } | j | _ | j | _ | j	 | _	 | } t | j t
 j  s t | j j d  n  d |  _ n  |  j  | j  | |  _ |  j  | j	  | S(   s/   Rewrite 'for i in cython.parallel.prange(...):'s+   Can only iterate over an iteration variableR   (   R.  t   iteratorR   RK   t   sequenceR   t   ParallelRangeNodeRh  RE   t   else_clauseR   Rr   R   R0   (   R   R   t	   in_pranget   previous_statet   parallel_range_node(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ForInStatNode  s&    	
	c         C@  s&   | d k	 r" t t |   j |  Sd S(   s   Visit a node that may be NoneN(   RP   R&   Ru  R.  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR.    s    N(   R"   R#   R$   RP   Ry  R(   Rw  t   in_context_manager_sectionRh  R   R  R   t   ParallelThreadIdNodeR  R{  Rv  R}  R  R-  R   R  Rl  R  R.  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRu  4  s$   


								t   WithTransformc           B@  s   e  Z d    Z d   Z RS(   c   
      C@  s  |  j  | d  | j } | j } | j | j | j } } } t j | d t j | d t j	 |  d t
 | ru d n d  d t d g  d	 t | _ | r t j | d
 | j | _ n  | d  k	 r t j | d t j | d | d | | g } n  t j | d t d g  t d  D] } t j |  ^ q} t j | d t j | d t j | d t j | d t j | d | d t d | d | rt j | d
 d  n d  d t j |  g d d  d d  d d  d | }	 t j | d t j | d | d |	 g d d  d t j | d t j | d | d t d t j | d g  t d  D] } t j |  ^ qNd | rt j | d
 d  n d  d t | _ | S(   NRE   R2  R   R~  t
   __aenter__t	   __enter__t   is_special_lookupRB   t   is_tempR   R1   Rd   t	   with_nodet   slowi   t
   if_clausest	   conditiont   operandt	   with_statt   test_if_runt
   await_exprR  t   patternR   t   excinfo_targett   except_clausesR   R8   t   handle_error_case(    R-   R0   t   is_asyncRE   R   Ri  R   t   SimpleCallNodeR8  t	   CloneNodeR
   R,   t
   enter_callt   AwaitExprNodeRP   R   R2   t   WithTargetAssignmentStatNodet	   TupleNodeR   t   ExcValueNodet   ExceptClauseNodet
   IfStatNodet   IfClauseNodet   NotNodet   WithExitCallNodeR(   t   ReraiseStatNodeR   t   TryExceptStatNodeRM   RE  (
   R   R   R0   R  RE   R   Ri  R   R  t   except_clause(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRl    sd    			+'				1'c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR/      s    (   R"   R#   Rl  R/   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s   	=t   DecoratorTransformc           B@  sz   e  Z d  Z d Z i d d 6d d 6d d 6j Z d   Z d   Z d	   Z	 e
 d
    Z e
 d    Z e
 d    Z RS(   s  
    Transforms method decorators in cdef classes into nested calls or properties.

    Python-style decorator properties are transformed into a PropertyNode
    with up to the three getter, setter and deleter DefNodes.
    The functional style isn't supported yet.
    t   __get__t   gettert   __set__t   settert   __del__t   deleterc         C@  sR   |  j  d  k r g  |  _  n  |  j  j i   t t |   j |  |  j  j   | S(   N(   t   _propertiesRP   Rp   R&   R  R   t   pop(   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   5  s    c         C@  s@   t  | j d t  r d n d } t | j d | j |  | S(   Ni    i   s4   'property %s:' syntax is deprecated, use '@property'(   RK   R0   RH  R   RA   (   R   R   t   level(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_PropertyNode=  s    "c      	   C@  s  |  j  } |  j |  } | d k s. | j r2 | S|  j d } x| j d  d  d  D]} | j } | j ra| j d k rat | j  d k r |  j | |  S| j } t	 d  | _ | j j
 |  | g } | | k r| | } | j | _ | j | _ | | j _ g  St j | j d | } | j | _ t j | j d | | _ | | | <| g S| j rV | j j | k rV |  j | j  }	 |	 r| j j | j k rt | j d | j j | j f  qt | j  d k r|  j | |  S|  j | | |	 |  SqqV qV WxV | j D]K } | j }
 |
 j r| j |
 j d	 k O_ | j |
 j d
 k O_ qqW| j } d  | _ |  j | | | j  S(   NR`   it   propertyi   R  RA   R1   s3   Mismatching property names, expected '%s', got '%s't   classmethodR   (   Rk   R   R[  R  R\  R   RA   R   t   _reject_decorated_propertyR
   t   removeR0   RF   RE   R1   R   t   PropertyNodeR2   t   is_attributeR   t   _map_property_attributeR~  R   t   _add_to_propertyt   is_classmethodt   is_staticmethodRP   t   chain_decorators(   R   R   Rk   t
   propertiest   decorator_nodeR\  RA   t	   stat_listt   propt   handler_namet   funct   decs(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_DefNodeC  sV    				

	 				c         C@  s7   x0 |  j  D]% } | | k r
 t | j d  q
 q
 W|  S(   Ns=   Property methods with additional decorators are not supported(   R[  R   R0   (   R   R  t   deco(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  y  s    c         C@  s}   |  | j  } | | _  | j j |  | j j } xD t |  D]) \ } } | j  | k r? | | | <Pq? q? W| j |  g  S(   N(   RA   R[  R  RE   R1   R   Rp   (   R  R   RA   R\  R  R1   R   t   stat(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s    	
c         C@  s   t  j |  j d | } x? | d d d  D]* } t  j | j d | j d | g } q, Wt  j |  j d | } t j |  j d | d | } t j | g  } | |  _ |  | g S(   sf  
        Decorators are applied directly in DefNode and PyClassDefNode to avoid
        reassignments to the function/class name - except for cdef class methods.
        For those, the reassignment is required as methods are originally
        defined in the PyMethodDef struct.

        The IndirectionNode allows DefNode to override the decorator.
        RA   NiR2  RB   Rd   Re   (	   R   Rr   R0   R  R\  R   Rq   t   IndirectionNodet   decorator_indirection(   R   R[  RA   t   decorator_resultR\  R&  t   reassignment(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s    
					N(   R"   R#   R$   RP   R  Rm   R  R   R  R  R   R  R  R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  %  s   			6t   CnameDirectivesTransformc           B@  s/   e  Z d  Z d   Z e Z e Z e Z e Z RS(   s   
    Only part of the CythonUtilityCode pipeline. Must be run before
    DecoratorTransform in case this is a decorator for a cdef class.
    It filters out @cname('my_cname') decorators and rewrites them to
    CnameDecoratorNodes.
    c         C@  sA  t  | d d   s |  j |  Sxt | j  D]\ } } | j } t | t j  r/ | j	 j
 r/ | j	 j d k r/ | j   \ } } | r t d   n  t |  d k r t d   n  | d j o | d j t j k s t d   n  | d j d   } | j | =t j d | j d	 | d |  } Pq/ q/ W|  j |  S(
   NR[  t   cnames/   cname decorator does not take keyword argumentsi   s*   cname decorator takes exactly one argumenti    s4   argument to cname decorator must be a string literalR0   R   (   t   getattrRP   R   R   R[  R\  RK   R   R1  R2  R   RA   R4  RL  R   R   RJ  R   t   str_typet   compile_time_valueR   t   CnameDecoratorNodeR0   (   R   R   R   R\  RB   R  R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   handle_function  s0    	
	(   R"   R#   R$   R  R   R   R    R!   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s   	!t   ForwardDeclareTypesc           B@  s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C@  s8   |  j  } | j } | j | _ |  j |  | | _ | S(   N(   R  R  R-   (   R   R   t   envR   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CompilerDirectivesNode  s    			c         C@  s,   | j  |  _ | j |  j _ |  j |  | S(   N(   R
  R  R  R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s    c         C@  s5   |  j  j } d |  j  _ |  j |  | |  j  _ | S(   Ni   (   R  t   in_cincludeR-   (   R   R   t   old_cinclude_flag(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CDefExternNode  s
    c         C@  s   | j  |  j  | S(   N(   R   R  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR      s    c         C@  s,   | j  |  j j k r( | j |  j  n  | S(   N(   RA   R  t   entriesR   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR!     s    c         C@  s   | j  |  j j k r( | j |  j  n  |  j j | j  j } | d  k	 r | j r | j r | j r | j } x9 | j	 D]+ } | j ry | j j
 ry | j j   qy qy Wn  | S(   N(   t
   class_nameR  R  R   RJ  RP   t   is_extension_typet   is_builtin_typeR
  t   cfunc_entriest   is_fusedt"   get_all_specialized_function_types(   R   R   RJ  R
  t   entry(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    (	(   R"   R#   R  R  R  R    R!   R   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s   					t   AnalyseDeclarationsTransformc           B@  s  e  Z e d  d d d e d%  g Z e d d d d e d%  g Z e d d d d e d%  g Z e d d e d%  g Z e d d e d%  g 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 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# d!   Z$ d"   Z% d#   Z& d$   Z' RS(&   ur   
property NAME:
    def __get__(self):
        return ATTR
    def __set__(self, value):
        ATTR = value
    R  t   c_classt   pipelineu   
property NAME:
    def __get__(self):
        return ATTR
    def __set__(self, value):
        ATTR = value
    def __del__(self):
        ATTR = None
    u?   
property NAME:
    def __get__(self):
        return ATTR
    u  
cdef class NAME:
    cdef TYPE value
    def __init__(self, MEMBER=None):
        cdef int count
        count = 0
        INIT_ASSIGNMENTS
        if IS_UNION and count > 1:
            raise ValueError, "At most one union member should be specified."
    def __str__(self):
        return STR_FORMAT % MEMBER_TUPLE
    def __repr__(self):
        return REPR_FORMAT % MEMBER_TUPLE
    u;   
if VALUE is not None:
    ATTR = VALUE
    count += 1
    i    c         C@  s=   g  |  _  t   |  _ t t |   } | j |  _ | j |  S(   N(   t   seen_vars_stackR   t   fused_error_funcsR&   R  R   t   _super_visit_FuncDefNodeR   (   R   t   roott   super_class(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   7  s
    	c         C@  s   |  j  d j | j  | S(   Ni(   R  R   RA   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR-  ?  s    c         C@  sc   g  |  _  |  j j t    | j |  j    |  j |  |  j j   | j j	 j
 |  j   | S(   N(   t   extra_module_declarationsR  Rp   R   t   analyse_declarationst   current_envR-   R  RE   R1   R_  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  C  s    	c         C@  sB   |  j  d 7_  | j |  j    |  j |  |  j  d 8_  | S(   Ni   (   t	   in_lambdaR  R  R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRS   M  s
    c         C@  s   |  j  |  } | j r | j j r | j r g  } xY | j j D]K } | j r@ |  j |  } | j | j  |  j |  | j	 |  q@ q@ W| r | j j
 | 7_
 n  | j d k r | j j d  r | j j d  r |  j |  q n  | S(   Nt   externt
   __reduce__t   __reduce_ex__(   t   visit_ClassDefNodeR
  t   implementedRE   t   var_entriest   needs_propertyt   create_PropertyR  R.  Rp   R1   R   t   lookupt   _inject_pickle_methods(   R   R   R1   R  R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   T  s     	c         C@  s  |  j    } | j j d t k r& d  S| j j d t k } g  } | j j } d  } d  } xx | d  k	 r | j d   | j j	 D  | p | j j
 d  } | p | j j
 d  p | j j
 d  } | j } q] W| j d d    | r d  Sg  | D]? } | j j r | j j |  s2| j j |  r | ^ q }	 g  | D] } | j j rE| ^ qE}
 | s||	 s||
 rO| rO| rd } nC |	 rd	 d
 j d   |	 D  } n d d
 j d   |
 D  } | rt | j |  n  t d i | d 6d d d t d   g j i   } | j | j  |  j |  | j j j |  n2x= | D]5 } | j j sV| j j |  | j j |  qVqVWt g  | D] } | j ^ q } d t  j! d j |  j" d   j#   d  } d | j$ } t d i | d 6| d 6d j |  d 6| j$ d 6d j d   t% |  D  d  6t& |  d! 6d d" d t d   g j i   } | j | j j  |  j |  |  j' j |  t d# i | d 6| d 6d j d$   | D  t& |  d% k rd
 n d& d 6d' j g  | D] } | j j rd( | j ^ qp%d) g  d* 6d d d t d   g j i   } | j | j  |  j |  | j j j |  d  S(+   Nt   auto_picklec         s@  s$   |  ] } | j  d k r | Vq d S(   t   __weakref__t   __dict__N(   s   __weakref__s   __dict__(   RA   (   t   .0Rx   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pys	   <genexpr>r  s    t	   __cinit__R  R  R   c         S@  s   |  j  S(   N(   RA   (   Rx   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   <lambda>v  s    s2   no default __reduce__ due to non-trivial __cinit__s6   %s cannot be converted to a Python object for picklingR   c         s@  s   |  ] } d  | j  Vq d S(   s   self.%sN(   RA   (   R  Rx   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pys	   <genexpr>  s    sZ   Pickling of struct members such as %s must be explicitly requested with @auto_pickle(True)c         s@  s   |  ] } d  | j  Vq d S(   s   self.%sN(   RA   (   R  Rx   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pys	   <genexpr>  s    u   
                def __reduce_cython__(self):
                    raise TypeError("%(msg)s")
                def __setstate_cython__(self, __pyx_state):
                    raise TypeError("%(msg)s")
                t   msgR  R  R  s   0x%st    s   utf-8i   s   __pyx_unpickle_%su  
                def %(unpickle_func_name)s(__pyx_type, long __pyx_checksum, __pyx_state):
                    cdef object __pyx_PickleError
                    cdef object __pyx_result
                    if __pyx_checksum != %(checksum)s:
                        from pickle import PickleError as __pyx_PickleError
                        raise __pyx_PickleError("Incompatible checksums (%%s vs %(checksum)s = (%(members)s))" %% __pyx_checksum)
                    __pyx_result = %(class_name)s.__new__(__pyx_type)
                    if __pyx_state is not None:
                        %(unpickle_func_name)s__set_state(<%(class_name)s> __pyx_result, __pyx_state)
                    return __pyx_result

                cdef %(unpickle_func_name)s__set_state(%(class_name)s __pyx_result, tuple __pyx_state):
                    %(assignments)s
                    if len(__pyx_state) > %(num_members)d and hasattr(__pyx_result, '__dict__'):
                        __pyx_result.__dict__.update(__pyx_state[%(num_members)d])
                t   unpickle_func_namet   checksums   , t   membersR  s   ; c         s@  s%   |  ] \ } } d  | | f Vq d S(   s!   __pyx_result.%s = __pyx_state[%s]N(    (   R  t   ixt   v(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pys	   <genexpr>  s   t   assignmentst   num_membersRc   up  
                def __reduce_cython__(self):
                    cdef tuple state
                    cdef object _dict
                    cdef bint use_setstate
                    state = (%(members)s)
                    _dict = getattr(self, '__dict__', None)
                    if _dict is not None:
                        state += (_dict,)
                        use_setstate = True
                    else:
                        use_setstate = %(any_notnone_members)s
                    if use_setstate:
                        return %(unpickle_func_name)s, (type(self), %(checksum)s, None), state
                    else:
                        return %(unpickle_func_name)s, (type(self), %(checksum)s, state)

                def __setstate_cython__(self, __pyx_state):
                    %(unpickle_func_name)s__set_state(self, __pyx_state)
                c         s@  s   |  ] } d  | Vq d S(   s   self.%sN(    (   R  R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pys	   <genexpr>  s    i   R   s    or s   self.%s is not NoneR(   t   any_notnone_members((   R  R
  R  R(   R,   R  RJ  RP   R_  R  R  t	   base_typet   sortt   is_pyobjectt   can_coerce_to_pyobjectt   can_coerce_from_pyobjectt   is_struct_or_unionRx  R   R0   R	   R%   t
   substituteR  R.  RE   R1   Rp   t   create_to_py_utility_codet   create_from_py_utility_codeR  RA   t   hashlibt   md5t   encodet	   hexdigestR  R   R   R  (   R   R   R  t   auto_pickle_forcedt   all_membersR|  t   cinitt   inherited_reduceRx   t   non_pyt   structsR  t   pickle_funct   all_members_namesR
  R	  t   unpickle_func(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   f  s    * %	 !"/
!6C!c         C@  s   g  } xR | D]J } | j  } | j sG | j d k sG | j | j  r | j |  q q W| r t |  j  } | j } | j | | | j  \ }	 }
 |
 j	 |  | |
 g } n  | S(   sd   
        Create function calls to the decorators and reassignments to
        the function.
        R   R  (   s   staticmethods   classmethod(
   R\  R   RA   t   lookup_hereRp   R  R+   R   R  R  (   R   t   old_decoratorsR  R   R[  R\  R  t	   transformRQ   R   t   reassignments(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _handle_fused_def_decorators  s    	
	c         C@  s   | j  j d | j  |  j | j  | _ | j |  t j j | j d t } t j	 | j
 |   } | | _ |  j | j t j |  |  | _ | r |  j | | |  } n  | S(   s#   Handle def or cpdef fused functionsi    t   binding(   R1   t   insertt   py_funcR.  t   update_fused_defnode_entryR   t   PyCFunctionNodet   from_defnodeR,   t	   ProxyNodet   coerce_to_tempt   resulting_fused_functiont   _create_assignmentR  t   fused_func_assignmentR+  (   R   R[  R  R   t   pycfunc(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _handle_def  s    	c         C@  s0  d d l  m } |  j s" |  j r |  j |  j k rc |  j rP t | j d  qc t | j d  n  |  j j |  j  t j	 | j  | _
 x6 | j D]+ } | j j r | j j   d | _ q q W| St | d d  } | j | |  } | |  _ |  j |  d |  _ | j r,|  j | | |  } n  | S(   s:   Create a fused function for a DefNode with fused argumentsi   (   t	   FusedNodes   Fused lambdas not alloweds   Cannot nest fused functionsi    R[  N(   R   R9  t   fused_functionR  R  R   R0   R   R   t   PassStatNodeRE   RB   RJ  R  t   get_fused_typesR  RP   t   FusedCFuncDefNodeR-   R.  R8  (   R   R  R   R9  R   R[  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _create_fused_function  s(    				c      
   C@  sd   | j  r` | j r` t j | j j d | j d t j | j j  d t j | j j  | _ n  d S(   s8   Handle cleanup for 'with gil' blocks in nogil functions.RE   R   t   finally_except_clauseN(   Rf  t   has_with_gil_blockR   t   NogilTryFinallyStatNodeRE   R0   t   EnsureGILNode(   R   t   lenvR   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _handle_nogil_cleanup3  s    	c         C@  sb   | j  r[ | j r[ t | _ t | j d  t j | j d g  d t j | j  | _ n  | j S(   Ns   Fused generators not supportedR1   RE   (	   t   is_generatort   has_fused_argumentsR(   R   R0   R   R2   R;  t   gbody(   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _handle_fused@  s    	c         C@  s  |  j    } |  j j t    | j } | j |  xm | j j   D]\ \ } } | j |  sE | j	 |  } | r | j
 | | | j  q t | j d  qE qE W|  j |  r |  j | |  } n- | j j |  |  j | |  |  j |  |  j j   | S(   s  
        Analyse a function and its body, as that hasn't happened yet.  Also
        analyse the directive_locals set by @cython.locals().

        Then, if we are a function with fused arguments, replace the function
        (after it has declared itself in the symbol table!) with a
        FusedCFuncDefNode, and analyse its children (which are in turn normal
        functions). If we're a normal function, just analyse the body of the
        function.
        s
   Not a type(   R  R  Rp   R   t   local_scopet   declare_argumentsRW  R   R'  t   analyse_as_typet   declare_varR0   R   RH  R>  RE   R  RD  R  R  (   R   R   R  RC  t   vart	   type_nodeRJ  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   J  s"    	c         C@  s   |  j  |  } |  j   } t | t j  rB | j rB | j } n  t | t j  sw | j sw | j sw | j	 |  r{ | S| |  j
 | |  g S(   N(   R   R  RK   R   RO   t
   is_wrappert   parent_scopet   fused_py_funct   is_generator_bodyt   needs_assignment_synthesist   _synthesize_assignment(   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  n  s    c         C@  s   |  j  |  S(   N(   R   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_GeneratorBodyDefNodey  s    c      
   C@  s   | } x | j  s | j r' | j } q	 W| j rn t j | j d | d | j j d t j	 |  } | _
 nN |  j j d  } t j j | |  } | j | _ | j r | j | j _ n  | j  r t | _ n  | j | _ |  j | | |  S(   NRQ   t   pymethdef_cnamet   code_objectR,  (   t   is_py_class_scopet   is_c_class_scopet   outer_scopet   is_closure_scopeR   t   InnerFunctionNodeR0   R  RV  t   CodeObjectNodet   py_cfunc_nodet   current_directivesRm   R0  R1  RW  RE  RG  R,   R,  t   is_cyfunctionR5  (   R   R   R  t   genvRe   R,  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRT  |  s"    			c         C@  s   | j  rZ xB | j  d  d  d  D]* } t j | j d | j d | g } q  Wd  | _  n  t j | j d t j | j d | j	 d | } | j
 |  | S(   NiR2  RB   Rd   RA   Re   (   R[  R   R  R0   R\  RP   R   Rq   Rr   RA   R  (   R   RQ   Re   R  R\  t   assmt(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR5    s    					c         C@  s   |  j    } | j |  | j r |  j j t |  j d   |  j | | j  | j | j  |  j	 |  |  j
   |  j j   n | j |  |  j	 |  | S(   Ni(   R  R  RW   R  Rp   R   t   enter_scopet
   expr_scopet   analyse_scoped_declarationsR-   t
   exit_scopeR  (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ScopedExprNode  s    	
c         C@  s$   |  j  |  | j |  j    | S(   N(   R-   R  R  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_TempResultFromStatNode  s    c         C@  s$   | j  d k r d  S|  j |  Sd  S(   NR  (   R   RP   R  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRX    s    c      	   C@  s  t  r
 d  St j d | j d t j d | j d d  d t d   } | j j j	 j
 } g  } x9 | D]1 } | j t j d | j d | d | j   qe Wg  } xb t | |  D]Q \ } } | j |  j j i t j | j d | j d 6| d 6d | j  q Wd	 | j j j d
 t |  d  f } |  j j i t j | j d | d 6t j | j d | j j j d 6t j | j d | d 6t j | j d t |  d 6t j | j d t | j d d   d 6d | j j d }	 | j |	 _ t  |	 _ |	 j j }
 t |
 d j t j  s-t   | j |
 d j _ |
 d } t | t j!  rk| j d k sqt   | j" d } | j j j st  | _# n  | j" d =xK t | |  D]: \ } } t$ j% |  } | j | j& _ | j" j |  qWx t | |  D]r \ } } | j j' r%|  j( } n	 |  j) } | j i | d 6d | j j d } | j | _ |	 j j j |  qW|	 j* |  j+    |  j, |	  S(   NR0   R   RA   u   selfR~  u   valueu   VALUEu   ATTRu   %s(%s)s   %s, iR1   u   INIT_ASSIGNMENTSR@   u   IS_UNIONRB   u   MEMBER_TUPLEu
   STR_FORMATs   %ss   %ru   REPR_FORMATi    i   R'   (-   R,   RP   R   R8  R0   Rr   R
   R  RJ  R
  R  Rp   RA   R   t   init_assignmentR  R   t   struct_or_union_wrapperR   R2   R:  t	   is_structR  RI  t   replaceR1   R  t   shadowRE   RK   R  t   CSimpleBaseTypeNodeRL  RO   RB   t   kw_onlyR   R  t
   declaratorR  t   basic_pyobject_propertyt   basic_propertyR  R  R   (   R   R   t
   self_valueR  t
   attributesR  t   init_assignmentst   attrt
   str_formatt   wrapper_classt
   class_bodyt   init_methodt   arg_templateR   t   templateR  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR!     sh    		
'#.	
'
		
c         C@  s   |  j  |  | S(   N(   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         C@  s   d  S(   N(   RP   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         C@  s   | j  d k r | Sd  Sd  S(   Nt   public(   R   RP   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR      s    c         C@  s   | j  |  j d k rv |  j   j | j   } | d  k sV | j d k rv | j j rv t | j	 d | j  d  qv n  |  j
 |  | S(   NiR  s,   cdef variable '%s' declared after it is usedi   (   RA   R  R  R  RP   R   R
  RY  R   R0   R-   (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CNameDeclaratorNode  s     c         C@  s   |  j  |  d  S(   N(   R-   RP   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   '  s    c         C@  sW   |  j  | j  } | s d  St |  t k rJ | d | _ | g | d S| | _ | S(   Ni    i   (   R.  R   RP   RJ  R   t
   child_node(   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CnameDecoratorNode,  s    	c         C@  s   | j  d k r3 | j j r' |  j } qN |  j } n | j  d k rN |  j } n  | j i t j d | j	 d t j
 d | j	 d d  d | j  d 6d | j	 j d	 } | j | _ | j | _ | S(
   NR}  t   readonlyR0   R   RA   R   R~  u   ATTRi    (   R   RJ  R  Rq  Rr  t   basic_property_roR  R   R8  R0   Rr   RA   R1   RF   (   R   R  R|  R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  6  s    	N((   R"   R#   R	   R%   RP   Rr  Rq  R  Rj  Ri  R:  R  R   R-  R  RS   R   R   R+  R8  R>  RD  RH  R   R  RU  RT  R5  Rg  Rh  RX  R!   R   R   R   R    R~  R   R  R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    sP   			
								
	$								N								
t    CalculateQualifiedNamesTransformc           B@  sb   e  Z d  Z d   Z d
 d  Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z RS(   s^   
    Calculate and store the '__qualname__' and the global
    module name on some nodes.
    c         C@  sS   |  j    j |  _ g  |  _ t t |   } | j |  _ | j |  _ |  j	 |  | S(   N(
   t   global_scopeR$  R   R&   R  R   R  R  t   _super_visit_ClassDefNodeR-   (   R   R   t   _super(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  M  s    	c         C@  sQ   | r  |  j  } | j |  n	 |  j  } t d j |   | _ |  j | _ d  S(   NR  (   R$  Rp   R
   Rx  t   qualnameR   (   R   R   RA   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _set_qualnameV  s    
	c         C@  s<   | j  r% | j r% | j g |  _ n |  j j | j  d  S(   N(   t   is_pyglobalt   is_pyclass_attrRA   R$  Rp   (   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _append_entry_  s    c         C@  s$   |  j  | | j  |  j |  | S(   N(   R  RA   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ClassNodee  s    c         C@  s   |  j  |  |  j |  | S(   N(   R  R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_PyClassNamespaceNodej  s    c         C@  s   |  j  } | j j rO |  j  rO |  j  d d k rO |  j  j   |  j |  n |  j | | j j  |  j |  | |  _  | S(   Nis   <locals>(   R$  RQ   RO  R  R  RA   R-   (   R   R   t   orig_qualified_name(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_PyCFunctionNodep  s    
(	c         C@  s   | j  rq |  j rq |  j d d k s4 t |  j   |  j } |  j j   |  j |  |  j |  | |  _ n  |  j | | j  |  j |  | S(   Nis   <locals>(   RO  R$  RL  R  R  R  RA   R   (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  {  s    "
c         C@  so   |  j  } t | d d   d k r5 |  j  j d  n |  j | j  |  j  j d  |  j |  | |  _  | S(   NRA   s   <lambda>s   <locals>(   R$  R  RP   Rp   R  R  R  (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    
	c         C@  s[   |  j  } t | d d   p1 |  j   j | j  } |  j |  |  j |  | |  _  | S(   NR  (   R$  R  RP   R  R'  RA   R  R  (   R   R   R  R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s    
	N(   R"   R#   R$   R  RP   R  R  R  R  R  R  R   R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  H  s   									t   AnalyseExpressionsTransformc           B@  s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C@  s6   | j  j   | j j | j   | _ |  j |  | S(   N(   R
  t   infer_typesRE   t   analyse_expressionsR-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s    c         C@  s6   | j  j   | j j | j   | _ |  j |  | S(   N(   RI  R  RE   R  R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         C@  s<   | j  r+ | j j   | j | j  } n  |  j |  | S(   N(   RW   Rd  R  t   analyse_scoped_expressionsR-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRg    s
    	c         C@  s3   |  j  |  | j r/ | j j r/ | j } n  | S(   s  
        Replace index nodes used to specialize cdef functions with fused
        argument types with the Attribute- or NameNode referring to the
        function. We then need to copy over the specialization properties to
        the attribute or name node.

        Because the indexing might be a Python indexing operation on a fused
        function, or (usually) a Cython indexing operation, we need to
        re-analyse the types.
        (   R   t   is_fused_indexRJ  t   is_errorRi   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_IndexNode  s    (   R"   R#   R  R   Rg  R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s   			t   FindInvalidUseOfFusedTypesc           B@  s   e  Z d    Z d   Z RS(   c         C@  sF   | j  sB | j r2 | j j r2 t | j d  qB |  j |  n  | S(   Ns-   Return type is not specified as argument type(   RF  RR  t   return_typeR  R   R0   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s
    	c         C@  s9   | j  r( | j  j r( t | j d  n |  j |  | S(   Ns6   Invalid use of fused types, type cannot be specialized(   RJ  R  R   R0   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR/     s    (   R"   R#   R   R/   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s   	t   ExpandInplaceOperatorsc           B@  s   e  Z d    Z d   Z RS(   c   	   
   @  sH  | j  } | j } | j j r" | St | t j  r8 | S|  j   } t   f d    y   | d t	 \ } } Wn t
 k
 r | SX| j | j   } t j | j d | j d | d | d t	 } | j |  | j |  | j |  t j | j d | d | j | j |  } | j   x | D] } t | |  } q+W| S(	   Nc         @  s  |  j  r |  g  f S|  j j r? | r? t |   }  |  |  g f S|  j r   |  j  \ } } t |  j  } t j |  j	 d | d | | | g f S|  j
 r   |  j  \ } } t j |  j	 d | d |  j | f St |  t j  r t d   n t |   }  |  |  g f Sd  S(   NRi   t   indexR   R~  s@   Don't allow things like attributes of buffer indexing operations(   R   RJ  R  R   t   is_subscriptRi   R  R   t	   IndexNodeR0   R  R   R8  R~  RK   t   BufferIndexNodet
   ValueError(   R   t   settingRi   t   tempsR  R   (   t   side_effect_free_reference(    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s     	
	)	%R  t   operatort   operand1t   operand2t   inplaceRd   Re   (   Rd   Re   RJ  t   is_cpp_classRK   R   R  R  R(   R,   R  R   R  t
   binop_nodeR0   R  t   analyse_target_typest   analyse_typest   analyse_operationR   Rq   t	   coerce_tot   reverseR   (	   R   R   Rd   Re   R  t   let_ref_nodest   dupt   binopt   t(    (   R  ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_InPlaceAssignmentNode  s:    					
c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR/   	  s    (   R"   R#   R  R/   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s   	5t   AdjustDefByDirectivesc           B@  sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s   
    Adjust function and class definitions by the decorator directives:

    @cython.cfunc
    @cython.cclass
    @cython.ccall
    @cython.inline
    @cython.nogil
    c         C@  s&   | j  |  _  t |  _ |  j |  | S(   N(   R  R(   t   in_py_classR-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   	  s    	c         C@  s/   |  j  } | j  |  _  |  j |  | |  _  | S(   N(   R  R-   (   R   R   RP  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  &	  s
    		c         C@  s  g  } d |  j  k r% | j d  n  |  j  j d  } |  j  j d  } |  j  j d  } | d  k r |  j  d r | j } | d  k	 r | d  k r d  t f } q n | d  k r d  t f } n  d |  j  k r| j d t d | d | d | d	 |  } |  j |  Sd
 |  j  k rm|  j	 r3t
 | j d  qm| j d t d | d | d | d	 |  } |  j |  Sn  d | k rt
 | j d  n  | rt
 | j d  n  |  j |  | S(   Nt   inlineRf  RB  t   returnst   annotation_typingt   ccallt   overridableR   t
   except_valt   cfuncs#   cfunc directive is not allowed heres,   Python functions cannot be declared 'inline's+   Python functions cannot be declared 'nogil'(   R  Rp   Rm   RP   t   return_type_annotationR,   R(   t   as_cfunctionR.  R  R   R0   R-   (   R   R   R   Rf  R  t   return_type_node(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  -	  s<    				c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRS   Q	  s    c         C@  sX   d |  j  k r( | j   } |  j |  S|  j } t |  _ |  j |  | |  _ | Sd  S(   NR`   (   R  t	   as_cclassR.  R  R,   R-   (   R   R   t   old_in_pyclass(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRZ  U	  s    			c         C@  s,   |  j  } t |  _  |  j |  | |  _  | S(   N(   R  R(   R-   (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   `	  s
    			(	   R"   R#   R$   R  R  R  RS   RZ  R   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  	  s   				$		t   AlignFunctionDefinitionsc           B@  sG   e  Z d  Z d   Z d   Z d d  Z d   Z d   Z d   Z	 RS(   sq   
    This class takes the signatures from a .pxd file and applies them to
    the def methods in a .py file.
    c         C@  s5   | j  |  _  | j |  _ t   |  _ |  j |  | S(   N(   R
  R  R   R   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  n	  s
    c         C@  s   |  j  j | j  } | r | j r: |  j | j   |  S| j  sQ | j  j r t | j d | j  | j r t | j d  n  d  Sn  | S(   Ns   '%s' redeclareds   previous declaration here(
   R
  R  RA   t	   is_cclassR   R  t   is_builtin_scopeR   R0   RP   (   R   R   t   pxd_def(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRZ  u	  s    		c         C@  su   | d  k r$ |  j j | j  } n  | rR | j s7 | S|  j } | j j |  _ n  |  j |  | rq | |  _ n  | S(   N(   RP   R
  R  R  t   defined_in_pxdRJ  R-   (   R   R   R  RZ  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   	  s    		c         C@  s   |  j  j | j  } | r | j  s2 | j  j r | j sr t | j d | j  | j rn t | j d  n  d  S| j |  } nO |  j  j	 r |  j
 d r | j |  j k r | j   r | j d |  j   } n  | S(   Ns   '%s' redeclareds   previous declaration heret
   auto_cpdefR
  (   R
  R  RA   R  t   is_cfunctionR   R0   RP   R  t   is_module_scopeR  R   t   is_cdef_func_compatible(   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  	  s    		c         C@  s=   |  j  j r9 x* | j D] \ } } |  j j |  q Wn  | S(   N(   R
  R  R   R   R   (   R   R   RA   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'  	  s    c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR/   	  s    N(
   R"   R#   R$   R  RZ  RP   R   R  R'  R/   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  h	  s   					t   RemoveUnreachableCodec           B@  s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C@  s   |  j  d s | S|  j |  x t | j  D]~ \ } } | d 7} | j r. | t | j  k  r |  j  d r t | j | j d d  n  | j |  | _ n  t | _ Pq. q. W| S(   Nt   remove_unreachablei   s   warn.unreachables   Unreachable codei   (	   R_  R-   R   R1   t   is_terminatorR   R   R0   R,   (   R   R   t   idxR  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR5   	  s    
		c         C@  s)   |  j  |  | j j r% t | _ n  | S(   N(   R-   RE   R  R,   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_IfClauseNode	  s    c         C@  sS   |  j  |  | j rO | j j rO x* | j D] } | j s, Pq, q, Wt | _ n  | S(   N(   R-   R  R  R  R,   (   R   R   t   clause(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_IfStatNode	  s    	c         C@  sX   |  j  |  | j j rT | j rT |  j d rH t | j j d d  n  d  | _ n  | S(   Ns   warn.unreachables   Unreachable codei   (   R-   RE   R  R  R_  R   R0   RP   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_TryExceptStatNode	  s    c         C@  s)   |  j  |  | j j r% t | _ n  | S(   N(   R-   R   R  R,   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_TryFinallyStatNode	  s    (   R"   R#   R5   R  R  R  R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  	  s
   			
	RG   c           B@  st   e  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(   c         C@  sV   t  t |   j   g  |  _ g  |  _ g  |  _ g  |  _ t |  _ t |  _	 t |  _
 d  S(   N(   R&   RG   R'   t   yieldsR  t   finallyst   exceptsR(   t   has_return_valueRI   RJ   (   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'   	  s    						c         C@  s   |  j  |  d  S(   N(   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   	  s    c         C@  s*   |  j  j |  t |  _ |  j |  d  S(   N(   R  Rp   R,   RI   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_YieldExprNode	  s    	c         C@  s*   |  j  j |  t |  _ |  j |  d  S(   N(   R  Rp   R,   RJ   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_AwaitExprNode	  s    	c         C@  s6   |  j  |  | j r" t |  _ n  |  j j |  d  S(   N(   R-   R@   R,   R  R  Rp   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ReturnStatNode	  s    	c         C@  s!   |  j  |  |  j j |  d  S(   N(   R-   R  Rp   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  	  s    c         C@  s!   |  j  |  |  j j |  d  S(   N(   R-   R  Rp   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   
  s    c         C@  s   d  S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  
  s    c         C@  s   d  S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   
  s    c         C@  s   d  S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRS   

  s    c         C@  s   d  S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRV   
  s    c         C@  s   d  S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CArgDeclNode
  s    (   R"   R#   R'   R   R  R  R  R  R  R  R   RS   RV   R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRG   	  s   	
										t   MarkClosureVisitorc           B@  s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C@  s   t  |  _ |  j |  | S(   N(   R(   t   needs_closureR-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  
  s    	c   
      C@  s  t  |  _ |  j |  |  j | _ t |  _ t   } | j |  | j r t j } | j r t j	 } x= | j
 | j D] } t | _ qv Wq |  j d r t j } q nO | j r t d   | j
 D  } t | j d  | S| j r t j } n | Sx) t | j
 d  D] \ } } | | _ q
Wx( | j | j | j D] } t | _ q;Wt j d | j d | j d | j d | j o| j  } | d | j d | j d	 | j d
 | j d | j d | j d | j  d | d | j! d | j"  
}	 |	 S(   Nt   iterable_coroutinec         s@  s   |  ] } | j  r | Vq d  S(   N(   t   is_await(   R  t   y(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pys	   <genexpr>/
  s    s/   'await' not allowed in generators (use 'yield')i   R0   RA   RE   t   is_async_gen_bodyRB   RC   RD   RF   R[  RG  t   lambda_nameR  (#   R(   R  R-   R,   RG   RT   R   t   AsyncDefNodeRI   t   AsyncGenNodeR  R  t   in_async_genR_  t   IterableAsyncDefNodeRJ   t   nextR   R0   t   GeneratorDefNodeR   t	   label_numR  R  t   in_generatort   GeneratorBodyDefNodeRA   RE   RB   RC   RD   RF   R[  R  R  (
   R   R   RR   t   coroutine_typet
   yield_exprt   foundR   t   retnodeRG  t	   coroutine(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   
  sF    										c         C@  sT   t  |  _ |  j |  |  j | _ t |  _ | j rP | j rP t | j d  n  | S(   Ns1   closures inside cpdef functions not yet supported(   R(   R  R-   R,   R  R   R0   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CFuncDefNodeG
  s    		c         C@  s/   t  |  _ |  j |  |  j | _ t |  _ | S(   N(   R(   R  R-   R,   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRS   P
  s
    		c         C@  s   |  j  |  t |  _ | S(   N(   R-   R,   R  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  W
  s    	(   R"   R#   R  R   R  RS   R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  
  s
   		*			t   CreateClosureClassesc           B@  sS   e  Z d    Z d   Z d   Z d d  Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C@  s,   t  t |   j |  g  |  _ t |  _ d  S(   N(   R&   R  R'   t   pathR(   R  (   R   R+   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'   a
  s    	c         C@  s   | j  |  _ |  j |  | S(   N(   R
  R  R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  f
  s    c         C@  s   g  } g  } x | j  j   D]p } xg | j j   D]V \ } } | sJ q2 n  | j ri | j | | f  q2 | j r2 | j | | f  q2 q2 Wq W| | f S(   N(   RI  t   iter_local_scopesR  R   t   from_closureRp   t
   in_closure(   R   R   R  R  R
  RA   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   find_entries_used_in_closuresk
  s    		c         C@  s  | j  rg x[ | j j   D]G } x> | j j   D]- } | j pM | j pM | j s/ t | _	 q/ q/ Wq Wn  |  j
 |  \ } } | j   t | _ t | _ | j } | j j }	 x |	 j s |	 j r |	 j }	 q W| r$|  j s | r$| s| j st d   n  | j } n  t | _ t | _ n  | j  r0n: | rB| rBd  S| sjt | _ |	 j | _ t | _ d  Sd | j t j  | j j j d d  f }
 | j d |
 d | j  d t d t  } t | j! _" | | _ | j! j } t | _# t | _$ | j% s| j  rt | j& d	 <n  t' j( r0t' j( | j& d
 <n  | r|	 j) sEt*  | j+ d | j  d t j, d t j, d |	 j j! d t  t | _ n  xn | D]f \ } } | j+ d | j  d | j- s| j. n d  d | j d | j! d t  } | j0 rd | _0 qqWt | _ | j1 | j  d  S(   Ns%   DefNode does not have assignment nodes   %s_%sR  t   __RA   R0   t   definingt   implementingt   no_gc_cleart   freelistR  RJ  t   is_cdefi   (2   RE  RI  R  R  t   valuesR  R  t
   is_cglobalR,   R  R  R  R(   R  t   needs_outer_scopeR  R
  RX  RY  RZ  R  R^  R   t   needs_self_codet   is_passthrought   scope_classt   next_idR   t   closure_class_prefixR  Rl  t   declare_c_classR0   RJ  t   is_final_typet   is_internalt   is_closure_class_scopeRT   R  R   t   closure_freelist_sizeR[  RL  RL  t   outer_scope_cnamet   in_subscopeRA   RP   t   is_declared_generict   check_c_class(   R   R   t   target_module_scopet
   inner_nodeR
  R  R  R  t
   func_scopet   cscopeR   t   class_scopeRA   t   closure_entry(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   create_class_from_scopex
  s~    	
																							c         C@  s^   t  | j t j  s | S|  j } t |  _ |  j | j |  j |  |  j |  | |  _ | S(   N(	   RK   RQ   R   RO   R  R,   R  R  R-   (   R   R   t   was_in_lambda(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRS   
  s    			c         C@  sp   |  j  r |  j |  | S| j s, |  j rl |  j | |  j  |  j j |  |  j |  |  j j   n  | S(   N(   R  R-   R  R  R  R  Rp   R  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   
  s    	c         C@  s   |  j  |  | S(   N(   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRU  
  s    c         C@  s+   | j  s |  j |  S|  j |  | Sd  S(   N(   R  R   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  
  s    	N(   R"   R#   R'   R  R  RP   R  RS   R   RU  R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  ]
  s   			Q			t   InjectGilHandlingc           B@  sM   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z e	 j
 Z RS(   s
  
    Allow certain Python operations inside of nogil blocks by implicitly acquiring the GIL.

    Must run before the AnalyseDeclarationsTransform to make sure the GILStatNodes get
    set up, parallel sections know that the GIL is acquired inside of them, etc.
    c         C@  s   t  |  _ t t |   j |  S(   N(   R(   Rf  R&   R  R   (   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   
  s    	c         C@  s.   |  j  r* t j | j d d d | } n  | S(   sR   Allow raising exceptions in nogil sections by wrapping them in a 'with gil' block.Rh  Rg  RE   (   Rf  R   Rj  R0   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_RaiseStatNode
  s    	!c         C@  s5   |  j  } | j d k |  _  |  j |  | |  _  | S(   NRf  (   Rf  Rh  R-   (   R   R   t	   was_nogil(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_GILStatNode  s
    		c         C@  sW   |  j  } t | j t j  r= | j j  o4 | j j |  _  n  |  j |  | |  _  | S(   N(   Rf  RK   Rp  R   t   CFuncDeclaratorNodet   with_gilR-   (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s    		c         C@  s/   |  j  } | j  |  _  |  j |  | |  _  | S(   N(   Rf  R-   (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ParallelRangeNode  s
    		c         C@  s   | S(   N(    (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR/     s    (   R"   R#   R$   R   R  R  R  R  R/   R   R   R   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  
  s   						t   GilCheckc           B@  sV   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   s,  
    Call `node.gil_check(env)` on each node to make sure we hold the
    GIL when we need it.  Raise an error when on Python operations
    inside a `nogil` environment.

    Additionally, raise exceptions for closely nested with gil or with nogil
    statements. The latter would abort Python.
    c         C@  s7   | j  g |  _ t |  _ t |  _ t t |   j |  S(   N(   R
  t	   env_stackR(   Rf  t   nogil_declarator_onlyR&   R  R   (   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   ,  s    		c         C@  s|   |  j  } | j } | rS t |  j  d k rS |  j d j  |  _  |  j | |  n  | |  _  |  j | d | | |  _  d  S(   Ni   it   exclude(   Rf  t   outer_attrsR   R  R-   (   R   R   t	   gil_stateR  R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _visit_scoped_children5  s    			c         C@  s}   |  j  j | j  | j j } | r1 t |  _ n  | rS | j rS | j | j  n  |  j | |  t |  _ |  j  j	   | S(   N(
   R  Rp   RI  Rf  R,   R  t   nogil_checkR"  R(   R  (   R   R   t   inner_nogil(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   @  s    	c         C@  s   |  j  r | j r | j   n  |  j  } | j d k } | | k ry |  j ry | sf t | j d  qy t | j d  n  t | j t j	  r | j j
 \ | _ n  |  j | |  | S(   NRf  s3   Trying to acquire the GIL while it is already held.s;   Trying to release the GIL while it was previously released.(   Rf  R#  Rh  R  R   R0   RK   R   R   R2   R1   R"  (   R   R   R  t   is_nogil(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  R  s    	c         C@  s   | j  r= t | _  t j | j d d d | } |  j |  S|  j  sZ t | j d  d  S| j |  j	 d  |  j
 |  | S(   NRh  Rf  RE   s)   prange() can only be used without the GILi(   Rf  R(   R   Rj  R0   R  R   RP   R#  R  R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  i  s    			c         C@  sN   |  j  s t | j d  d  S| j r= | j |  j d  n  |  j |  | S(   Ns5   The parallel section may only be used without the GILi(   Rf  R   R0   RP   R#  R  R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ParallelWithBlockNodex  s    		c         C@  sL   |  j  s t | t j  r) |  j |  Sd | _ t | _ |  j	 |  | S(   sM   
        Take care of try/finally statements in nogil code sections.
        N(
   Rf  RK   R   Rj  R   RP   R#  R,   t   is_try_finally_in_nogilR-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s    		c         C@  sw   |  j  r2 |  j r2 | j r2 | j |  j  d  n  | j rQ |  j | |  j  n |  j |  |  j rs t | _ n  | S(   Ni(   R  Rf  R#  R   R"  R-   R,   t   in_nogil_context(   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    		(   R"   R#   R$   R   R"  R   R  R  R&  R  R   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  "  s   								t   TransformBuiltinMethodsc           B@  sz   e  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(   sQ   
    Replace Cython's own cython.* builtins by the corresponding tree nodes.
    c         C@  s"   | j  r d  S|  j |  | Sd  S(   N(   t   declaration_onlyRP   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRz     s    	c         C@  s   |  j  |  |  j |  S(   N(   R-   t   visit_cython_attribute(   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    c         C@  s   |  j  |  S(   N(   R+  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR-    s    c         C@  s$  | j    } | r | d k r9 t j | j d t } q | d k rv d d l m } t j | j d t |  } q | d k r t j	 | j  } q | d k r t j
 | j d
 t |  d |  j   j   j |  } q t j |  r q |  j j j |  r	q t | j d |  n  | S(   Nu   compiledR@   u   __version__i   (   t   __version__u   NULLu   setu	   frozensetu   staticmethodRA   R  u>   '%s' not a valid cython attribute or is being used incorrectly(   u   setu	   frozensetu   staticmethod(   R3  R   R:  R0   R,   R   R,  RI  R
   t   NullNodeRr   R  t   builtin_scopeR'  R   R  R+   t   cython_scopet   lookup_qualified_nameR   (   R   R   R~  t   version(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR+    s$    !!c         C@  s   |  j    } |  j |  t | j  d k r | j j t j | j   | j s | j j t j	 | j |  j
   |   q n  | S(   Ni   (   R  R-   R   RB   Rp   R   t   GlobalsExprNodeR0   R  t   LocalsExprNodet   current_scope_node(   R   R   RC  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_ExecStatNode  s    		c         C@  s  |  j    } | j |  } | r% | S| j } | d k r | d k r| t | j  d k r| t |  j d t | j   | S| d k r t | j  d k r t |  j d t | j   n  t | j  d k r | Sn  t j | |  j   |  St | j  d k r't |  j d t | j   n  t | j  d k r@| S| j	 sR| j
 r| j	 r||  j   } t j | j  } n t j |  } t j |  St d   | j j   D  } g  | D] }	 t j | d	 |	 ^ q}
 t j | d
 |
 Sd  S(   NRU  t   varsi    sG   Builtin 'locals()' called with wrong number of args, expected 0, got %di   sG   Builtin 'vars()' called with wrong number of args, expected 0-1, got %dsF   Builtin 'dir()' called with wrong number of args, expected 0-1, got %dc         s@  s!   |  ] } | j  r | j  Vq d  S(   N(   RA   (   R  RM  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pys	   <genexpr>  s    R@   RB   (   s   localss   vars(   R  R'  R0   R   RB   R   R   R3  R4  RX  R  R  R5  R2  t   SortedDictKeysNodeR  R  R  t   IdentifierStringNodeR   (   R   R   t	   func_nameRC  R  R0   Ra   t   locals_dictt   local_namesRM  R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _inject_locals  s@    	!	%c         C@  sn   |  j  |  | j d k rj t | j t j  rj | j j } t | t j  r[ | j } n  | | _ qj n  | S(   Nt   not_in(   R-   R  RK   R  R   R7  R   t   NoneCheckNode(   R   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_PrimaryCmpNode  s    c         C@  s   |  j  |  S(   N(   R?  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_CascadedCmpNode  s    c         C@  s   |  j    } | j |  } | s6 t | j  d k r: | S| j j t j | j   | j s | j j t j	 | j |  j
   |   n  | S(   Ni   (   R  R'  R   RB   Rp   R   R2  R0   R  R3  R4  (   R   R   R9  RC  R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _inject_eval  s    		c      	   C@  s@  |  j    } | j |  } | s* | j r. | S|  j   } t | t j  sl | j sl t |  j  d k  rp | S|  j d \ } } | j	 r t
 | _ t
 | j _ t j | j d | j t j | j d | j d j g | _ nX | j r<t j | j d | j j d | j t j | j d | j d j g | _ n  | S(   Ni   iRE  RA   i    R  (   R  R'  RB   R4  RK   R   RO   R   R  RX  R,   t   requires_classobjt
   class_cellt	   is_activeR   t   ClassCellNodeR0   RE  Rr   RA   RY  R
  R  (   R   R   R9  RC  R  RQ   t
   class_nodeR  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   _inject_super  s*    		+		+c         C@  s2  | j  j   } | r| t j k r| t | j  d k rS t | j  j d |  qt j | | j  j d | j d } q| t j k r t | j  d k r t | j  j d |  qt j | | j  j d | j d d | j d } q| d	 k rt | j  d k r't | j  j d
  q| j d j	 |  j
    } | rzt j | j  j d | d | j d d t } qt | j d j d  q| d k r0t | j  d k rt | j  j d  q| j d j	 |  j
    } | rt j | j  j d | } qt j | j  j d | j d } q| d k rt | j  d k rgt | j  j d  qt j | j  j d | j d | j d  } t | _ q| d k rt | j  d k rt | j  j d  qt j | j  j d | j d | j d  } t | _ q| d k r>t j | j d t d  | _  q| d k rnt j | j d t d  | _  q|  j j j |  rqt | j  j d |  n  |  j |  t | t j  r.| j  j r.| j  j } | d" k r|  j | |  S| d  k r|  j | |  S| d! k r.|  j | |  Sn  | S(#   Ni   u   %s() takes exactly one argumentR  i    i   u    %s() takes exactly two argumentsR  R  u   castuD   cast() takes exactly two arguments and an optional typecheck keywordRJ  t	   typechecks
   Not a typeu   sizeofu#   sizeof() takes exactly one argumentt   arg_typet   cmodu"   cmod() takes exactly two argumentst   %t   cdivu"   cdiv() takes exactly two argumentst   /u   setRA   R   u   staticmethodR   u*   '%s' not a valid cython language constructt   dirRU  R6  t   evalR&   (   s   dirs   localss   vars(    R2  R3  R   Rr  R   RB   R   R0   Rt  RK  R  R   t   TypecastNodeR(   t   SizeofTypeNodet   SizeofVarNodeR  R,   t	   cdivisionRr   R
   R+   R/  R0  R-   RK   R  R   RA   R<  RA  RG  (   R   R   R2  RJ  R9  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_SimpleCallNode/  sp    

,
+%,,$$c         C@  s  | j  j   } | d k r| j j } | j j d   } t |  d k s{ t |  d k s{ t |  d k r d | k r t | j  j	 d  q| d j
 |  j    } | r | j d t  } t j | j  j	 d | d | d d | } qt | d j	 d	  n  |  j |  | S(
   Nu   casti   i   RH  uD   cast() takes exactly two arguments and an optional typecheck keywordi    RJ  R  s
   Not a type(   R2  R3  R  RB   R  R  RP   R   R   R0   RK  R  Rm   R(   R   RP  R-   (   R   R   R2  RB   R  RJ  RH  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   visit_GeneralCallNodeu  s     $
((   R"   R#   R$   Rz   R   R-  R+  R5  R<  R?  R@  RA  RG  RT  RU  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR)    s   						'					Ft   ReplaceFusedTypeChecksc           B@  s;   e  Z d  Z d   Z d   Z d   Z d   Z d   Z RS(   s0  
    This is not a transform in the pipeline. It is invoked on the specific
    versions of a cdef function with fused argument types. It filters out any
    type branches that don't match. e.g.

        if fused_t is mytype:
            ...
        elif fused_t in other_fused_type:
            ...
    c         C@  sB   t  t |   j   | |  _ d d l m } | d t  |  _ d  S(   Ni   (   t   ConstantFoldingt
   reevaluate(   R&   RV  R'   RI  t   OptimizeRW  R,   R)  (   R   RI  RW  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'     s    	c         C@  s   |  j  |  |  j |  S(   sc   
        Filters out any if clauses with false compile time type check
        expression.
        (   R-   R)  (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s    c         C@  s  t  j d t  / | j j |  j  } | j j |  j  } Wd  QX| r| rt j | j	 d t
 } t j | j	 d t } |  j | | j j	  } | j } | d k r |  j | | j j	  } | j |  } | d k } | r | s | r| r| Sn | d k rt | t j  r*| j } n  | j rIt | j j	 d	  q| j sht | j j	 d
  qt j |  }	 x4 |	 D], }
 | j |
  r~| d k r| S| Sq~q~W| d k r| Sn  | S| S(   Nt   ignoreR@   t   ist   is_nots   ==s   !=t   inR=  s   Type is fuseds-   Can only use 'in' or 'not in' on a fused type(   s   iss   is_nots   ==s   !=(   s   iss   ==(   s   ins   not_in(   R   t   local_errorsR,   R  RK  RI  R  R   R:  R0   R(   t   specialize_typeR  t   same_asRK   R   t   CTypedefTypet   typedef_base_typeR  R   t   get_specialized_types(   R   R   t   type1t   type2t
   false_nodet	   true_nodet   opt   is_samet   eqt   typest   specialized_type(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR?    s@    			
c         C@  s=   y | j  |  j j  SWn t k
 r8 t | d  | SXd  S(   Ns   Type is not specific(   t
   specializeRI  t   fused_to_specifict   KeyErrorR   (   R   RJ  R0   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR_    s
    c         C@  s   |  j  |  | S(   N(   R-   (   R   R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR     s    (   R"   R#   R$   R'   R  R?  R_  R   (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRV    s   
			2	t   DebugTransformc           B@  sM   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   s9   
    Write debug information for this Cython module.
    c         C@  sS   t  t |   j |  t   |  _ |  j j |  _ | j |  _	 g  |  _
 t |  _ d  S(   N(   R&   Rp  R'   R   t   visitedR+   t   gdb_debug_outputwritert   tbt   c_filet   c_output_filet   nested_funcdefsR(   t   register_stepinto(   R   R+   t   optionsR   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR'     s    	c         C@  s`  | j  |  j _ t d | j  d | j d j d |  j  } |  j j d |  |  j j d  |  j |  x |  j	 D] } |  j
 |  qt Wt |  _ |  j |  t |  _ |  j j d  |  j j d  i  } xl | j j j   D]X \ } } | j |  j k r | j j d  r | j j r | j j r | | | <q q W|  j |  |  j j d  | S(	   NR   t   filenamei    t
   c_filenamet   Modulet	   Functionst   Globalst   __pyx_(   t   full_module_nameRs  R   R5  R0   Ry  Ru  t   startR-   Rv  R   R,   Rw  t    serialize_modulenode_as_functionR(   t   endR
  R  R   R$  Rq  RA   R  RJ  R  R  t   serialize_local_variables(   R   R   t   attrst   nested_funcdefR  t   kR  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s2    			c         C@  s  |  j  j | j j  t | d t  r, | S|  j rI |  j j |  | S| j	 d  k ra d } n | j	 j j } t d | j j p t | d d  d | j j d | d | j j d t | j d	   } |  j j d
 d | |  j j d  |  j | j j  |  j j d  |  j j d  x: | j j D], } |  j j | j  |  j j | j  q.W|  j j d  |  j j d  t |  _ |  j |  t |  _ |  j j d  |  j j d
  | S(   NRO  R   RA   s	   <unknown>R  t   pf_cnameR$  t   linenoi   t   FunctionR  t   Localst	   Argumentst   StepIntoFunctions(   Rq  R   RI  R$  R  R(   Rw  Rv  Rp   R.  RP   R  t
   func_cnameR5  RA   RH  R0   Rs  R  R  R  R  t   arg_entriesR,   R-   (   R   R   R  R  R   (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR   !  s>    				c         C@  s   |  j  r | j d  k	 r | j j r t | d t  r | j j d  k	 r t d | j j  } |  j	 j
 d d | |  j	 j d  n  |  j |  | S(   Nt	   is_calledRA   t   StepIntoFunctionR  (   Rw  RJ  RP   R  R  R(   R  R  R5  Rs  R  R  R-   (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR-  M  s    	c         C@  s   | j  j d  d } d | } d | } t d | d | d d d	 d d
 d d d  } t | d | } |  j | |  |  j | |  d S(   s   
        Serialize the module-level code as a function so the debugger will know
        it's a "relevant frame" and it will know where to set the breakpoint
        for 'break modulename'.
        R  it   initt   PyInit_RA   R  R  R   R$  R  t   1t   is_initmodule_functionR,   N(   R  t
   rpartitionR5  t!   _serialize_modulenode_as_function(   R   R   RA   t	   cname_py2t	   cname_py3t	   py2_attrst	   py3_attrs(    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  _  s    

	c         C@  s   |  j  j d d | |  j  j d  |  j | j j  |  j  j d  |  j  j d  |  j  j d  |  j  j d  t |  _ |  j |  t	 |  _ |  j  j d  |  j  j d  d  S(   NR  R  R  R  R  (
   Rs  R  R  R
  R  R  R,   Rw  R-   R(   (   R   R   R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR  z  s    		c         C@  s>  x7| j    D])} | j s" q n  | j j r7 d } n d } | j r d t j | j j f } d | j j	 j
 | j j | j f } n= | j r d t j | j f } | j
 } n | j } | j
 } | j s d } n t | j d  } t d | j d | d	 | d
 | d |  } |  j j d |  |  j j d  q Wd  S(   Nt   PythonObjectt   CObjects   %s->%ss   %s.%s.%st   0i   RA   R  R$  RJ  R  t   LocalVar(   R  R  RJ  R  R  R   t   cur_scope_cnamet   outer_entryR
  RZ  R$  RA   R  R0   RH  R5  Rs  R  R  (   R   R  R  t   vartypeR  t   qnameR  R  (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyR    s:    													(
   R"   R#   R$   R'   R  R   R-  R  R  R  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyRp    s   		(	,			(F   t
   __future__R    t   cythonR   R]  R   R  R   R   R   R   R   R   R   R   t   VisitorR   R   R   R   R   R   R   R   R	   t   StringEncodingR
   R   R   R   R   R   t   CodeR   R   R%   R;   Ro   R[   Rn   R<   R   R   R   R   R   R   R   R   Ru  R  R  R  R  R  R  R  R  R  R  R  R  RG   R  R  R  R  R)  RV  Rp  (    (    (    ss   /home/psgendb/BIRCHDEV/lib-linux-x86_64/python/lib64/python2.7/site-packages/Cython/Compiler/ParseTreeTransforms.pyt   <module>   sx   !"L	.	!		E	$9 C/-  CU&<SF/9G6|X