
V]c        '   @@  s  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 e d e d e d e d e  d  d l Z d  d l Z d  d l Z d  d l m	 Z	 d d l
 m Z d d l m Z m Z m Z 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 m Z m Z m Z 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' m( Z( d% d& l) m* Z* e j+ d  d' k re, Z- n e, e. f Z- d(   Z/ d)   Z0 e1 d*  Z2 d+   Z3 d, e4 f d-     YZ5 d. e4 f d/     YZ6 d0   Z7 e7 d1 e f d2     Y Z8 d3 e8 f d4     YZ9 d5 e f d6     YZ: d7 e8 f d8     YZ; d9 e8 f d:     YZ< d; e< f d<     YZ= d= e8 f d>     YZ> d? e> f d@     YZ? dA e> f dB     YZ@ dC e> f dD     YZA dE e> f dF     YZB dG e> f dH     YZC dI e> f dJ     YZD dK e8 f dL     YZE dM e8 f dN     YZF dO e8 f dP     YZG dQ eF f dR     YZH dS eF f dT     YZI dU eF f dV     YZJ dW eF f dX     YZK dY eF f dZ     YZL d[ eF f d\     YZM d] eF f d^     YZN d_ eF f d`     YZO da e< f db     YZP dc e< f dd     YZQ de eQ e: f df     YZR dg e< f dh     YZS di e< f dj     YZT dk e< f dl     YZU dm e< e: f dn     YZV do eV f dp     YZW dq e8 f dr     YZX ds e8 f dt     YZY du eV f dv     YZZ dw eV f dx     YZ[ dy eZ f dz     YZ\ d{ e\ f d|     YZ] d} e] f d~     YZ^ d e] f d     YZ_ d eZ f d     YZ` d e< f d     YZa d e< e: f d     YZb d eb f d     YZc d eb f d     YZd d e< f d     YZe d e< f d     YZf d e< f d     YZg d e< f d     YZh d e< f d     YZi d ei f d     YZj d ei f d     YZk d ei f d     YZl d ei f d     YZm d e< f d     YZn d e< f d     YZo d e< f d     YZp d e< f d     YZq d e; f d     YZr d e< f d     YZs d e< f d     YZt d e< f d     YZu d e< f d     YZv d e< f d     YZw d e< f d     YZx d e< f d     YZy d e8 f d     YZz d e< f d     YZ{ d e< f d     YZ| d e f d     YZ} d e} e< f d     YZ~ d e8 f d     YZ d e8 f d     YZ d   Z d e} e< f d     YZ d e f d     YZ d e f d     YZ d e} e< f d     YZ d e< f d     YZ d ei f d     YZ d e< f d     YZ d e8 f d     YZ d e< f d     YZ d e f d     YZ d e f d     YZ d e< f d     YZ d e f d     YZ d   Z i d   d 6d   d 6e d 6Z i d d d f d 6d d d f d 6Z d e< f d     YZ d e< f d     YZ d e< f d     YZ d e8 f d     YZ d e< e f d     YZ d e f d     YZ d e f d     YZ d e< f d     YZ e# j rd Z n d Z e j d d  Z e j d d  Z e j d d Z e j dd Z e j dd Z e j dd Z e j dd Z e j dd Z e ddd	d
de g  Z d S(  i    (   t   absolute_importNt   syst   ost   copyt   Builtint   errort   warningt   Namingt
   PyrexTypest   py_object_typet   ModuleScopet
   LocalScopet   ClosureScopet   StructOrUnionScopet   PyClassScopet   CppClassScopet   UtilityCodet   EncodedStringt
   error_typet   _py_int_types(   t   chaini   (   R   (   R   R   t   InternalErrort   CompileError(   R   (   R   (   t	   TypeSlots(   R	   R   (   R
   R   R   R   R   R   t   TemplateScope(   R   (   R   (   t   Future(   t   Options(   t
   DebugFlags(   t   has_np_pythrant   pythran_typet   is_pythran_bufferi   (   t   add_metaclassi   c         C@  s   |  d j    |  d f S(   Ni    i   (   t   get_filenametable_entry(   t   pos(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   relative_position)   s    c         C@  s   t  j s | Sd t |   } | d  k r3 t |  S| j } | d  k	 rv y | j |  Wqv t k
 rr d  } qv Xn  | s t |  } n t | d |  } | | _ | S(   Nu   File: %s (starting at line %s)u   
(   R   t   embed_pos_in_docstringR"   t   NoneR   t   encodingt   encodet   UnicodeEncodeError(   R!   t	   docstringt   pos_lineR%   t   doc(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   embed_position-   s     	
		c         C@  s3  d  } t } t } } |  j r t |  j d  xk |  j D]` \ } } | j sT q9 n  | j d k r{ t } | s | }  q q9 | j d k r9 t } | }  q9 q9 W| r | r t |  j d  q n  |  j	 |  }	 |  j
 r|  j r|  j d k r| d  k	 rB|	 d  k	 rB|	 j rB| j |  }
 |
 rB|
 j rBt } d  }	 qBn  |	 t j t j t j f k r|  j d k rxt j n t }	 qn( |	 d  k	 r|  j rt |  j d  n  |	 d  k	 r | r| r|	 j rt |  j d	  n  t |  j d |	 d
 t } n) | rt |  j d  n t |  j d  | |	 f S(   NsS   Dicts should no longer be used as type annotations. Use 'cython.int' etc. directly.t   typet   ctypes9   Duplicate type declarations found in signature annotationt   intt   longt   floatsW   Strings should no longer be used for type declarations. Use 'cython.int' etc. directly.sO   Python type declaration in signature annotation does not refer to a Python typet   is_args'   Ambiguous types in annotation, ignorings0   Unknown type declaration in annotation, ignoring(   R,   R,   (   R-   R-   (   R.   R/   R0   (   R$   t   Falset   is_dict_literalR   R!   t   key_value_pairst   is_string_literalt   valuet   Truet   analyse_as_typet   is_namet   cython_attributet   namet   is_pyobjectt
   infer_typeR   t   c_long_typet
   c_int_typet   c_float_typet   c_double_typeR	   t   CAnalysedBaseTypeNode(   t
   annotationt   envt   assigned_valuet	   base_typet   is_ambiguoust   explicit_pytypet   explicit_ctypeR;   R6   t   arg_typet   assigned_type(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   analyse_type_annotationG   sP    
			""$	
	
c         @  s      f d   } | S(   Nc          @  s%  t  |   d k rt |  d    r|  d  \ } } d d | j | j j  j | j d f } | j j j   } | j	 |  | j j j   } | j d 7_  |  |   } | j d 8_ | | j j j   k r | j j j
 |  n" | j d d d  } | j	 |  | S |  |   Sd  S(   Ni   i   s(                       /* %s -> %s.%s %s */t    i   s   ->s   <-(   t   lent
   isinstancet
   call_levelt	   __class__t   __name__R!   t   buffert   streamt   tellt   putlnt   truncatet   replace(   t   argst   kwdst   nodet   codet   markert   pristinet   startt   res(   t   codewriter_classt   func(    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   fw   s&    %
	(    (   Rb   Ra   Rc   (    (   Ra   Rb   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   write_func_callv   s    t   VerboseCodeWriterc           B@  s   e  Z d    Z RS(   c         C@  s   d d l  m } d d l m } t |  } x? | j   D]1 \ } } t | |  r9 t | |  | | <q9 q9 Wt t	 |   j
 |  | | |  S(   Ni    (   t   FunctionTypei   (   t   CCodeWriter(   t   typesRf   t   CodeRg   t   dictt   itemsRO   Rd   t   superRe   t   __new__(   t   clsR;   t   basest   attrsRf   Rg   t   mnamet   m(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRm      s    (   RR   t
   __module__Rm   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRe      s   t   CheckAnalysersc           B@  s,   e  Z d  Z e d d d g  Z d   Z RS(   sC   Metaclass to check that type analysis functions return a node.
    t   analyse_typest   analyse_expressionst   analyse_target_typesc         C@  s   d d l  m } d   } t |  } xN | j   D]@ \ } } t | |  r2 | |  j k r2 | | |  | | <q2 q2 Wt t |   j |  | | |  S(   Ni    (   Rf   c         @  s      f d   } | S(   Nc          @  s4     |  |   } | d  k r0 d  |  | f GHn  | S(   Ns   %s %s %s(   R$   (   RY   t   kwargst   retval(   Rb   R;   (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   call   s    (    (   R;   Rb   Rz   (    (   Rb   R;   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   check   s    (	   Rh   Rf   Rj   Rk   RO   t   methodsRl   Rt   Rm   (   Rn   R;   Ro   Rp   Rf   R{   Rq   Rr   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRm      s    	(   RR   Rs   t   __doc__t   setR|   Rm   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRt      s
   c         C@  s   t  j r t t  |   S|  S(   N(   R   t   debug_trace_code_generationR   Re   (   Rn   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   _with_metaclass   s    	t   Nodec           B@  s   e  Z d  Z d  Z d  Z d  Z d  Z e Z d Z
 d Z d Z d Z d Z d   Z d Z d Z e Z d d  Z d Z d   Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d  d d d d  Z e d d  Z RS(   i    c         K@  s   | |  _  |  j j |  d  S(   N(   R!   t   __dict__t   update(   t   selfR!   t   kw(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   __init__   s    	t	   Operationc         C@  s   t  |  j d |  j  d  S(   Ns   %s not allowed without gil(   R   R!   t   gil_message(   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt	   gil_error   s    c         C@  s   | j    s |  j   n  d  S(   N(   t   is_cppt	   cpp_error(   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt	   cpp_check   s    c         C@  s   t  |  j d |  j  d  S(   Ns   %s only allowed in c++(   R   R!   t   cpp_message(   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR      s    c         C@  sk   t  j  |   } xU | j D]J } t | |  } t | t  r t | | g  | D] } | ^ qM  q q W| S(   sc  Clone the node. This is defined as a shallow copy, except for member lists
           amongst the child attributes (from get_child_accessors) which are also
           copied. Lists containing child nodes are thus seen as a way for the node
           to hold multiple children directly; the list is not treated as a separate
           level in the tree.(   R   t   child_attrst   getattrRO   t   listt   setattr(   R   t   resultt   attrnameR6   t   x(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt
   clone_node   s    *c         C@  s   d  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   analyse_declarations  s    c         C@  s   t  d |  j j   d  S(   Ns*   analyse_expressions not implemented for %s(   R   RQ   RR   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   t  d |  j j   d  S(   Ns$   generate_code not implemented for %s(   R   RQ   RR   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   generate_code  s    c         C@  s&   t  |  t  r" |  j j |  n  d  S(   N(   RO   t	   BlockNodet   bodyt   annotate(   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   "  s    c         C@  s   y |  j  SWn t k
 r |  j } |  j s: | |  _  | Sx| |  j D]q } t |  |  } | d  k rh qD t | t  r x; | D] } t | | j	    } q~ WqD t | | j	    } qD W| |  _  | SXd  S(   N(
   t   _end_post   AttributeErrorR!   R   R   R$   RO   R   t   maxt   end_pos(   R   R!   t   attrt   childt   c(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   '  s"    				R!   id   c   
   	   @  s\    d k r d S d k r( t    n  t |    k rT d |  j j t |   f S j t |         f d    g  |  j j   D]$ \ } } |  k r | | f ^ q } t |  d k r d |  j j t |   f Sd | } d |  j j t |   f }	 x8 | D]0 \ } } |	 d | |  | | d	  f 7}	 qW|	 d
 | 7}	 |	 Sd S(   sY   Debug helper method that returns a recursive string representation of this node.
        i    s   <...nesting level cutoff...>s   <%s (0x%x) -- already output>c         @  ss   t  |  t  r) |  j |    d   St  |  t  re d d j g  |  D] }  | |  ^ qH  St |   Sd  S(   Ni   s   [%s]s   , (   RO   R   t   dumpR   t   joint   repr(   R   t   levelt   item(   t   cutofft
   dump_childt   encounteredt
   filter_out(    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   G  s
    -s   <%s (0x%x)>s     s   <%s (0x%x)
s   %s  %s: %s
i   s   %s>N(	   R$   R~   t   idRQ   RR   t   addR   Rk   RN   (
   R   R   R   R   R   t   keyR6   Rp   t   indentR`   (    (   R   R   R   R   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   <  s"    :
(s   (#)c   	      C@  s   |  j  s d S|  j  \ } } } | j d d d d  } | t d | d  | !} | d } | rz | |  | | | } n  | j   d	 | d <| | | | d
 !7} d | j   | | d j |  f S(   s[   Debug helper method that returns the source code context of this node as a string.
        u    R%   t   ASCIIt   error_handlingt   ignorei    i   iu                # <<<<<<<<<<<<<<
i   u   "%s":%d:%d
%s
(   R!   t	   get_linesR   t   rstript   get_escaped_descriptionR   (	   R   t   mark_columnR]   t   source_desct   linet   colt   contentst   linest   current(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   dump_posZ  s    	
N(   R!   (   RR   Rs   R9   t   is_nonet   is_nonecheckt
   is_literalt   is_terminatorR2   t
   is_wrapperR$   t   tempsR   t   outer_attrst   cf_statet   coercion_typeR   R   t   nogil_checkt   in_nogil_contextR   R   R   R   R   R   Rv   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR      s6   				%					t   CompilerDirectivesNodec           B@  sD   e  Z d  Z d g Z d   Z d   Z d   Z d   Z d   Z RS(   s9   
    Sets compiler directives for the children nodes
    R   c         C@  s2   | j  } |  j  | _  |  j j |  | | _  d  S(   N(   t
   directivesR   R   (   R   RD   t   old(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   t  s    	c         C@  s7   | j  } |  j  | _  |  j j |  |  _ | | _  |  S(   N(   R   R   Rv   (   R   RD   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   z  s
    		c         C@  sP   | j  } | j j  } |  j  | j _  |  j j | |  | | _  | | j _  d  S(   N(   R   t   globalstateR   t   generate_function_definitions(   R   RD   R\   t   env_oldt   code_old(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    		c         C@  s;   | j  j } |  j | j  _ |  j j |  | | j  _ d  S(   N(   R   R   R   t   generate_execution_code(   R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s;   | j  j } |  j | j  _ |  j j |  | | j  _ d  S(   N(   R   R   R   R   (   R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (	   RR   Rs   R}   R   R   Rv   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   k  s   					R   c           B@  s   e  Z d    Z d   Z RS(   c         C@  s8   | j    j } x | D] } | j j |  q W| 2d  S(   N(   t   global_scopet   undeclared_cached_builtinsR   t   add_cached_builtin_decl(   R   RD   R\   t   entriest   entry(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   generate_cached_builtins_decls  s    c         C@  s(   x! | j  D] } | j | |  q
 Wd  S(   N(   t   lambda_defsR   (   R   RD   R\   R[   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   generate_lambda_definitions  s    (   RR   Rs   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s   	t   StatListNodec           B@  sM   e  Z d  g Z e d    Z d   Z d   Z d   Z d   Z d   Z	 RS(   t   statsc         O@  s   t  |  | |  } | S(   N(   R   (   R!   RD   RY   R   R[   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   create_analysed  s    c         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   R   R   (   R   RD   t   stat(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s,   g  |  j  D] } | j |  ^ q
 |  _  |  S(   N(   R   Rv   (   R   RD   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    %c         C@  s(   x! |  j  D] } | j | |  q
 Wd  S(   N(   R   R   (   R   RD   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s5   x. |  j  D]# } | j | j  | j |  q
 Wd  S(   N(   R   t   mark_posR!   R   (   R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   R   R   (   R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (
   RR   Rs   R   t   staticmethodR   R   Rv   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s   					t   StatNodec           B@  s   e  Z d    Z d   Z RS(   c         C@  s   d  S(   N(    (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   t  d |  j j   d  S(   Ns.   generate_execution_code not implemented for %s(   R   RQ   RR   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s   	t   CDefExternNodec           B@  s5   e  Z d  g Z d   Z d   Z d   Z d   Z RS(   R   c         C@  s   | j  } d | _  |  j j |  | | _  |  j s= |  j r |  j j } | j d s_ t } n% | sn t } n t d   | D  } | j	 |  j |  j |  n  d  S(   Ni   t   preliminary_late_includes_cy28c         s@  s   |  ] } t  | t  Vq d  S(   N(   RO   t   CVarDefNode(   t   .0R[   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pys	   <genexpr>  s    (
   t   in_cincludeR   R   t   include_filet   verbatim_includeR   R   R2   t   allt   add_include_file(   R   RD   t   old_cinclude_flagR   t   late(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    					c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   |  j  j |  d  S(   N(   R   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R   Rv   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
   				t   CDeclaratorNodec           B@  s   e  Z g  Z d  Z d   Z RS(   t    c         C@  s   d  S(   N(   R$   (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   analyse_templates  s    (   RR   Rs   R   t   calling_conventionR   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s   t   CNameDeclaratorNodec           B@  s)   e  Z d  g Z d Z d d e d  Z RS(   t   defaulti    c         C@  s   | r |  j  d k r | j s0 | j s0 | j rC t |  j d  q | j r_ t |  j d  q | j d d d d d |  _  t } n  | j	 r | j
 r | j | j
  } n  | |  _ |  | f S(   NR   s   Missing argument namesJ   Use spam() rather than spam(void) to declare a function with no arguments.t   for_displayi   t   pyrex(   R;   t   is_ptrt   is_arrayt	   is_bufferR   R!   t   is_voidt   declaration_codeR	   t   is_fusedt   fused_to_specifict
   specializeR,   (   R   RF   RD   t   nonemptyt
   visibilityt   in_pxd(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   analyse  s    			N(   RR   Rs   R   R$   R   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s   	t   CPtrDeclaratorNodec           B@  s,   e  Z d  g Z d   Z d d e d  Z RS(   t   basec         C@  s   |  j  j   S(   N(   R   R   (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   5  s    i    c      	   C@  sP   | j  r t |  j d  n  t j |  } |  j j | | d | d | d | S(   Ns+   Pointer base type cannot be a Python objectR   R   R   (   R<   R   R!   R   t
   c_ptr_typeR   R   (   R   RF   RD   R   R   R   t   ptr_type(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   8  s    	N(   RR   Rs   R   R   R$   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   0  s   		t   CReferenceDeclaratorNodec           B@  s,   e  Z d  g Z d   Z d d e d  Z RS(   R   c         C@  s   |  j  j   S(   N(   R   R   (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   D  s    i    c      	   C@  sP   | j  r t |  j d  n  t j |  } |  j j | | d | d | d | S(   Ns-   Reference base type cannot be a Python objectR   R   R   (   R<   R   R!   R   t
   c_ref_typeR   R   (   R   RF   RD   R   R   R   t   ref_type(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   G  s    	N(   RR   Rs   R   R   R$   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  ?  s   		t   CArrayDeclaratorNodec           B@  s&   e  Z d  d g Z d d e d  Z RS(   R   t	   dimensioni    c      	   C@  s  | j  r | j   s | j r d d l m } t |  j |  rO |  j j } n |  j f } g  | D] } | j |  ^ qb }	 d  |	 k r |	 j
 d   }
 t | |
 j d  t } n | j |  j |	  } |  j j | | d | d | d | S|  j rw|  j j |  |  _ |  j j j s2t |  j j d  n  |  j j   } | d  k	 r}y t |  } Wqtt k
 rpqtXq}n d  } | j   st |  j d |  n  | j rt |  j d	  n  | j rt |  j d
  n  t j | |  } |  j j | | d | d | d | S(   Ni   (   t	   TupleNodes   Template parameter not a typeR   R   R   s   Array dimension not integers%   Array element type '%s' is incompletes'   Array element cannot be a Python objects"   Array element cannot be a function(   t   is_cpp_classt   is_template_typet   is_cfunctiont	   ExprNodesR  RO   R  RY   R8   R$   t   indexR   R!   R   t   specialize_hereR   R   t   analyse_const_expressionR,   t   is_intt   get_constant_c_result_codeR.   t
   ValueErrort   is_completeR<   R   t   c_array_type(   R   RF   RD   R   R   R   R  RY   t   vt   valuest   ixt   sizet
   array_type(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   T  s>    "	%	
		N(   RR   Rs   R   R$   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  N  s   t   CFuncDeclaratorNodec           B@  sY   e  Z d  d d g Z d Z d Z d Z d Z d   Z d d d e	 d  Z
 d d  Z RS(   R   RY   t   exception_valuei    c         C@  s   t  |  j t  r d d l m } m } |  j j } t  | |  rO | j } n/ t  | |  rj | g } n t | j	 d  d  Sg  |  _ xL | D]D } t  | |  r |  j j t j | j   q t | j	 d  q W|  j j |  _ |  j Sd  Sd  S(   Ni   (   R  t   NameNodes*   Template arguments must be a list of names(   RO   R   R  R  R  R  R  RY   R   R!   R$   t	   templatest   appendR   t   TemplatePlaceholderTypeR;   (   R   R  R  t   template_nodet   template_nodest   template(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s"    	c         @  s  | d  k r i  } n  | r( | d 8} n  g  } xt  j  D]\ } }	 |	 j   d | d | d k o}   j o} d   j k \ }
 } |
 j } | | k r$| | } | j    } | d  k r t | j	 d  q$| t
 j k	 r| j |  rt  j j	 d  t | j	 d  q$| } n  |
 j r@t  j	 d	  n  | d k rj  j rj| j rj  j } n  | j rt
 j | j  } n  | j rt |	 j	 d
  n  | j t
 j | | |	 j	   |	 j r j d 7_ q>  j r> t  j	 d  q> q> Wd  } d }  j d k rP  j d    j d    j d    j d  n  | j r j sk j r j d k rt  j	 d  n j d  k r j r j d k r| j d  k	 r| d k r| r  j sd d l m } |  j	 d | j d |  _ qqn   j rQ j j     _  j d k r j j  } | j! r| j r| j" o| j# j o| j r| t
 j$ k o j j% d k rt  j j	 d  n   j } qQ j j& |    j     _  j j'   } | d  k r#t( d  j j) j*   n  | j+  j j   sQt  j j	 d  qQn   j } | j" rvt  j	 d  n  t
 j, | |  j- d  j d | d | d  j j. d  j/ d   j0 d!  j1 d"  j2 d#  j3 	}  j r| j4 r   f d$   } | | _5 q j6 |    n    j d% } | rv| j. } | rj| | k rjt  j	 d& | | f  n  | | _. n   j j |   d' | d( | S()   Ni   R   t   is_self_argi    R   s
   Not a types2   Signature does not agree with previous declarations   Previous declaration heres2   Function argument cannot have C name specificationsJ   Use spam() rather than spam(void) to declare a function with no arguments.s-   Non-default argument follows default argumentt   +t   iost   newt	   stdexceptt   typeinfosA   Exception clause not allowed for function returning Python objectt   extern(   t	   ConstNodeR6   R,   t   *sS   Exception value must be a Python exception or cdef function with no arguments or *.s1   get_constant_c_result_code not implemented for %ss6   Exception value incompatible with function return types!   Function cannot return a functiont   optional_arg_countR  t   exception_checkR   t   nogilt   with_gilt   is_overridablet   is_const_methodR  c         @  s    j  |    |  d  S(   N(   t   declare_optional_arg_struct(   t	   func_typet   fused_cname(   RD   R   (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   declare_opt_arg_struct
  s    t   callspecs2   cannot have both '%s' and '%s' calling conventionsR   R   (7   R$   t	   enumerateRY   R   t   is_c_class_scopeR   R;   R8   R   R!   R   R	   t   same_asR   t   cnamet   is_unspecifiedt   parent_typeR   R   RF   R   R  t   CFuncTypeArgR   R+  R,  R   R<   R  R  R)  R  R,   t   is_errorR
  t   return_typet   c_char_typeR6   t	   coerce_toR  R   RQ   RR   t   assignable_fromt	   CFuncTypet   has_varargsR   R-  R.  t   overridableR0  R  R   R4  R1  (   R   R>  RD   R   t   directive_localsR   R   t   func_type_argst   it   arg_nodet   name_declaratorR,   R;   t	   type_nodet
   other_typet   exc_valt	   exc_checkR)  t   exc_val_typeR2  R4  R5  R   (    (   RD   R   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	-	
							'"	'	

	
								c   	      C@  s  t    } d t j } | j | t j |  j  xM | j t | j  |  j	 D]. } | j | j
 | j | j d t d t qM W| j t j |  j j
  } | d k	 r t j | |  } n  | j   j d | d d d | d d	 d
 |  j d |  } d | _ d | _ t j | j  | _ d S(   s  
        Declares the optional argument struct (the struct used to hold the
        values for optional arguments). For fused cdef functions, this is
        deferred as analyse_declarations is called only once (on the fused
        cdef function).
        s   %snt   allow_pyobjectt   allow_memoryviewR;   t   kindt   structt   scopet   typedef_flagi    R!   R9  i   N(   R   R   t   pyrex_prefixt   declare_varR   R?   R!   RY   RN   R+  R;   R,   R7   t   manglet   opt_arg_prefixR   R$   t   get_fused_cnameR   t   declare_struct_or_uniont   defined_in_pxdt   usedR   t   op_arg_struct(	   R   R2  RD   R3  RS  t   arg_count_membert   argt   struct_cnamet   op_args_struct(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR1    s$    	$,				N(   RR   Rs   R   RD  R+  R0  R$   R  R   R2   R   R1  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  z  s   	xt   CConstDeclaratorNodec           B@  s#   e  Z d  g Z d d e d  Z RS(   R   i    c      	   C@  sP   | j  r t |  j d  n  t j |  } |  j j | | d | d | d | S(   Ns)   Const base type cannot be a Python objectR   R   R   (   R<   R   R!   R   t   c_const_typeR   R   (   R   RF   RD   R   R   R   t   const(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   @  s
    		
N(   RR   Rs   R   R$   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRb  ;  s   	t   CArgDeclNodec           B@  s   e  Z d  d d d g Z 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 e d  Z d   Z d   Z d	   Z d e d
  Z RS(   RF   t
   declaratorR   RC   i    i   c   
      C@  s  | r t  |  j _ |  _ n  |  j d  k rt |  j t  r |  j j d k r | r |  j j	 r |  j j
 | d t  } | j   } n |  j j } t |  |  j _ d  |  j _ t |  j _	 n  t  } n t } t  |  j _ |  j j
 | d | } t |  j d  r'|  j j r'|  j j |  j _ n  | j rt |  j t  rt |  j t  r|  j } x t | j t  r~| j } q`W|  j j | _ | j } n  |  j r| r| j d r|  j j d  k r|  j |  }	 |	 d  k	 r|	 } qn  |  j j
 | | d | S|  j |  j f Sd  S(   NR   t   could_be_namet   arg_namet   annotation_typingR   (   R7   RF   R"  R,   R$   RO   Rf  R   R;   t   is_basic_c_typeR   t   empty_declaration_codeR   R2   R1   t   hasattrRh  R   t   TemplatedTypeNodeR  R   t   array_declaratorRC   R   t   inject_type_from_annotationsRI  (
   R   RD   R   R"  R,   Rh  Rg  RF   Rf  RJ   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   g  s@    $			.c         C@  sM   |  j  } | s d  St | | d |  j \ } } | d  k	 rI | |  _ n  | S(   NRE   (   RC   R$   RL   R   RF   (   R   RD   RC   RF   RJ   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRo    s    	c         C@  so   |  j  d  k rh |  j rh |  j j rM |  j j |  |  j j |  j j    S| j |  j  |  _  qh n  |  j  S(   N(	   t   default_valueR$   R   R   t   generate_evaluation_codeR,   t	   cast_codeR   t   get_argument_default_const(   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   calculate_default_value_code  s    	c         C@  s    |  j  r |  j  j |  n  d  S(   N(   R   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	c         C@  s   |  j  } | d  k s | j r" d  S| d  k r@ |  j |  } n  | j |  | j |  | rl | j   n | j |  j  } | j	 d | | f  |  j j
 r | j | j    n  | j |  | j |  d  S(   Ns   %s = %s;(   R   R$   R   Rt  Rq  t   make_owned_referenceR   t	   result_asR,   RV   R<   t   put_givereft   generate_post_assignment_codet
   free_temps(   R   R\   t   targett   overloaded_assignmentR   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   generate_assignment_code  s    	$N(   RR   Rs   R   R   R"  t   is_type_argt
   is_generict   kw_onlyt   not_nonet   or_noneR$   R,   RI  Rp  RC   t
   is_dynamicR2   R   Ro  Rt  R   R|  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRe  H  s$   .			
	t   CBaseTypeNodec           B@  s   e  Z d    Z RS(   c         C@  s   |  j  |  S(   N(   R   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR8     s    (   RR   Rs   R8   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   RB   c           B@  s   e  Z g  Z e d   Z RS(   c         C@  s   |  j  S(   N(   R,   (   R   RD   Rg  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRB     s   t   CSimpleBaseTypeNodec           B@  s2   e  Z g  Z d Z g  Z e Z e Z e d   Z	 RS(   c         C@  s  d  } |  j rI t j |  j |  j |  j  } | s%t |  j d  q%n|  j d k rk |  j	 rk t
 } n|  j d  k r |  j r | j r | j } q%t
 } n|  j	 r=| } xK |  j	 D]@ } | j |  } | d  k	 r | j r | j j } q d  } Pq W| d  k rC| j |  j	 |  j  } | r:| j | _ q:qCn | } | r%| j ra| j   } n  | j |  j  } | d  k	 rq%| r|  j r| j r| j } n t
 } t |  j  |  _ q%|  j r|  j |  j k rt |  j d |  j  n  t j |  j  } q%t |  j d |  j  n  |  j rs| j sA| j rTt |  j d  n  t j |  } | j |  n1 | t j  k rt j! } | j |  t" |  _ n  | r| St j# Sd  S(   Ns&   Unrecognised type modifier combinationt   objects   '%s' is not a type identifiers#   can only complexify c numeric types($   R$   Rj  R   t   simple_c_typet   signedt   longnessR;   R   R!   t   module_pathR	   R"  R7  R;  t   lookupR  R,   RS  t   find_imported_moduleR   R   t   lookup_typeR   Rh  R  R  t   complext
   is_numerict
   is_complext   CComplexTypet   create_declaration_utility_codeR   t   complex_typet   c_double_complex_typeR7   R   (   R   RD   Rg  R,   RS  R   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sh    								N(
   RR   Rs   R   R$   Rh  R  R2   Rj  R  R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   
t   MemoryViewSliceTypeNodec           B@  s/   e  Z d  Z d d g Z e d  Z d   Z RS(   t
   memoryviewt   base_type_nodet   axesc         C@  s   |  j  j |  } | j r | Sd d l m } y | j | |  j  } Wn9 t k
 r } t | j	 | j
  t j   |  _ |  j SX| j |  j |  s t |  _ n5 t j | |  |  _ |  j j |  j  |  j |  |  j S(   Ni   (   t
   MemoryView(   R  R   R=  R   R  t   get_axes_specsR  R   R   t   positiont   message_onlyR   t	   ErrorTypeR,   t   validate_axesR!   R   t   MemoryViewSliceTypet   validate_memslice_dtypet   use_memview_utilities(   R   RD   Rg  RF   R  t
   axes_specst   e(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   4  s     	 c         C@  s$   d d l  m } | j | j  d  S(   Ni   (   R  (   R   R  t   use_utility_codet   view_utility_code(   R   RD   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  K  s    (   RR   Rs   R;   R   R2   R   R  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  /  s   t   CNestedBaseTypeNodec           B@  s   e  Z d  g Z d d  Z RS(   RF   c         C@  s   |  j  j |  } | t j k r( t j S| j sL t |  j d |  t j S| j j |  j	  } | sr | j
 r t |  j d | |  j	 f  t j S| j S(   Ns   '%s' is not a valid type scopes    '%s.%s' is not a type identifier(   RF   R   R   R   R  R   R!   RS  t   lookup_hereR;   t   is_typeR,   (   R   RD   Rg  RF   t
   type_entry(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   X  s    	N(   RR   Rs   R   R$   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  P  s   	Rm  c           B@  s5   e  Z d  d d d g Z d Z d Z e d d  Z RS(   R  t   positional_argst   keyword_argst
   dtype_nodec         C@  s  | d  k r! |  j j |  } n  | j r. | S| j r | j   r |  j rw |  j j rw t |  j	 d  t
 j |  _ qg  } xR |  j D]G } | j |  } | d  k r t | j	 d  t } n  | j |  q W| j |  j	 |  |  _ n| j rd d l m } | j |  j	 | |  j |  j | j  } t j d d k  r}t g  | j   D]! \ }	 }
 |	 j d  |
 f ^ qP } n  t
 j | |  |  _ t |  rt |  j  rt
 j t |  j  |  j  |  _ qn t  |  j	 d d	 d
 d  } t! |  j  d k s|  j j r/t |  j	 d  t
 j |  _ nY |  j sAd  } n |  j d } t" |  j	 d | d | |  _# |  j# j | |  d |  _ |  j j$ r| j% r|  j j& | j%  |  _ n  |  j S(   Ns+   c++ templates cannot take keyword argumentss!   unknown type in template argumenti   (   t   Bufferi    i   R   R;   R   R9  s   invalid array declarationR   R  ('   R$   R  R   R=  R  R	  R  R4   R   R!   R   R   R,   R  R8   R  R  R<   R   R  t   analyse_buffer_optionst   buffer_defaultsR   t   version_infoRj   Rk   R&   t
   BufferTypeR   R   t   PythranExprR   R   RN   R  Rn  R   R   R   (   R   RD   Rg  RF   t   template_typesR  R,   R  t   optionsR;   R6   t   empty_declaratorR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   v  sZ    	 		7'!			N(   RR   Rs   R   R$   R  R;   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRm  f  s
   	t   CComplexBaseTypeNodec           B@  s    e  Z d  d g Z e d  Z RS(   RF   Rf  c         C@  s4   |  j  j | |  } |  j j | |  \ } } | S(   N(   RF   R   Rf  (   R   RD   Rg  R   t   _R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   t   CTupleBaseTypeNodec           B@  s   e  Z d  g Z e d  Z RS(   t
   componentsc         C@  sx   g  } xJ |  j  D]? } | j |  } | j rB t | j d  t S| j |  q W| j |  j |  } t | _	 | j
 S(   Ns/   Tuple types can't (yet) contain Python objects.(   R  R   R<   R   R!   R   R  t   declare_tuple_typeR7   R\  R,   (   R   RD   Rg  t   component_typesR   R,   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    		(   RR   Rs   R   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   	t   FusedTypeNodec           B@  s)   e  Z d  Z g  Z d   Z e d  Z RS(   s  
    Represents a fused type in a ctypedef statement:

        ctypedef cython.fused_type(int, long, long long) integral

    name            str                     name of this fused type
    types           [CSimpleBaseTypeNode]   is the list of types to be fused
    c         C@  s7   |  j  |  } | j |  j | |  j  } t | _ d  S(   N(   R   t   declare_typedefR;   R!   R7   R   (   R   RD   R,   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   g  } xh |  j  D]] } | j |  } | sA t | j d  q n  | | k r` t | j d  q | j |  q Wt j | d |  j S(   Ns
   Not a types   Type specified multiple timesR;   (   Rh   R8   R   R!   R  R   t	   FusedTypeR;   (   R   RD   Rg  Rh   RJ  R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R}   R   R   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   	t   CConstTypeNodec           B@  s   e  Z d  g Z e d  Z RS(   RF   c         C@  s>   |  j  j | |  } | j r1 t |  j d  n  t j |  S(   Ns)   Const base type cannot be a Python object(   RF   R   R<   R   R!   R   Rc  (   R   RD   Rg  R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    		
(   RR   Rs   R   R2   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   	R   c           B@  s,   e  Z d  d g Z d Z d Z d d  Z RS(   RF   t   declaratorsc         C@  sq  |  j  d  k r i  |  _  n  | s* | } n  | |  _ |  j rR |  j d j   } n d  } | d  k	 r |  j d k r t |  j d  n  t |  j  d k r t |  j d j d  n  t	 d |  } | j
 j | _ x* | D] } | j | j | |  j  q Wn  |  j j |  } | j rK|  j rK| j s7| j rKt |  j d  t Sd  |  _ |  j } x|  j D]} t |  j  d k rt | t  r| j d rt | j d	 d  n  |  j o|  j d k o| j } | rt | _ n  t | t  r*| j | | d
 |  j  d | d |  j \ }	 }
 n' | j | | d | d |  j \ }	 }
 |
 j   s|  j d k ru|
 j p{|
 j st | j d |
  qn  |  j d k r|
 j rt | j d  n  |	 j } |	 j  } | d k rt | j d  d  S|
 j! r |  j d k r t | j d  n  |
 j" rd | j k rDt# |
 _$ n  | j% | |
 | j d | d |  j d |  j d |  j& d |  j' d |  j |  _ |  j d  k	 rt( j( |  j   |  j _  n  | ri|  j j) j* |  t# |  j _+ qiqg|  j  rt |  j d  n  | j, | |
 | j d | d | d |  j d |  j& d d |  _ t- j. rgt/ |  j |  j0  |  j _0 qgqgWd  S(   Ni    R(  s   Only extern functions allowedi   s%   Can't multiply declare template typest   func_templates   Fused types not allowed heres   warn.multiple_declaratorss   Non-trivial type declarators in shared declaration (e.g. mix of pointers and values). Each pointer declaration should be on its own line.RE  R   R   s    Variable type '%s' is incompletes'   Python object cannot be declared externR   s   Missing name in declaration.s8   C++ references cannot be declared; use a pointer insteadR   R9  t   apit	   modifiersRD  s,   Decorators can only be followed by functionst   is_cdef(1   RE  R$   t
   dest_scopeR  R   R   R   R!   RN   R   t   outer_scopeR   t   declare_typeR;   RF   R   R   R   R7  t   is_module_scopeR   R   RO   R   R   RD  R2   R  R  R   t   is_memoryviewsliceR<   R9  t   is_referenceR
  R7   t   is_static_methodt   declare_cfunctionR  R  R   R,   t   create_to_py_utility_codet   create_wrapperRV  R   t
   docstringsR+   R*   (   R   RD   R  R  t   template_paramRF   R   Rf  t   create_extern_wrapperRI  R,   R;   R9  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    			 			
		-!!			!		N(   RR   Rs   R   R$   t
   decoratorsRE  R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   	  s   t   CStructOrUnionDefNodec           B@  s8   e  Z d  g Z d d  Z d   Z d   Z d   Z RS(   t
   attributesc         C@  sO   | j  |  j |  j | |  j |  j |  j d |  j d |  j d |  j |  _	 d  S(   NR   R  t   packed(
   RZ  R;   RQ  RT  R!   R9  R   R  R  R   (   R   RD   RS  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   declare  s    c         C@  s   d  } |  j d  k	 r' t |  j  } n  |  j | |  |  j d  k	 r |  j rh | j rh d |  j _ n  x! |  j D] } | j	 | |  qr W|  j
 d k r x[ | j D]M } | j } x | j r | j } q W| |  j j k r t | j d  q q Wq n  d  S(   Ni   R(  s)   Struct cannot contain itself as a member.(   R$   R  R   R;   R  R   R   R   R[  R   R   t   var_entriesR,   R   RF   R   R!   (   R   RD   RS  R   R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s     	c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    N(   RR   Rs   R   R$   R  R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  s  s
   			t   CppClassNodec           B@  sD   e  Z d Z d    Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C@  s   |  j  d  k r d  } n g  |  j  D] \ } } t j | |  ^ q" } t d   |  j  D  } | r t d   |  j  |  D  r t |  j d  n  | j |  j	 d  |  j |  j
 d g  d |  j d | |  _ d  S(   Nc         s@  s   |  ] \ } } | Vq d  S(   N(    (   R   R  t   required(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pys	   <genexpr>  s    c         s@  s   |  ] \ } } | Vq d  S(   N(    (   R   R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pys	   <genexpr>  s    sG   Required template parameters must precede optional template parameters.t   base_classesR   R  (   R  R$   R   R  t   sumR   R   R!   t   declare_cpp_classR;   R9  R   R   (   R   RD   R  t   template_nameR  t   num_optional_templates(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    	,%c      
   @  sY   j  d  k r d  } } nQ g   j  D] \ } } | ^ q& } g   j  D] \ } } t j | |  ^ qH } d  }  j d  k	 r t  j | d | } n   f d   } t | g   j D] }	 |	 j	 | p |  ^ q  }
 | j
  j |  j  j |
 d  j d |  _  j d  k r)d  Sd  j _ | d  k	 rS j j | _ n  g  }   f d      j d  k	 r4 j r| j rd  j _ n  xF  j D]; } t | d d   } | r| j |  n  | j |  qWxO    j  D]; } | j |   j  d  k	 rd d j |  | _ qqWn  t  j d	 |  _ |  _ d  S(
   NR  c         @  s.   |  j  s |  j r t St   j d |   d  S(   Ns&   Base class '%s' not a struct or class.(   R  t	   is_structR7   R   R!   (   t
   base_class(   R   (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   base_ok  s    R   i   c         3@  s`   xY |  D]Q } t  | t  r$ | Vq t  | t  r x"   | j j  D] } | VqF Wq q Wd  S(   N(   RO   t   CFuncDefNodeR   R   R   (   R  R   t   sub_attr(   t   func_attributes(    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    R  s   template <typename %s>s   , typename R   (   R  R$   R   R  R  R   R;   t   filterR  R   R  R!   R9  R   R   R  R,   R   R   R[  R   R  R   R  R   t   template_declarationR   R   RS  (   R   RD   R  t   template_namesR  R  R  RS  R  t   bt   base_class_typest   defined_funcsR   R  Rb   (    (   R  R   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sD    ",4! c         C@  s"   |  j  j |  j j j  |  _  |  S(   N(   R   Rv   R   R,   RS  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s    |  j  j |  j j j |  d  S(   N(   R   R   R   R,   RS  (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   |  j  j |  d  S(   N(   R   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   |  j  j |  d  S(   N(   R   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    N(
   RR   Rs   R$   R  R  R   Rv   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   		/			t   CEnumDefNodec           B@  s5   e  Z d  g Z d   Z d   Z d   Z d   Z RS(   Rk   c         C@  sL   | j  |  j |  j d |  j d |  j d |  j d |  j d |  j |  _ d  S(   NR9  RT  R   R  R  (	   t   declare_enumR;   R!   R9  RT  R   R  R  R   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s
    c         C@  s_   |  j  d  k	 r[ |  j r1 | j r1 d |  j _ n  x' |  j  D] } | j | |  j  q; Wn  d  S(   Ni   (   Rk   R$   R   R   R   R[  R   (   R   RD   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   |  j  d k s |  j r | j |  j  | j j t j d t } x |  j	 j
 D] } | j d | | j | j | | j  f  | j |  | j d t j | j | | j | j  f  | j | t j  qP W| j j |  n  d  S(   Nt   publict
   manage_refs   %s = PyInt_FromLong(%s); %ss.   if (PyDict_SetItemString(%s, "%s", %s) < 0) %s(   R   R  R   R!   t	   funcstatet   allocate_tempR   R	   R7   R   t   enum_valuesRV   R9  t   error_goto_if_nullt
   put_gotrefR   t   moddict_cnameR;   t
   error_gotot   put_decref_cleart   release_temp(   R   R\   t   tempR   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s     		(   RR   Rs   R   R  R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s
   				t   CEnumDefItemNodec           B@  s   e  Z d  g Z d   Z RS(   R6   c         C@  s   |  j  rc |  j  j |  |  _  |  j  j j sc |  j  j t j |  |  _  |  j  j |  |  _  qc n  | j |  j | j |  j  |  j	 d |  j
 d | j d | j d | j o | j d  k } | j j |  | j r | j j j | j  n  d  S(   NR9  R   R  R  (   R6   R  R,   R  R@  R   R?   t   declare_constR;   R!   R9  R   R  R  R$   R  R  R  (   R   RD   t
   enum_entryR   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   0  s    		(   RR   Rs   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  )  s   	t   CTypeDefNodec           B@  s/   e  Z d  d g Z d   Z d   Z d   Z RS(   RF   Rf  c      
   C@  s   |  j  j |  } |  j j | | d |  j d |  j \ } } | j } | j } | j | | |  j d | d |  j d |  j	 } | j
 r t | _ n  |  j r | j r d | _ n  d  S(   NR   R   R9  R  i   (   RF   R   Rf  R   R   R;   R9  R  R!   R  R   R7   R   R[  (   R   RD   R   RI  R,   R;   R9  R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   I  s    	$			c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   Z  s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   ]  s    (   RR   Rs   R   R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  @  s   		t   FuncDefNodec           B@  s  e  Z e Z e Z e Z e Z e Z e Z	 e Z
 g  Z e Z e Z e Z e Z e Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# RS(   c         C@  s   d } x |  j  D] } | j r} d } | j ra | j j |  | _ | j j | j |  | _ q t | j d  d  | _ q | j	 r d } q | r t | j d  q q Wd  S(   Ni    i   s)   This argument cannot have a default values/   Non-default argument following default argument(
   RY   R   R~  Ru   R@  R,   R   R!   R$   R  (   R   RD   t   default_seenR_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   analyse_default_values  s    				c         C@  sI   | d  k r d  S| j d s3 | j |  d  k rE | j |  } n  | S(   NRi  (   R$   R   R8   Ru   (   R   RD   RC   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   analyse_annotation  s
    #c         C@  s<   x5 |  j  D]* } | j r
 |  j | | j  | _ q
 q
 Wd  S(   N(   RY   RC   R  (   R   RD   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   analyse_annotations  s    	c         C@  s  |  j  } | j } | j | k r@ | | j } | j |  } nT t | t  r | j r | j d r | j } | j |  } | d  k r | Sn | S| d  k r t
 | j d  nK | t k	 r | j |  r t
 | j j d  t
 | j d  n	 | | _ | S(   NRi  s
   Not a types2   Signature does not agree with previous declarations   Previous declaration here(   RE  R,   R;   R8   RO   Re  RC   R   Ro  R$   R   R!   R	   R8  RF   (   R   RD   R_  RE  t	   orig_typeRJ  RK  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   align_argument_type  s$    		%		c         C@  s   d S(   Ni    (    (   R   t   lenv(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   need_gil_acquisition  s    c      	   C@  s   | } x | j  s | j r' | j } q	 W|  j ra t d |  j j d | d | d |  j j  } n! t d |  j j d | d |  } |  j	 | _	 |  j j
 } | j r | j o | j | _ n  | |  _ | j | _ | S(   NR;   R  t   parent_scopet
   scope_name(   t   is_py_class_scopeR7  R  t   needs_closureR   R   R;   R9  R   R>  R,   R
  R-  R.  t   local_scopeR   (   R   RD   t   genvR  R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   create_local_scope  s$    				c         C@  s   |  j  j |  d  S(   N(   R   R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   generate_function_body  s    c   '      C@  sf  d d l  m } |  j j r/ d d l  m } n  |  j } | j rd | j rd d t j	 t j
 f } n	 t j
 } | j |  |  j j | |  |  j | |  |  j j d k o |  j j j } |  j j d k o |  j j j } | p | }	 |	 rd |  j k r|  j d g |  _ qn  |  j   }
 | j j d } | j j d	 } | sQ| rp| j j t j d
 d   n  | j |  | j   | _ | j | j _ | j  |  j!  |  j" | |  | j# d  |
 r| j# |
  n  |  j$ | |  p|  j% } |  j& r"|  j& j' | d | d t( n  |  j' | d | | } x | j) sP| j r\| j* } q>W|  j+ r| j, | j- j. j/ t j	   | j# d  np |  j0 r| j r| j, | j- j. j/ t j	   | j# d  n  | j, | j- j. j/ t j
   | j# d  n  |  j1 | |  x3 | j2 D]( } | j3 p4| j4 s| j5 |  qqWd } |  j j6 s|  j j7 rrd } n |  j j rd | j8 } n  | j# d |  j j/ t j9  | f  n  | j:   } |  j; |  |  j< } |  j+ p|  j0 } x' | j= D] } | j. j7 rt( } PqqWg  | j> D] } | j? r| ^ q} | j oU| j@ oU| pU| } | j on| j@ on| } | j p| j@ } | s| r| jA   t( | j _ n | j r| j@ r| jB   n  | s| r|  jC s| jD   |  jE r|  jE jF |  n d  } | jH |  qn  | r1|  jI |  n  | r]| jJ   | jK |  j j d | n  | rs|  jL |  n  |  j+ rtM jN d d  } tM jO | j- j. j |  } | sd | j- j. jP } n  | j# d t j	 | j- j. jQ   | | j- j. jP t jR f  | j# d t j	  | j# d t j	 | j- j. jS d  f  | jT d tU  | j# | jV |  j!   | j# d  | jW t j	  | j# d  n  |  j0 rR|  jX r| j# d | | j- j. jQ   t jY f  n) | j# d | | j- j. jQ   t jY f  | j r | j# d t j	 | f  qR|  j+ rR| jT | | j- j.  | jZ |  qRn  | s^| r|  jC s|  j[ r|  j j d } n |  j j } | j\ | |  j! d  | j j n  t( | j _] n  |  j^ | |  t_ |  t`  } x | j= D] } | j. j7 r4| sta | jb  d k rz| j3 rz| jc |  qzq| r| j. j rta | jb  d k r| jd | je d! | j j qqWxb | j2 D]W } | j4 rta | jb  d k r| j3 r| jf r| jg |  q| jc |  qqWxF | j2 | j= D]4 } | j. jh r| ji jj j? r| jk | |  qqW|  jl |  x6 | j= D]+ } | j. jh rC	| jm | | |  j!  qC	qC	W| r	| jn   to | j _ n  |  jp | |  | j  |  j! d" to | j# d  | j# d#  |  j jq s]
|  j j7 r
t j9 } | jr | |  j  q]
|  j js } | r7
| j# d t j9 | f  q]
|  j j6 s]
| j# d$ t j9  q]
n  | jt | ju k r,|  j jq s
| jv | jw  n  | jx | jt  x7 | j jy   D]& \ }  }! | jz |  |! d! | j q
Wta |  d% k }" |" re| j j t{  | j# d&  | j# d'  | j# d(  | j# d)  x | D] } | j| | |  q;W| j# d*  n  |  j j r| j} t j9 |  t j9 }# n |  j~   }# |  j   }$ |# d  k	 s|$ r*| j r| j@ r| j# d+  | jA   n  | j |  j j  | j rc| j@ rc| jn   | j# d  qcn9 t |  j j! d, |  j j d%  | j |  j j | j  |  j js }% |# d  k r|% r|% }# n  |# d  k	 r|# t j9 k r| j# d t j9 |# f  qn# |  j j6 s| j# d$ t j9  n  | r|  j |  n  |" s| s|  j j r,| jv | j  q,n  | jx | jw  x | D] } | j| | |  qCW| rs|  j |  n  |  j j r| j |  j j t j9   }& | j# d- |&  | j r| jA   n  | j# d.  | j r| jn   n  | j# d  n  | jx | j  x | j2 D] } | j? s| j3 r0qn  | j. j rY| j | je d! | j q| j. j7 r| j4 sta | jb  d k r| jf r| j |  q| j |  qqqWx | j= D] } | j. j7 r| sta | jb  d k rM| j3 rM| j |  qMq| j. j r| s0ta | jb  d k r| j | je d! | j qqW|  j+ rv| j t j	 | j- j.  n  | j s|  j js }% |  j~   }# |# d  k r|% r|% }# n  |  j j7 r| j |  j j t j9   qn  |  j j r|  j j d/ k r| j# d0 t j9 t j9 f  n  | s*| rto | j _] |  jC s|  j j7 rk| j t j9 d  | j j q| j d d  | j j qn  | j s| j   n  | s| j r| j@ r| jn   to | j _ n  |  j j6 s| j# d1 t j9  n  | j# d  |
 r| j# d2 |
  n  | j | j  | j   |  j& rU|  j& j | |  n  |  j |  d  S(3   Ni   (   R  (   R  s   %s->%st   __getbuffer__t   __releasebuffer__t   cython_unusedt   profilet	   linetracet   Profiles	   Profile.cR   t   with_pymethdeft
   proto_onlyt   ;s    = NULLs    = s   %s%s;t   acquire_gilt   tp_newRm   s
   %s->tp_news   %s = (%s)%s(%s, %s, NULL);s   if (unlikely(!%s)) {s   %s = %s;t   Py_Nones   } else {t   }s*   %s = (%s) __Pyx_CyFunction_GetClosure(%s);s   %s = (%s) %s;s
    (wrapper)R-  t   have_gilt   traces   /* function exit code */s!   __Pyx_pretend_to_initialize(&%s);i    s0   { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;t   __Pyx_PyThreadState_declaret   __Pyx_PyThreadState_assigns5   __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);s5   __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}t   {s&   Unraisable exception in function '%s'.s	   if (%s) {sO   PyErr_SetString(PyExc_TypeError, "Memoryview return value is not initialized");t   __hash__s5   if (unlikely(%s == -1) && !PyErr_Occurred()) %s = -2;s
   return %s;s   #endif /*!(%s)*/(   R   R  R>  R  R  R	  t   is_closure_scopet   is_passthroughR   t   cur_scope_cnamet   outer_scope_cnamet   mangle_closure_cnamesR   R   R   R   R;   RS  R7  R  t   get_preprocessor_guardR   R   R  R   t   load_cachedt   enter_cfunc_scopet	   new_labelt   return_from_error_cleanup_labelR-  R  t	   gil_ownedR   R!   R   RV   t   needs_assignment_synthesist   pymethdef_requiredt   py_funct   generate_function_headerR7   R  R  R  t   putt   scope_classR,   R   t   needs_outer_scopet   generate_argument_declarationsR  t
   in_closureR1   t   put_var_declarationR   R<   t   memslice_entry_initt   retval_cnamet   insertion_pointt   generate_keyword_listR  t   arg_entriest   buffer_entriesR\  t   has_with_gil_blockt   put_ensure_gilt   declare_gilstatet   is_generatort   put_trace_declarationst   code_objectt   calculate_result_codeR$   t   put_trace_frame_initt   getbuffer_checkt   put_declare_refcount_contextt   put_setup_refcount_contextt   getbuffer_initR   t   ConstructorSlott   get_slot_functiont   typeptr_cnameRk  t   empty_tupleRr  t
   put_increfR	   R  R  t   is_cyfunctiont
   self_cnameRw  R   t   put_trace_callt	   can_tracet   generate_argument_parsing_codeRO   R  RN   t   cf_assignmentst   put_var_increft   put_incref_memoryviewsliceR9  t   xdecref_cleanupt   put_var_xincrefR   t
   buffer_auxt   buflocal_nd_vart   put_init_varst   generate_argument_type_testst   put_acquire_arg_buffert   put_release_ensured_gilR2   R  R   t   put_init_to_py_noneRp  t   error_labelt   labels_usedt   put_gotot   return_labelt	   put_labelt   all_managed_tempst   put_xdecreft   restore_exception_utility_codet   put_release_buffer_codet   put_init_entryt   error_valuet   caller_will_check_exceptionst   put_add_tracebackt   qualified_nameR   t   put_unraisablet   getbuffer_error_cleanupt   getbuffer_normal_cleanupt   unlikelyt   error_conditiont   put_xdecref_memoryviewslicet   put_var_xdecreft   put_var_decreft
   put_decreft   put_xgivereft   as_pyobjectt
   is_specialt   put_trace_returnt   put_finish_refcount_contextt   put_temp_declarationst   exit_cfunc_scopet   generate_wrapper_functions('   R   RD   R\   R  R  R  R#  t   is_getbuffer_slott   is_releasebuffer_slott   is_buffer_slott   preprocessor_guardR  R  R  t   cenvR   t   initt   tempvardecl_codeR  t   have_object_argsR_  t   used_buffer_entriest   acquire_gil_for_var_decls_onlyt   acquire_gil_for_refnanny_onlyt   use_refnannyR@  t   tp_slott   slot_func_cnamet
   trace_nameR  t   lhst   valR9  R,   t   buffers_presentt   err_valRM  t   default_retvalt   cond(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sF   													%
	
!
											%'#(	
	
	 		
	%			"			

	c         C@  s   | j  j r t | j d  nC | j  j   rb | j  j pD | j  j rb t | j d | j   n  | j | j | j  | j  } | j	 r | j	 | _	 n  | S(   Ns   Invalid use of 'void's    Argument type '%s' is incomplete(
   R,   R   R   R!   R  R   R  t   declare_argR;   RC   (   R   RD   R_  R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   declare_argument  s    )	c      	   C@  s   | j  j   r | j j t j d d   | j  j } d | j j } | j	 d | | | j
 | j | j  j ow | j  j | j | j  f  n t | j d  d  S(   Nt   ArgTypeTests   FunctionArguments.cs   ((PyObject *)%s)s:   if (unlikely(!__Pyx_ArgTypeTest(%s, %s, %d, "%s", %s))) %ssI   Cannot test type of extern C class without type object name specification(   R,   t   typeobj_is_availableR   R  R   R&  RI  R   R9  RV   t   accept_noneR;   t   is_builtin_typet   require_exactR  R!   R   (   R   R_  R\   RI  t   arg_code(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   generate_arg_type_test  s    	c         C@  s   | j  j r d | j j } n | j j } | j d |  | j d t d t | j   | j | j | j	  f  | j d  d  S(   Ns
   %s.memviews,   if (unlikely(((PyObject *)%s) == Py_None)) {sM   PyErr_Format(PyExc_TypeError, "Argument '%%.%ds' must not be None", "%s"); %si   R  (
   R,   R  R   R9  RV   R   RN   R;   R  R!   (   R   R_  R\   R9  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   generate_arg_none_check  s    	c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR{    s    c         C@  sA   | j  |  j  x* |  j D] } | j s | j |  q q Wd  S(   N(   R   R!   RY   R  R|  (   R   R\   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	c         C@  sW   |  j  j d } y | j j j j d j } Wn t t f k
 rL d  } n X| | f S(   Ni   t   obj(	   R	  R9  R,   RF   RS  R   R   t   KeyErrorR$   (   R   t	   py_buffert   obj_type(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   _get_py_buffer_info  s    
c         C@  sW   |  j    \ } } | j } | j d |  | j d  | j d  | j d  d  S(   Ns   if (%s == NULL) {sZ   PyErr_SetString(PyExc_BufferError, "PyObject_GetBuffer: view==NULL argument is obsolete");s
   return -1;R  (   R  R9  RV   (   R   R\   R  R  t   view(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRC    s    	c         C@  sg   |  j    \ } } | j } | rR | j rR | j d | |  | j d |  n | j d |  d  S(   Ns   %s->objs   %s->obj = NULL;(   R  R9  R<   R\  Rw  RV   (   R   R\   R  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRF    s    	c         C@  s   |  j    \ } } | j } | rp | j rp | j d |  | j d |  | j d | |  | j d  n | j d |  d  S(   Ns   if (%s->obj != NULL) {s   %s->objR  s   Py_CLEAR(%s->obj);(   R  R9  R<   RV   R  R  (   R   R\   R  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRl    s    	c         C@  st   |  j    \ } } | j } | rp | j rp | j d |  | j d |  | j d | |  | j d  n  d  S(   Ns   if (%s->obj == Py_None) {s   %s->objR  (   R  R9  R<   RV   R  R  (   R   R\   R  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRm    s    	c         C@  s   |  j  j s d  S|  j  j } t j j |  } | s8 d  S| d k r^ |  j  j j d  r^ d  S| d k r} |  j  j j	 r} d  S| j
   S(   Nt   __long__t   __int__R  R  (   R  R  (   R   Rv  R$   R;   R   t   method_name_to_slott   getRS  R  R7  t   preprocessor_guard_code(   R   R;   t   slot(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR%    s    "($   RR   Rs   R$   R-  R2   R  R1  R,  R>  t   is_generator_bodyt   is_async_defR  t   has_fused_argumentst   star_argt   starstar_argRL  R@  R  R  R   R  R  R  R  R   R  R  R  R{  R   R  RC  RF  Rl  Rm  R%  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  a  sB   								 	
				
								R  c           B@  s  e  Z d  d d d g Z e Z d Z d Z d Z d Z	 d Z
 e Z d Z d   Z e d    Z d   Z d   Z d   Z d	 d	 d
  Z d   Z d   Z d   Z d   Z d d  Z d d d d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" RS(   RF   Rf  R   t   py_func_statc         C@  s
   |  j  j S(   N(   R   R;   (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   unqualified_name	  s    c         C@  s   |  j  r |  j  j Sd  S(   N(   R-  R@  R$   (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR@   	  s    c         C@  s  | j  |  _ |  j d  k r' i  |  _ n  |  j j | j j d i    |  j d  k	 r |  j j |  } | d  k r t	 |  j j
 d  t j } q n |  j j |  } d | j k o | j d  |  _ t |  j t  r|  j j | | d d |  j d  k	 d |  j d |  j \ } } n7 |  j j | | d d |  j d  k	 d |  j \ } } | j sqt	 |  j
 d  n  | |  _ |  j | _ |  j } x t | d	  s| j } qW| |  _ | j |  _ |  j j } |  j d
 k s|  j r| rt	 |  j j
 d  n  | j  d k r7|  j d k r7t! |  j j
 d  n  xt" |  j | j  D]\ } } |  j# | |  | j | _ | j$ | _$ | j% | _% |  j& | j | j
 |  | j j' rt( |  _) n  | j j* rd |  j+ k rt! | j
 d d  n  | j j* s| j j, rM|  j j- r&t	 | j
 d  qNd |  j+ k rNt! | j
 d d  qNqMqMW|  j& | j. |  j
 |  | j$ }	 | j% }
 |  j/ | _/ |  j | _ | j0 |	 | |  j
 d |
 d |  j d |  j d |  j d  k	 d |  j+ d |  j |  _1 |  j2 |  j1 _3 | j. |  _. |  j. j4 r2|  j d k r2t	 |  j
 d  n  |  j. j5 rW|  j. j6 |  j
 d  n  |  j r| j7 r|  j rt8 |  j  d k  s|  j d j j9 rt: |  _ qn  |  j; |  |  j< |  d  S(   Nt   localss
   Not a typeR   R   i   RE  R   s*   Suite attached to non-function declarationRY   R  sB   Function with optional arguments may not be declared public or apiR#  R(  s/   Only extern functions can throw C++ exceptions.t   inlines$   Buffer unpacking not optimized away.i   sU   Buffer may not be acquired without the GIL. Consider using memoryview slices instead.R9  R  t   definingR  RD  s   Function cannot return an arrays   used as a return valuei    (=   R7  t   is_c_class_methodRE  R$   R   R   R  t   directive_returnsR8   R   R!   R   R   RF   R   R  R  RO   Rf  R  R   R   R
  R,   RD  R/  Rl  R   t   cfunc_declaratorRY   R+  R  R,  R   t   zipR  R;   R9  t   _validate_type_visibilityR   R7   R  R   R  t   is_pythran_exprR-  R>  R0  R  R   t   inline_in_pxdt   inline_func_in_pxdR   R  t   check_nullary_constructorR  RN   R<   R2   t   declare_cpdef_wrapperR  (   R   RD   RF   RI  R,   Rf  t   opt_arg_countt
   formal_argt   type_argR;   R9  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   %	  s    "		.				

"	
		)c         C@  s  |  j  r|  j r% t |  j d  n  |  j j } |  j d | j  } |  j r d d l m	 } t
 |  j d | |  j d d g } | d j j |  n g  } t d	 |  j d |  j j d
 |  j d d  d d  d |  j d | d | d d  	|  _ | j |  j _ |  j j |  t |  j j _ t |  j d |  j g |  _ t j |  j _ |  j j |  j _ t |  j _ |  j j _ |  j | j | <|  j j r| j st j rt  |  j d |  j |  _! t |  j d |  j! |  j" g |  _" qn  d  S(   Ns&   static cpdef methods not yet supportedR  i   (   R  t	   decoratorR;   R   i    R!   RY   R  R  R*   R   R  R   R   R-  (#   RD  R  R   R!   R   R;   t   call_self_nodeR  R  R  t   DecoratorNodeR  Ru   t   DefNodeRY   R$   R*   R-  R   R7   R/  R   R  R   R	   R,   t   as_variableR\  R   t   is_final_cmethodR   t   lookup_module_cpdeft   OverrideCheckNodet   overrideR   (   R   RD   R;   t   py_func_bodyR  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  	  s>    			'		c         C@  sw   |  j  d k p |  j } t | d d  } | rs | rs | j rs | j  d k p] | j p] | j ss t | d  qs n  d S(   so   
        Ensure that types used in cdef functions are public or api, or
        defined in a C header.
        R  R   R(  s:   Function declared public or api may not have private typesN(   R  R(  (   R   R  R   R$   R  R   R   (   R   R,   R!   RD   t   public_or_apiR   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  	  s    i    c         C@  s  d d l  m } |  j j } | r? | t |  |  j j  } n  g  | D] } | j ^ qF } | r | j |  j d |  j	 j } | } t
 j }	 n |  j j r |  j	 j j j	 }
 | j |  j d |
 j } |
 | _	 | j |  j d | d |  j	 j } t }	 n^ |  j j d j j	 } | j |  j d | j } | | _	 | j |  j d | d |  j	 j } | pkt
 j }	 | j |  j d | d g  | D] } | j |  j d | ^ qd	 |	 } t d
 |  j d t j d |  S(   Ni   (   R  R;   R  t	   attributei    t   functionRY   t   wrapper_callR!   R>  R6   (   R   R  R,   RY   RN   R+  R;   R  R!   R   R   R  R  RS  R;  t   AttributeNodeR7   t   SimpleCallNodet   ReturnStatNodeR   R	   (   R   t   omit_optional_argsR  R  RY   R_  t	   arg_namest   cfunct   call_arg_namest   skip_dispatcht   class_entryt
   class_nodeR  R  t   nt   c_call(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  	  s4    	$		$	+	c         C@  sG   x@ |  j  j D]2 } | j s/ t | j d  n  |  j | |  q Wd  S(   Ns   Missing argument name(   R,   RY   R;   R   R!   R  (   R   RD   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   declare_arguments	  s    	c         C@  s
   |  j  j S(   N(   R,   R.  (   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  	  s    c         C@  s   |  j  } | j } | j r | r | j j rA t |  j d  n  x@ |  j j D]/ } | j  j rN | j	 rN t |  j d  qN qN Wn  d  S(   Ns9   Function with Python return type cannot be declared nogils8   Function declared nogil has Python locals or temporaries(
   R,   R.  R-  R>  R<   R   R!   R	  R  t   in_with_gil_block(   R   RD   R,   R.  R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   	  s    			
c         C@  s   | j  |  j _  |  j d  k	 r6 |  j j |  |  _ nA |  j d  k	 r] |  j j |  |  _ n |  j |  |  j |  |  j |  j  |  _	 |  S(   N(
   R   R	  R  R$   Rv   R-  R  R   R  R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   	  s    c         C@  s   t  S(   N(   R2   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR+  	  s    i   c         C@  sT  |  j  } g  } |  j } xf | j t | j  | j  D]G }	 |	 j   }
 | j |	 j  } | j sp d |
 }
 n  | j	 |
  q6 W| r |  j
 r t j j t j  } |  j r | j	 |  q | j	 d |  n  | j r | r | j	 | j j t j   n  | j r| j	 d  n  | s+d g } n  | d  k rF|  j j } n  | j | d j |   } |  j j d k rd | k rd } n d } d  } | j |  j j  } |  j j | d	 | } |  j } |  j r	| r| j j d
 j  |  j  n  | j  |  j  n  | r6| j j d
 j  d | | | f  n  | j  d | | | f  d  S(   Ns   CYTHON_UNUSED %ss   ...t   voids   , t   privates   ::s   static R   t   dll_linkaget   module_declarationss   %s%s%s; /* proto*/s   %s%s%s {(!   R	  R,   RY   RN   R+  R   R  R;   t   cf_usedR  RD  R   R?   R   t   skip_dispatch_cnameR  R]  t   optional_args_cnameRC  R$   R   t
   func_cnamet   function_header_codeR   R   t   build_function_modifierst   func_modifiersR>  R  R  R   t   partsRV   (   R   R\   R  t   with_opt_argst   with_dispatchR9  RS  t	   arg_declsR,   R_  t   arg_declR   t   dispatch_argt   entityt   storage_classR  R  t   headert   needs_proto(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR.  	  sN    		$							c         C@  s   |  j  } xy |  j D]n } | j r | j | j  } |  j sF | j r | j |  } | j d | j	 j
 | j  | f  q q q Wd  S(   Ns   %s = %s;(   R	  RY   R   R  R;   R  R  Rt  RV   R,   R   R9  (   R   RD   R\   RS  R_  R   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR2  #
  s    			c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR8  -
  s    c   
      @  s{  d } d } |  j  } |  j j r; j d t j  x |  j D]     j r? | j   j	  } |  j
 sr | j r  j d t j t j | f    j } x t | d  s | j } q W j d   j t j |  j j | j	  f  | d 7} n  | d 7} q? q? Wx! t |  D] }  j d  qW j d  n     f d   }	 x' |  j D]   |	 | j   j	   qWWd  S(	   Ni    s	   if (%s) {s   if (%s->%sn > %s) {R;   s   %s = %s->%s;i   R  c         @  sQ   |  j  rM   j rM  j d |  j |  j f   j |    j |   n  d  S(   Ns   %s = %s;(   R3  R   RV   R9  t   original_cnameRR  t   put_var_giveref(   R   (   R_  R\   (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   put_into_closureJ
  s    (   R	  R,   R+  RV   R   R  RY   R   R  R;   R  R  RU  Rf  Rl  R   R9  t   opt_arg_cnamet   rangeR  (
   R   RD   R\   RG  R\  RS  R   Rf  R  R  (    (   R_  R\   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRP  0
  s4    					c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt!   generate_argument_conversion_codeS
  s    c         C@  s`   xY |  j  j D]K } | j r/ |  j | |  q | j  j r | j r |  j | |  q q Wd  S(   N(   R,   RY   t   needs_type_testR  R<   R  R  (   R   R\   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRY  V
  s
    	c         C@  sf   | j  j d r0 | j |  j  | j d  n  t t |   j |  |  j rb |  j j |  n  d  S(   NR  R   (	   R   R   R   R!   RV   Rl   R  R   R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   _
  s    	c         C@  s!   |  j  j r d S|  j j j Sd  S(   Nt   0(   R>  R<   R   R,   R  (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRg  g
  s    c         C@  s   |  j  j j S(   N(   R   R,   R,  (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRh  n
  s    c      	   C@  s  d } |  j  } | j } x{| j d  k	 r| d 7} | j } d |  j  j t j | f | _ | j   |  j | d d | j j	 d | j j
 d | j |  j j s | j d  n  |  j j } g  | t |  |  j j
  D] } | j ^ q } | j j	 r| j t j  n | j	 r'| j d  n  | j j
 rF| j t j  n | j
 r_| j d	  n  | j d
 |  j  j d j |  f  | j d  q Wd  S(   Ni    i   s   %s%swrap_%sR  R  R9  s   return R  t   NULLs   %s(%s);s   , R  (   R   R,   t
   prev_entryR$   R  R   RU  RV   R.  R/  R+  R>  R   R/  RY   RN   R9  R  R  R  R   (   R   R\   t   kR   R2  RY   R_  t   arglist(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR{  q
  s6    		
	
	
0		&N(#   RR   Rs   R   R2   R  R$   R  RE  R  R  R  R0  R  R  t   propertyR@  R   R  R  R  R  R  R   Rv   R+  R.  R2  R8  RP  R  RY  R   Rg  Rh  R{  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s<   		]	$					-	
		#						t   PyArgDeclNodec           B@  s#   e  Z g  Z e Z e Z d    Z RS(   c         C@  s   |  j  j | |  d  S(   N(   R   R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   
  s    (   RR   Rs   R   R2   R"  R}  R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  
  s   R  c           B@  s   e  Z d  g Z RS(   R  (   RR   Rs   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  
  s   R  c        	   B@  s  e  Z d  d d d d d g Z d d g Z e Z e Z d Z d Z	 d Z
 d Z d Z d Z d Z d Z d Z d Z e Z d Z d Z e Z d Z d Z e Z d Z d Z d   Z d d e d d d e e d	  Z d
   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d d  Z( d   Z) d   Z* d   Z+ d d  Z, d   Z- d   Z. d   Z/ d   Z0 RS(   RY   R  R  R   R  t   return_type_annotationR  i    c         K@  s   t  j |  | |  d } } } xS |  j D]H } | j r] | d 7} | j s] | d 7} q] n  | j s+ | d 7} q+ q+ W| |  _ | |  _ | |  _ d  S(   Ni    i   (   R  R   RY   R  R   t   num_kwonly_argst   num_required_kw_argst   num_required_args(   R   R!   RZ   R  t   rkt   rR_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   
  s    	
				c	         C@  s_  |  j  r t |  j  j d  n  |  j r> t |  j j d  n  | pM d  t f \ }	 }
 | d  k r%g  } xf |  j D][ } | j | d d \ } } | j t	 j
 d | j d d  d | j d t d	 | j   qr Wt	 j d
 t d | d t d d  d |
 d | d | d |  } t |  j d | } n | d  k r=| j } n  | j } t |  j  t | j  k sm| j rt |  j d  t | j d  n  x t t |  j | j   D]u \ } \ } } | j | d d d | d k o| j \ } } | d  k s	| t	 j k r| j | _ | | _ qqW|	 d  k rt| j d  k	 rtd d l m } | |  j d | j d | j }	 n  t |  j d t |  j d |  j d d  d |  j d t d | j d |	 d | j d | j  } t! |  j d | pg  d t" |  j d | j d | d |  j# d |  j$ d | j% d | d | j d | j  d d  d! t d" t& | d" i   d# | S($   Ns'   cdef function cannot have star arguments+   cdef function cannot have starstar argumentR   i   R;   R9  RC   R,   R!   R>  RY   RC  R  R,  R-  R.  R/  s   wrong number of argumentss   previous declaration hereR"  i    (   R)  R6   R   R  RF   Rf  R   R*   RD  R   R  R  RE  R  ('   R  R   R!   R  R$   R2   RY   R   R  R   R<  R;   RC   R	   RB  R   RS  R,   RN   RC  R6  R  R7  RI  R  R  R)  R>  R  R   R,  R.  R-  R  RB   R   R*   R/  R   (   R   R  RS  RD  t   returnst
   except_valR  R-  R.  R  R,  t
   cfunc_argsR  RI  R,   t
   cfunc_typeRG  R  R)  Rf  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   as_cfunction
  sz    					'.!								c         C@  s'   |  j  r t S|  j s |  j r# t St S(   s   Determines if the function's signature is compatible with a
        cdef function.  This can be used before calling
        .as_cfunction() to see if that will be successful.
        (   R  R2   R  R  R7   (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   is_cdef_func_compatible*  s
    	c         C@  s   |  j  re xY |  j  D]K } | j } | j r |  j | j d k O_ |  j | j d k O_ q q Wn  |  j r | j d  r t |  _ n  |  j r | j d  r t |  _ n  |  j d k r | j r d |  _ n  |  j	 |  |  j d k r |  j
 |  n |  j |  |  j |  |  j j j   |  _ |  j t k r|  j r| j d r|  j j rt |  j |  \ } } | r| j r| |  _ qqn  |  j |  t |  j d |  d |  j j d	 |  j d
 |  j d |  j d |  j |  _ |  j j |  d  S(   Nt   classmethodR   Rm   i   s   <lambda>Ri  Rz  R;   RY   R  R  R>  (   R  R  R9   t   is_classmethodR;   t   is_staticmethodR  R2   R  t   analyse_argument_typest   declare_lambda_functiont   declare_pyfunctiont   analyse_signatureR   t	   signatureR>  R	   R  R   Rv  RL   R<   R  t   DefNodeWrapperR!   RY   R  R  t
   py_wrapperR   (   R   RD   R  Rb   R  R>  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   5  sB    			"				c   
      C@  s  | j  j d i   |  _ | j  d } | j } d  | _ x|  j D]} t | d  r_ d  } n | j j |  } t	 |  r | j
 r t j | | j g  } n  | j j | |  \ } } | j | _ | | _ | j r t |  _ n  |  j | |  | r| j rt |  j d  n  | j j   | _ d  | _ d | _ d | _ d | _ | j j sr| j j sr| j j r| j  rt | _! qL| j" rt# | _! qL| j j$ s| j j% s| j j s| j j r| j& r| j& j' d  k rt | _! q| | _! qLt | _! qA t | _! | j" r0t | j d  n  | j  rA t | j d  qA qA W| | _ t	 |  rg  t( |  j  D] \ } }	 |	 j j) ru| ^ qu|  _* n	 g  |  _* d  S(	   NR  t   allow_none_for_extension_argsR;   s9   Python function argument cannot have C name specificationi    i   s.   Only Python type arguments can have 'not None's-   Only Python type arguments can have 'or None'(+   R   R  RE  R   R$   RY   Rl  RF   R   R   R  R   R  t
   org_bufferRf  R;   R,   R   R7   R  R  R9  R   R!   t   as_argument_typet   hdr_typet   needs_conversionR  R~  R<   R   R  R  R  R  R2   t   is_extension_typeR  R   t   constant_resultR6  t   is_numpy_buffert   np_args_idx(
   R   RD   R  t   f2sR_  RI  RF   R,   RG  t   a(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  b  sZ    									$						:c         C@  sc  |  j  j rY |  j r( t |  j d  n  t |  j  d k oM |  j pL |  j |  j  _	 nD| j
 d r|  j pv |  j r|  j  j t j k r
t |  j  d k r t j |  j  _ qt |  j  d k r|  j d j d  k r|  j d j rt j |  j  _ qqq|  j  j t j k rt |  j  d k rFt j |  j  _ qt |  j  d k r|  j d j d  k r|  j d j rt j |  j  _ qqqn  |  j  j } | j   } | t j k r| d k rt |  j  d k r|  j rt j } |  j  _ d |  _ d } n  |  j rk| j rkd } t |  _ t j |  |  j  _ } d | _ t | _ t | _ n  |  j s}|  j r|  j r| j r|  j  j! 2n  x.t" t# | t |  j    D]} |  j | } d | _$ | j% |  r@|  j r@|  j rd | _& t' j( | _) | _* n d | _% | j+ | _) | _* d | _, nW | j- |  | _) | j* j. | j)  s| j) j/ r| j* j/ rd | _0 qd | _, n  | j, rt1 j2 | j3 | _4 qt1 j5 | j3 | _4 qW| t |  j  k r|  j6   d  S| t |  j  k  r_| j s|  j6   n  xA |  j D]3 } | j$ r%| j* j7 sL| j* j8 r%d | _0 q%q%Wn  d  S(   Ns8   special functions of cdef classes cannot have decoratorsi   t   always_allow_keywordsi    i   R*  (9   R   Rv  R  R   R!   RN   RY   R  R  t   trivial_signatureR   R  R   t   pyfunction_signaturet   pyfunction_noargsR   R$   R  t   pyfunction_oneargt   pymethod_signaturet	   unaryfunct   ibinaryfunct   num_fixed_argst   self_in_starargR  R7  R7   R   t   fixed_arg_formatt   has_generic_argsR
  R  t   decorator_indirectionR   R  t   minR~  R"  R}  R   t	   type_typeR  R,   R;  R  t   fixed_arg_typeR8  R<   R  R   t
   arg_prefixR;   t	   hdr_cnamet
   var_prefixt   bad_signatureR  R  (   R   RD   t   sigt   nfixedRG  R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    sz    	1!''					%					
	!c         C@  s   |  j  j } d | j   } | j r2 | d 7} n  |  j } | j d  rb | j d  rb d } n d } t |  j d | |  j t	 |  j
  | f  d  S(   Ns   %ds    or moret   __s   Special methodt   Methods>   %s %s has wrong number of arguments (%d declared, %s expected)(   R   R  R&  R)  R;   t
   startswitht   endswithR   R!   RN   RY   (   R   R2  t   expected_strR;   t   desc(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR1    s    			c         C@  sz  |  j  } | j |  } | r | j rG | j j rG t |  j d  n  | j j r | j	 r |  j
 r t |  j d d  q n  | j | |  j d |  j
 } | |  _ | j | j  } t j | | |  j _ t j rmt |  j |  j  | _ t j | | | _ | j rv| j  t j k sG| j sG| j  d k rS| j d rSd  | _ qjt j | | | _ qvn	 d  | _ d  S(   Ns:   Only final types can have final Python (def/cpdef) methodss'   Overriding cdef method with def method.i   t   allow_redefinet   __getattr__t   fast_getattr(    R;   R  R  R;  t   is_final_typeR   R!   R,   R
  t   is_builtin_cmethodR   R   R  R   t   next_idt   scope_prefixR   t   pyfunc_prefixt   pyfunc_cnameR   R  R+   R*   t   funcdoc_prefixt	   doc_cnameRv  R   t	   invisibleR   R$   t   wrapperbase_cnamet   wrapperbase_prefix(   R   RD   R;   R   t   prefix(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s(    	 			c         C@  s=   | j  |  j |  j  } d  | _ | |  _ | j |  j _ d  S(   N(   R  t   lambda_nameR!   R$   R*   R   R9  RB  (   R   RD   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    		c         C@  s   x |  j  D] } | j s, t | j d  n  | j rt | j | j | j | j  | _ | j j r d | j _	 q n |  j
 | |  | _ d | j _ d | j _ | j | j _ q
 W|  j | |  j  |  j | |  j  d  S(   Ns   Missing argument nameR  i   (   RY   R;   R   R!   R  RV  R,   R   R<   R  R  R1   R\  R"  t   declare_python_argR  R  (   R   RD   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    		!c         C@  sz   | rv | j  d t k r% t j } n t } | j | j | | j  } d | _ d | _	 d | _
 d | _ | | _ n  d  S(   Nt   infer_typesi   R  (   R   R2   R   t   unspecified_typeR	   RV  R;   R!   R1   R\  R  RT  R   (   R   RD   R_  R,   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRJ  +  s    				c         C@  s   | j  |  j _  |  j |  |  j |  |  j rM |  j | |  j  |  _ n  |  j |  r |  j r x6 |  j d  d  d  D] } | j j	 |  | _ q} Wn  |  j
 j |  |  S(   Ni(   R   R	  R  R   R  R  R+  R  R  Rv   R  t   prepare_argument_coercion(   R   RD   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   8  s    	c         C@  s   |  j  r t S|  j s" |  j j r& t S|  j r3 t S|  j j rC t S|  j j rS t S| j	 se | j
 r | d  k r |  j j d S| j j d Sn  | j p | j S(   Nt   binding(   R  R7   t   specialized_cpdefsR   t   is_fused_specializedR2   t   no_assignment_synthesisRv  t   is_anonymousR  R7  R$   R	  R   R   R  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR+  F  s    		c         C@  s   |  j  j j S(   N(   R   R  Rg  (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRg  X  s    c         C@  s   |  j  j j S(   N(   R   R  R,  (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRh  [  s    c         C@  sm   |  j  r% |  j  j | j   |  n  |  j rV |  j j |  j _ |  j j | |  n  t j |  | |  d  S(   N(   t   defaults_getterR   R   t   py_wrapper_requiredR   R  R  R  (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   ^  s    		c         C@  s  | r, |  j  r( |  j j | | t  n  d  Sg  } |  j j j rt d t j } |  j	 sd d | } n  | j
 |  n  d   } x$ |  j D] } | j
 | |   q W|  j r | j
 | |  j   n  |  j r | j
 | |  j   n  | r d j |  } n d } |  j j |  j j  }	 | j d }
 |  j   } | rM|
 j |  n  |
 j d |	 | f  | rz|
 j d  n  | j d	 |	 | f  d  S(
   Ns   PyObject *%ss   CYTHON_UNUSED c         S@  sS   |  j  } | j r | j } n	 | j } | j j |  } | j sO d | } n  | S(   Ns   CYTHON_UNUSED (   R   R3  R  R9  R,   R   R  (   R_  R   R9  t   decl(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   arg_decl_codew  s    				s   , R  t   declss   static %s(%s); /* proto */s   #endifs   static %s(%s) {(   RT  R  R.  R7   R   R  t   has_dummy_argR   RM  R1  R  RY   R  R  R   R>  R   RB  R   R%  RV   (   R   R\   R  R  t   arg_code_listt   self_argRV  R_  R  t   dct
   decls_codeR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR.  j  s>    						c         C@  s   d  S(   N(    (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR2    s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR8    s    c         @  sg     f d   } x |  j  D] } | | j  q Wx0 |  j |  j f D] } | rC | | j  qC qC Wd  S(   Nc         @  sG   |  j  rC   j d |  j |  j f    j |     j |   n  d  S(   Ns   %s = %s;(   R3  RV   R9  R  RR  R  (   R   (   R\   (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    	(   RY   R   R  R  (   R   RD   R\   R  R_  (    (   R\   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRP    s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRY    s    N(1   RR   Rs   R   R   R2   R  R
  R$   RI  t   reqd_kw_flags_cnameR   RQ  R  R  R   R  R'  t   py_cfunc_nodet   requires_classobjt   defaults_structR*   t   fused_py_funcRO  R  R7   RT  R  RS  R   R  R  R   R  R  R1  R  R  R  RJ  Rv   R+  Rg  Rh  R   R.  R2  R8  RP  RY  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  
  sZ   	B		-	@	M									.			R  c           B@  s   e  Z d Z d Z d    Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d 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(   c         O@  s\   t  j |  | |  |  j j |  _ |  j j |  _ |  j j |  _ |  j j |  _ d  |  _ d  S(   N(	   R  R   Rz  R  R  R   R'  R$   R  (   R   RY   Rx   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  sn   |  j  j } |  j } | j | j  } t j | | | _ t j | | | _	 | j
 |  _
 |  j  j |  _ d  S(   N(   Rz  R   R;   R?  R@  R   t   pywrap_prefixR  t   pymethdef_prefixt   pymethdef_cnameR  R  (   R   RD   t   target_entryR;   RH  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	c         C@  s   xc |  j  D]X } | j j s4 | j j |  sb qb q
 | j r
 | j j r
 | j j |  sb qb q
 q
 W|  j r |  j j j r |  j j } d | _	 x9 | j
 D]+ } | j r | j j r t | j _ q q Wn  d  S(   Ni   (   RY   R,   R<   t   create_from_py_utility_codeR  R  R  R   R  RT  RQ  R1   R  R9   R7   t   cf_maybe_null(   R   RD   R_  R   t   ass(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRM    s    
	c         C@  sO   t  |  j  } | d k sG | d k rK |  j d j sG |  j d j rK d Sd S(   Ni    i   (   RN   RY   R"  R}  (   R   t   argcount(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   signature_has_nongeneric_args  s    c         C@  s
   |  j  j S(   N(   R  R)  (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   signature_has_generic_args  s    c         C@  s6  g  } |  j  j r% | j t j  n  xt |  j D]i } | j r | j j p_ | j j	 p_ | j j
 r | j | j j | j j   q/ | j | j j  q/ W|  j r | j |  j j j  n  |  j r | j |  j j j  n  d j |  } |  j j s| j d t j  n  | j d |  j j j | f  d  S(   Ns   , s   %s = s   %s(%s);(   R  RX  R  R   RM  RY   R  R,   R  R  R  Rr  R   R9  R  R  R   R>  R   R/  R6  RV   Rz  RB  (   R   R\   RY   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s$    "			c         C@  s  |  j  j } | j |  j  | j d  | j d  |  j  j   } | r[ | j |  n  | j |  | j   | _ |  j  j	 | |  p |  j  j
 } |  j | |  |  j | |  | j   } |  j j r d } n d } |  j j s| j d |  j j t j  | f  n  | j   | j d |  j  |  j | |  |  j |  |  j |  | j | j  | j |  j  | j d  | j d  | j | j k r0| j | j  | j  | j  x- | j j!   D] \ } }	 | j" | |	  qW|  j#   }
 |
 d  k	 r0| j d t j |
 f  q0n  | j  | j  x6 | j% D]+ } | j& rJ| j' j rJ| j( |  qJqJW| j)   |  j j s| j d t j  n  | j d	  | j*   | r| j d
 |  n  d  S(   NR   s   /* Python wrapper */s    = 0s   %s%s;s   %s (wrapper)s   /* function exit code */s   %s = %s;s
   return %s;R  s   #endif /*!(%s)*/(+   Rz  R	  R   R!   RV   R%  R'  R(  R)  R+  R,  R.  R2  R7  R>  R<   R   R   R   R6  RD  RE  R;   RP  RY  R  Ry  R  R]  R^  R_  R`  Ra  Rb  Rc  Rg  R$   R  R1   R,   Rr  Rx  Rz  (   R   RD   R\   R  R  R  R  t   retval_initR9  R,   R  R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sb    		
 

i    c         C@  s*  g  } |  j  } | j s! |  j rT d t j } | j sD d | } n  | j |  n  xb |  j D]W } | j s^ | j s | j	 r | j d | j
  q | j | j j | j
   q^ q^ W|  j j } | j r | j   t j g k r | j d  n  | j j r"| j d k r"| j d  n  | j rK| j d t j t j f  n  d j |  } d }	 | j d k r| j j rd }	 t } n  |  j j | j  }
 d
 |	 |
 | f } | j d |  | r|  j j r|  j j j | | d t  n  d  St! j" r| j# r|  j j r| j j$ r| j s7| j% r| j# } | j& rX| j'   } n  | j om| j d k s| j d | j( | j)   f  n  | j r| j d  | j d | j%  | j d  qn  | s|  j j r| j* d | j+  | j, |  j j d d t n  | j d |  d  S(   Ns   PyObject *%ss   CYTHON_UNUSED s   CYTHON_UNUSED PyObject *unusedt   __ipow__s   PyObject *%s, PyObject *%ss   , R   R  R  s   static %s%s(%s)s   %s; /*proto*/R  s   static char %s[] = %s;s   #if CYTHON_COMPILING_IN_CPYTHONs   struct wrapperbase %s;s   #endifs   static PyMethodDef %s = R  t
   allow_skips   %s {(   R  R  (   R  R  (-   R  RX  R'  R   RM  R  RY   R~  R"  R}  R/  R  R   Rz  R   Rv  t   method_flagsR   t   method_noargsRS  R7  R;   R)  t
   args_cnamet
   kwds_cnameR   R2   R>  R  RV   Ra  R.  R7   R   R  R*   t   is_property_scopeRF  t
   is_unicodet   as_utf8_stringRD  t   as_c_string_literalR/  Rd  t   put_pymethoddef(   R   R\   R  R  RY  R2  R  R_  R   t   mfR[  R  t   docstr(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR.  ?  sr    			"						c         C@  s   xM |  j  D]B } | j r
 | j r9 | j d | j  qL | j | j  q
 q
 Wx* | j D] } | j rZ | j |  qZ qZ Wd  S(   Ns   PyObject *%s = 0;(	   RY   R~  R  RV   R/  R4  R   R  R1   (   R   RD   R\   R_  R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR2    s    			c   	      C@  s  | j    } | j } | j d  } |  j d k } |  j d  k	 pT |  j d  k	 pT | } x5 |  j D]* } | j j	 sa | j j
 |  s q qa qa W|  j   s | r t |  j d  n  |  j |  n2 |  j   s |  j |  n |  j |  j | |  | | _ | j |  r| j |  s-| j |  n  | j |  | r|  j |  j |  |  j r|  j j j r| j |  j j  q| j |  j j  qn  | j |  j j j  | j   | j d |  j    n  | j |  r| j |  n  d  S(   Nt   argument_unpacking_donei    s.   This method cannot have * or keyword argumentss
   return %s;(    t   new_error_labelR]  R(  R  R  R$   R  RY   R,   R<   Rf  Rk  R   R!   R  Rj  t   generate_stararg_copy_codet'   generate_tuple_and_keyword_parsing_codet
   label_usedR_  Ra  t   generate_arg_decrefR   RT  t   put_var_xdecref_cleart   put_var_decref_clearRi  Rz  Rj  Rx  RV   Rg  (	   R   RD   R\   t   old_error_labelt   our_error_labelt	   end_labelt   has_kwonly_argst   has_star_or_kw_argsR_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRP    sB    	
		
c         C@  s   | r | j  | j  n  d  S(   N(   R  R   (   R   R_  R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   generate_arg_xdecref  s    c         C@  s   | r | j  | j  n  d  S(   N(   R  R   (   R   R_  R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    c         C@  s  |  j  so | j j t j d d   | j d t j  | j d |  j	 t j |  j
   f  | j d  n  |  j r |  j  s |  j j j r d t j } q d t j } n d t j t j f } | j j t j d	 d   | j d
 | t j |  j	 t |  j  |  j
   f  |  j rn|  j j j rnt d   |  j j j D  r| j d |  | j d |  j j j t j |  j j j |  j
   f  | j |  j j j  | j d  | j d |  j j j f  | j d  d |  j j _ qn| j d |  j j j t j t j f  | j d |  j j j |  j
   f  d |  j j _ | j |  j j j  n  |  j rL|  j j rL| j d |  j  j j t j |  j  j j f  |  j r|  j j j r| j d  | j |  j j j t  | j d |  j
    | j d  n | j d |  j
    | j |  j  j j  | j t j t  | j t j  | j d |  j  j j t j f  | j j t j  d t! } | j d | | t j | f  | j d t j | f  | j d t  | j d  | j d |  j  j j | f  | j d  | j j" |  d |  j  j _ nQ |  j  r| j t j t  | j d |  j  j j t j f  d |  j  j _ n  d  S(   Nt   RaiseArgTupleInvalids   FunctionArguments.cs)   if (unlikely(PyTuple_GET_SIZE(%s) > 0)) {sK   __Pyx_RaiseArgtupleInvalid("%s", 1, 0, 0, PyTuple_GET_SIZE(%s)); return %s;R  s   unlikely(%s)s   %ss-   unlikely(%s) && unlikely(PyDict_Size(%s) > 0)t   KeywordStringChecksH   if (%s && unlikely(!__Pyx_CheckKeywordStrings(%s, "%s", %d))) return %s;c         s@  s   |  ] } | j  j Vq d  S(   N(   R[   t
   allow_null(   R   t   ref(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pys	   <genexpr>  s    s	   if (%s) {s3   %s = PyDict_Copy(%s); if (unlikely(!%s)) return %s;s   } else {s
   %s = NULL;i   s,   %s = (%s) ? PyDict_Copy(%s) : PyDict_New(); s   if (unlikely(!%s)) return %s;i    s=   %s = PyTuple_New(PyTuple_GET_SIZE(%s)+1); if (unlikely(!%s)) R  s
   return %s;s   PyTuple_SET_ITEM(%s, 0, %s);R  s-   for (%s=0; %s < PyTuple_GET_SIZE(%s); %s++) {s*   PyObject* item = PyTuple_GET_ITEM(%s, %s);R   s!   PyTuple_SET_ITEM(%s, %s+1, item);s   %s = %s;(#   R  R   R  R   R&  RV   R   Rq  R/  R;   Rg  R  R   R  Rr  t   boolR   t   cf_referencesR9  R  RT  R'  Rz  R  t   put_xdecref_clearR	   RK  RM  Rw  R  R  R   t   c_py_ssize_t_typeR2   R  (   R   R\   t   kwarg_checkR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR|    s    																c      	   C@  s4  | j  d  } g  } g  } g  } x | D] } | j r( | j r | j r | j r | j rm | j |  q} | j |  q q | j r | j |  q | j r | j r | j |  q q( q( W| | }	 |  j |  j }
 t	 |  d k r| d j s
| d j r|
 d 8}
 n  t	 |  } |  j
 o6|
 | k } t |	  } |  j sW|  j
 rj|  j | |  n  | j d  t |  t |	  } | j d t j d j g  | D] } d | j | j  ^ q f  |  j | |  | j d |  j d k rd	 pd
 t j f  |  j |
 | | | | | |  |  j rF|
 d k sR|
 | k r|
 | k rq|  j
 rqd } n d } | j d t j | |
 f  | j |  n  |  j r| |
 k r|  j
 r| j d t j | f  | j |  n  | j d  x^t |	  D]z \ } } | j s| j | j  } | j j t j d d   | j d |  j | f  | j | j  |  j!   PqqWn| j d  |
 | k rxt |  D]) \ } } | j d | t j | f  qWn}| j d t j  |  j
 r| j d  n  t" t |   d  d  d  } x} | D]u \ } } | |
 d k r| | d d k rq| j d  n  | j d | d  n  | j d | t j | f  q1W|
 d k r| j d  | j d  n  | j d  |  j
 r4|
 rNx/ t# |
 d d d  D] } | j d |  qW| j |  qNn | j d  | j |  | j d  | j d  x1 t |  D]# \ } } |  j$ | d | |  quW| j d  | j% |  r0| j |  | j& |  | j j t j d d   | j d  |  j | |
 | t j f  | j | j  |  j!   n  d  S(!   Nt   argtuple_errori    i   R  s    static PyObject **%s[] = {%s,0};t   ,s   &%ss   if (%s(%s)) {t   likelyRn  s   !=t   <s(   } else if (PyTuple_GET_SIZE(%s) %s %d) {s'   } else if (PyTuple_GET_SIZE(%s) > %d) {s   } else {t   RaiseKeywordRequireds   FunctionArguments.cs&   __Pyx_RaiseKeywordRequired("%s", %s); s&   values[%d] = PyTuple_GET_ITEM(%s, %d);s   switch (PyTuple_GET_SIZE(%s)) {s   default:is   CYTHON_FALLTHROUGH;s
   case %2d: s	   case  0: s   break;s	   case %2d:s	   default: R  s
   values[%d]R  sD   __Pyx_RaiseArgtupleInvalid("%s", %d, %d, %d, PyTuple_GET_SIZE(%s)); ('   R(  R~  R   R"  R}  R  R  R   R  RN   R  R  R  t   generate_stararg_init_codeRV   t   tupleR   t   pykwdlist_cnameR   t   intern_identifierR;   t#   generate_argument_values_setup_codeRr  t   generate_keyword_unpacking_codeRq  R_  R6  R   R  R   R&  R/  R  R!   R   R  t   generate_arg_assignmentR~  Ra  (   R   RY   t   success_labelR\   t   argtuple_error_labelR  t   required_kw_only_argst   optional_kw_only_argsR_  t   kw_only_argst   min_positional_argst   max_positional_argst   has_fixed_positional_countt   has_kw_only_argst   all_argst   compareRG  t   pystring_cnamet   reversed_args(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR}     s    				
,
		.
	!							$	!				c         C@  s?  | j  j rY | j r3 t j | j  t j |  } n  | j } | j d | j | f  n | j  j	 r$| j
 r | j d |  n  | j | j  j | | j j | j |   | j
 r;| j d  | j d | j j | j |  f  | j  j r| j | j j d t n  | j d  q;n t | j d | j   d  S(   Ns   %s = %s;s	   if (%s) {s   } else {R  R  s2   Cannot convert Python object argument to type '%s'(   R,   R<   R~  R   t   typecastR	   R   RV   R9  t   from_py_functionR   t   from_py_call_codeR!   Rt  R  RS  R7   R   (   R   R_  R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s(    						
c         C@  s  |  j  rc d |  j  j _ | j d |  j  j j |  j  j j |  j   f  | j |  j  j j  n  |  j rd |  j j _ | j d t j	 | f  | j d |  j j j t j	 | t j	 f  | j d |  j j j  |  j  r | j
 |  j  j j t  n  | j   | j d |  j    | j d  | j |  j j j  | j d  | j d	 |  j j j t j f  | j t j t  | j d  n  d  S(
   Ni    s0   %s = PyDict_New(); if (unlikely(!%s)) return %s;s    if (PyTuple_GET_SIZE(%s) > %d) {s4   %s = PyTuple_GetSlice(%s, %d, PyTuple_GET_SIZE(%s));s   if (unlikely(!%s)) {s
   return %s;R  s   } else {s	   %s = %s; (   R  R   RT  RV   R9  Rg  R  R  R   Rq  R  R	   Rx  R/  RJ  RK  (   R   R  R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s4    						
#c         C@  s   t  |  } | j d | d j d |  f  |  j j rn | j d |  j j t j |  j j t j f  n  xd t |  D]V \ } } | j	 r{ | j
 j r{ | j |  } | j d | | j
 j |  f  q{ q{ Wd  S(   Ns   PyObject* values[%d] = {%s};R  R  s+   %s *%s = __Pyx_CyFunction_Defaults(%s, %s);s   values[%d] = %s;(   RN   RV   R   Rz  R`  R   t   dynamic_args_cnameRM  R6  R   R,   R<   Rt  Ru  (   R   RY   R\   t   max_argsRG  R_  Rp  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    		c      	   C@  s  | j  d  | j  d t j  | j  d  |  j rG | j  d  n  x] t | d d d  D]E } | j d | d  | j  d | t j | f  | j  d	  q^ W| j  d
  |  j s | j d  | j |  n  | j  d  | j  d t j  |  j s| d k rd }	 x, t	 |  D] \ } }
 |
 j
 s#| }	 q#q#W|	 | k  r^| d }	 n  | d k rz| j  d  n  x=t	 | |	 d   D]'\ } }
 | d k r| | k r| d k r| j  d	  n  |  j r| | k r| j  d  q| j  d |  n  | j |
 j  } |
 j
 rz|
 j r2qn  | j  d  | j  d t j | f  | j  d |  | j  d  q| j  d | t j | f  | | k  rA| d k r| j d  | j |  q| j  d  | j j t j d d   | j d |  j | | | | f  | j  | j |  j   | j  d  q|
 j r| j  d  | j j t j d d   | j d |  j | f  | j  | j |  j   | j  d  qqW| d k r| j  d  qn  | r|  j | |  n  | j  d  | d k rd } n/ |  j r=| j  d | | f  d } n d } | j j t j d  d   | j  d! t j t j |  j r|  j j j pd | |  j | j |  j  f  | j  d  d  S("   Ns   Py_ssize_t kw_args;s1   const Py_ssize_t pos_args = PyTuple_GET_SIZE(%s);s   switch (pos_args) {s   default:i   is
   case %2d: s&   values[%d] = PyTuple_GET_ITEM(%s, %d);s   CYTHON_FALLTHROUGH;s   case  0: break;s	   default: R  s   kw_args = PyDict_Size(%s);i    s	   case %2d:s   if (kw_args > 0) {s2   PyObject* value = __Pyx_PyDict_GetItemStr(%s, %s);s-   if (value) { values[%d] = value; kw_args--; }sK   if (likely((values[%d] = __Pyx_PyDict_GetItemStr(%s, %s)) != 0)) kw_args--;s   else s   else {R  s   FunctionArguments.cs2   __Pyx_RaiseArgtupleInvalid("%s", %d, %d, %d, %d); R  s&   __Pyx_RaiseKeywordRequired("%s", %s); s   if (unlikely(kw_args > 0)) {R  sA   const Py_ssize_t used_pos_args = (pos_args < %d) ? pos_args : %d;t   used_pos_argst   pos_argst   ParseKeywordssO   if (unlikely(__Pyx_ParseOptionalKeywords(%s, %s, %s, values, %s, "%s") < 0)) %s(   RV   R   Rq  R  R  R/  R_  Rr  R   R6  R   R  R;   R  R   R  R   R&  R  R!   t,   generate_optional_kwonly_args_unpacking_codeR  R  R   R9  (   R   R  R  R  R  R  R  R\   RG  t   last_required_argR_  R  t   pos_arg_count(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    				!																c         C@  sV  g  } d } xS t  |  D]E \ } } | j s | j r? q n  | sN | } n  | j | j  q W| rRt |  d k r | j d |  j r d p d t |  f  | j d  | j d | | t |  f  n | j d  | j d	 |  | j d
 t j	 t j
 f  | j d  t |  d k rB| j d  n  | j d  n  d  S(   Nii   s'   if (kw_args > 0 && %s(kw_args <= %d)) {R  R   s   Py_ssize_t index;s6   for (index = %d; index < %d && kw_args > 0; index++) {s   if (kw_args == 1) {s   const Py_ssize_t index = %d;s:   PyObject* value = __Pyx_PyDict_GetItemStr(%s, *%s[index]);s0   if (value) { values[index] = value; kw_args--; }R  (   R6  R  R   R  R;   RN   RV   R  R   Rr  R  (   R   R  R\   t   optional_argst   first_optional_argRG  R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  u  s0    				c         C@  s4   x- |  j  D]" } | j r
 |  j | |  q
 q
 Wd  S(   N(   RY   R  t   generate_arg_conversion(   R   R\   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    	c         C@  s   | j  } | j } | j ro | j r; | j d | j  n | j d | j  |  j | |  | j d  nh | j r |  j | |  nL | j |  r | j d | j	 j
 | j f  n t | j d | | f  d  S(   Ns	   if (%s) {s   assert(%s); {R  s   %s = %s;s+   Cannot convert 1 argument from '%s' to '%s'(   R  R,   R<   R   RV   R/  t%   generate_arg_conversion_from_pyobjectt#   generate_arg_conversion_to_pyobjectRA  R   R9  R   R!   (   R   R_  R\   t   old_typet   new_type(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    					#c         C@  sX   | j  } | j r@ | j | j | j | j j | j |   n t | j d |  d  S(   Ns2   Cannot convert Python object argument to type '%s'(	   R,   R  RV   R  R/  R   R9  R!   R   (   R   R_  R\   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    			c         C@  s~   | j  } | j } | rf | j d | j j | | j | j | j j | j  f  | j | j  n t	 | j d |  d  S(   Ns   %s = %s(%s); %ss5   Cannot convert argument of type '%s' to Python object(
   R  t   to_py_functionRV   R   R9  R/  R  R!   t   put_var_gotrefR   (   R   R_  R\   R  Rb   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    				 c         C@  su   xn |  j  D]c } | j r, |  j | |  q
 | j r
 | j j sZ | j j sZ | j j r
 |  j | |  q
 q
 Wd  S(   N(	   RY   R  R  R  R,   R<   R   R  R  (   R   R\   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRY    s    	c         C@  s
   |  j  j S(   N(   R  Rg  (   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRg    s    N(   RR   Rs   R$   t   defnodeRz  R   R   RM  Rj  Rk  R  R   R.  R2  RP  R  R  R|  R}  R  R  R  R  R  R  R  R  R  RY  Rg  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s6   							AK		.			U					y						t   GeneratorDefNodec           B@  s`   e  Z e Z e Z e Z e Z d  Z e Z	 e
 j d g Z d   Z d   Z d   Z d   Z RS(   t	   Generatort   gbodyc         K@  s9   t  | d g  d t | d <t t |   j | |  d  S(   NR   R   R   (   R   R7   Rl   R  R   (   R   R!   Rx   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s9   t  t |   j |  |  j |  j _ |  j j |  d  S(   N(   Rl   R  R   R	  R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s/  |  j  j j } | j |  j  } | j |  j  } | j |  j  } | j d  | j d |  j | |  j	 r |  j	 j
 |  n d t j | | | | j d |  j  f  | j t j t  |  j rd } | j d | t j f  | j | t  | j |  n  | j   | j d  | j d  d  S(	   NR  sk   __pyx_CoroutineObject *gen = __Pyx_%s_New((__pyx_coroutine_body_t) %s, %s, (PyObject *) %s, %s, %s, %s); %sR  t   gens   gen->classobjs&   %s = __Pyx_CyFunction_GetClassObj(%s);s   return (PyObject *) gen;R  (   R  R   R  R  R;   t   qualnamet   module_nameRV   t   gen_type_nameR@  RA  R   R"  R  R!   Rs  R	   R_  RM  RK  Rw  Rx  (   R   RD   R\   t
   body_cnameR;   R  R  t   classobj_cname(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s(    	!		
c         C@  sb   | j  t j |  j d   |  j j | d t t t |   j	 | |  |  j j	 | |  d  S(   Ns   Coroutine.ct   proto(
   R  R   R&  R  R  R.  R7   Rl   R  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   
  s    (   RR   Rs   R7   R>  R2   t   is_coroutinet   is_iterable_coroutinet   is_asyncgenR  R  R  R   R   R   R  R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   			t   AsyncDefNodec           B@  s   e  Z d  Z e Z RS(   t	   Coroutine(   RR   Rs   R  R7   R  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   t   IterableAsyncDefNodec           B@  s   e  Z d  Z e Z RS(   t   IterableCoroutine(   RR   Rs   R  R7   R  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   t   AsyncGenNodec           B@  s   e  Z d  Z e Z RS(   t   AsyncGen(   RR   Rs   R  R7   R  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   t   GeneratorBodyDefNodec           B@  s\   e  Z e Z e Z e Z d Z d d d e d   Z	 d   Z
 d   Z e d  Z d   Z RS(   c         C@  sG   t  t |   j d | d | d | d | d d  d g  d d  d d   d  S(	   NR!   R   R;   t   is_async_gen_bodyR*   RY   R  R  (   Rl   R  R   R$   (   R   R!   R;   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   )  s    c         C@  s~   | j  | j  } | j  d  } t j | | } | j d  t |  j d | d d } | | _ t	 |  j
  | _ | |  _ d  S(   Nt	   generatorR9  R   R  (   R?  R@  R   t   genbody_prefixRV  R$   R	   R!   R  R   R;   Rj  R   (   R   RD   RH  R;   R9  R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   declare_generator_body.  s    	c         C@  s   |  j  |  |  j |  d  S(   N(   R  R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   8  s    c         C@  sT   d |  j  j t j t j t j f } | r? | j d |  n | j d |  d  S(   Ns]   static PyObject *%s(__pyx_CoroutineObject *%s, CYTHON_UNUSED PyThreadState *%s, PyObject *%s)s   %s; /* proto */s   %s /* generator body */
{(   R   R  R   t   generator_cnamet   local_tstate_cnamet   sent_value_cnameRV   (   R   R\   R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR.  <  s    	c         C@  s}  |  j  } |  j j | |  | j |  | j   | _ | j |  j  |  j | |  | j	 d  |  j
 |  | j   } | j	 d t j  | j   } | j   | j |  j j p |  j j  | j j d } | j j d } | s | r:| j   t | j _ |  j r$|  j j |  n d  } | j |  n  | j j | j j j   | j   }	 | j d  }
 | j! |
  | j" |
  | j	 d | j# t j$ |  j   |  j% rf|  j& d  k	 rf|  j& } | t' j( k rd } n@ | t' j) k rd } n( | t' j* k rd	 } n t+ d
 |   | j	 d t j | | j# t j |  j  f  | j, t j  n  |  j- | |  | j j j  j. r| j	 d | j j j/ t j0  | j j j1 d t j2  f  | j	 d t j0  n  | s| rt3 | j _ n  | j |  j  | j	 d  | j	 d  |  j% r|  j j4 r|  j5 rb| j j6 t7 j8 d d   n  | j	 d |  j5 rzd n d  n  | j9 | j:  r|  j j4 s| j; | j<  n  | j" | j:  |  j% r|  j& d  k	 r| j= t j t>  n  t? j@ | jA   jB jC k rH| j j6 t7 j8 d d   | j	 d tD |  j5   n  x- | j jE   D] \ } } | jF | |  qXW| jG |  j j  n  | j" | j<  |  j% r| jH t j  n | j= t j t>  | j	 d  | j	 d t j2  | j	 d  | j	 d t j2  | j	 d t j2  | s/| rO| jI t j d | j jJ n  | jK   | j	 d t j  | j	 d  | jL | j  | s| r|	 jM |  j j |  j d | j jJ n  |	 j	 d t j2  |	 j	 d  |
  x. | jN D]# \ } } |	 j	 d! | | f  qW|	 j	 d"  | s.| rK|	 jI d# d | j jJ n  |	 jK   |	 j	 d$  |	 j	 d  | jO   d  S(%   NR   s   PyObject *%s = NULL;R  R  t	   first_runs   %ss   PyList_New(0)s   PySet_New(NULL)s   PyDict_New()s)   invalid type of inlined comprehension: %ss   %s = %s; %ss   %s = %s;s   %s->closures   CYTHON_MAYBE_UNUSED_VAR(%s);s   /* function exit code */t   StopAsyncIterations   Coroutine.cs   PyErr_SetNone(%s);t   __Pyx_PyExc_StopAsyncIterationt   PyExc_StopIterationt   pep479s*   __Pyx_Generator_Replace_StopIteration(%d);s   #if !CYTHON_USE_EXC_INFO_STACKs+   __Pyx_Coroutine_ResetAndClearException(%s);s   #endifs   %s->resume_label = -1;s%   __Pyx_Coroutine_clear((PyObject*)%s);R-  s
   return %s;R  s   switch (%s->resume_label) {s   case 0: goto %s;s   case %d: goto %s;s2   default: /* CPython raises the right error here */R  s   return NULL;(P   R	  R   R   R'  R(  R)  R   R!   R   RV   R.  R7  R   R6  RD  RE  R   R;   Rj  R   R   R?  R7   R  RO  R@  RA  R$   RB  t   init_closure_tempsR0  R,   RS  t	   use_labelRa  R  R  t
   is_inlinedt   inlined_comprehension_typeR   t	   list_typet   set_typet	   dict_typeR   R  R  R  R   R"  Rr  R  R2   R   R  R  R   R&  R~  R]  R_  R`  R  R	   R   t   generator_stopR   t   contextt   future_directivesR  Rb  Rc  Ri  Rt  Rw  R*  Rx  Ry  RN  t   yield_labelsRz  (   R   RD   R\   R  t   closure_init_codeR  R  R  R@  t   resume_codet   first_run_labelt   target_typet	   comp_initR9  R,   RG  t   label(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   G  s    	

!												
	
N(   RR   Rs   R7   R  R2   R  R  R$   R  R   R  R   R.  R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s   	
	R  c           B@  s)   e  Z d  g Z d Z d   Z d   Z RS(   R   c         C@  s'  | j  |  _ |  j j r! d } n d } d d l m } | j |  j t  |  _	 | j
 |  j d |  j	 d g  |  j | D]! } | j |  j d | j ^ qu } | j j s | j j r t |  j d t |  j d | t |  j d	 d  g |  _ n t |  j d	 | |  _ |  j j |  |  _ |  S(
   Ni    i   (   R  R  RY   R;   R   t   exprR6   (   R9  RY   R-  R  R   R  t   RawCNameExprNodeR!   R	   t	   func_nodeR  R  R;   R>  R   t   is_returncodeR   t   ExprStatNodeR  R$   R   Rv   (   R   RD   t	   first_argR  R_  t	   call_node(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s"    	5!c         C@  s   | j  |  j j j  } |  j j r4 d t j } n d |  j d j } | j	 d  | j	 d t j
  | j	 d  |  j j r | j	 d  n | j	 d | | f  | j	 d  | j j t j d	 d
   | j	 d t j t j f  | j	 d | t j t j f  | j	 d t j | f  | j	 d  | j j t d t } |  j j |  | j j t j d d
   | j | |  j  } | j	 d | | | | f  | j |  d | } d | |  j j j f } | j	 d | | f  |  j j |  | j	 d  | j	 d  | j	 d t j | f  | j	 d t j | f  | j	 d t j t j f  | j	 d t j t j f  | j	 d  | j	 d  | j | t j  | j j  |  | j	 d  | j	 d  | j	 d  | j	 d  d  S(   Ns   ((PyObject *)%s)i    s    /* Check if called by wrapper */s   if (unlikely(%s)) ;s#   /* Check if overridden in Python */s   else {s   else if (unlikely((Py_TYPE(%s)->tp_dictoffset != 0) || (Py_TYPE(%s)->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {sQ   #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTSt   PyDictVersionings   ObjectHandling.csN   static PY_UINT64_T %s = __PYX_DICT_VERSION_INIT, %s = __PYX_DICT_VERSION_INIT;s?   if (unlikely(!__Pyx_object_dict_version_matches(%s, %s, %s))) {s/   PY_UINT64_T %s = __Pyx_get_tp_dict_version(%s);s   #endifR  t   PyObjectGetAttrStrs*   %s = __Pyx_PyObject_GetAttrStr(%s, %s); %ss   PyCFunction_Check(%s)s8   (PyCFunction_GET_FUNCTION(%s) != (PyCFunction)(void*)%s)s   if (!%s || %s) {R  s#   %s = __Pyx_get_tp_dict_version(%s);s'   %s = __Pyx_get_object_dict_version(%s);s   if (unlikely(%s != %s)) {s"   %s = %s = __PYX_DICT_VERSION_INIT;(!   R  R-  R   R;   R  R   t   module_cnameRY   R9  RV   R  R   R  R   R&  t   tp_dict_version_tempt   obj_dict_version_tempt   type_dict_guard_tempR  R  R	   R7   R  t	   set_cnameR  R!   R  R  R   R   R  R   R  (   R   R\   t   interned_attr_cnameRZ  t   func_node_tempt   errt   is_builtin_function_or_methodt   is_overridden(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sh    							
				N(   RR   Rs   R   R$   R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   
		t   ClassDefNodec           B@  s   e  Z RS(    (   RR   Rs   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  F  s   t   PyClassDefNodec        	   B@  s   e  Z d  d d d d d d d d g	 Z d Z d Z e Z d Z d Z	 d d e d	  Z
 d
   Z d   Z d   Z d   Z d   Z d   Z RS(   R   Rj   t	   metaclasst   mkwRo   t   class_resultRz  t
   class_cellR  c	         C@  s  t  j |  |  | |  _ | |  _ | |  _ | |  _ | |  _ d d l m }	 |  j r t	 j
 r t |  j |  j  } |	 j | d | }
 n d  }
 | } | ryt } t |  _ | j rd| j rLx} t t | j   d  d  d  D]Y \ } } | j j d k r |  j d  k	 r#t | j d  n  | j |  _ | j | =q q W| |  _ qv|  j d  k	 svt  qy|	 j |  |  _ n  | s|  j s|  j s|  j r|  j d  k r| r| j r|  j } n d  } | r|  j j r|  j j rn! |	 j | d | d |  j |  _ t } n t } |	 j  | d	 | d
 |
 d |  j d |  j d |  j |  _! |	 j" | d	 | d |  j d |  j! d
 |
 d |  j d |  j d | d | |  _# nE |	 j$ | d g  |  _! |	 j% | d	 | d | d |  j! d
 |
 |  _# |	 j& | d	 | |  _' |	 j( |  j  |  _) d  S(   Ni   (   R  R6   iR  s2   keyword argument 'metaclass' passed multiple timesR  Ro   R;   R*   Rj   t   calculate_metaclasst   allow_py2_metaclassR4   (*   R   R   R;   R*   R   R  Ro   R   R  R   R  R+   R!   t
   StringNodeR$   R2   R7   t   is_py3_style_classR3   R4   R   R6  R   R6   R  R   R  t   AssertionErrort	   ProxyNodet   is_sequence_constructorRY   t   PyClassMetaclassNodet   PyClassNamespaceNodeRj   t   Py3ClassNodet   classobjt   DictNodet	   ClassNodeR  Rz  t   ClassCellInjectorNodeR  (   R   R!   R;   Ro   R*   R   R  R  t   force_py3_semanticsR  t   doc_nodeR
  RG  R   t   mkdictt   needs_metaclass_calculation(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   b  sl    								/!	!c         C@  s   |  j  r  t |  j j d  d Sd d l m } t |  j d d d d d |  j d	 |  j j	 pr | j
 |  j d
 g  d |  j d |  j d t d |  j S(   sO   
        Return this node as if it were declared as an extension class
        s7   Python3 style class could not be represented as C classNi   (   R  R   R  R  t
   class_nameRo   RY   R  R   R   R*   (   R  R   R  R!   R   R  t   CClassDefNodeR$   R;   Ro   R  R  R   R2   R*   (   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt	   as_cclass  s    		$		c         C@  sK   | } x | j  s | j r' | j } q	 Wt d |  j d |  } |  _ | S(   NR;   R  (   R  R7  R  R   R;   RS  (   R   RD   R
  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   create_scope  s
    c         C@  s   |  j  } |  j rp d d l m } x? |  j d  d  d  D]' } | | j d | j d | g } q9 Wd  |  _ n  | |  _ |  j j |  |  j	 j
 |  |  j |  } | j | _ |  j	 j j | _ |  j j |  d  S(   Ni   (   R  iR  RY   (   R  R  R  R  R!   R  R$   R  R   Rz  t   analyse_target_declarationR  R   R   R9  t   class_obj_cnameR   (   R   RD   R  R  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s     					c         C@  s   |  j  r! |  j  j |  |  _  n  |  j rB |  j j |  |  _ n  |  j rc |  j j |  |  _ n  |  j j |  |  _ |  j j |  |  _ |  j } |  j j |  |  _ |  j j	 | |  j
  |  j j |  |  _ |  S(   N(   Ro   Rv   R  R  Rj   R  RS  R   Rz  t   analyse_target_expressionR  R  (   R   RD   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    				c         C@  s-   |  j  |  j |  |  j j |  j |  d  S(   N(   R   RS  R   R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s  | j  |  j  | j j |   |  j } |  j rE |  j j |  n  |  j ra |  j j |  n  |  j r} |  j j |  n  |  j	 j |  |  j	 j
   | _ | _ |  j j |  |  j j |  |  j j |  |  j j | |  j j
    |  j j |  |  j j
   | _ | _ |  j j |  j |  |  j	 j |  |  j	 j |  |  j r}|  j j |  |  j j |  n  |  j r|  j j |  |  j j |  n  |  j r|  j j |  |  j j |  n  | j j   d  S(   N(   R   R!   t   pyclass_stackR  RS  Ro   Rq  R  R  Rj   R   t   namespace_cnameR   R  R   R   R  t   generate_injection_codet   generate_disposal_codeR  Rz  R|  Ry  t   pop(   R   R\   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s>    								N(   RR   Rs   R   R$   R  R  R2   R  R  R  R   R  R  R   Rv   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  J  s   I					R  c           B@  s   e  Z d  g Z d	 Z d	 Z e Z e Z d	 Z	 d	 Z
 d	 Z d	 Z e Z d   Z d   Z d   Z d   Z d   Z d   Z e e d   Z d   Z RS(
   R   c         C@  se   t  |  d  s^ d d l m } |  j rR | j |  j | g  |  j d t |  _ q^ d  |  _ n  |  j S(   Nt   _buffer_defaultsi   (   R  t   need_complete(	   Rl  R   R  t   buffer_defaults_nodeR  t   buffer_defaults_posR2   R'  R$   (   R   RD   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  .  s    	c         C@  s   |  j  rL |  j d k rL |  j  j d  } | j | |  j  } | sR d  Sn | } | j d |  j d |  j d d d d d |  j  d	 d  d
 |  j d |  j	 d |  j d |  j
 d |  j d |  j d |  j |  d |  j  |  _ d  S(   NR(  t   .R;   R!   R  i    t   implementingR  RF   t   objstruct_cnamet   typeobj_cnameR   RT  t
   check_sizeR  R  t   shadow(   R  R   t   splitR  R!   R$   t   declare_c_classR  t   objstruct_namet   typeobj_nameRT  R/  R  R  R0  R   (   R   RD   R  t
   home_scope(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  :  s*    										c         @  s    j  r&  j r& t  j d  n   j rI t  j d  j  n  d   _  j r d   _	 x/   j
 D]$ } | j  j k rn |  _	 qn qn W j	 d  k r t  j d    j   _	 d  j	 _   j  j	  q n   j j r j j d } | j    } | t j t j t j f k rF  j | j    j } n  | d  k rlt | j d  j  n | t j k rd  } n | j r| j o| j rt | j d |  n | j   st | j d | j  j f  ny | j r%| j j  r%| j! r%t | j d |  j f  n; | j rW| j d, k rWt | j d | j  n	 |  _   j  j" d d  d k r| t j k rt#  j d d  qn   j$ d  k	 } | r j r j j r j j% j&    f d    d  S j r= j' d k r= j j( d  }   j) |  j  } | sCd  Sn   }  j' d k r j d k r j t* j+ k r  j, d  d k rt#  j d  j d  qn  | j- d  j d  j d | o j. d | o j. d  j d  j d  j d  j/ d  j0 d  j' d   j1 d!  j2 d"  j3    d#  j4   _5  j4 rj j5 | j  j  _6 n  |   k	 r j' d k r  j7  j  j5  j  n   j5 j j  _ }	 |	 d  k	 r  j  |	 _  n   j8 rt9 j: rt;  j  j8  |	 _8 n  | r j$ j< |	   j j= d$  }
 |
 r|
 j> r|	 j? r|	 j@ r j jA d%  |
 _B  j jC d$ |
 j8 |
 j  n   j. rd |	 _? qd |	 _@ n  tD  j j  d k r| s j. rt  j j d j d&  n  x:  j j d D]( } | j    rt | j d'  qqWd  j5 j _E d d( lF mG } | jH  j d) | jI  j d*  j  j | jJ  j d+ g  g  _K nN  j r j jL p j jE  j5 j _E d   _K n d  j5 j _E d   _K   jM  j5  x  j5 j j% D] } |   qWd  S(-   NsT   Object struct name specification required for C class defined in 'extern from' blocks:   Decorators not allowed on cdef classes (used on type '%s')i   i    s+   First base of '%s' is not an extension types   '%s' is not an extension types*   Base class '%s' of type '%s' is incompletes%   Base class '%s' of type '%s' is finalR  t   strt   bytessG   inheritance from PyVarObject types like '%s' is not currently supportedt   freelistsI   freelists cannot be used on subtypes, only the base class can manage themc           @  s    j     S(   N(   R   (    (   RD   R   (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   <lambda>  R   R(  R+  t   __builtin__i   s   cpython.s    %s already a builtin Cython typeR;   R!   R  R,  R  RF   R-  R.  R/  R   RT  R  R  R0  R   t   __dict__getters'   Only declare first base in declaration.s+   Only one extension type base class allowed.(   R  RY   R6   R4   (   R  R6  R7  (N   R   R3  R   R!   R  R  R$   RF   R  t   modulet   cimported_modulesR;   R
   R  t   has_extern_classt   add_imported_moduleRo   RY   R8   R   R?   R>   R@   R  t   sign_and_nameR,   R	   R  R  R-  R  RS  R   R=  R  R   R   t   defered_declarationsR  R   R1  R  R   t   builtin_typesRj  R2  R   R4  R/  RT  R  R  R0  R   R  t   add_imported_entryR*   R   R  R+   R   R  t   is_variablet   definedt   implementedt   mangle_internalt   getter_cnamet   declare_propertyRN   t
   early_initR   R  R  t   IdentifierStringNodeR  t   type_init_argst   is_externalt   allocate_vtable_names(   R   RD   R<  R   RF   t   base_class_scopet   has_bodyR  R5  RS  t
   dict_entryt
   other_baseR  t   thunk(    (   RD   R   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   S  s    					
			* 												#		$	!	c         C@  sP   |  j  r0 |  j j j } |  j  j |  |  _  n  |  j rL |  j j |  n  |  S(   N(   R   R   R,   RS  Rv   RL  (   R   RD   RS  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    		c         C@  s9   |  j  r5 |  j |  j |  |  j  j |  j |  n  d  S(   N(   R   R   RS  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	c         C@  s  | j  |  j  |  j r, |  j j |  n  |  j j j s|  j r|  j j |  d |  j j	   } d | } | j
 j t j t  } | j d | |  j j	   f  | j | j | |  j   | j |  | j d | | f  | j d  | j d | | f  | j | j |  j   | j d  | j
 j |  | j | t j  | j |  | j d |  j j j | f  | j | t j  |  j j |  |  j j |  n  |  j |  j | t  n  d  S(	   Ns   PyTuple_GET_ITEM(%s, 1)s(   ((PyTypeObject*)PyTuple_GET_ITEM(%s, 0))s0   %s = PyType_Type.tp_new(&PyType_Type, %s, NULL);s*   if (((PyTypeObject*) %s)->tp_base != %s) {sP   PyErr_Format(PyExc_TypeError, "best base '%s' must be equal to first base '%s'",sB                ((PyTypeObject*) %s)->tp_base->tp_name, %s->tp_name);R  s   %s.tp_bases = %s;(   R   R!   R   R   R   R,   RJ  RL  Rq  R   R  R  R   R	   R7   RV   R  R  R  R  RK  Rw  R.  R  R%  Ry  t   generate_type_ready_code(   R   R\   Ro   t
   first_baset
   trial_type(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s8    		
			 c         C@  s  |  j  } | j } | j } | s% d  S|  j d k rx! t j D] } | j | |  q> W| r | j j t	 j
 d d   d } n d } | j d | | | j |  j  f  | j d  | j d |  | j d  t j | d	  } t j | d
  }	 | d k r|	 d k r| j r.d }
 d } n d }
 d } | j j t	 j
 | d   | j d | | f  | j d | |
 f  | j d  n  xc|  j  j j D]R} | j d. k } | j rt j r| j r| rt j j | j  } | r| j   n d  } | r| j |  n  | j d  | j d  | j d | | j | j d |  j  f  | j d  | j d | j  | j d | j | j f  | j d | j  | j d  | j d  | j d  | r| j d  qqqW| j r| j j t	 j
 d d   | j d  | | j | j |  j  f  | r| j j t	 j
 d! d   | j d" | | j |  j  f  qn  | j j r| j j j d#  r| j d$ t  j! | j" | j#  | | j |  j  f  n  | j$ s	| j% d%  n d  } | r| j  t& k rsd& | } | j' rC| j( } n d' | j( } | j d( | | | | j) f  qt* | j d)  n  | j$ s| j% d*  n d  r| j j t	 j
 d+ d   | j d, | | j |  j  f  qn  | j r| j d- | j+ | j f  n  d  S(/   NR(  t   PyType_Readys   ExtensionTypes.ct   __Pyx_PyType_Readys   if (%s(&%s) < 0) %ss   #if PY_VERSION_HEX < 0x030800B1s   %s.tp_print = 0;s   #endift   tp_getattrot   tp_dictoffsetR  t#   __Pyx_PyObject_GenericGetAttrNoDictt   PyObject_GenericGetAttrNoDictt   __Pyx_PyObject_GenericGetAttrt   PyObject_GenericGetAttrs   ObjectHandling.cs   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!%s.tp_dictoffset && %s.tp_getattro == PyObject_GenericGetAttr)) {s   %s.tp_getattro = %s;R  R  R  s   #if CYTHON_COMPILING_IN_CPYTHONR  sE   PyObject *wrapper = PyObject_GetAttrString((PyObject *)&%s, "%s"); %st   wrappers/   if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {s0   %s = *((PyWrapperDescrObject *)wrapper)->d_base;s   %s.doc = %s;s0   ((PyWrapperDescrObject *)wrapper)->d_base = &%s;t	   SetVTables   ImportExport.cs+   if (__Pyx_SetVtable(%s.tp_dict, %s) < 0) %st   MergeVTabless#   if (__Pyx_MergeVtables(&%s) < 0) %st   internals5   if (PyObject_SetAttr(%s, %s, (PyObject *)&%s) < 0) %st   __weakref__s   %s.tp_weaklistoffsets	   struct %ss#   if (%s == 0) %s = offsetof(%s, %s);s)   __weakref__ slot must be of type 'object't   __reduce_cython__t   SetupReduces.   if (__Pyx_setup_reduce((PyObject*)&%s) < 0) %ss	   %s = &%s;(   R  R  (,   R,   R.  RS  R   R   t
   slot_tablet   generate_dynamic_init_codeR   R  R   R&  RV   R  R!   t   get_slot_code_by_nameR=  t   pyfunc_entriesR;   Rv  R   R  RF  R  R  R  R$   R  RD  t   vtable_cnamet   vtabptr_cnamet   is_internalR   R   R  R  R  t   is_closure_class_scopeR  R	   RT  R-  R9  R   RI  (   R   R\   t   heap_type_basesR,   R.  RS  R  t	   readyfunct   getattr_slot_funct   dictoffset_slot_funct   py_cfunct   utility_funcRb   R   R  t   weakref_entryt   tp_weaklistoffsett	   objstruct(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRT    s    													#
					c         C@  s<   |  j  r |  j  j |  n  |  j r8 |  j j |  n  d  S(   N(   RL  R   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    		N(   RR   Rs   R   R$   R)  R*  R2   RT  R  R3  R4  R/  R  R0  R  R  R   Rv   R   R   R   RT  R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s&   							#t   PropertyNodec           B@  s>   e  Z d  g Z d   Z d   Z d   Z d   Z d   Z RS(   R   c         C@  sM   | j  |  j |  j |  j  |  _ | j |  j j _ |  j j |  j j  d  S(   N(	   RI  R;   R*   R!   R   R   RS  R   R   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    !c         C@  s   |  j  j |  |  _  |  S(   N(   R   Rv   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   |  j  j | |  d  S(   N(   R   R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   |  j  j |  d  S(   N(   R   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R   Rv   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRw    s   					t
   GlobalNodec           B@  s)   e  Z g  Z d    Z d   Z d   Z RS(   c         C@  s+   x$ |  j  D] } | j | |  j  q
 Wd  S(   N(   t   namest   declare_globalR!   (   R   RD   R;   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRx    s   		t   NonlocalNodec           B@  s)   e  Z g  Z d    Z d   Z d   Z RS(   c         C@  s+   x$ |  j  D] } | j | |  j  q
 Wd  S(   N(   Ry  t   declare_nonlocalR!   (   R   RD   R;   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR{    s   		R  c           B@  sM   e  Z d  g Z d   Z d   Z d   Z d Z d   Z d   Z d   Z	 RS(   R  c   
      C@  sL  d d l  m } |  j } t | | j  r | j j   } | d k rH| j   \ } } t |  rw t	 | j
 d  n  xd | j D]Y \ } } | j |  }	 |	 d  k r t	 | j
 d  q | j | j |	 | j
 d t q Wt |  _ qHn[ t | d d   d  k	 rH| j r'| j |  t |  _ qH| j s9| j rHt |  _ qHn  d  S(   Ni   (   R  u   declares!   Variable names must be specified.s   Unknown typeR  RC   (   R   R  R  RO   t   GeneralCallNodeR  t   as_cython_attributet   explicit_args_kwdsRN   R   R!   R4   R8   R$   RV  R6   R7   t   PassStatNodeRQ   R   R9   t   declare_from_annotationt   is_attributet   is_subscript(
   R   RD   R  R  Rb   RY   RZ   t   varRJ  R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s(    	#	c         C@  s1   t  |  j _ |  j j |  |  _ t  |  j _ |  S(   N(   R2   R  t   result_is_usedRv   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s,   |  j  j j r( |  j  j r( |  j   n  d  S(   N(   R  R,   R<   t   is_tempR   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    s   Discarding owned Python objectc         C@  s   | j  |  j  t |  j _ |  j j |  |  j j r |  j j   r |  j j   } |  j j j	 ss d | } n  | j
 d |  n  |  j j |  |  j j |  d  S(   Ns
   (void)(%s)s   %s;(   R   R!   R2   R  R  Rq  R  R   R,   R   RV   R%  Ry  (   R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   
  s    c         C@  s   |  j  j | |  d  S(   N(   R  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   |  j  j |  d  S(   N(   R  R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (
   RR   Rs   R   R   Rv   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   						t   AssignmentNodec           B@  s   e  Z d    Z d   Z RS(   c         C@  sf   |  j  |  } t | t  rb t | t  rb | j j j rb | j j   rb t |  j	 d  qb n  | S(   Ns9   Storing unsafe C derivative of temporary Python reference(
   Ru   RO   R  t   ParallelAssignmentNodet   rhsR,   R   t   is_ephemeralR   R!   (   R   RD   R[   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   &  s
    c         C@  s.   | j  |  j  |  j |  |  j |  d  S(   N(   R   R!   t   generate_rhs_evaluation_codeR|  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   1  s    (   RR   Rs   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   		t   SingleAssignmentNodec           B@  s   e  Z d  d g Z e Z e Z e Z d   Z d d  Z d   Z	 d   Z
 d   Z d   Z d	   Z e d
  Z d   Z d   Z RS(   R  R  c      	   C@  sQ  d d l  m } t |  j | j  r0|  j j j   } | r0|  j j   \ } } | d k r]t |  d k r t	 | d j
 d  d  S| d  k	 r | j d   } | d k s d | k r t	 | j
 d  d  S| d } n d	 } | d
 j |  } | d  k rt	 | d
 j
 d  d  S|  j }	 | d k rt |	 | j  rX|	 j |	 j
 f g }
 nQ t |	 | j  rg  |	 j D] } | j | j
 f ^ qt}
 n t	 |	 j
 d  d  Sx3 |
 D]+ \ } } | j | | | d t d | qWt |  d k r| d |  _ qZt |  _ q*t |  _ t |	 | j  s;t	 |	 j
 d  n  | j |	 j | |  j
 d d	 q-| d k rt |  _ t |  d
 k s| d  k rt	 |  j j
 d  d  Sg  } xa | j D]V \ } } | j |  } | d  k rt	 | j
 d  q| j | j | | j
 f  qWt |  t | j  k  r0d  St |  j | j  s[t	 |  j j
 d  n  |  j j } t |  } | j | | | t |  j j
  x | D]" \ } } } | j | | |  qWq-| d k r-t |  _ | rt	 |  j j j
 d  n  t |  j j
 d |  j j d | } | j |  q-q0n  |  j r=d  S|  j j |  d  S(   Ni   (   R  R  t   typedefi   s   Invalid positional argument.R   s   Invalid keyword argument.R  i    s   Unknown types   Invalid declarationR  s   Invalid declaration.RR  t   unions.   Struct or union members must be given by name.t
   fused_types*   fused_type does not take keyword argumentsR;   Rh   (   R  R  (   RR  R  (    R   R  RO   R  t   CallNodeR  R~  R  RN   R   R!   R$   t   compile_time_valueR8   R  R  R;   R  RY   RV  R7   t   declaration_onlyR  R4   R  R6   R   RZ  R2   R  R   R  (   R   RD   R  t	   func_nameRY   RZ   t   kwdictR   R,   R  t   varsR  R!   t   memberst   memberRJ  R;   RS  t	   fusednode(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   H  s    	+#	"	 	
	i    c         C@  s|  d d l  m } |  j j |  |  _ |  j |  } | r> | S|  j j |  |  _ |  j j |  |  j |  } | r| | St	 |  j | j
  r |  j j |  j  |  j j |  j  |  _ nl |  j j j r+t	 |  j | j  s+| j |  j j d |  j d d  d d  |  _ |  j j |  |  _ q+n  |  j j j r| j |  j d |  j j |  j j g  } | r|  j } t |  _ | j j |  _ | j j |  _ |  j d k r|  j d  k r| j t j d d	   qq|  j j |  j j |  } n |  j j |  j j |  } | s?| j s?| j rQ| j rQ| j j rQ| j  |  } n | j j ro| j! |  } n  | |  _ |  S(
   Ni   (   R  R   R_   t   stopt   =R#  t   CppExceptionConversions   CppSupport.cpp("   R   R  R  Ru   t
   unroll_rhsR  Rw   t   gil_assignment_checkt
   unroll_lhsRO   t   MemoryViewIndexNodet   analyse_broadcast_operationt$   analyse_as_memview_scalar_assignmentR,   R   t   SliceIndexNodeR!   R$   R  t   lookup_operator_for_typesR7   t   is_overloaded_assignmentR,  R  R  R   R&  R@  R  R9   R   R<   t   coerce_to_tempt   coerce_to_simple(   R   RD   t   use_tempR  t   unrolled_assignmentt   opR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRu     sH    -*			c      	   C@  s  d d l  m } m } | } d  } } }	 }
 | j j rI | j j } n| j j sa | j j r7x6 t	 | | j
  r | j p | j r | j } } qd Wt	 | | j
  r| j } | j } | r | j t j |  } n  | j } | r| j t j |  } n} | j j rl| j j rl| j |  j d t | j j  d t	 | j j t  r]| j j n | j } n t |  j d  d  Sd  }	 |	 r|	 j t j |  }	 n  d   } y- | | d   | | d  | |	 d  } Wq4t k
 rt |  j d  d  SXq;| j j r0| j j } t	 | t  s4d  Sq;d  Sn d  S| | k ret |  j d	 | | f  d  Sg  } | j |  } | g } | r| j r| j |  } | j |  n  | r| j r| j |  } | j |  n  |	 r|	 j r| j |	  }	 | j |	  n  xgt |  D]Y} | j |  j d t |  d | d
 t j } |	 d  k	 r|	 j   r| j |	 j } | j |  j d t |  d | } q| j |  j d d d |	 d | } n  | d  k	 rH| j   r!| j   r!| j | j } | j |  j d t |  d | } qH| j |  j d d d | d | } n  | j | j  |  j d | d | j! |   qW|
 | | f S(   Ni   (   R  t	   UtilNodesR6   R  s*   C array iteration requires known end indexc         S@  s3   |  d  k r | S|  j   r# |  j St d   d  S(   Ns   Not a constant.(   R$   t   has_constant_resultR  R  (   R[   t
   none_value(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt	   get_const  s
    i    s5   C array assignment currently requires known endpointss=   Assignment to/from slice of wrong length, expected %s, got %sR,   t   operatorR*  t   operand1t   operand2R#  R   R  ("   R   R  R  R$   R,   t	   is_ctupleR  R   R   RO   R  R_   R  R   R@  R   R  t   IntNodeR!   R6  R   t   constant_value_not_setR   R  t
   LetRefNodeR   R  R  R  R  t   MulNodet   AddNodet	   IndexNodeRu   (   R   R[   t   target_sizeRD   R  R  R   t
   start_nodet	   stop_nodet	   step_nodet
   check_nodet
   slice_sizeR  Rk   t   refsR  t   ix_nodet
   step_valuet   index_value(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   unroll  s    (			!	-	-'''!2c      
   C@  s   d d l  m } g  } xH t | |  D]7 \ } }	 | j t |  j d | d |	 d |  j  q& Wt d |  j d |  j |  }
 | r t	 d |  j d | |
 g  }
 n  x- | d  d  d  D] } | j
 | |
  }
 q W|
 S(	   Ni   (   R  R  R  t   firstR!   R   i(   R   R  R  R  R  R!   R  R  Rv   R   t   LetNode(   R   R  R  t   lhs_listt   rhs_listRD   R  t   assignmentsR  R  R[   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   unroll_assignments*  s    /!!c         C@  s   d d l  m } t |  j | j  s) d  St d   |  j j D  rI d  S|  j |  j t	 |  j j  |  } | sw d  S| \ } } } |  j
 | | |  j j | |  S(   Ni   (   R  c         s@  s   |  ] } | j  Vq d  S(   N(   t
   is_starred(   R   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pys	   <genexpr>:  s    (   R   R  RO   R  R  t   anyRY   R  R  RN   R  (   R   RD   R  t   unrolledR  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  6  s    $c         C@  s   |  j  j j r d  Sd d l m } t |  j | j  s< d  S|  j |  j  t	 |  j j
  |  } | sj d  S| \ } } } |  j | | | |  j j
 |  S(   Ni   (   R  (   R  R,   R  R   R  RO   R  R  R  RN   RY   R  (   R   RD   R  R  R  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  C  s    $c         C@  s   |  j  j |  d  S(   N(   R  Rq  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  Q  s    c      	   C@  sW   |  j  r= |  j j |  j | d |  j  d |  j d |  j n |  j j |  j |  d  S(   NR{  R,  R  (   R  R  R|  R  R,  R  (   R   R\   R{  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR|  T  s    				c         C@  s   |  j  j | |  d  S(   N(   R  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   _  s    c         C@  s$   |  j  j |  |  j j |  d  S(   N(   R  R   R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   b  s    (   RR   Rs   R   R2   R  R  R  R   Ru   R  R  R  R  R  R|  R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  7  s   	T0	^					t   CascadedAssignmentNodec           B@  sh   e  Z d  d d d g Z d Z d Z d Z d   Z d d  Z d   Z	 e
 d  Z d	   Z d
   Z RS(   R  R  t   coerced_valuest   cloned_valuesc         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   R  R  (   R   RD   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   z  s    i    c         C@  s  d d l  m } m } t   } xT t |  j  D]C \ } } | j |  } |  j | <| j |  | j | j	  q/ W|  j
 j |  } t |  d k r	t t |   j r | j d | |  j
 g  }	 |	 s| j | j   |  } qq	| j | j   |  } n  | j rJ| j rJ| s8| j s8| j	 j rJ| j |  } n | j |  } | j rn| |  n | |  _
 g  |  _ i  }
 g  |  _ x |  j D] } | j	 j o| j d | |  j
 g  } |  j j |  | j	 |
 k r| j	 | j	 k r| |  j
  } | s$| j | j	 |  } n  |  j j |  | |
 | j	 <qqWg  |  _ x? |  j D]4 } |
 j | j	 |  j
  } |  j j | |   q[W|  S(   Ni   (   t	   CloneNodeR  R  (   R  R  R  R~   R6  R  Rw   R  R   R,   R  Ru   RN   t   nextt   iterR  t   lookup_operatorR@  R&  R9   R   R  R<   R  R  R  R  t   assignment_overloadsR  R  R  (   R   RD   R  R  R  t	   lhs_typesRG  R  R  R  R  t
   overloaded(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRu   ~  sF    			'!	c         C@  s   |  j  j |  d  S(   N(   R  Rq  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    c         C@  s   x |  j  D] } | j |  q
 WxO t |  j |  j |  j  D]2 \ } } } | j |  | j | | d | q= Wx+ |  j  D]  } | j |  | j |  q} W|  j	 j |  |  j	 j |  d  S(   NR{  (
   R  Rq  R  R  R  R  R|  R%  Ry  R  (   R   R\   R{  R  R  t   overloadt	   rhs_value(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR|    s    +c         C@  s   |  j  j | |  d  S(   N(   R  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  su   x |  j  D] } | j |  q
 Wx= t |  j |  j  D]& \ } } | j |  | j |  q7 W|  j j |  d  S(   N(   R  R   R  R  R  R  (   R   R\   R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    "N(   RR   Rs   R   R$   R  R  R  R   Ru   R  R2   R|  R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  g  s   	1		R  c           B@  s>   e  Z d  g Z d   Z d   Z d   Z d   Z d   Z RS(   R   c         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   R   R   (   R   RD   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s2   g  |  j  D] } | j | d d ^ q
 |  _  |  S(   NR  i   (   R   Ru   (   R   RD   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    +c         C@  sV   | j  |  j  x |  j D] } | j |  q Wx |  j D] } | j |  q; Wd  S(   N(   R   R!   R   R  R|  (   R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    c         C@  s(   x! |  j  D] } | j | |  q
 Wd  S(   N(   R   R   (   R   RD   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   R   R   (   R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R   Rv   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   					t   InPlaceAssignmentNodec           B@  sA   e  Z d  d g Z d   Z d   Z d   Z d   Z d   Z RS(   R  R  c         C@  s   |  j  j |  d  S(   N(   R  R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   |  j  j |  |  _  |  j j |  |  _ |  j j sB |  j j rc |  j  j |  j j |  |  _  n< |  j j j r |  j	 d k r |  j  j t
 j |  |  _  n  |  S(   Ns   +-(   R  Ru   R  Rw   t   is_memview_indext   is_buffer_accessR@  R,   t	   is_stringR  R   R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRu     s    !c         C@  sw  | j  |  j  |  j |  j } } | j |  | j |  |  j } | d k r[ d } n | d k rz t |  j d  n  | j s | j	 r | j
 j r t |  j d  n  | d k r | j
 j r | j j d r t |  j d  n  | j | | |  nB | j rt |  j d	  n& | j d
 | j   | | j   f  | j |  | j |  | j |  | j |  d  S(   Ns   //t   /s   **s   No C inplace power operatorsA   In-place operators not allowed on object buffers in this release.t   %t	   cdivisions;   In-place non-c divide operators not allowed on int buffers.s4   Inplace operators not supported on memoryview slicess
   %s %s= %s;(   R  R  (   R   R!   R  R  Rq  t    generate_subexpr_evaluation_codeR  R   R  R  R,   R<   R  R   R   t   generate_buffer_setitem_codet   is_memview_sliceRV   R   t   generate_subexpr_disposal_codet   free_subexpr_tempsR%  Ry  (   R   R\   R  R  t   c_op(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s,    		)	&c         C@  s$   |  j  j |  |  j j |  d  S(   N(   R  R   R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   :  s    c         C@  s2   d d l  m } | j |  j |  j |  j |  j  S(   Ni   (   R  (   R   R  t
   binop_nodeR!   R  R  R  (   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   create_binop_node>  s    (   RR   Rs   R   R   Ru   R   R   R  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   				t   PrintStatNodec           B@  sG   e  Z d  d g Z d   Z e j Z d Z d   Z d   Z	 d   Z
 RS(   t	   arg_tupleRT   c         C@  s   |  j  r0 |  j  j |  } | j |  |  _  n  |  j j |  } | j |  |  _ | j t  t |  j j  d k r |  j r | j t	  n  |  S(   Ni   (
   RT   Rv   t   coerce_to_pyobjectR  R  t   printing_utility_codeRN   RY   t   append_newlinet   printing_one_utility_code(   R   RD   RT   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   L  s    	!s   Python print statementc         C@  s]  | j  |  j  |  j r; |  j j |  |  j j   } n d } t |  j j  d k r |  j r |  j j d } | j |  | j	 d | | j   | j
 |  j  f  | j |  | j |  ne |  j j |  | j	 d | |  j j   |  j | j
 |  j  f  |  j j |  |  j j |  |  j rY|  j j |  |  j j |  n  d  S(   NR  i   i    s"   if (__Pyx_PrintOne(%s, %s) < 0) %ss#   if (__Pyx_Print(%s, %s, %d) < 0) %s(   R   R!   RT   Rq  t	   py_resultRN   R  RY   R  RV   R  R%  Ry  (   R   R\   t   stream_resultR_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   Z  s6    	!		c         C@  s6   |  j  r |  j  j | |  n  |  j j | |  d  S(   N(   RT   R   R  (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   {  s    	c         C@  s0   |  j  r |  j  j |  n  |  j j |  d  S(   N(   RT   R   R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	(   RR   Rs   R   Rv   R   R   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  C  s   			!	t   ExecStatNodec           B@  s;   e  Z d  g Z d   Z e j Z d Z d   Z d   Z	 RS(   RY   c         C@  s_   xH t  |  j  D]7 \ } } | j |  } | j |  } | |  j | <q W| j t j  |  S(   N(   R6  RY   Rv   R  R  R   t   pyexec_utility_code(   R   RD   RG  R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    s   Python exec statementc         C@  s  | j  |  j  g  } x1 |  j D]& } | j |  | j | j    q  Wt | d d g d t |    } | j j	 t
 j d t } | j d | f |  x+ |  j D]  } | j |  | j |  q W| j | j | |  j   | j |  | j | t  | j j |  d  S(   NR  i   R  s   %s = __Pyx_PyExec3(%s, %s, %s);(   R   R!   RY   Rq  R  R  R  RN   R  R  R   R	   R7   RV   R%  Ry  R  R  R  R  (   R   R\   RY   R_  t   temp_result(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s     $c         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   RY   R   (   R   R\   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (
   RR   Rs   R   Rv   R   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   				t   DelStatNodec           B@  sJ   e  Z d  g Z e Z d   Z d   Z d   Z d Z d   Z	 d   Z
 RS(   RY   c         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   RY   R  (   R   RD   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s  xt  |  j  D] \ } } | j | d   } |  j | <| j j sZ | j r | j j r | j r | j j	 r t
 | j d  q q | j j r | j j j r |  j |  q | j j r t
 | j d  q | j r | j j t j k r q t
 | j d  q W|  S(   Ns   Deletion of global C variables   Deletion of non-heap C++ objects&   Deletion of non-Python, non-C++ object(   R6  RY   R!  R$   R,   R<   R9   R  R   t
   is_cglobalR   R!   R   RF   R  R   R  R   R   t   bytearray_type(   R   RD   RG  R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    !c         C@  s1   x* |  j  D] } | j j r
 |  j   q
 q
 Wd  S(   N(   RY   R,   R<   R   (   R   RD   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    s   Deleting Python objectc         C@  s   | j  |  j  x |  j D] } | j j sV | j j sV | j ro | j j t j	 k ro | j
 | d |  j q | j j r | j j j r | j |  | j d | j    | j |  q q Wd  S(   Nt   ignore_nonexistings
   delete %s;(   R   R!   RY   R,   R<   R  R  R   R   R  t   generate_deletion_codeR  R   RF   R  Rq  RV   R   R%  (   R   R\   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   RY   R   (   R   R\   R_  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R2   R  R   Rv   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   					R  c           B@  s    e  Z g  Z d    Z d   Z RS(   c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   	t   IndirectionNodec           B@  s   e  Z d  Z d   Z RS(   s   
    This adds an indirection so that the node can be shared and a subtree can
    be removed at any time by clearing self.stats.
    c         C@  s'   t  t |   j | d j d | d  S(   Ni    R   (   Rl   R  R   R!   (   R   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R}   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   t   BreakStatNodec           B@  s&   e  Z g  Z e Z d    Z d   Z RS(   c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s@   | j  |  j  | j s, t |  j d  n | j | j  d  S(   Ns   break statement not inside loop(   R   R!   t   break_labelR   R_  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	(   RR   Rs   R   R7   R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   	t   ContinueStatNodec           B@  s&   e  Z g  Z e Z d    Z d   Z RS(   c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  sA   | j  s t |  j d  d  S| j |  j  | j | j   d  S(   Ns"   continue statement not inside loop(   t   continue_labelR   R!   R   R_  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    	(   RR   Rs   R   R7   R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   	R  c           B@  se   e  Z d  g Z e Z e Z e Z e Z d   Z	 d   Z
 d Z d   Z d   Z d   Z d   Z RS(   R6   c         C@  s   | j  } | |  _  | s, t |  j d  |  S|  j r |  j rQ t |  j d  n  |  j j |  |  _ | j sx | j r t |  j j d  q |  j j | j  |  |  _ n1 | j r | j	 r | j r t |  j d  n  |  S(   Ns!   Return not inside a function bodys$   Return with value in async generators"   Return with value in void functions   Return value required(
   R>  R   R!   R6   t   in_async_genRu   R   R  R@  R<   (   R   RD   R>  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   ,  s"    				


c         C@  s   |  j  j r |  j   n  d  S(   N(   R>  R<   R   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   A  s    s   Returning Python objectc         C@  sW  | j  |  j  |  j s d  S|  j } |  j j rc | j t j |  j  | rc | j rc d  } qc n  | rt| j
 |  |  j j r d d l m } | j d t j d |  j d | j d | d | d |  j  n |  j r$| j j t j d	 d
   | j d t j | j   f  | j |  n3 | j |  | j d t j | j |  j  f  | j |  | j |  n |  j j r|  j r|  j r| j j t j d d
   | j d  n  | j d t j  q| j t j |  j  n% |  j j r|  j  | |  j j!  n  x- | j" j#   D] \ } } | j$ | |  q#W| j% | j&  d  S(   Ni   (   R  t	   lhs_cnamet   lhs_typet   lhs_posR  R\   R  t   ReturnWithStopIterations   Coroutine.cs-   %s = NULL; __Pyx_ReturnWithStopIteration(%s);s   %s = %s;R  s/   PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration); s
   %s = NULL;('   R   R!   R>  R6   R<   Rc  R   R6  R   R$   Rq  R  R   R  t   put_acquire_memoryviewsliceR   t   in_generatorR   R  R   R&  RV   R  R%  Ru  Rv  Rx  Ry  R  R/  R\  R  t
   put_returnRp  R  t   temps_holding_referenceR  R_  R`  (   R   R\   R6   R  R9  R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   G  sZ    													c         C@  s7   |  j  r | j d  n  | j d t j | f  d  S(   Ns%   #pragma omp critical(__pyx_returning)s   %s = %s;(   t   in_parallelt   putln_openmpRV   R   R6  (   R   R\   R6   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    	c         C@  s)   |  j  d  k	 r% |  j  j | |  n  d  S(   N(   R6   R$   R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s    |  j  r |  j  j |  n  d  S(   N(   R6   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	(   RR   Rs   R   R7   R   R2   R  R  R  Rv   R   R   R   R  R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   				9		t   RaiseStatNodec           B@  sS   e  Z d  d d d g Z e Z d   Z e j Z d Z	 d   Z
 d   Z d   Z RS(	   t   exc_typet	   exc_valuet   exc_tbt   causec         C@  s  |  j  r0 |  j  j |  } | j |  |  _  n  |  j r` |  j j |  } | j |  |  _ n  |  j r |  j j |  } | j |  |  _ n  |  j r |  j j |  } | j |  |  _ n  d  |  _ |  j  r|  j r|  j r|  j  } d d l m	 } t
 | | j  rB| j p2| j d  k	 o2| j j rB| j } n  | j r| j j r| j |  _ |  j d k rd  |  _  qqn  |  S(   Ni   (   R  t   MemoryError(   R  Ru   R  R	  R
  R  R$   t   builtin_exc_nameR   R  RO   R  RY   R  R  R9   R   t
   is_builtinR;   (   R   RD   R  R	  R
  R  t   excR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s0    						%s   Raising exceptionc         C@  s  | j  |  j  |  j d k r@ | j d | j |  j   d  S|  j r |  j j |  |  j j   } |  j j r | j	 j
 |  j j  q n d } |  j r |  j j |  |  j j   } n d } |  j r |  j j |  |  j j   } n d } |  j r#|  j j |  |  j j   } n d } | j	 j t  | j d | | | | f  xI |  j |  j |  j |  j f D]) } | ru| j |  | j |  ququW| j | j |  j   d  S(   NR  s   PyErr_NoMemory(); %sR  s   __Pyx_Raise(%s, %s, %s, %s);(   R   R!   R  RV   R  R  Rq  R  R9   R   t   use_entry_utility_codeR   R	  R
  R  R  t   raise_utility_codeR%  Ry  (   R   R\   t	   type_codet
   value_codet   tb_codet
   cause_codeR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sF    				%c         C@  s   |  j  d  k	 r% |  j  j | |  n  |  j d  k	 rJ |  j j | |  n  |  j d  k	 ro |  j j | |  n  |  j d  k	 r |  j j | |  n  d  S(   N(   R  R$   R   R	  R
  R  (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  st   |  j  r |  j  j |  n  |  j r8 |  j j |  n  |  j rT |  j j |  n  |  j rp |  j j |  n  d  S(   N(   R  R   R	  R
  R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    				(   RR   Rs   R   R7   R   Rv   R   R   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   			*	
t   ReraiseStatNodec           B@  s5   e  Z g  Z e Z d    Z e j Z d Z	 d   Z
 RS(   c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    s   Raising exceptionc         C@  s  | j  |  j  | j j } | r | j j t  | j | d  | j | d  | j | d  | j	 d t
 |   x | D] } | j d |  q W| j	   | j	 | j |  j   n9 | j j t j d d   | j	 d | j |  j   d  S(	   Ni    i   i   s&   __Pyx_ErrRestoreWithState(%s, %s, %s);s   %s = 0; t   ReRaiseExceptions   Exceptions.cs   __Pyx_ReraiseException(); %s(   R   R!   R  t   exc_varsR   R  Rd  Rw  Rt  RV   R  R/  R  R   R&  (   R   R\   R  t   varname(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    
	(   RR   Rs   R   R7   R   Rv   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   		t   AssertStatNodec           B@  sG   e  Z d  d g Z d   Z e j Z d Z d   Z d   Z	 d   Z
 RS(   R  R6   c         C@  s   |  j  j |  |  _  |  j r |  j j |  } | j t j k sO | j j r d d l m	 } | | j
 d | g d t } | j | d t j |  |  _ q | j |  |  _ n  |  S(   Ni   (   R  RY   t   slowt   skip_children(   R  t   analyse_boolean_expressionR6   Ru   R,   R   t
   tuple_typeR  R  R  R!   R7   R  (   R   RD   R6   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    	$s   Raising exceptionc         C@  s  | j  d  | j  d  | j |  j  |  j j |  | j  d |  j j    |  j r |  j j |  | j  d |  j j    |  j j |  |  j j	 |  n | j  d  | j  | j
 |  j   | j  d  |  j j |  |  j j	 |  | j  d  | j  d  d  S(   Ns!   #ifndef CYTHON_WITHOUT_ASSERTIONSs!   if (unlikely(!Py_OptimizeFlag)) {s   if (unlikely(!%s)) {s*   PyErr_SetObject(PyExc_AssertionError, %s);s$   PyErr_SetNone(PyExc_AssertionError);R  s   #endif(   RV   R   R!   R  Rq  R   R6   R  R%  Ry  R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   ,  s.    	c         C@  s<   |  j  j | |  |  j d  k	 r8 |  j j | |  n  d  S(   N(   R  R   R6   R$   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   F  s    c         C@  s0   |  j  j |  |  j r, |  j j |  n  d  S(   N(   R  R   R6   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   K  s    	(   RR   Rs   R   Rv   R   R   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   				t
   IfStatNodec           B@  sM   e  Z d  d g Z d   Z d   Z d   Z e d  Z d   Z d   Z	 RS(   t
   if_clausest   else_clausec         C@  sA   x |  j  D] } | j |  q
 W|  j r= |  j j |  n  d  S(   N(   R   R   R!  (   R   RD   t	   if_clause(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   Y  s    	c         C@  sM   g  |  j  D] } | j |  ^ q
 |  _  |  j rI |  j j |  |  _ n  |  S(   N(   R   Rv   R!  (   R   RD   R"  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   _  s    (	c         C@  s
  | j  |  j  | j   } t |  j  } |  j rW |  j |  j d |  j d t n
 | d 8} xL t |  j  D]; \ } } |  j | | j	  | j
 | | d | | k qq W|  j r | j  |  j j  | j d  |  j j
 |  | j d  n  | j |  d  S(   Nit   inversei   t   is_lasts
   /*else*/ {R  (   R   R!   R(  RN   R   R!  t   _set_branch_hintR7   R6  R   R   RV   Ra  (   R   R\   R  t   lastRG  R"  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   e  s    	#
 	c         C@  s   | j  s d  St | t  s' | j r+ d  St | j d t t f  r t | j  d k r t t t	 t
 t f } x+ | j d  D] } t | |  s d  Sq Wn  | r d n d | _ n  d  S(   Nii   R  Rn  (   R   RO   R   R   R  R  RN   R  R  R  Rx  R{  t   branch_hint(   R   t   clauset   statements_nodeR#  t   non_branch_nodesR[   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR%  x  s    	c         C@  sM   x! |  j  D] } | j | |  q
 W|  j d  k	 rI |  j j | |  n  d  S(   N(   R   R   R!  R$   (   R   RD   R\   R(  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  sA   x |  j  D] } | j |  q
 W|  j r= |  j j |  n  d  S(   N(   R   R   R!  (   R   R\   R"  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	(
   RR   Rs   R   R   Rv   R   R2   R%  R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  Q  s   				t   IfClauseNodec           B@  sG   e  Z d  d g Z d Z d   Z d   Z d   Z d   Z d   Z	 RS(   t	   conditionR   c         C@  s   |  j  j |  d  S(   N(   R   R   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s.   |  j  j |  |  _  |  j j |  |  _ |  S(   N(   R,  t   analyse_temp_boolean_expressionR   Rv   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   |  j  j |  | j |  j  |  j  j   } |  j rN d |  j | f } n  | j d |  |  j  j |  |  j  j |  |  j	 j
 |  | j |  j d t | p |  j	 j s | j |  n  | j d  d  S(   Ns   %s(%s)s	   if (%s) {R  R  (   R,  Rq  R   R!   R   R'  RV   R%  Ry  R   R   R2   R   R_  (   R   R\   R  R$  R,  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	c         C@  s*   |  j  j | |  |  j j | |  d  S(   N(   R,  R   R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s$   |  j  j |  |  j j |  d  S(   N(   R,  R   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    N(
   RR   Rs   R   R$   R'  R   Rv   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR+    s   				t   SwitchCaseNodec           B@  s8   e  Z d  d g Z d   Z d   Z d   Z d   Z RS(   t
   conditionsR   c         C@  s%   x |  j  D] } | j |  q
 Wd  S(   N(   R/  Rq  (   R   R\   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt"   generate_condition_evaluation_code  s    c         C@  s   t  |  j  } | j j d } xi t |  j d  D]U \ } } | j d | j    | j | j  | r2 | | k  r2 | j d  q2 q2 W|  j	 j
 |  | j |  j d t | j d  d  S(   NR  i   s   case %s:s   CYTHON_FALLTHROUGH;R  s   break;(   RN   R/  R   R   R6  RV   R   R   R!   R   R   R2   (   R   R\   t   num_conditionst   line_tracing_enabledRG  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s;   x! |  j  D] } | j | |  q
 W|  j j | |  d  S(   N(   R/  R   R   (   R   RD   R\   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s5   x |  j  D] } | j |  q
 W|  j j |  d  S(   N(   R/  R   R   (   R   R\   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R0  R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR.    s
   			t   SwitchStatNodec           B@  s2   e  Z d  d d g Z d   Z d   Z d   Z RS(   t   testt   casesR!  c         C@  s   |  j  j |  x |  j D] } | j |  q W| j |  j  | j d |  j  j    x |  j D] } | j |  qe W|  j	 d  k	 r | j d  |  j	 j |  | j d  n | j d  | j d  d  S(   Ns   switch (%s) {s   default:s   break;s   default: break;R  (   R4  Rq  R5  R0  R   R!   RV   R   R   R!  R$   (   R   R\   t   case(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s`   |  j  j | |  x! |  j D] } | j | |  q W|  j d  k	 r\ |  j j | |  n  d  S(   N(   R4  R   R5  R!  R$   (   R   RD   R\   R6  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    c         C@  sW   |  j  j |  x |  j D] } | j |  q W|  j d  k	 rS |  j j |  n  d  S(   N(   R4  R   R5  R!  R$   (   R   R\   R6  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    (   RR   Rs   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR3    s   		t   LoopNodec           B@  s   e  Z RS(    (   RR   Rs   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR7    s   t   WhileStatNodec           B@  sD   e  Z d  d d g Z d   Z d   Z d   Z d   Z d   Z RS(   R,  R   R!  c         C@  s0   |  j  j |  |  j r, |  j j |  n  d  S(   N(   R   R   R!  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	c         C@  s[   |  j  r! |  j  j |  |  _  n  |  j j |  |  _ |  j rW |  j j |  |  _ n  |  S(   N(   R,  R-  R   Rv   R!  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv      s    		c         C@  s  | j  |  j  | j   } | j d  |  j r |  j j |  |  j j |  | j d |  j j    |  j j |  n  |  j	 j
 |  | j | j  | j d  | j } | j |  |  j r| j  |  j j  | j d  |  j j
 |  | j d  n  | j |  d  S(   Ns   while (1) {s   if (!%s) break;R  s
   /*else*/ {(   R   R!   t   new_loop_labelsRV   R,  Rq  R%  R   Ry  R   R   Ra  R  R  t   set_loop_labelsR!  (   R   R\   t   old_loop_labelsR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   (  s*    			c         C@  s[   |  j  r |  j  j | |  n  |  j j | |  |  j d  k	 rW |  j j | |  n  d  S(   N(   R,  R   R   R!  R$   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   ?  s
    	c         C@  sL   |  j  r |  j  j |  n  |  j j |  |  j rH |  j j |  n  d  S(   N(   R,  R   R   R!  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   F  s
    		(   RR   Rs   R   R   Rv   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR8    s   				t   DictIterationNextNodec        
   B@  sn   e  Z d  d d d d d d d d d	 g
 Z d Z Z d Z Z d Z Z	 d
   Z
 d   Z d   Z d   Z RS(   t   dict_objt   expected_sizet   pos_index_vart   coerced_key_vart   coerced_value_vart   coerced_tuple_vart
   key_targett   value_targett   tuple_targett   is_dict_flagc         C@  sP   t  j |  | j d | d | d | d | d | d | d | d t d	 t j 	d  S(
   NR=  R>  R?  RC  RD  RE  RF  R  R,   (   R   R   R!   R7   R   t   c_bint_type(   R   R=  R>  R?  RC  RD  RE  RF  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   Z  s    c         C@  s  d d l  m } |  j j |  |  _ |  j j |  |  _ |  j r[ |  j j |  |  _ n  |  j r |  j j |  |  _ | j |  j j	 t
 j  |  _ |  j j |  j j |  |  _ n  |  j r|  j j |  |  _ | j |  j j	 d t
 j |  _ |  j j |  j j |  |  _ n  |  j ru|  j j |  |  _ | j |  j j	 t
 j  |  _ |  j j |  j j |  |  _ n  |  j j |  |  _ |  S(   Ni   (   R  R,   (   R   R  R=  Ru   R>  R?  RC  Rw   t   TempNodeR!   R   R	   t   key_refR@  R,   R@  RD  t	   value_refRA  RE  t	   tuple_refRB  RF  (   R   RD   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   h  s&    		!	!!	!c         C@  s   |  j  j | |  d  S(   N(   R=  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   }  s    c   	   
   C@  s'  | j  j t j d d   |  j j |  g  } g  } x |  j |  j |  j f |  j	 |  j
 |  j f |  j |  j |  j f g D]d \ } } } | d  k r d } n3 | j | | | f  | j |  d | j   } | j |  q~ W| j j t j t  } | j d | |  j j   |  j j   |  j j   | d | d | d |  j j   f  | j d	 |  | j | j d
 | |  j   | j j |  x* | D]" \ } } } | j  | j    qWx$ | D] \ } } } | j |  qWx4 | D], \ } } } | j! | |  | j" |  qWd  S(   Nt	   dict_iters
   Optimize.cR  s   &%ss7   %s = __Pyx_dict_iter_next(%s, %s, &%s, %s, %s, %s, %s);i    i   i   s   if (unlikely(%s == 0)) break;s   %s == -1(#   R   R  R   R&  R=  Rq  RI  R@  RC  RJ  RA  RD  RK  RB  RE  R$   R  t   allocateR   R  R  R   R?   R2   RV   R  R>  R?  RF  t   error_goto_ifR!   R  R  R|  t   release(	   R   R\   R  t   temp_addressesR  R   Rz  t   addrt   result_temp(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sB    (		 N(   RR   Rs   R   R$   R@  RI  RA  RJ  RB  RK  R   Rv   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR<  N  s   		


			t   SetIterationNextNodec           B@  sN   e  Z d  d d d d d g Z d
 Z Z d   Z d   Z d   Z d	   Z	 RS(   t   set_objR>  R?  RA  RD  t   is_set_flagc         C@  sD   t  j |  | j d | d | d | d | d | d t d t j d  S(   NRT  R>  R?  RD  RU  R  R,   (   R   R   R!   R7   R   RG  (   R   RT  R>  R?  RD  RU  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s   d d l  m } |  j j |  |  _ |  j j |  |  _ |  j j |  |  _ |  j j |  |  _ | j |  j j	 d t
 j |  _ |  j j |  j j |  |  _ |  j j |  |  _ |  S(   Ni   (   R  R,   (   R   R  RT  Ru   R>  R?  RD  Rw   RH  R!   R   R	   RJ  R@  R,   RA  RU  (   R   RD   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    !c         C@  s   |  j  j | |  d  S(   N(   RT  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s2  | j  j t j d d   |  j j |  |  j } | j |  | j j	 t
 j t  } | j d | |  j j   |  j j   |  j j   | j   |  j j   f  | j d |  | j | j d | |  j   | j j |  | j | j    |  j j |  |  j j |  j |  | j |  d  S(   Nt   set_iters
   Optimize.cs/   %s = __Pyx_set_iter_next(%s, %s, &%s, &%s, %s);s   if (unlikely(%s == 0)) break;s   %s == -1(   R   R  R   R&  RT  Rq  RJ  RM  R  R  R   R?   R2   RV   R  R>  R   R?  RU  RN  R!   R  R  RA  RD  R|  RO  (   R   R\   RJ  RR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s&    			 N(
   RR   Rs   R   R$   RA  RJ  R   Rv   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRS    s   	
			c         K@  sG   d | k r6 | d j  r& t |  |  St |  |  Sn t |  |  Sd  S(   Nt   iterator(   t   is_asynct   AsyncForStatNodet   ForInStatNodet   ForFromStatNode(   R!   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   ForStatNode  s
    t   _ForInStatNodec           B@  s_   e  Z d  d d d d g Z d Z e Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   Rz  R   RW  R   R!  c         C@  s   t  d   d  S(   Ns!   must be implemented by subclasses(   t   NotImplementedError(   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   _create_item_node  s    c         C@  sJ   |  j  j |  |  j j |  |  j r< |  j j |  n  |  j   d  S(   N(   Rz  R  R   R   R!  R_  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    	c         C@  s   |  j  j |  |  _  |  j j |  |  _ |  j   |  j j |  |  _ |  j r |  j j j sq |  j j j	 r |  j  j j
 |  j j  r n |  j j |  j  j |  |  _ |  j j |  |  _ |  j r |  j j |  |  _ n  |  S(   N(   Rz  Rw   RW  Rv   R_  R   RX  R,   R   R   RA  R@  R   R!  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    

	c         C@  s  | j  |  j  | j   } |  j j |  | j d  |  j j |  |  j j |  j |  |  j	 j
 |  | j  |  j  | j | j  | j d  | j } | j |  |  j ro| j } | j d  | _ | j d  |  j j
 |  | j d  | j | j  r_| j |  | j  |  j  | j | j  |  j j |  | j |  n  | j |  n  | j  |  j  | j |  r| j |  n  |  j j |  |  j j |  d  S(   Ns
   for (;;) {R  t   outer_continues
   /*else*/ {(   R   R!   R9  RW  Rq  RV   R   Rz  R|  R   R   Ra  R  R  R:  R!  R(  R~  R_  R%  Ry  (   R   R\   R;  R  t   orig_continue_label(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s<    			c         C@  sb   |  j  j | |  |  j j | |  |  j j | |  |  j d  k	 r^ |  j j | |  n  d  S(   N(   Rz  R   RW  R   R!  R$   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   A  s
    c         C@  s`   |  j  j |  |  j j |  |  j j |  |  j rL |  j j |  n  |  j j |  d  S(   N(   Rz  R   RW  R   R!  R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   H  s    	N(   RR   Rs   R   R$   R   R2   RX  R_  R   Rv   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR]    s   
				(	RZ  c           B@  s   e  Z e Z d    Z RS(   c         C@  s&   d d l  m } | |  j  |  _ d  S(   Ni   (   t   NextNode(   R  Rb  RW  R   (   R   Rb  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR_  V  s    (   RR   Rs   R2   RX  R_  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRZ  Q  s   RY  c           B@  s    e  Z e Z d    Z d   Z RS(   c         K@  sY   d | k s t   d d l m } | j | d j d d  | d <t j |  | |  d  S(   NR   i   (   R  RW  R_  (   R  R   R  t   AwaitIterNextExprNodeR!   R$   R]  R   (   R   R!   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   c  s     c         C@  s,   d d l  m } | j |  j  |  j _ d  S(   Ni   (   R  (   R   R  t   AsyncNextNodeRW  R   R_  (   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR_  j  s    (   RR   Rs   R7   RX  R   R_  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRY  [  s   	R[  c           B@  s   e  Z d  d d d d d g Z e Z d Z d Z e Z d Z	 d   Z
 d   Z d	   Z d
   Z d   Z i d d 6d d 6d d 6d d 6Z d   Z d   Z RS(   Rz  t   bound1t   bound2t   stepR   R!  s&   For-loop using object bounds or targetc         C@  s@   x9 |  j  |  j |  j f D] } | j j r |  j   q q Wd  S(   N(   Rz  Re  Rf  R,   R<   R   (   R   RD   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s@   |  j  j |  |  j j |  |  j r< |  j j |  n  d  S(   N(   Rz  R  R   R   R!  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	c         C@  s  d d l  m } |  j j |  |  _ |  j j |  |  _ |  j j |  |  _ |  j d  k	 r t	 |  j | j
  r t |  j j d d  n  |  j j |  |  _ n  |  j |  |  j j } | j p | j s t |  j j d  n  |  j j |  |  _ |  j r|  j j |  |  _ n  |  S(   Ni   (   R  sd   Probable infinite loop in for-from-by statement. Consider switching the directions of the relations.i   s>   for-from loop variable must be c numeric type or Python object(   R   R  Rz  Rw   Re  Ru   Rf  Rg  R$   RO   t   UnaryMinusNodeR   R!   t   set_up_loopR,   R<   R  R   R   Rv   R!  (   R   RD   R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s"    
	c         C@  s>  d d l  m } |  j j } | j r. | } n | j rM t |  j j d  n  | j r_ t	 j
 n t	 j } |  j j j s t	 j | |  j j  } n  |  j j j s t	 j | |  j j  } n  |  j d  k	 r |  j j j r t	 j | |  j j  } n  |  j j | |  |  _ |  j j | |  |  _ |  j j sJ|  j j |  |  _ n  |  j d  k	 r|  j j | |  |  _ |  j j s|  j j |  |  _ qn  | j s| j rt |  _ t |  j | j  rt |  j d   n  |  j |  _ d  |  _ nE t |  _ | j |  j | |  } | |  _ | j |  j |  |  _ d  S(   Ni   (   R  sW   Integer loops over enum values are fragile. Please cast to a safe integer type instead.sE   Buffer or memoryview slicing/indexing not allowed as for-loop target.(   R   R  Rz  R,   R  t   is_enumR   R!   R<   R   R>   R?   Re  t   widest_numeric_typeRf  Rg  R$   R@  R   R  R2   t   is_py_targetRO   t   BufferIndexNodeR   t   loopvar_nodet   py_loopvar_nodeR7   RH  R  R  (   R   RD   R  R  t	   loop_typet   c_loopvar_node(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRi    s@    			
			c         C@  s  | j  |  j  | j   } |  j } |  j j |  |  j j |  |  j |  j \ } } |  j	 d  k	 r |  j	 j |  |  j	 j   } d | d | f } n d } d d l m } t |  j | j  r |  j j |  n  t |  j | j  r|  j j |  n  |  j j j rt j n	 |  j j } | rR|  j rR| j j | t  }	 n |  j j   }	 | j r| j r|  j d d k r| j d |	 |  j j   | | |	 |  j |  j j   | |	 | f
  n> | j d |	 |  j j   | |	 |  j |  j j   |	 | f  |  j }
 |
 d  k rE| rE| j  |  j j | |	  }
 n  |
 d  k	 rt|
 j |  |  j j! |
 |  n  |  j" j# |  | j$ | j%  | r*|  j r*|  j j& j' r| j( |  j j d   } | j |  | j) |  j j& j*  } |  j j& j+ j, r'| j- j. t/ j0 d	 d
   d } n7 | j- j. t/ j0 d d
   d j1 |  j j& j+ j2  } | j | | j   | | j3 | j   |  j j  f  | j4 | j    n	 |  j } | j5 |  j j | |  j j& j+  } |	 | _6 | j7 |  |  j j& j' r*| j8 | j   | j  | j9 |  q*n  | j d  | rp|  j rp|  j j |  |  j j! |  j |  n  | r|  j r| j j: |	  n  | j; } | j< |  |  j= r| j d  |  j= j# |  | j d  n  | j$ |  |  j j> |  |  j j? |  |  j j> |  |  j j? |  t |  j | j  rT|  j j9 |  n  t |  j | j  r||  j j9 |  n  |  j	 d  k	 r|  j	 j> |  |  j	 j? |  n  d  S(   Ns   %s=%si    t   1i   (   R  t   >s-   for (%s = %s%s + %s; %s %s %s + %s; ) { %s%s;s!   for (%s = %s%s; %s %s %s; %s%s) {t   GetModuleGlobalNames   ObjectHandling.cs%   __Pyx_GetModuleGlobalName(%s, %s); %st   GetNameInClasss$   __Pyx_GetNameInClass(%s, {}, %s); %sR  s
   /*else*/ {(@   R   R!   R9  t
   from_rangeRe  Rq  Rf  t   relation_tablet	   relation1Rg  R$   R   R   R  RO   Rn  RH  RM  Ro  Rz  R,   Rj  R   R>   Rl  R  R  R2   R  R  t	   relation2RV   R  R|  R   R   Ra  R  R   t   is_pyglobalt
   PyTempNodeR  R;   RS  R  R   R  R   R&  t   formatR#  R  R  t   CoerceFromPyTypeNodet	   temp_codet   generate_result_codeRs  RO  R  R  R:  R!  R%  Ry  (   R   R\   R;  Rv  t   offsett   incopRg  R  t   loopvar_typet   loopvar_namet   coerced_loopvar_nodet   target_nodet   interned_cnamet   lookup_funct   from_py_nodeR  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	$&								#				R   s   ++s   <=s   +1R  s   --s   >=s   -1Rs  c         C@  s   |  j  j | |  |  j j | |  |  j j | |  |  j d  k	 r^ |  j j | |  n  |  j j | |  |  j d  k	 r |  j j | |  n  d  S(   N(   Rz  R   Re  Rf  Rg  R$   R   R!  (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   I  s    c         C@  s|   |  j  j |  |  j j |  |  j j |  |  j rL |  j j |  n  |  j j |  |  j rx |  j j |  n  d  S(   N(   Rz  R   Re  Rf  Rg  R   R!  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   S  s    		N(   R   s   ++(   s   +1s   ++(   R   s   --(   s   -1s   --(   RR   Rs   R   R2   Rl  R$   Rn  Ro  Rv  R   R   R   Rv   Ri  R   Rw  R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR[  o  s$   				&	q
	
t   WithStatNodec           B@  sP   e  Z d  Z d d d d g Z d	 Z d	 Z d   Z d   Z d   Z	 d   Z
 RS(
   s  
    Represents a Python with statement.

    Implemented by the WithTransform as follows:

        MGR = EXPR
        EXIT = MGR.__exit__
        VALUE = MGR.__enter__()
        EXC = True
        try:
            try:
                TARGET = VALUE  # optional
                BODY
            except:
                EXC = False
                if not EXIT(*EXCINFO):
                    raise
        finally:
            if EXC:
                EXIT(None, None, None)
            MGR = EXIT = VALUE = None
    t   managert
   enter_callRz  R   c         C@  s4   |  j  j |  |  j j |  |  j j |  d  S(   N(   R  R   R  R   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s}   |  j  j |  |  _  |  j j |  |  _ |  j rd d d l m } | |  j j |  j j  |  _ n  |  j	 j
 |  |  _	 |  S(   Ni   (   RH  (   R  Ru   R  Rz  R  RH  R!   R,   t   target_tempR   Rv   (   R   RD   RH  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    	!c         C@  s=   |  j  j | |  |  j j | |  |  j j | |  d  S(   N(   R  R   R  R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s9  | j  |  j  | j d  |  j j |  | j j t d t |  _	 | j
 j t j d d   | j d |  j	 |  j j   | j t |  j r d n d   | j |  j	 |  j  f  | j |  j	  | j   } | j } |  j j |  |  j rW|  j j |  |  j j |  | j d |  j j   |  j j   f  |  j j |  n |  j j |  |  j j |  |  j j |  |  j j |  | | _ |  j j  |  | j! |  r| j"   } | j# |  | j$ |  | j% |  j	 t  | j# |  | j$ |  n  | j j& |  j	  | j d	  d  S(
   Ns   /*with:*/ {R  t   PyObjectLookupSpecials   ObjectHandling.cs-   %s = __Pyx_PyObject_LookupSpecial(%s, %s); %st	   __aexit__t   __exit__s   %s = %s;R  ('   R   R!   RV   R  Rq  R  R  R	   R2   t   exit_varR   R  R   R&  R  R  R   RX  R  R  R{  R]  R  Rz  R  RM  Ru  R   Rx  R%  Ry  R   R   R~  R(  R_  Ra  R  R  (   R   R\   R  t   intermediate_error_labelt   step_over_label(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sF    		!		)	N(   RR   Rs   R}   R   R$   R  R  R   Rv   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  ^  s   		
	t   WithTargetAssignmentStatNodec           B@  sD   e  Z d  d g Z d Z d Z d   Z d   Z d   Z d   Z	 RS(   R  R  c         C@  s   |  j  j |  d  S(   N(   R  R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  sJ   |  j  j |  |  _  |  j  j |  |  j j j |  j  j |  |  _ |  S(   N(   R  Rw   R  t	   with_nodeR  R@  R,   R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    !c         C@  s=   |  j  j |  |  j j |  j  |  |  j j j |  d  S(   N(   R  Rq  R  R|  R  R  RO  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c         C@  s$   |  j  j |  |  j j |  d  S(   N(   R  R   R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    N(
   RR   Rs   R   R$   R  R  R   Rv   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   
			t   TryExceptStatNodec           B@  sY   e  Z d  d d g Z e Z d   Z d   Z e j Z	 d Z
 d   Z d   Z d   Z RS(	   R   t   except_clausesR!  c         C@  sQ   |  j  j |  x |  j D] } | j |  q W|  j rM |  j j |  n  d  S(   N(   R   R   R  R!  (   R   RD   t   except_clause(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    	c         C@  s   |  j  j |  |  _  d } xb t |  j  D]Q \ } } | j |  } |  j | <| rj t | j d  n  | j s+ d } q+ q+ W| |  _ |  j r |  j j |  |  _ n  |  S(   Ni    s   default 'except:' must be lasti   (	   R   Rv   R6  R  R   R!   t   patternt   has_default_clauseR!  (   R   RD   t   default_clause_seenRG  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    			s   Try-except statementc         @  s:    j  |  j    j d    j }   j }   j }   j   }   j }   j d  }   j d  }   j d  }	   j d  }
 | r   j d  n d  } | r   j d  n d  }   j d  } g  t
 d	  D] }   j j t t  ^ q    j   }   j d
  |
   _ |   _ |   _ |  j j      j  |  j d t   j d    j j   }   j |  } | r!  j j t  |  j s| j d  | j d  n  | j d d j g   D] } d | ^ q  x  D] } | j |  qW   f d   } n@ g   D] } d | ^ q(} | j d d j |   d   } |   _ |	   _ |  j j } |  j r  j  |  j j    j d  |  j j      j d  | s|  j j } qn  | r| sx  D] }   j | t  qW  j |  n    j |  x$ | D] \ } }   j | |  q.W  j j } |    j _ x! |  j  D] } | j!   |  qpW|   j _ |  j" s  j |  qn  x | | f | | f | | f |
 | f |	 | f g D] \ } }   j |  r| r(  j |  r(  j |  n    j |    j  |  j d t | r[|   n    j |  qqW  j |  r| r  j |  r  j |  n    j |  | r|   qn    j |  r  j |  n    j d  x  D] }   j j# |  qW|   _ |   _ |   _ |   _ d  S(   NR  t   exception_handledt   except_errort   except_returnt
   try_returnt	   try_breakt   try_continuet   try_endi   s
   /*try:*/ {R  R  R  R  s   __Pyx_ExceptionSave(%s);s   , s   &%sc          @  s<   x  D] }    j  |   q W  j d d j    d  S(   Ns   __Pyx_ExceptionReset(%s);s   , (   Rt  RV   R   (   R;   (   R\   t   exc_save_vars(    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   restore_saved_exception3  s    	s	   (void)%s;s   %s /* mark used */RM   c           S@  s   d  S(   N(    (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  >  s    s   /*else:*/ {($   R   R!   RV   R`  R  R  R{  R]  R(  R$   R  R  R  R	   R2   R7  R   R   t   all_free_managed_tempsR~  R   R  t   reset_exception_utility_codeR  R   t   put_xgotrefR   R!  R  R_  Ra  t   current_exceptR  t   generate_handling_codeR  R  (   R   R\   t   old_return_labelt   old_break_labelt   old_continue_labelR  R  t   except_end_labelt   except_error_labelt   except_return_labelt   try_return_labelt   try_break_labelt   try_continue_labelt   try_end_labelR  t   save_exct   temps_to_clean_upt	   can_raiseR  R  t   mark_vars_usedt   normal_case_terminatest	   temp_namet	   temp_typet   outer_exceptR  t
   exit_labelt	   old_labelR9  (    (   R\   R  s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    				+					(								
			c         C@  s`   |  j  j | |  x! |  j D] } | j | |  q W|  j d  k	 r\ |  j j | |  n  d  S(   N(   R   R   R  R!  R$   (   R   RD   R\   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    c         C@  sQ   |  j  j |  x |  j D] } | j |  q W|  j rM |  j j |  n  d  S(   N(   R   R   R  R!  (   R   R\   t   except_node(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    	(   RR   Rs   R   R2   R  R   Rv   R   R   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   				y	t   ExceptClauseNodec           B@  sY   e  Z d  d d d g Z d	 Z d	 Z e Z d   Z d   Z	 d   Z
 d   Z d   Z RS(
   R  Rz  R   R	  c         C@  s0   |  j  r |  j  j |  n  |  j j |  d  S(   N(   Rz  R  R   R   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	c         C@  s   | j  |  _ |  j r] xE t |  j  D]1 \ } } | j |  } | j |  |  j | <q% Wn  |  j r d d l m } | j	 |  j
  |  _ |  j j | |  j  |  _ n  |  j j |  |  _ |  S(   Ni   (   R  (   Rj  t   function_nameR  R6  Rv   R  Rz  R   R  t   ExcValueNodeR!   R	  R!  R   (   R   RD   RG  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    		c         C@  sH  | j  |  j  |  j r+t d   |  j D  } | r g  t d  D] } | j j t d t ^ qF } | j	 j
 t j d d   | j d t |   | j	 j
 t j d d   d	 | d
 } n( d } | j	 j
 t j d d   d } g  } x5 |  j D]* } | j |  | j | | j    qW| j j t j d t }	 | j d |	 d j |  f  x+ |  j D]  } | j |  | j |  quW| r| j d t |   | j d j g  | D] }
 d |
 ^ q  x! | D] } | j j |  qWn  | j d |	  | j j |	  n | j d  t |  j d t  r|  j d  k r|  j d  k r| j	 j
 t j d d   | j d  | j |  | j d  d  Sg  t d  D] } | j j t d t ^ q} | j |  j   | j	 j
 t!  d t |  } | j d | | j" |  j  f  x | D] }
 | j# |
  q>W|  j r|  j$ j% | d  |  j$ j |  |  j j& |  j$ |  n  |  j d  k	 rx3 t' | |  j j(  D] \ } } | j% |  qWn  | j) | j* } } | j+ d  | _) | j+ d  | _* | j j, } | | j _, |  j j- |  | | j _, |  j j. sx | D] }
 | j/ |
 t  q^W| j |  n  xy | j) | f | j* | f g D]Y \ } } | j0 |  r| j1 |  x | D] }
 | j2 |
 t  qW| j |  qqW| | _) | | _* x | D] } | j j |  qW| j d  d  S(   Nc         s@  s.   |  ]$ } | j  p% | j   o% | j Vq d  S(   N(   R   t	   is_simpleR  (   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pys	   <genexpr>  s   i   R  t   PyErrFetchRestores   Exceptions.cs   __Pyx_ErrFetch(&%s, &%s, &%s);t   FastTypeCheckss   ModuleSetupCode.cs*   __Pyx_PyErr_GivenExceptionMatches(%s, %%s)i    t   PyErrExceptionMatchess    __Pyx_PyErr_ExceptionMatches(%s)s   %s = %s;s    || s   __Pyx_ErrRestore(%s, %s, %s);RM   s   %s = 0;s	   if (%s) {s   /*except:*/ {R   s   __Pyx_ErrRestore(0,0,0);R  s   &%s, &%s, &%ss"   if (__Pyx_GetException(%s) < 0) %si   t   except_breakt   except_continue(    (3   R   R!   R  R   R  R  R  R	   R7   R   R  R   R&  RV   R  Rq  R  R  R   R?   R2   R   R%  Ry  R  R   R   t   excinfo_targetR$   Rz  R_  Ri  R  t   get_exception_utility_codeR  R  R	  t   set_varR|  R  RY   R  R  R(  R  R   R   R  R~  Ra  R  (   R   R\   R  t   has_non_literalsR  R  t   exc_test_funct	   exc_testsR  t
   match_flagR  R  t   exc_argst   tempvarR[   R  R  t   old_exc_varsR(  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s    	. -.		"		c         C@  s<   |  j  d  k	 r% |  j  j | |  n  |  j j | |  d  S(   N(   Rz  R$   R   R   (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   (  s    c         C@  s]   |  j  r- x! |  j  D] } | j |  q Wn  |  j rI |  j j |  n  |  j j |  d  S(   N(   R  R   Rz  R   (   R   R\   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   -  s    		N(   RR   Rs   R   R$   R	  R  R2   t   is_except_asR   Rv   R  R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   			l	t   TryFinallyStatNodec           B@  s   e  Z d  d d g Z d Z e Z d Z d Z e	 Z
 e	 Z e d    Z d   Z d   Z e j Z d Z d   Z d	   Z d d d
  Z d d d  Z d   Z d   Z RS(   R   t   finally_clauset   finally_except_clausei   c         C@  s   t  |  d | d | } | S(   NR   R  (   R  (   R!   RD   R   R  R[   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   P  s    c         C@  sI   |  j  j |  t j |  j  |  _ |  j j |  |  j j |  d  S(   N(   R   R   R   t   deepcopyR  R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   U  s    c         C@  sh   |  j  j |  |  _  |  j j |  |  _ |  j j |  |  _ | j rd | j j rd | j |  _ n  |  S(   N(   R   Rv   R  R  R>  R   t   func_return_type(   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   [  s    s   Try-finally statementc         @  sO  | j    j  | j d  | j } | j   } | j   } | j }   j s\ | | _ n  | j   } | j j	 } d | j _	   j
 j |  | | j _	 | j d  | j j   } | j    j j  | j d  | j |    j g   f d  }	   j o| j |  }
   j j }   j
 j sw| j d  |	   j |    j j sg| j |  n  | j d  n  |
 r| j |  | j d    j s| j d  n    j r| j   n  | r6t g  t d	  D]! } | j j t j d
 t ^ q } | j j t j t j t j   d
 t } n
 d  } } t g  t d  D] } | j j t! d
 t ^ qP }   j" | | | | |  | j   } | j d  | j j# } | d  | j _#   j$ j |  | | j _# | j d  | r]  j% | | | |  | r4x! | D] } | j j& |  qWn  | rM| j j& |  n  | j |  n  xb t' | j   |  D]K \ } } | j |  sqsn  | j |    j( | |  | j |  qsWx | D] } | j j& |  qW| j d  n  | j |  | j) } d } xt* t' | |   D]\ } \ } } | j |  sLq%n  | | k rd|
 rdq%n  | j d |  d  } | | k rp  j rt g  t d  D] } | j j t! d
 t ^ q }   j" | g  |  n    j j sp  j+ rm  j rmt,   j t-  rm| j j   j+ d
 t } | j d | t. j/ f    j+ j0 rj| j d t. j/  qjqmqpn  |	   j |  | | k r| r| j d t. j/ | f    j+ j0 r| j d |  n  | j j& |  d  } n    j r  j% | |  qn    j j s | j |  n  | j d  q%W| j |  | j d  d  S(   Ns
   /*try:*/ {i   R  s   /*finally:*/ {c         @  s?   |  d } t  j |  } |   j k r5 | |  d <n | } | S(   Ni    (   R   R  R  (   t   _nextR[   t	   node_copy(   R   (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   fresh_finally_clause  s    
s   /*normal exit:*/{s   /*exception exit:*/{R  i   R  i   R  i   s   %s: {s   %s = %s;s   %s = 0;(    (1   R   R!   RV   R]  t   all_new_labelst   get_all_labelst   handle_error_caseR(  R  t   in_try_finallyR   R   R  R  t   set_all_labelst   preserve_exceptionR~  R   R_  Ra  R  t   is_try_finally_in_nogilR=  R  R  R  R   R?   R2   t   CPtrTypeRc  R?  R$   R	   t   put_error_catcherR  R  t   put_error_uncatcherR  R  t   put_error_cleanerR`  R6  R  RO   t   GILExitNodeR   R6  R<   (   R   R\   R  t
   old_labelst
   new_labelsR{  t   catch_labelt   was_in_try_finallyR  R  t   preserve_errort   needs_success_cleanupR  t   exc_lineno_cnamest   exc_filename_cnameR  t   finally_old_labelsR  R9  R(  R  R`  RG  t   ret_temp(    (   R   s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   f  s    			
		4	
1"	(	1	
	 		c         C@  s*   |  j  j | |  |  j j | |  d  S(   N(   R   R   R  (   R   RD   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    c   	      C@  sP  | j  j t  | j  j t  | j  j t  |  j rL | j d t  n  | j d  | j d j	 g  | D] } d | ^ ql   x$ | D] \ } } | j
 | |  q W| j d | d  | j d | d  d  x | D] } | j |  q W| r6| j d	 | d
 t j | d t j | t j f  n  |  j rL| j   n  d  S(   NR=  R  RM   s   %s = 0;s>   if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&%s, &%s, &%s);i   sm   if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&%s, &%s, &%s) < 0)) __Pyx_ErrFetch(&%s, &%s, &%s);i   s   %s = %s; %s = %s; %s = %s;i    i   (   R   R  Rd  R  t   swap_exception_utility_codeR  R<  R2   RV   R   R  R  R   t   lineno_cnamet   clineno_cnamet   filename_cnameR[  (	   R   R\   R  R  R  R  R  R  R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s,    	-				c         C@  sH  | j  j t  | j  j t  |  j r< | j d t  n  | j d  x | d D] } | j |  qT W| j d | d  | j d  x | d  D] } | j |  q W| j d | d   |  j r | j	   n  | j d j
 g  | D] } d | ^ q   | rD| j d	 t j | d
 t j | d t j | f  n  d  S(   NR=  s   if (PY_MAJOR_VERSION >= 3) {i   s!   __Pyx_ExceptionReset(%s, %s, %s);R  s   __Pyx_ErrRestore(%s, %s, %s);RM   s   %s = 0;s   %s = %s; %s = %s; %s = %s;i    i   (   R   R  Rd  R  R  R<  R2   RV   Rt  R[  R   R   R  R  R  (   R   R\   R  R  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s(    		-	c         C@  s   | j  j t  |  j r, | j d t  n  | j d  x | d D] } | j |  qD W| j d | d  | j d  x" | d  D] } | j | t	  q W|  j r | j
   n  | j d j d g d  | d  d  S(   NR=  s   if (PY_MAJOR_VERSION >= 3) {i   s!   __Pyx_ExceptionReset(%s, %s, %s);R  RM   s   %s = 0;(   R   R  R  R  R<  R2   RV   Rt  R  R	   R[  R   (   R   R\   R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  <  s    		c         C@  s$   |  j  j |  |  j j |  d  S(   N(   R   R   R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   N  s    N(   RR   Rs   R   R  R7   R  R$   R  R  R2   R  R  R   R   R   Rv   R   R   R   R   R   R   R  R  R  R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  6  s$   					!	t   NogilTryFinallyStatNodec           B@  s   e  Z d  Z e Z d Z RS(   sJ   
    A try/finally statement that may be used in nogil code sections.
    N(   RR   Rs   R}   R2   R  R$   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  S  s   t   GILStatNodec           B@  s;   e  Z d Z d    Z d   Z d   Z d   Z d   Z RS(   c         C@  sQ   | |  _  |  j | | |  t j |  | d | d t | d | d |  j d  S(   NR   R  t   statet
   state_temp(   R  t   create_state_temp_if_neededR  R   R  R  (   R   R!   R  R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   c  s    		c         C@  s}   d d l  m } |   } | j |  | j s3 d  S| d k rK t j } n	 t j } d d l m } | j	 | |  |  _
 d  S(   Ni   (   t   YieldNodeCollectort   gil(   R  (   t   ParseTreeTransformsR  t   visitchildrent   yieldsR   t   c_gilstate_typet   c_threadstate_ptr_typeR   R  RH  R  (   R   R!   R  R   R  t	   collectorR  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  l  s    			c         C@  sC   |  j  d k | _ |  j  d k r- t | _ n  t t |   j |  S(   NR  (   R  t   _in_with_gil_blockR7   R;  Rl   R  R   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   z  s    c         C@  sS   | j  t j d d   | j } |  j d k | _ t j |  |  } | | _ | S(   Nt   ForceInitThreadss   ModuleSetupCode.cR-  (   R  R   R&  R-  R  R  Rv   (   R   RD   t	   was_nogilR[   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    		c         C@  s   | j  |  j  | j   |  j rE |  j j |  |  j j   } n d  } | j j } |  j	 d k r | j
 d |  t | j _ n | j d |  t | j _ t j |  |  |  j r |  j j |  n  | | j _ | j   d  S(   NR  t   variable(   R   R!   t   begin_blockR  RM  R   R$   R  R*  R  R<  R7   t   put_release_gilR2   R  R   RO  t	   end_block(   R   R\   R  t   old_gil_config(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s"    
		N(	   RR   Rs   R$   R  R   R  R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  \  s   						R  c           B@  s,   e  Z d  Z g  Z d Z d   Z d   Z RS(   s]   
    Used as the 'finally' block in a GILStatNode

    state   string   'gil' or 'nogil'
    c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  sQ   |  j  r |  j  j   } n d  } |  j d k r@ | j |  n | j |  d  S(   NR  (   R  R   R$   R  R[  t   put_acquire_gil(   R   R\   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    	N(   RR   Rs   R}   R   R$   R  Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s
   	t   EnsureGILNodec           B@  s   e  Z d  Z d   Z RS(   sI   
    Ensure the GIL in nogil functions for cleanup before returning.
    c         C@  s   | j  d t  d  S(   NR=  (   R<  R2   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R}   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR
    s   c          C@  s   d d l  m }  |  j S(   Ni   (   R  (   R   R  R  (   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   cython_view_utility_code  s    c           C@  s   t  j d d  S(   Nt   ArrayAPIs   arrayarray.h(   R   R&  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR9    R   s   cpython.arrayc           C@  s   t  j d d  S(   NR  s   arrayarray.h(   R   R&  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR9    R   s   cpython.array.arrays   cython.viewt   __Pyx_patch_asynciot   PatchAsyncIOs   Coroutine.ct   asynciot   __Pyx_patch_inspectt   PatchInspectt   inspectt   CImportStatNodec           B@  s/   e  Z g  Z e Z d    Z d   Z d   Z RS(   c         C@  s  | j  s t |  j d  d  S| j |  j |  j d |  j rA d n d } d |  j k r1g  |  j j d  D] } t |  ^ ql } | d } | j j	 |  } | } x= | d D]1 } | j	 |  } | j
 | | |  j  | } q W|  j r| j
 |  j | |  j  qY| j |  | j
 | | |  j  n( |  j p@|  j } | j
 | | |  j  |  j t k r| j t |  j    n  d  S(   Ns$   cimport only allowed at module levelt   relative_leveli    iR+  i   (   R  R   R!   t   find_moduleR  t   is_absoluteR1  R   R  t   find_submodulet   declare_modulet   as_nameR?  t   utility_code_for_cimportsR  (   R   RD   t   module_scopeR;   Ry  t   top_namet   top_module_scopet   submodule_scope(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s,    	'+

	c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv     s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s    (   RR   Rs   R   R2   R  R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s
   		t   FromCImportStatNodec           B@  sD   e  Z g  Z d Z d Z d Z d    Z d   Z d   Z	 d   Z
 RS(   c         C@  s  | j  s t |  j d  d  S|  j rU |  j | j j d  k rU t |  j d  d  S| j |  j |  j d |  j } | j } | j |  x|  j	 D]\ } } } } | d k r xt
 | j j    D] \ } }	 | j | |	 |  q Wq | j |  }	 |	 r:| r.|  j |	 |  r.|	 j |  n  d |	 _ n | d k sR| d k r|| j | d	 | d
 d  d d d | }	 n | d k r| j | d | d | }	 nl | j j | d | d |  j d t }
 |
 j | k r| j | p| |
 |  j  n t | d | | f  |	 r | p!| } | j | |	 |  q q W| j d  s\| j d  r| t k r| j t |    n  xS |  j	 D]E \ } } } } d | | f } | t k r| j t |    qqWn  d  S(   Ns$   cimport only allowed at module levelR+  s3   relative cimport beyond main package is not allowedR  R*  i   RR  R  RQ  RS  RT  i    R!   t   classR  t   relative_tot   absolute_fallbacks%   Name '%s' not declared in module '%s't   cpythont   cythons   %s.%s(   R  R   R!   R  Rj  t   countR  R  R?  t   imported_namesR   R   Rk   RC  R  t   declaration_matchest
   redeclaredR\  RZ  R$   R2  R  R2   t   parent_moduleR  R6  R  R  (   R   RD   R  R  R!   R;   R  RQ  t
   local_nameR   R  R  t   fqname(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     sL    	$!	"$	c         C@  sV   | j  s d S| j } | d k r2 | j sR d Sn  | j s? d S| | j k rR d Sd S(   Ni    R   i   (   R  R,   R  t   is_struct_or_unionRQ  (   R   R   RQ  R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR'  @  s    				c         C@  s   |  S(   N(    (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   N  s    c         C@  s   d  S(   N(    (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   Q  s    N(   RR   Rs   R   R$   R  R  R&  R   R'  Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR    s   	.		t   FromImportStatNodec           B@  s2   e  Z d  g Z d Z d   Z d   Z d   Z RS(   R<  i    c         C@  si   xb |  j  D]W \ } } | d k rT | j s? t |  j d  d  Sd | _ d |  _ q
 | j |  q
 Wd  S(   NR*  s%   import * only allowed at module leveli   (   Rk   R  R   R!   t   has_import_start   import_starR  (   R   RD   R;   Rz  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   a  s    		c   	      C@  s  d d l  m } |  j j |  |  _ | j |  j t  |  _ g  |  _ x|  j	 D]\ } } | d k r xq| j
 j	   D]? \ } } | j rx | j j rx | j t j d d   Pqx qx WqP | j | j  } | j r| j j | k rt | j d  r| j j |  j j j k rqP n  yL | j |  j j j d |  j d |  j j } | j j | j k riwP n  Wqt k
 r}qXn  | j | d   } | j t k rd  } n |  j j | j |  } |  j j | | | f  qP W|  S(	   Ni   (   R  R*  t   ExtTypeTests   ObjectHandling.cR  R!   R  (   R   R  R<  Rv   R  R!   R	   R   t   interned_itemsRk   R   R  R,   R  R  R   R&  R  R;   Rl  R  R6   R  R   Rj  R   R!  R$   R@  R  (	   R   RD   R  R;   Rz  R  R   R<  t   coerced_item(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   l  s8    	
	c      	   C@  s  | j  |  j  |  j j |  |  j r^ | j d t j |  j j   | j |  j  f  n  | j	 j
 t d t } |  j j |  |  j r | j j t j d d   n  x |  j D] \ } } } | j d | |  j j   | j |  | j | |  j  f  | j |  | d  k r4| j |  j |  n* | j |  | j |  | j | |  | j | t  q W| j	 j |  |  j j |  |  j j |  d  S(   Ns   if (%s(%s) < 0) %s;R  t
   ImportFroms   ImportExport.cs!   %s = __Pyx_ImportFrom(%s, %s); %s(   R   R!   R<  Rq  R/  RV   R   R  R  R  R  R	   R7   R   R  R1  R   R  R   R&  R  R  R  R$   R|  t   allocate_temp_resultR  R  R  R%  Ry  (   R   R\   t	   item_tempR;   Rz  R2  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s<    			(   RR   Rs   R   R/  R   Rv   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR-  U  s
   				#t   ParallelNodec           B@  s   e  Z d  Z d Z RS(   s4   
    Base class for cython.parallel constructs.
    N(   RR   Rs   R}   R$   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR6    s   t   ParallelStatNodec           B@  s  e  Z d  Z d d g Z d Z e Z e Z e Z	 d Z
 d Z e j e j e j f Z e j e j e j f Z e j e j e j f Z d Z d   Z d   Z d   Z d   Z d   Z d	   Z d d
  Z  d   Z! d   Z" d   Z# d   Z$ d  d  Z% d   Z& d   Z' d   Z( d   Z) e d  Z* d   Z+ d   Z, d   Z- d   Z. e e e d  Z/ d Z0 d Z1 d e0 e1 f Z2 d   Z3 d   Z4 RS(!   s  
    Base class for 'with cython.parallel.parallel():' and 'for i in prange():'.

    assignments     { Entry(var) : (var.pos, inplace_operator_or_None) }
                    assignments to variables in this parallel section

    parent          parent ParallelStatNode or None
    is_parallel     indicates whether this node is OpenMP parallel
                    (true for #pragma omp parallel for and
                              #pragma omp parallel)

    is_parallel is true for:

        #pragma omp parallel
        #pragma omp parallel for

    sections, but NOT for

        #pragma omp for

    We need this to determine the sharing attributes.

    privatization_insertion_point   a code insertion point used to make temps
                                    private (esp. the "nsteps" temp)

    args         tuple          the arguments passed to the parallel construct
    kwargs       DictNode       the keyword arguments passed to the parallel
                                construct (replaced by its compile time value)
    R   t   num_threadsi    c         K@  sS   t  t |   j | |  | j d  p+ i  |  _ t   |  _ i  |  _ g  |  _ d  S(   NR  (	   Rl   R7  R   R  R  R~   t   seen_closure_varst   privatest   assigned_nodes(   R   R!   Rx   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR     s
    	c         C@  s  |  j  j |  d  |  _ |  j rQg  } t   } x |  j j D] } | j j | k rs t	 |  j
 d | j j  n  | j | j j  | j j d k r | j j s | j |  _ q q> |  j r | j j d k r | j j s | j |  _ q q> | j |  q> W| |  j _ y |  j j |  |  _ WqZt k
 rM} t	 |  j j
 d  qZXn	 i  |  _ xS |  j j   D]B \ } } | |  j k rt	 |  j
 d |  qjt |  | |  qjWd  S(   Ns$   Duplicate keyword argument found: %sR8  t	   chunksizes=   Only compile-time values may be supplied as keyword argumentss   Invalid keyword argument: %s(   R   R   R$   R8  Rx   R~   R4   R   R6   R   R!   R   R   t	   is_prangeR<  R  R  t	   ExceptionRk   t   valid_keyword_argumentsR   (   R   RD   t   pairst   seent   dictitemR  R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   	   s4    				c         C@  sj  |  j  r! |  j  j |  |  _  n  |  j rB |  j j |  |  _ n  |  j j |  |  _ |  j |  |  j  d  k	 rf|  j r |  j j  d  k	 r |  j j r t |  j	 d  no |  j r |  j j r t |  j	 d  nF |  j  j
 j r|  j  j r|  j  j |  d k rt |  j	 d  n  |  j  j   s<|  j  j
 j rf|  j  j t j |  j |  |  _  qfn  |  S(   Ns-   num_threads already declared in outer sections;   num_threads must be declared in the parent parallel sectioni    s.   argument to num_threads must be greater than 0(   R8  Rv   R<  R   t   analyse_sharing_attributesR$   t   parentR=  R   R!   R,   R  R   R  R  R<   R@  R   R?   R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   /   s&    		(	!c         C@  s   x |  j  j   D] \ } \ } } |  j r] |  j r] | |  j j  k r] t | d  q q] n  |  j r | r t | d  q n  t } |  j | | | |  q Wd S(   s   
        Analyse the privates for this block and set them in self.privates.
        This should be called in a post-order fashion during the
        analyse_expressions phase
        s0   Cannot assign to private of outer parallel blocks*   Reductions not allowed for parallel blocksN(   R  Rk   R=  t   is_parallelRD  R   R7   t   propagate_var_privatization(   R   RD   R   R!   R  t   lastprivate(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRC  H   s    "	c         C@  s   | | f |  j  | <| j j r0 t | d  d S|  j r |  j rd | |  j j k rd |  j j } n	 |  j } | r | s | r | j | | | |  q n  d S(   s
  
        Propagate the sharing attributes of a variable. If the privatization is
        determined by a parent scope, done propagate further.

        If we are a prange, we propagate our sharing attributes outwards to
        other pranges. If we are a prange in parallel block and the parallel
        block does not determine the variable private, we propagate to the
        parent of the parent. Recursion stops at parallel blocks, as they have
        no concept of lastprivate or reduction.

        So the following cases propagate:

            sum is a reduction for all loops:

                for i in prange(n):
                    for j in prange(n):
                        for k in prange(n):
                            sum += i * j * k

            sum is a reduction for both loops, local_var is private to the
            parallel with block:

                for i in prange(n):
                    with parallel:
                        local_var = ... # private to the parallel
                        for j in prange(n):
                            sum += i * j

        Nested with parallel blocks are disallowed, because they wouldn't
        allow you to propagate lastprivates or reductions:

            #pragma omp parallel for lastprivate(i)
            for i in prange(n):

                sum = 0

                #pragma omp parallel private(j, sum)
                with parallel:

                    #pragma omp parallel
                    with parallel:

                        #pragma omp for lastprivate(j) reduction(+:sum)
                        for j in prange(n):
                            sum += i

                    # sum and j are well-defined here

                # sum and j are undefined here

            # sum and j are undefined here
        s9   Memoryview slices can only be shared in parallel sectionsN(	   R:  R,   R  R   R=  RE  RD  R  RF  (   R   R   R!   R  RG  RD  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRF  b   s    5		c         C@  s   |  j  r |  j  j | |  S| j |  j k r5 | j S| j j | j t  } |  j j | j  |  j j |  |  j	 j
 | | j f  | j d | | j f  | | _ d S(   so   
        Helper function that allocate a temporary for a closure variable that
        is assigned to.
        s   %s = %s;N(   RD  t   _allocate_closure_tempR9  R9  R  R  R,   R7   R   t   modified_entriesR  RV   (   R   R\   R   R9  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRH     s    	c         C@  s   t  } x t |  j j    D] \ } \ } } | r | sH | | k r | j j   } | r | ry | j d  t } n  | j d | j | j j	 |  f  q q q Wd  S(   Ns4   /* Initialize private variables to invalid values */s   %s = %s;(
   R7   t   sortedR:  Rk   R,   t   invalid_valueRV   R2   R9  Rr  (   R   R\   t   excludeR  R   R  RG  RK  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   initialize_privates_to_nan   s    (	c         C@  sD   |  j  } | j j } | | j _ | j |  | | j _ | j   S(   N(   t1   begin_of_parallel_control_block_point_after_declsR  t   ownerRq  R   (   R   R\   R  R   RO  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   evaluate_before_block   s    	c         C@  s6   |  j  d k	 r2 | j d |  j | |  j    n  d S(   sS   
        Write self.num_threads if set as the num_threads OpenMP directive
        s    num_threads(%s)N(   R8  R$   R/  RP  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   put_num_threads   s    c         C@  sL   g  |  _  x< t |  j  D]+ } | j s1 | j r |  j | |  q q Wd S(   s  
        If a variable is in a scope object, we need to allocate a temp and
        assign the value from the temp to the variable in the scope object
        after the parallel section. This kind of copying should be done only
        in the outermost parallel section.
        N(   RI  RJ  R  t   from_closureR3  RH  (   R   R\   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   declare_closure_privates   s    	c         C@  sT   xM |  j  D]B \ } } | j d | | j f  | j j | j  | | _ q
 Wd S(   s   
        Release any temps used for variables in scope objects. As this is the
        outermost parallel block, we don't need to delete the cnames from
        self.seen_closure_vars.
        s   %s = %s;N(   RI  RV   R9  R  R  (   R   R\   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   release_closure_privates   s    c   
      C@  s9  |  j  } d |  _  |  j r5| j j   |  _ } g  g  } } xI t |  D]; \ } } | j si | j ry | j	 |  qK | j	 |  qK W| r | j
 d d j |   n  | r | j
 d d j |   n  |  j r5t j g }	 |  j r|	 j |  j  | j
 d |  j  n  | j
 d d j |	   q5n  d S(   s   
        Make any used temporaries private. Before the relevant code block
        code.start_collecting_temps() should have been called.
        s    private(%s)s   , s    firstprivate(%s)s    private(%s, %s, %s)s    shared(%s)N(   t   privatization_insertion_pointR$   RE  R  t   stop_collecting_tempsR   RJ  R<   R  R  R/  R   t   breaking_label_usedR   t   parallel_whyt   error_label_usedt   extendt   parallel_exct   pos_info(
   R   R\   t   exclude_tempsR   R   R:  t   firstprivatesR  R,   t   shared_vars(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   privatize_temps   s&    					c         C@  s   |  j  r |  j r | j d  xl t |  j  D]X \ } } | j r[ | j | d t q0 | j r0 | j	 | |  | j d |  q0 q0 Wn  d  S(   Ns   /* Clean up any temporaries */R  s
   %s = NULL;(
   RE  t   is_nested_prangeRV   RJ  R   R  Rp  R2   R<   Rc  (   R   R\   R  R,   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   cleanup_temps!  s    		c         C@  sx   | j    |  _ | j   |  _ | j |  _ | j d d  | _ | j   | j   |  _	 | j   |  _
 |  j |  d S(   s  
        Sets up a block that surrounds the parallel block to determine
        how the parallel section was exited. Any kind of return is
        trapped (break, continue, return, exceptions). This is the idea:

        {
            int why = 0;

            #pragma omp parallel
            {
                return # -> goto new_return_label;
                goto end_parallel;

            new_return_label:
                why = 3;
                goto end_parallel;

            end_parallel:;
                #pragma omp flush(why) # we need to flush for every iteration
            }

            if (why == 3)
                goto old_return_label;
        }
        R;   t   returnN(   R9  R;  R{  R  R`  R  R(  R  R7  t%   begin_of_parallel_control_block_pointRN  t"   undef_builtin_expect_apple_gcc_bug(   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt!   setup_parallel_control_flow_block#!  s    
c         C@  s   | j    |  _ d S(   s  
        Each OpenMP thread in a parallel section that contains a with gil block
        must have the thread-state initialized. The call to
        PyGILState_Release() then deallocates our threadstate. If we wouldn't
        do this, each with gil block would allocate and deallocate one, thereby
        losing exception information before it can be saved before leaving the
        parallel section.
        N(   R7  t   begin_of_parallel_block(   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   begin_parallel_blockH!  s    	c         C@  s   |  j  } d
 |  _  |  j r | } | j d  | j d t  | j d  | j d  | j d  | j d  | j d  | j d  | j   | j d  |  j |  | j   | j d  | j d	  | j d  n  d
 S(   s  
        To ensure all OpenMP threads have thread states, we ensure the GIL
        in each thread (which creates a thread state if it doesn't exist),
        after which we release the GIL.
        On exit, reacquire the GIL and release the thread state.

        If compiled without OpenMP support (at the C level), then we still have
        to acquire the GIL to decref any object temporaries.
        s   #ifdef _OPENMPR=  t   Py_BEGIN_ALLOW_THREADSs   #endif /* _OPENMP */t   Py_END_ALLOW_THREADSs   #elses   {
s   #ifndef _OPENMPs   }
N(	   Rg  R$   RY  RV   R<  R7   t   put_safeRb  R[  (   R   R\   t
   begin_codet   end_code(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   end_parallel_blockS!  s&    
			

c   	      C@  s  | j    } | j    } t |  _ t |  _ t |  _ g  |  _ | j   } xD | D]< } | j |  rO |  j py | | j k |  _ t	 |  _ qO qO W|  j r | j
 |  n  x t |  D] \ } } | j |  s q n  | | j k } | j |  | o | sG| | j k r&t	 |  _ |  j |  n  | j d t j | d f  n  |  j rp|  j rp| rp| j
 |  q | j
 |  q W|  j r|  j r|  j r| j |  |  j |  n  | j |  | r|  j r| j d t j  qn  d S(   s  
        Trap any kind of return inside a parallel construct. 'should_flush'
        indicates whether the variable should be flushed, which is needed by
        prange to skip the loop. It also indicates whether we need to register
        a continue (we need this for parallel blocks, but not for prange
        loops, as it is a direct jump there).

        It uses the same mechanism as try/finally:
            1 continue
            2 break
            3 return
            4 error
        s   %s = %d;i   s   #pragma omp flush(%s)N(   R(  R2   t   any_label_usedRW  RY  t   parallel_private_tempsR  R~  R  R7   R_  R6  Ra  R]  t   fetch_parallel_exceptionRV   R   RX  R=  t   save_parallel_varsR  (	   R   R\   t   should_flusht   save_lastprivates_labelt   dont_return_labelt
   all_labelsR  RG  t   is_continue_label(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   trap_parallel_exitt!  sF    							!	c         C@  s@  d |  j  } | j d |  t j  d 7_  | j   |  j } d } x t |  j j    D] \ } \ } } | s\ | j j	 r q\ n  | j j
   } d | }	 | j }
 | d 7} | j j   } | r d | j j |  } n d } | j d | |	 | f  | j d	 |	 |
 f  |  j j |	 |
 f  q\ W| j   d
 S(   s  
        The following shenanigans are instated when we break, return or
        propagate errors from a prange. In this case we cannot rely on
        lastprivate() to do its job, as no iterations may have executed yet
        in the last thread, leaving the values undefined. It is most likely
        that the breaking thread has well-defined values of the lastprivate
        variables, so we keep those values.
        s   __pyx_parallel_lastprivates%ds   #pragma omp critical(%s)i   i    s   __pyx_parallel_temp%ds    = R   s   %s %s%s;s   %s = %s;N(   t   critical_section_counterR  R7  R  Rd  RJ  R:  Rk   R,   R<   Rk  R9  RK  Rr  RV   Rp  R  R  (   R   R\   t   section_nameR   t
   temp_countR   R  RG  t	   type_declt
   temp_cnamet   private_cnameRK  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRr  !  s*    	
	(
	
c         C@  s   | j    | j d t  | j d t j  | j d t j  | j d |  j  t t	 |  j
 |  j    } t | j _ | j d t |   | j t j  | j d  | j   | j   d S(   s^  
        As each OpenMP thread may raise an exception, we need to fetch that
        exception from the threadstate and save it for after the parallel
        section where it can be re-raised in the master thread.

        Although it would seem that __pyx_filename, __pyx_lineno and
        __pyx_clineno are only assigned to under exception conditions (i.e.,
        when we have the GIL), and thus should be allowed to be shared without
        any race condition, they are in fact subject to the same race
        conditions that they were previously when they were global variables
        and functions were allowed to release the GIL:

            thread A                thread B
                acquire
                set lineno
                release
                                        acquire
                                        set lineno
                                        release
                acquire
                fetch exception
                release
                                        skip the fetch

                deallocate threadstate  deallocate threadstate
        R=  s   #pragma omp flush(%s)s
   if (!%s) {s'   __Pyx_ErrFetchWithState(&%s, &%s, &%s);s   %s = %s; %s = %s; %s = %s;R  N(   R  R<  R7   R  R   t   parallel_exc_typeRV   R[  R   R  t   parallel_pos_infoR\  R  t   uses_error_indicatorR  R  R[  R  (   R   R\   R\  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRq  !  s    

c         C@  s   | j    | j d t  | j t j  | j d |  j  t t	 |  j
 |  j    } | j d t |   | j   | j   d S(   s   Re-raise a parallel exceptionR=  s&   __Pyx_ErrRestoreWithState(%s, %s, %s);s   %s = %s; %s = %s; %s = %s;N(   R  R<  R7   Rw  R   R  RV   R[  R   R  R\  R  R  R[  R  (   R   R\   R\  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   restore_parallel_exception"  s    

c         C@  s$   | j  |  j |  j |  j f  d S(   s   
        Restore all old labels. Call this before the 'else' clause to for
        loops and always before ending the parallel control flow block.
        N(   R  R;  R  R  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   restore_labels"  s    c   	      C@  s#  |  j  } d |  _  d |  _ |  j r | j d |  j  | j d |  j  | j d t j  | j d  | j d t j	  | j d  n  | r |  j
 } n	 |  j } | r| j d t j	  | j d t j	  | j d t j	  x. |  j D]# \ } } | j d	 | | f  q W| j d
 t j	  | rY| j d  | j | j  n  | r| j d  | j | j  n  | r| j d  | j | j  n  |  j r| j j t  | j d  |  j |  | j | j  n  | j d  | j d  n  | j   |  j |  d S(   s  
        This ends the parallel control flow block and based on how the parallel
        section was exited, takes the corresponding action. The break_ and
        continue_ parameters indicate whether these should be propagated
        outwards:

            for i in prange(...):
                with cython.parallel.parallel():
                    continue

        Here break should be trapped in the parallel block, and propagated to
        the for loop.
        s*   const char *%s = NULL; int %s = 0, %s = 0;s,   PyObject *%s = NULL, *%s = NULL, *%s = NULL;s	   if (%s) {sg   /* This may have been overridden by a continue, break or return in another thread. Prefer the error. */s   %s = 4;R  s   int %s;s   %s = 0;s   %s = %s;s   switch (%s) {s       case 1: s       case 2: s       case 3: s       case 4:N(   Rd  R$   RN  RY  RV   R  R[  R   R  RX  Ro  RW  Rp  R/  R_  R  R  R`  R   R  Rd  R  R]  R  t"   redef_builtin_expect_apple_gcc_bug(	   R   R\   t   break_t	   continue_t   return_R   Ro  R}  R~  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   end_parallel_control_flow_block%"  sT    				
		

s(   (defined(__APPLE__) || defined(__OSX__))sQ   (defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))))s
   (%s && %s)c         C@  s    |  j  s | j |  j  n  d S(   s]   
        A bug on OS X Lion disallows __builtin_expect macros. This code avoids them
        N(   RD  t   undef_builtin_expectt   redef_condition(   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRe  u"  s    	c         C@  s    |  j  s | j |  j  n  d  S(   N(   RD  t   redef_builtin_expectR  (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  |"  s    	N(    (5   RR   Rs   R}   R   R$   R   R2   R=  Ra  RY  R8  R<  R   R  t   parallel_exc_valuet   parallel_exc_tbR[  t   parallel_filenamet   parallel_linenot   parallel_clinenoR  R  R  R  R\  Ry  R   R   Rv   RC  RF  RH  RM  RP  RQ  RS  RT  R`  Rb  Rf  Rh  Rn  Rx  Rr  Rq  R  R  R  t   buggy_platform_macro_conditiont   have_expect_conditionR  Re  R  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR7    sZ   		&			G							%		!C	+	.			J	t   ParallelWithBlockNodec           B@  s/   e  Z d  Z d g Z d Z d   Z d   Z RS(   sI   
    This node represents a 'with cython.parallel.parallel():' block
    R8  c         C@  s6   t  t |   j |  |  j r2 t |  j d  n  d  S(   Ns=   cython.parallel.parallel() does not take positional arguments(   Rl   R  R   RY   R   R!   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   "  s    	c         C@  s  |  j  |  |  j |  | j d  | j d  |  j r g  |  j D] } | j j sG | j ^ qG } | j d d j t	 |    n  | j
   |  _ |  j |  | j d  | j d  | j   |  j |  |  j |  | j j   |  j j |  |  j |  |  j |  |  j |  | j   | j | j  } | j | j  } | j | j  } |  j |  |  j | d | d | d	 | |  j |  d  S(
   Ns   #ifdef _OPENMPs   #pragma omp parallel s   private(%s)s   , R   s   #endif /* _OPENMP */R  R  R  (   RS  Rf  RV   R/  R:  R,   R<   R9  R   RJ  R7  RU  RQ  R  Rh  RM  R  t   start_collecting_tempsR   R   Rx  R`  Rn  R  R~  R  R  R`  R  R  RT  (   R   R\   R  R:  R  R  R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   "  s:    	#

N(   RR   Rs   R}   R?  R$   R8  R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  "  s
   		t   ParallelRangeNodec           B@  s   e  Z d  Z d d d d d d g Z d Z Z Z Z d Z	 Z
 Z e Z d Z d Z d d d d g Z d	   Z d
   Z d   Z d   Z d   Z d   Z RS(   s   
    This node represents a 'for i in cython.parallel.prange():' construct.

    target       NameNode       the target iteration variable
    else_clause  Node or None   the else clause of this loop
    R   Rz  R!  RY   R8  R<  t   scheduleR-  c         K@  s,   t  t |   j | |  t |  |  _ d  S(   N(   Rl   R  R   R  RW  (   R   R!   RZ   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   "  s    c         C@  sD  t  t |   j |  |  j j |  |  j d  k	 rH |  j j |  n  |  j sg t |  j  d k r{ t	 |  j
 d  d  St |  j  d k r |  j \ |  _ nH t |  j  d k r |  j \ |  _ |  _ n |  j \ |  _ |  _ |  _ t |  j d  r|  j j d  |  _ n  |  j d k r@t	 |  j
 d |  j f  n  d  S(   Ni   s0   Invalid number of positional arguments to prangei   i   t   decodet   asciit   statict   dynamict   guidedt   runtimes'   Invalid schedule argument to prange: %s(   NR  R  R  R  (   Rl   R  R   Rz  R  R!  R$   RY   RN   R   R!   R  R_   Rg  Rl  R  R  (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   "  s     c         C@  sw  | j  } |  j  r t | _  n  |  j d  k rA t |  j d  |  S|  j j |  |  _ |  j j j s |  j j j	 s t |  j j d |  j j  n  t
 j |  _ n7 |  j j |  _ |  j j s t |  j j d d d n  d |  _ |  j |  j |  j f } x t | |  j  D] \ } } | d  k	 r| j |  | j j sYt | j d	 |  qn  | j s| j |  } t |  | |  n  t
 j |  j | j  |  _ qqW|  j d  k	 r|  j j |  |  _ n  t |  j d
  r|  j j d  f |  j |  j j <n  t t |   j |  } | j  r| j! sAt | j  j d  nn | j! d k rft | j  j d  nI | j  j j" r| j  j r| j  j# |  d k rt | j  j d  n  | j  j$ t
 j% |  j |  | _  n  | j  r| | _  n  | j& o| j& j' | _( | j( rs| } x" | j& r6| j& j' r6| j& } qW| j j) | j  | j* j) | j*  | j+ j, | j+  n  | S(   Ns/   prange() can only be used as part of a for loops   Must be of numeric type, not %ss1   Unsigned index type not allowed before OpenMP 3.0R   i   R_   R  Rg  s   %s argument must be numericR   s$   Must provide schedule with chunksizeR  s,   Chunksize not valid for the schedule runtimei    s   Chunksize must not be negative(   R_   R  Rg  (-   R-  R7   Rz  R$   R   R!   Rw   R,   R  R<   R   R  t
   index_typeR  R   Ry  R_   R  Rg  R  Ru   R   R  R   Rk  R!  Rv   Rl  R  R   Rl   R  R<  R  R  R  R@  R?   RD  R=  Ra  R   R:  R;  RZ  (   R   RD   R  t   start_stop_stepR[   R;   RD  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   "  sv    		
		"		

			c         C@  sw   d } |  j  |  j |  j |  j f } xL t | |  D]; \ } } | d  k	 r4 | j j r4 t | j	 d |  q4 q4 Wd  S(   NR_   R  Rg  Rz  s6   %s may not be a Python object as we don't have the GIL(   R_   R  Rg  Rz  (
   R_   R  Rg  Rz  R  R$   R,   R<   R   R!   (   R   RD   Ry  t   nodesR;   R[   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   B#  s    c         C@  si  |  j  |  |  j j j } i | d 6|  j j j   d 6} |  j |  j |  j f } d } xv t	 | |  j
 |  D]_ \ } } } | d k r | }	 n1 | j r | j   }	 n | j |  | j   }	 |	 | | <qp W| j j |  j t  | d <| j j |  j t  | d <| j d |  |  j |  | j d |  | j d	 |  | j   |  j | |  | j   |  j |  |  j r|  j r| j d
 t j  n  | j   | j d  |  j j |  | j   n  |  j  |  xG | |  j! |  j" f D]/ }
 |
 d k	 r|
 j# |  |
 j$ |  qqW| j j% | d  | j j% | d  |  j& |  d S(   s,  
        Generate code in the following steps

            1)  copy any closure variables determined thread-private
                into temporaries

            2)  allocate temps for start, stop and step

            3)  generate a loop that calculates the total number of steps,
                which then computes the target iteration variable for every step:

                    for i in prange(start, stop, step):
                        ...

                becomes

                    nsteps = (stop - start) / step;
                    i = start;

                    #pragma omp parallel for lastprivate(i)
                    for (temp = 0; temp < nsteps; temp++) {
                        i = start + step * temp;
                        ...
                    }

                Note that accumulation of 'i' would have a data dependency
                between iterations.

                Also, you can't do this

                    for (i = start; i < stop; i += step)
                        ...

                as the '<' operator should become '>' for descending loops.
                'for i from x < i < y:' does not suffer from this problem
                as the relational operator is known at compile time!

            4) release our temps and write back any private closure variables
        Rz  R  R  Rr  RG  t   nstepss   if (%(step)s == 0) abort();sS   %(nsteps)s = (%(stop)s - %(start)s + %(step)s - %(step)s/abs(%(step)s)) / %(step)s;s   if (%(nsteps)s > 0)s   if (%s < 2)s
   /* else */N(   R  R  Rr  ('   RS  Rz  R   R9  R,   Rk  R_   R  Rg  R  Ry  R$   R   R  Rq  R   R  R  R  R2   RV   Rf  R  t   generate_loopR  R  R!  RW  R/  R   RX  R   R  R<  R8  R%  Ry  R  RT  (   R   R\   t   target_index_cnamet   fmt_dictR  t   defaultsR[   R;   R   R   R  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   J#  sP    (%		

		
c   
      C@  sd  |  j  r | j d  n | j d  |  j sZ | j d  | j   |  _ |  j j } n | j d  | j   |  _ |  j } | j d  | j d  | j   |  j |  |  j  r | j d  n | j d  | j d  xt	 |  j
 j    D] \ } \ } } | rk| d k rk| |  j j k rk| j j rNt |  j d  q| j d	 | | j f  q | |  j j k r| j d
 | j  | j d | j  q n  | j j s | rd } n d } | j d | | j f  q q W|  j r>|  j rd |  j | |  j  } n d } | j d |  j | f  n  |  j |  | j d  | j d  | j d |  | j   | j   }	 | j   | j d |  |  j | d |  j j |  j r| j j   n  |  j j |  |  j | d t |  j |  |  j r)|	 j d t  j!  n  | j"   | j"   |  j r`|  j# |  | j"   n  d  S(   Ns   #if 0s   #ifdef _OPENMPs   #pragma omp fors   #pragma omp parallelR   s   #endif /* _OPENMP */s   +*-&^|s#   Python objects cannot be reductionss    reduction(%s:%s)s    firstprivate(%s)s    lastprivate(%s)RG  R  s    %s(%s)s   , %ss    schedule(%s%s)s,   for (%(i)s = 0; %(i)s < %(nsteps)s; %(i)s++)s=   %(target)s = (%(target_type)s)(%(start)s + %(step)s * %(i)s);RL  Rs  s   if (%s < 2)($   Ra  RV   RE  R/  R7  RU  RD  R  Rh  RJ  R:  Rk   Rz  R   R,   R<   R   R!   R9  R  R<  RP  RQ  RM  R  R  R   R   Rx  R7   R`  RW  R   RX  R  Rn  (
   R   R\   R  t   reduction_codepointR   R  RG  R  R<  t   guard_around_body_codepoint(    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  #  sv    			
	($	!		

		

	N(   RR   Rs   R}   R   R$   R   Rz  R!  RY   R_   R  Rg  R7   R=  R-  R  R?  R   R   Rv   R   R   R  (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  "  s   				Y		st   CnameDecoratorNodec           B@  sD   e  Z d  Z d g Z d   Z d   Z d   Z d   Z d   Z RS(   s?  
    This node is for the cname decorator in CythonUtilityCode:

        @cname('the_cname')
        cdef func(...):
            ...

    In case of a cdef class the cname specifies the objstruct_cname.

    node        the node to which the cname decorator is applied
    cname       the cname the node should get
    R[   c         C@  s  |  j  j |  |  j  } t | t  r; | j j d } n  t | t  |  _ t | t t	 f  } | j
 } |  j r |  j | _ |  j | _ t | _ | j rd | j k r|  j | j  | _ qn	| r |  j | _ | j _ n | j } |  j | _ |  j d | j _ t j |  j | j _ |  j d | j _ | j j | j j _ | j j | j _ |  j d | _ x_ | j j   D]N \ } } | j r|  j | j  | _ n  | j r|  j | j  | _ qqWd  S(   Ni    R+  t   _objt   _typeR  (   R[   R   RO   R   R   R   R  t   is_functionR  R  R   R9  R  R7   R\  RB  RW  R,   RS  R-  R   t   typeobj_prefixR.  RI  R#  R  R@  R   Rk   (   R   RD   R[   t   is_struct_or_enumR  RS  R;   R   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   /$  s8    							c         C@  s3   d | k r" | j  d  d } n  d |  j | f S(   NR+  is   %s_%s(   R1  R9  (   R   R9  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRW  U$  s    c         C@  s   |  j  j |  |  _  |  S(   N(   R[   Rv   (   R   RD   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyRv   [$  s    c         C@  s   |  j  r | j r | j d } t |  j t  rP |  j j | d t d t q d d l	 m
 } |  j j } | j } | j | _ | j | | j   | d t | | _ n  |  j j | |  d S(   s=   Ensure a prototype for every @cname method in the right placet   utility_code_protoR  R  i   (   t
   ModuleNodet
   definitionN(   R  R7  R   RO   R[   R  R.  R2   R7   R   R  R   R9  R  t   generate_cfunction_declarationR   R   (   R   RD   R\   t   h_codeR  R   R9  (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   _$  s     			c         C@  s   |  j  j |  d  S(   N(   R[   R   (   R   R\   (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR   x$  s    (	   RR   Rs   R}   R   R   RW  Rv   R   R   (    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyR  $  s   		&			sC  
/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
s1   
#define likely(x)   (x)
#define unlikely(x) (x)
t   Prints
   Printing.ct   PrintOneR  s   Exceptions.ct   RaiseExceptiont   GetExceptiont   SwapExceptiont   SaveResetExceptiont   AddTracebackR  sR   
static PyObject *__Pyx_GetExceptionTuple(PyThreadState *__pyx_tstate); /*proto*/
t   impls1  
static PyObject *__Pyx_GetExceptionTuple(CYTHON_UNUSED PyThreadState *__pyx_tstate) {
    PyObject *type = NULL, *value = NULL, *tb = NULL;
    if (__Pyx_GetException(&type, &value, &tb) == 0) {
        PyObject* exc_info = PyTuple_New(3);
        if (exc_info) {
            Py_INCREF(type);
            Py_INCREF(value);
            Py_INCREF(tb);
            PyTuple_SET_ITEM(exc_info, 0, type);
            PyTuple_SET_ITEM(exc_info, 1, value);
            PyTuple_SET_ITEM(exc_info, 2, tb);
            return exc_info;
        }
    }
    return NULL;
}
t   requires(   t
   __future__R    R$  R  R  R   R   R   t	   itertoolsR   R   R   t   ErrorsR   R   R   R   R   R   R   R	   R   t   SymtabR
   R   R   R   R   R   R   Ri   R   t   StringEncodingR   R   R   R   t   PythranR   R   R   t   UtilsR   R  R.   R   R/   R"   R+   R$   RL   Rd   R,   Re   Rt   R   R   R   R   R   R   R   R   R   R   R  R  R  Rb  Re  R  RB   R  R  R  Rm  R  R  R  R  R   R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  Rw  Rx  R{  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R+  R.  R3  R7  R8  R<  RS  R\  R]  RZ  RY  R[  R  R  R  R  R  R  R  R  R
  R  R  t   utility_code_for_importsR  R  R-  R6  R7  R  R  R  t   gcc_branch_hintst   branch_prediction_macrosR&  R  R  Rd  R  R  R  R  t   traceback_utility_codet    get_exception_tuple_utility_code(    (    (    s4   lib/python2.7/site-packages/Cython/Compiler/Nodes.pyt   <module>   sL  $"4			/		*%#,t	^!Q'j-X1!     
   -8r @ 1f/GC)7
rh=C)$-<\<	
a
g! 	H		


+O\  6 ic		