ó
Nä²Wc           @@  sJ  d  d l  m Z d  d l Z d  d l m Z d d l m Z d d l m Z d d l m Z d d l m	 Z	 d d	 l m
 Z
 m Z m Z d d
 l m 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 e d d „ Z d „  Z d „  Z d „  Z d d d „ Z e  d „ Z! d S(   i    (   t   absolute_importN(   t   timei   (   t   Errors(   t
   DebugFlags(   t   Options(   t   CythonTransform(   t   CompileErrort   InternalErrort
   AbortError(   t   Namingc         C@  s   |  j  ƒ  GH|  S(   N(   t   dump(   t   t(    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   dumptree   s    c         C@  s"   t  j d k r t d ƒ ‚ n  |  S(   Ni    s   pipeline break(   R   t
   num_errorsR   (   t   node(    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   abort_on_errors   s    c         @  s   ‡  f d †  } | S(   Nc         @  s•   |  j  } |  j } | d d f } t j t } t _ ˆ  j | d | d d ƒ} | t _ ˆ  j | | d d d | ƒ} |  | _ | | _ t | _	 | S(   Ni   i    t   post   need_pxdt   pxdt   full_module_name(
   t   source_descR   R   t   cimport_from_pyxt   Falset   find_modulet   parset   compilation_sourcet   scopet   is_pxd(   t   compsrcR   R   t   initial_post   saved_cimport_from_pyxR   t   tree(   t   context(    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyR      s    						(    (   R    R   (    (   R    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   parse_stage_factory   s    c         @  s   ‡  ‡ ‡ f d †  } | S(   Nc         @  s4   ˆ  j  |  ˆ d t d ˆ ƒ} ˆ | _ t | _ | S(   NR   R   (   R   t   TrueR   R   (   R   R   (   R    t   module_nameR   (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyR   +   s
    			(    (   R    R   R#   R   (    (   R    R#   R   s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   parse_pxd_stage_factory*   s    c         @  s   ‡  ‡ f d †  } | S(   Nc         @  s    |  j  ˆ  ˆ ƒ |  j ˆ _ ˆ S(   N(   t   process_implementationR   (   t   module_node(   t   optionst   result(    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   generate_pyx_code_stage4   s    (    (   R'   R(   R)   (    (   R'   R(   s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   generate_pyx_code_stage_factory3   s    c         @  s   ‡  f d †  } | S(   Nc         @  s:   x3 ˆ  j  j ƒ  D]" \ } \ } } |  j | | ƒ q W|  S(   N(   t   pxdst   itemst   merge_in(   R&   t   namet   statlistnodeR   (   R    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   inject_pxd_code_stage<   s    "(    (   R    R0   (    (   R    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   inject_pxd_code_stage_factory;   s    c         C@  s½   | d  k r t ƒ  } n  xž |  j j ƒ  D] } | | k r@ q( n  | j | ƒ | j r– | j r– | j | j ƒ xC | j j D] } | j | ƒ q| Wq( | j	 r( t
 | j	 | | ƒ q( q( Wd  S(   N(   t   Nonet   sett   entriest   valuest   addt   usedt   utility_code_definitiont   use_utility_codet   requirest	   as_modulet   use_utility_code_definitions(   R   t   targett   seent   entryt   required_utility(    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyR<   C   s    	c         @  se   i  ‰ ‡  ‡ f d †  ‰  x |  D] } ˆ  | ƒ q Wg  t  ˆ j ƒ  d d „  ƒD] \ } } | ^ qO S(   Nc         @  st   |  ˆ k rl d ˆ |  <t  ˆ ƒ } d t g  |  j p7 d D] } ˆ  | ƒ ^ q8 pV d g ƒ | d ˆ |  <n  ˆ |  S(   Ni    i   iÿÿÿÿg:Œ0âŽyE>(    (   t   lent   minR:   (   t   utilcodet   original_ordert   dep(   t   get_rankt   ranks(    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyRF   V   s
    
Jt   keyc         S@  s   |  d S(   Ni   (    (   t   kv(    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   <lambda>^   s    (   t   sortedR,   (   t	   utilcodesRC   t   _(    (   RF   RG   s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   sort_utility_codesT   s
    c         @  sp   i  ‰  x |  D] } | ˆ  | <q W‡  f d †  } x9 |  D]1 } g  | j  pL d D] } | | ƒ ^ qM | _  q7 Wd  S(   Nc         @  s&   |  ˆ  k r ˆ  |  S|  ˆ  |  <|  Sd  S(   N(    (   RE   (   t   deps(    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt	   unify_depf   s    
(    (   R:   (   RL   RC   RP   RE   (    (   RO   s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   normalize_depsa   s    c         @  s   ‡  f d †  } | S(   Nc         @  s  |  j  ƒ  t ˆ  j |  j ƒ t |  j j ƒ |  j _ t |  j j ƒ g  } xÁ |  j j D]³ } | | k rp qX n  | j | ƒ | j rÑ xH | j D]: } | | k r | |  j j k r |  j j j | ƒ q q Wn  | j	 d ˆ  j ƒ } | rX |  j
 | j | j d t ƒqX qX W|  S(   Nt   cython_scopet   merge_scope(   t   prepare_utility_codeR<   RR   R   RN   t   utility_code_listRQ   t   appendR:   t   get_treeR-   t   bodyR"   (   R&   t   addedRC   RE   R   (   R    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   inject_utility_code_stager   s"    
	#(    (   R    RZ   (    (   R    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt!   inject_utility_code_stage_factoryq   s    c   0   &   C@  s¤  | d k s t  ‚ d d l m } d d l m } m } m } m } d d l m } m	 }	 d d l m
 }
 m } d d	 l m } m } m } d d
 l m } m } d d l m } m } d d l m } d d l m } m } d d l m } m } d d l m } m } d d l m } d d l m } d d l m  } d d l! m" } m# } m$ } d d l! m% }  m& }! d d l! m' }" d d l! m( }# m) }$ d d l! m* }% d d l! m+ }& d d l, m- }' d d l. m/ }( m0 }) | d k rù|) }* | |  ƒ }+ n |( }* d  }+ | d k r | |  ƒ }, n d  }, | |  ƒ | |  ƒ |+ | |  |  j2 ƒ | |  ƒ | |  ƒ | |  ƒ | |  ƒ |, | |  ƒ |# ƒ  | ƒ  | |  ƒ | |  ƒ |	 |  ƒ | |  ƒ | |  ƒ |  |  ƒ | |  ƒ | |  ƒ | |  ƒ | |  ƒ | |  ƒ |' |  ƒ |* |" |  ƒ |
 |  ƒ | |  ƒ | |  ƒ | |  ƒ | |  ƒ |! |  ƒ | |  ƒ | |  ƒ |& |  ƒ |% ƒ  |$ |  ƒ | ƒ  g& }- g  }. x- |- D]% }/ |/ j3 | k rw|. j4 |/ ƒ qwqwW|. S(   Nt   pyxt   pyR   i   (   t	   PrintTree(   t   WithTransformt   NormalizeTreet	   PostParset   PxdPostParse(   t   ForwardDeclareTypest   AnalyseDeclarationsTransform(   t   AnalyseExpressionsTransformt   FindInvalidUseOfFusedTypes(   t   CreateClosureClassest   MarkClosureVisitort   DecoratorTransform(   t   InterpretCompilerDirectivest   TransformBuiltinMethods(   t   ExpandInplaceOperatorst   ParallelRangeTransform(   t    CalculateQualifiedNamesTransform(   t   MarkParallelAssignmentst   MarkOverflowingArithmetic(   t   AdjustDefByDirectivest   AlignFunctionDefinitions(   t   RemoveUnreachableCodet   GilCheck(   t   ControlFlowAnalysis(   t   AutoTestDictTransform(   t   EmbedSignature(   t   FlattenInListTransformt   SwitchTransformt   IterationTransform(   t   EarlyReplaceBuiltinCallst   OptimizeBuiltinCalls(   t   InlineDefNodeCalls(   t   ConstantFoldingt   FinalOptimizePhase(   t   DropRefcountingTransform(   t   ConsolidateOverflowCheck(   t   IntroduceBufferAuxiliaryVars(   t   check_c_declarationst   check_c_declarations_pxd(   s   pyxs   pys   pxd(5   t   AssertionErrort   VisitorR^   t   ParseTreeTransformsR_   R`   Ra   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   Rj   Rk   Rl   Rm   Rn   t   TypeInferenceRo   Rp   Rq   Rr   Rs   Rt   t   FlowControlRu   t   AnalysedTreeTransformsRv   t   AutoDocTransformsRw   t   OptimizeRx   Ry   Rz   R{   R|   R}   R~   R   R€   R   t   BufferR‚   t
   ModuleNodeRƒ   R„   R2   t   compiler_directivest	   __class__RV   (0   R    t   modet   exclude_classesR^   R_   R`   Ra   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   Rj   Rk   Rl   Rm   Rn   Ro   Rp   Rq   Rr   Rs   Rt   Ru   Rv   Rw   Rx   Ry   Rz   R{   R|   R}   R~   R   R€   R   R‚   Rƒ   R„   t   _check_c_declarationst   _specific_post_parset   _align_function_definitionst   stagest   filtered_stagest   s(    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   create_pipeline   s”    "																														c      
   C@  sþ   | r d } n d } g  } | j  rG d d l m } | j | ƒ  ƒ n  | j r d d l m } d d l m }	 | j	 | j
 ƒ |  _ |	 |  | | ƒ g }
 n g  }
 t t j t |  ƒ g t |  | d | ƒ| t |  ƒ t |  ƒ t g |
 t | | ƒ g ƒ ƒ S(	   NR]   R\   i   (   t   TreeAssertVisitor(   t   DebugWriteri   (   t   DebugTransformR’   (   t   evaluate_tree_assertionst	   TestUtilsRš   RV   t	   gdb_debugt   DebuggerR›   R‡   Rœ   t   CythonDebugWritert
   output_dirt   gdb_debug_outputwritert   listt	   itertoolst   chainR!   R™   R1   R[   R   R*   (   R    R'   R(   R]   R’   R‘   t   test_supportRš   R›   Rœ   t   debug_transform(    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   create_pyx_pipelineå   s.    						c         C@  s:   d d l  m } t |  | | ƒ g t |  d ƒ | ƒ  g S(   Ni   (   t   ExtractPxdCodeR   (   t   CodeGenerationRª   R$   R™   (   R    R   R#   Rª   (    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   create_pxd_pipeline  s    c         C@  s   t  |  | | d t ƒS(   NR]   (   R©   R"   (   R    R'   R(   (    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   create_py_pipeline  s    c      
   @  sÉ   d d l  m } m } m } m } d d l m } m } d d l m	 ‰  g  } t
 |  |  j | d | | | | | g ƒ}	 x. |	 D]& }
 | j |
 ƒ t |
 | ƒ r Pq q W‡  f d †  } | j | ƒ | S(   Ni   (   Rr   Rh   R_   Rd   (   R~   Rx   (   t   StatListNodeR’   c         @  s   xq |  j  j j ƒ  D]] } | j s d | _ | j | j k rp | j d k rp | j  j t	 j
 | j ƒ | _ qp q q Wˆ  |  j d g  ƒ|  j  f S(   Ni   t   externt   stats(   R   R4   R5   t   in_cincludet   defined_in_pxdR.   t   cnamet
   visibilityt   mangleR	   t   func_prefixR   (   t   rootR?   (   R®   (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   fake_pxd#  s    		!((   R‡   Rr   Rh   R_   Rd   RŒ   R~   Rx   t   NodesR®   R©   R'   RV   t
   isinstance(   R    R(   Rr   Rh   R_   Rd   R~   Rx   t   pipelinet   pyx_pipelinet   stageR¸   (    (   R®   s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   create_pyx_as_pxd_pipeline  s"    "c         C@  sx   | s | s t  ‚ | p | } x- t |  ƒ D] \ } } t | | ƒ r+ Pq+ q+ W| ra | d 7} n  |  |  | g |  | S(   sõ   
    Insert a new transform into the pipeline after or before an instance of
    the given class. e.g.

        pipeline = insert_into_pipeline(pipeline, transform,
                                        after=AnalyseDeclarationsTransform)
    i   (   R…   t	   enumerateRº   (   R»   t	   transformt   beforet   aftert   clst   iR   (    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   insert_into_pipeline.  s    c   	      C@  s"  d d l  m } d  } | } y³ y† x |  D]w } | d  k	 r) t j rY t ƒ  } d | GHn  | ru t | | ƒ ru q) n  | | ƒ } t j r  d t ƒ  | GHq  q) q) WWn& t k
 rÍ } t j	 | ƒ | } n XWnF t
 k
 rÿ } t j d k rö ‚  n  | } n t k
 r} | } n X| | f S(   Ni   (   R^   s   Entering pipeline phase %rs       %.3f secondsi    (   R†   R^   R2   R   t   debug_verbose_pipelineR   Rº   R   R   t   report_errorR   R   R   (	   R»   t   sourcet	   printtreeR^   t   errort   datat   phaseR   t   err(    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   run_pipelineF  s2    				
(    (    ("   t
   __future__R    R¥   R   t    R   R   R   R†   R   R   R   R   R	   R   R   R!   R$   R*   R1   R2   R<   RN   RQ   R[   R™   R   R©   R¬   R­   R¾   RÅ   R"   RÎ   (    (    (    s;   /bar/jli/Chip-seq/script/cython/Cython/Compiler/Pipeline.pyt   <module>   s2   										X			