ó
!Æ^c        
   @   s"  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z m Z m	 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 i  Z d e f d „  ƒ  YZ e d e f i  ƒ Z d e f d „  ƒ  YZ e j d k r,d „  Z e j j  e _  e e _ n  d „  Z  d „  Z! d e f d „  ƒ  YZ" d „  Z# d „  Z$ e j% d ƒ Z& e j% d ƒ Z' e j% d  e j( ƒ Z) d! „  Z* e j% d" e j( ƒ Z+ d# „  Z, e- d$ „ Z. d% „  Z/ e0 e0 d& g  g  g  g  e- e0 d' „	 Z1 d( „  Z2 e Z3 d) e f d* „  ƒ  YZ4 d S(+   s6   
Tasks represent atomic operations such as processes.
iÿÿÿÿN(   t   Utilst   Logst   Errorsi    i   i   i   i   i   i	   iþÿÿÿiýÿÿÿiüÿÿÿs  
def f(tsk):
	env = tsk.env
	gen = tsk.generator
	bld = gen.bld
	cwdx = tsk.get_cwd()
	p = env.get_flat
	def to_list(xx):
		if isinstance(xx, str): return [xx]
		return xx
	tsk.last_cmd = cmd = ''' %s ''' % s
	return tsk.exec_command(cmd, cwd=cwdx, env=env.env or None)
s�  
def f(tsk):
	env = tsk.env
	gen = tsk.generator
	bld = gen.bld
	cwdx = tsk.get_cwd()
	def to_list(xx):
		if isinstance(xx, str): return [xx]
		return xx
	def merge(lst1, lst2):
		if lst1 and lst2:
			return lst1[:-1] + [lst1[-1] + lst2[0]] + lst2[1:]
		return lst1 + lst2
	lst = []
	%s
	if '' in lst:
		lst = [x for x in lst if x]
	tsk.last_cmd = lst
	return tsk.exec_command(lst, cwd=cwdx, env=env.env or None)
så   
def f(tsk):
	sig = tsk.generator.bld.hash_env_vars(tsk.env, tsk.vars)
	tsk.m.update(sig)
	env = tsk.env
	gen = tsk.generator
	bld = gen.bld
	cwdx = tsk.get_cwd()
	p = env.get_flat
	buf = []
	%s
	tsk.m.update(repr(buf).encode())
t   store_task_typec           B   s   e  Z d  Z d „  Z RS(   sä   
	Metaclass: store the task classes into the dict pointed by the
	class attribute 'register' which defaults to :py:const:`waflib.Task.classes`,

	The attribute 'run_str' is compiled into a method 'run' bound to the task class.
	c         C   sL  t  t |  ƒ j | | | ƒ |  j } | d k rH| d k rHt |  d d  ƒ rö t |  j |  j ƒ \ } } t	 j
 |  j ƒ |  _ |  j |  _ d  |  _ | |  _ t t |  j | ƒ ƒ |  _ |  j j ƒ  |  j r/t |  j ƒ } | ró | |  _ qó q/n9 t |  d d  ƒ r/d |  j k r/t	 j
 |  j ƒ |  _ n  |  t |  d t ƒ | <n  d  S(   Nt   evilt   Taskt   run_strt   runt   hcodet   register(   t   superR   t   __init__t   __name__t   getattrt   Nonet   compile_funR   t   shellR    t   h_cmdR   t   orig_run_strR   t   listt   sett   varst   sortt   compile_sig_varst   sig_varst   __dict__t   classes(   t   clst   namet   basest   dictt   ft   dvarst   fun(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR   l   s$    				!(   R   t
   __module__t   __doc__R   (    (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR   e   s   R   R   c           B   s‹  e  Z d  Z g  Z e Z e Z d Z g  Z g  Z	 g  Z
 g  Z e j 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" 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& „  Z0 d+ Z2 d' „  Z3 d( „  Z4 d) „  Z5 RS(,   s{  
	Task objects represents actions to perform such as commands to execute by calling the `run` method.

	Detecting when to execute a task occurs in the method :py:meth:`waflib.Task.Task.runnable_status`.

	Detecting which tasks to execute is performed through a hash value returned by
	:py:meth:`waflib.Task.Task.signature`. The task signature is persistent from build to build.
	t   GREENi    t   hasrunt	   generatort   envt   inputst   outputst	   dep_nodest	   run_afterc         O   so   t  |  _ y | d |  _ Wn t k
 r6 |  |  _ n X| d |  _ g  |  _ g  |  _ g  |  _ t ƒ  |  _	 d  S(   NR&   R'   (
   t   NOT_RUNR%   R&   t   KeyErrorR'   R(   R)   R*   R   R+   (   t   selft   kt   kw(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR   Â   s    				c         C   s   |  j  ƒ  | j  ƒ  k S(   N(   t   priority(   R.   t   other(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   __lt__Ø   s    c         C   s   |  j  ƒ  | j  ƒ  k S(   N(   R1   (   R.   R2   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   __le__Ú   s    c         C   s   |  j  ƒ  | j  ƒ  k  S(   N(   R1   (   R.   R2   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   __gt__Ü   s    c         C   s   |  j  ƒ  | j  ƒ  k S(   N(   R1   (   R.   R2   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   __ge__Þ   s    c         C   s…   |  j  j } t |  d d ƒ p0 t | d | j ƒ } t | t ƒ r� t j j	 | ƒ ri | j
 j | ƒ } q� |  j  j j | ƒ } n  | S(   sO   
		:return: current working directory
		:rtype: :py:class:`waflib.Node.Node`
		t   cwdN(   R&   t   bldR   R   t   bldnodet
   isinstancet   strt   ost   patht   isabst   roott	   make_node(   R.   R8   t   ret(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   get_cwdá   s    'c         C   s‰   | } d | k r' | j  d d ƒ } n  d | k rH | j  d d ƒ } n  | | k sx d | k sx d | k sx d | k r… d | } n  | S(	   s¬   
		Surround a process argument by quotes so that a list of arguments can be written to a file

		:param x: flag
		:type x: string
		:return: quoted flag
		:rtype: string
		s   \s   \\t   "s   \"t    s   	t   's   "%s"(   t   replace(   R.   t   xt   old(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt
   quote_flagï   s    	0c         C   s$   |  j  |  j t |  j d d ƒ f S(   sw   
		Priority of execution; the higher, the earlier

		:return: the priority value
		:rtype: a tuple of numeric values
		t   tg_idx_counti    (   t   weightt
   prio_orderR   R&   (   R.   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR1     s    c         C   s1   | d g g  | d D] } |  j  | ƒ ^ q f S(   s½   
		Splits a list of process commands into the executable part and its list of arguments

		:return: a tuple containing the executable first and then the rest of arguments
		:rtype: tuple
		i    i   (   RI   (   R.   t   cmdRG   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   split_argfile
  s    c   	      K   sP  d | k r |  j  ƒ  | d <n  t |  d ƒ r> |  j | d <n  |  j j r¼ t | j d ƒ pn |  j j pn t j ƒ } | d <t	 |  j j t
 ƒ r� |  j j n t j j |  j j ƒ | d <n  t |  d ƒ rÛ |  j | d <n  t |  d ƒ rú |  j | d <n  t	 | t
 ƒ s:t j rJt g  | D] } t | ƒ ^ qƒ t | ƒ d k } n t | ƒ d k } | r:t |  d	 t ƒ r:|  j | ƒ \ } } z‚ t j ƒ  \ } } t j | d
 j | ƒ j ƒ  ƒ t j | ƒ t j rét j d | | ƒ n  |  j j j  | d | g | � SWd y t j! | ƒ Wn t" k
 r2n XXq:n  |  j j j  | | � S(   s¶  
		Wrapper for :py:meth:`waflib.Context.Context.exec_command`.
		This version set the current working directory (``build.variant_dir``),
		applies PATH settings (if self.env.PATH is provided), and can run long
		commands through a temporary ``@argfile``.

		:param cmd: process command to execute
		:type cmd: list of string (best) or string (process will use a shell)
		:return: the return code
		:rtype: int

		Optional parameters:

		#. cwd: current working directory (Node or string)
		#. stdout: set to None to prevent waf from capturing the process standard output
		#. stderr: set to None to prevent waf from capturing the process standard error
		#. timeout: timeout value (Python 3)
		R7   t   timeoutR'   t   PATHt   stdoutt   stderri    i@ t   allow_argsfiles   
s   argfile: @%r -> %rt   @N(#   RB   t   hasattrRO   R'   RP   R   t   getR<   t   environR:   R;   t   pathsept   joinRQ   RR   R    t   is_win32t   sumt   lenR   t   TrueRN   t   tempfilet   mkstempt   writet   encodet   closeR   t   verboset   debugR&   R8   t   exec_commandt   removet   OSError(	   R.   RM   R0   R'   t   argt   too_longt   argst   fdt   tmp(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRe     s:    2@	8	%c         C   s(  y |  j  j j |  j ƒ  =Wn t k
 r- n Xy |  j ƒ  } Wn) t k
 ri t j ƒ  |  _	 t
 |  _ nr X| r… | |  _ t |  _ nV y |  j ƒ  Wn< t j k
 r© n2 t k
 rÑ t j ƒ  |  _	 t
 |  _ n
 Xt |  _ |  j t k r$|  j r$y |  j  j j |  j ƒ  =Wq$t k
 r q$Xn  d S(   sd   
		Runs the task and handles errors

		:return: 0 or None if everything is fine
		:rtype: integer
		N(   R&   R8   t	   task_sigst   uidR-   R   t	   Exceptiont	   tracebackt
   format_exct   err_msgt	   EXCEPTIONR%   t   err_codet   CRASHEDt   post_runR   t   WafErrort   SUCCESSt   scant   imp_sigs(   R.   RA   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   processO  s2    			c         C   s×   |  j  j j d k r d S|  j ƒ  } | rÓ | j r@ | j } n t } |  j  j j d k r¨ t j j } t j j } | j	 | d i t
 j d 6d d 6| d 6| d	 6ƒqÓ | j	 | d i d d 6d d 6d d	 6ƒn  d S(
   s1   Writes the execution status on the context loggeri   Ni   t   extrat   streamt    t
   terminatort   c1t   c2(   R&   R8   t   progress_bart   displayt   loggerR   t   colorst
   cursor_offt	   cursor_ont   infot   sysRR   (   R.   R8   t   sR„   R€   R�   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   log_displayx  s    	5c            sÃ  t  j |  j ƒ } t  j j } |  j j j ‰  ‡  f d †  } |  j j j d k rs |  j j j | ƒ  ˆ  j	 | | ƒ S|  j j j d k rFt
 |  j j j ƒ } y, d j g  |  j D] } | j ^ q° ƒ } Wn t k
 râ d } n Xy, d j g  |  j D] } | j ^ qö ƒ } Wn t k
 r(d } n Xd ˆ  j	 | ƒ  | | | f St
 |  ƒ } | s\d	 Sˆ  j	 }	 t t
 |	 ƒ ƒ } d | | f }
 |  j ƒ  } | r¦| d 7} n  |
 | ƒ  |	 | | | | f S(
   si   
		Returns an execution status for the console, the progress bar, or the IDE output.

		:rtype: string
		c              s   ˆ  j  ˆ  j j ƒ  S(   N(   t	   processedt   readyt   qsize(    (   t   master(    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   cur•  s    i   i   t   ,R~   s3   |Total %s|Current %s|Inputs %s|Outputs %s|Time %s|
s   [%%%dd/%%%dd] %%s%%s%%s%%s
RD   N(   R   R…   t   colort   NORMALR&   R8   t   producerR‚   t   progress_linet   totalR;   t   timerRY   R(   R   t   AttributeErrorR)   R   R\   t   keyword(   R.   t   col1t   col2R�   t   elat   nt   inst   outsRŠ   R–   t   fsR0   (    (   R�   s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRƒ   ‹  s6    ",
,
	c         C   sC   t  |  j ƒ t  |  j ƒ t  |  j ƒ t  |  j ƒ |  j j |  j f S(   s–   
		Identifies a task type for all the constraints relevant for the scheduler: precedence, file production

		:return: a hash value
		:rtype: string
		(   t   tuplet   beforet   aftert   ext_int   ext_outt	   __class__R   R   (   R.   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   hash_constraints´  s    c         C   s  t  j r( d |  t |  d d ƒ f } n d } t |  j d d ƒ } t |  d d ƒ r\ |  j S|  j ss d | |  f S|  j t k r¼ y d | |  j | f SWqt	 k
 r¸ d	 | | f SXnE |  j t
 k rÙ d
 | | f S|  j t k rð d | Sd | |  j f Sd S(   sU   
		Returns an error message to display the build failure reasons

		:rtype: string
		s   : %r
%rt   last_cmdR~   s*    (run with -v to display more information)R   Rr   s/   task in %r was not executed for some reason: %rs+    -> task in %r failed with exit status %r%ss    -> task in %r failed%ss    -> missing files in %r%ss/    -> %r canceled because of missing dependenciess!   invalid status for task in %r: %rN(   R   Rc   R   R&   R   Rr   R%   Ru   Rt   R˜   t   MISSINGt   CANCELED(   R.   t   msgR   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   format_error½  s$    		c         C   sŸ   |  j  | } | s g  St | t ƒ r6 |  j  | } n | } t | t ƒ rf g  | D] } | | ^ qR Sg  } x( | D]  } | j | ƒ | j | ƒ qs W| Sd S(   s˜  
		Enable scriptlet expressions of the form ${FOO_ST:FOO}
		If the first variable (FOO_ST) is empty, then an empty list is returned

		The results will be slightly different if FOO_ST is a list, for example::

			env.FOO    = ['p1', 'p2']
			env.FOO_ST = '-I%s'
			# ${FOO_ST:FOO} returns
			['-Ip1', '-Ip2']

			env.FOO_ST = ['-a', '-b']
			# ${FOO_ST:FOO} returns
			['-a', '-b', 'p1', '-a', '-b', 'p2']
		N(   R'   R:   R;   t   extendt   append(   R.   t   var1t   var2Rl   t   itRG   t   lstt   y(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   colonØ  s    c         C   sH  |  j  j } |  j rT | j d	 ƒ s. |  j rT |  j d } | j | j j ƒ  ƒ Sn  |  j pc |  j sp |  j  j St |  j ƒ d k r¨ |  j d } | j | j j ƒ  ƒ Sd j	 g  |  j D] } | j | j j ƒ  ƒ ^ q¸ ƒ } d j	 g  |  j D] } | j | j j ƒ  ƒ ^ qï ƒ } |  j r(d } n d } d |  j  j | | | f S(
   s   string to display to the usert   libt   programi    i   RD   s    -> R~   s
   %s: %s%s%s(   Rµ   R¶   (
   R¦   R   R)   t   endswithR(   t	   path_fromt   ctxt   launch_nodeR\   RY   (   R.   R   t   nodet   at   src_strt   tgt_strt   sep(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   __str__ù  s     	
77		c         C   sn   |  j  j } | j d	 ƒ r d St |  j ƒ d k rM t |  j ƒ d k rM d S|  j sj |  j rc d Sd Sn  d S(
   s4   Display keyword used to prettify the console outputsRµ   R¶   t   Linkingi   t	   Compilingt   Creatingt   Runningt
   Processing(   Rµ   R¶   (   R¦   R   R·   R\   R(   R)   (   R.   R   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR™     s    *		c         C   sð   yT d j  g  |  j D] } | j ^ q ƒ } d j  g  |  j D] } | j ^ q; ƒ } Wng t k
 r½ d j  g  |  j D] } t | ƒ ^ qt ƒ } d j  g  |  j D] } t | ƒ ^ qŸ ƒ } n Xd j  d t |  ƒ |  j j d | d | d g ƒ S(   s   for debugging purposesR‘   R~   s   
	{task %r: RD   s    -> t   }(	   RY   R(   R   R)   R˜   R;   t   idR¦   R   (   R.   RG   Rž   RŸ   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   __repr__  s    (,+/c         C   s   y |  j  SWnm t k
 rz t j |  j j ƒ } | j } x( |  j |  j D] } | | j	 ƒ  ƒ qJ W| j
 ƒ  |  _  |  j  SXd S(   s  
		Returns an identifier used to determine if tasks are up-to-date. Since the
		identifier will be stored between executions, it must be:

			- unique for a task: no two tasks return the same value (for a given build context)
			- the same for a given task instance

		By default, the node paths, the class name, and the function are used
		as inputs to compute a hash.

		The pointer to the object (python built-in 'id') will change between build executions,
		and must be avoided in such hashes.

		:return: hash value
		:rtype: string
		N(   t   uid_R˜   R    t   md5R¦   R   t   updateR(   R)   t   abspatht   digest(   R.   t   mt   upRG   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRn   &  s    	c         C   s5   t  | t ƒ r! |  j | 7_ n |  j j | ƒ d S(   sj   
		Appends the nodes to the *inputs* list

		:param inp: input nodes
		:type inp: node or list of nodes
		N(   R:   R   R(   R®   (   R.   t   inp(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt
   set_inputsA  s    c         C   s5   t  | t ƒ r! |  j | 7_ n |  j j | ƒ d S(   sl   
		Appends the nodes to the *outputs* list

		:param out: output nodes
		:type out: node or list of nodes
		N(   R:   R   R)   R®   (   R.   t   out(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   set_outputsM  s    c         C   s)   t  | t ƒ s t ‚ |  j j | ƒ d S(   s  
		Run this task only after the given *task*.

		Calling this method from :py:meth:`waflib.Task.Task.runnable_status` may cause
		build deadlocks; see :py:meth:`waflib.Tools.fc.fc.runnable_status` for details.

		:param task: task
		:type task: :py:class:`waflib.Task.Task`
		N(   R:   R   t   AssertionErrorR+   t   add(   R.   t   task(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   set_run_afterY  s    
c         C   sš   y |  j  SWn t k
 r n Xt j |  j ƒ |  _ |  j ƒ  |  j ƒ  |  j r€ y |  j	 ƒ  Wq€ t
 j k
 r| |  j ƒ  SXn  |  j j ƒ  } |  _  | S(   s�  
		Task signatures are stored between build executions, they are use to track the changes
		made to the input nodes (not to the outputs!). The signature hashes data from various sources:

		* explicit dependencies: files listed in the inputs (list of node objects) :py:meth:`waflib.Task.Task.sig_explicit_deps`
		* implicit dependencies: list of nodes returned by scanner methods (when present) :py:meth:`waflib.Task.Task.sig_implicit_deps`
		* hashed data: variables/values read from task.vars/task.env :py:meth:`waflib.Task.Task.sig_vars`

		If the signature is expected to give a different result, clear the cache kept in ``self.cache_sig``::

			from waflib import Task
			class cls(Task.Task):
				def signature(self):
					sig = super(Task.Task, self).signature()
					delattr(self, 'cache_sig')
					return super(Task.Task, self).signature()

		:return: the signature value
		:rtype: string or bytes
		(   t	   cache_sigR˜   R    RÊ   R   RÎ   t   sig_explicit_depsR   Ry   t   sig_implicit_depsR   t
   TaskRescant	   signatureRÍ   (   R.   RA   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRÜ   f  s    

	c         C   sp  |  j  j } | j d k  r t Sx1 |  j D]& } | j s< t S| j t k  r) t Sq) Wy |  j	 ƒ  } Wn t
 j k
 rz t SX|  j ƒ  } y | j | } Wn" t k
 r¼ t j d |  ƒ t SX| | k rÝ t j d |  ƒ t Sx} |  j D]r } | j j | ƒ } | st j d |  ƒ t S| | k r9t j d |  ƒ t S| j ƒ  sç t j d |  ƒ t Sqç W|  j rlt pot S(   sÓ   
		Returns the Task status

		:return: a task state in :py:const:`waflib.Task.RUN_ME`,
			:py:const:`waflib.Task.SKIP_ME`, :py:const:`waflib.Task.CANCEL_ME` or :py:const:`waflib.Task.ASK_LATER`.
		:rtype: int
		i    sH   task: task %r must run: it was never run before or the task code changeds2   task: task %r must run: the task signature changeds7   task: task %r must run: an output node has no signaturesC   task: task %r must run: an output node was produced by another tasks5   task: task %r must run: an output node does not exist(   R&   R8   t
   is_installt   SKIP_MER+   R%   t	   ASK_LATERt   SKIPPEDt	   CANCEL_MERÜ   R   t   TaskNotReadyRn   Rm   R-   R   Rd   t   RUN_MER)   t	   node_sigsRV   t   existst
   always_run(   R.   R8   t   tt   new_sigt   keyt   prev_sigR»   t   sig(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   runnable_status’  sB    	c         C   s·   |  j  j } xa |  j D]V } | j ƒ  sY t |  _ d | j ƒ  |  _ t j	 |  j ƒ ‚ n  |  j
 ƒ  | j | <q W|  j ƒ  | j |  j
 ƒ  <|  j s³ y
 |  ` Wq³ t k
 r¯ q³ Xn  d S(   s’   
		Called after successful execution to record that the task has run by
		updating the entry in :py:attr:`waflib.Build.BuildContext.task_sigs`.
		s   -> missing file: %rN(   R&   R8   R)   Rå   R©   R%   RÌ   Rr   R   Rw   Rn   Rä   RÜ   Rm   t   keep_last_cmdR¨   R˜   (   R.   R8   R»   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRv   Æ  s    		
c         C   sö   |  j  j } |  j j } x( |  j |  j D] } | | j ƒ  ƒ q) W| j rò | j } xš |  j |  j D]… } y | | } Wn t	 k
 r� qf n XxW | D]O } y | j ƒ  } Wn, t
 k
 rÜ t | d ƒ rÝ | ƒ  } qÝ n X| | ƒ q˜ Wqf Wn  d S(   s™   
		Used by :py:meth:`waflib.Task.Task.signature`; it hashes :py:attr:`waflib.Task.Task.inputs`
		and :py:attr:`waflib.Task.Task.dep_nodes` signatures.
		t   __call__N(   R&   R8   RÎ   RË   R(   R*   t   get_bld_sigt   deps_manR)   R-   R˜   RU   (   R.   R8   t   updRG   t   additional_depst   dt   v(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRÙ   Ù  s$    		c         C   sf   |  j  j } g  |  j |  j D]& } | j ƒ  r | j | j | ^ q } |  j j t	 j
 | ƒ ƒ d S(   s  
		Enable rebuilds on input files task signatures. Not used by default.

		Example: hashes of output programs can be unchanged after being re-linked,
		despite the libraries being different. This method can thus prevent stale unit test
		results (waf_unit_test.py).

		Hashing input file timestamps is another possibility for the implementation.
		This may cause unnecessary rebuilds when input tasks are frequently executed.
		Here is an implementation example::

			lst = []
			for node in self.inputs + self.dep_nodes:
				st = os.stat(node.abspath())
				lst.append(st.st_mtime)
				lst.append(st.st_size)
			self.m.update(Utils.h_list(lst))

		The downside of the implementation is that it absolutely requires all build directory
		files to be declared within the current build.
		N(   R&   R8   R(   R*   t   is_bldRm   Rä   RÎ   RË   R    t   h_list(   R.   R8   R»   R²   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   sig_deep_inputsö  s    =c         C   s2   |  j  j j |  j |  j ƒ } |  j j | ƒ d S(   s˜  
		Used by :py:meth:`waflib.Task.Task.signature`; it hashes :py:attr:`waflib.Task.Task.env` variables/values
		When overriding this method, and if scriptlet expressions are used, make sure to follow
		the code in :py:meth:`waflib.Task.Task.compile_sig_vars` to enable dependencies on scriptlet results.

		This method may be replaced on subclasses by the metaclass to force dependencies on scriptlet code.
		N(   R&   R8   t   hash_env_varsR'   R   RÎ   RË   (   R.   Rë   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR     s    c         C   sÈ  |  j  j } |  j ƒ  } | j j | g  ƒ } | rþ y | |  j ƒ  k rL | SWn’ t j k
 rf ‚  n| t k
 rá xl | j	 j |  j ƒ  g  ƒ D]K } | j
 ƒ  r� | j ƒ  r� y | j j | j =WqÚ t k
 rÖ qÚ Xq� q� Wn X| j | =t j d ƒ ‚ n  |  j ƒ  \ | j	 | <| j | <t j rNt j d |  | j	 | | j | ƒ n  y |  j ƒ  | j | <Wn\ t k
 rÃxE | j	 j |  j ƒ  g  ƒ D]( } | j ƒ  s‘t j d | |  ƒ q‘q‘W‚  n Xd S(   s¥  
		Used by :py:meth:`waflib.Task.Task.signature`; it hashes node signatures
		obtained by scanning for dependencies (:py:meth:`waflib.Task.Task.scan`).

		The exception :py:class:`waflib.Errors.TaskRescan` is thrown
		when a file has changed. In this case, the method :py:meth:`waflib.Task.Task.signature` is called
		once again, and return here to call :py:meth:`waflib.Task.Task.scan` and searching for dependencies.
		t   rescans(   deps: scanner for %s: %r; unresolved: %rsP   Dependency %r for %r is missing: check the task declaration and the build order!N(   R&   R8   Rn   Rz   RV   t   compute_sig_implicit_depsR   Râ   t   EnvironmentErrort	   node_depsRõ   Rå   t   parentt   childrenR   R-   RÛ   Ry   t   raw_depsR   Rc   Rd   t   warn(   R.   R8   Ré   t   prevRG   R/   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRÚ   -  s8    	"
 	'"c         C   s_   |  j  j } |  j ƒ  x9 |  j j j j |  j ƒ  g  ƒ D] } | | j ƒ  ƒ q8 W|  j  j	 ƒ  S(   sé   
		Used by :py:meth:`waflib.Task.Task.sig_implicit_deps` for computing the actual hash of the
		:py:class:`waflib.Node.Node` returned by the scanner.

		:return: a hash value for the implicit dependencies
		:rtype: string or bytes
		(
   RÎ   RË   t   are_implicit_nodes_readyR&   R8   Rü   RV   Rn   Rï   RÍ   (   R.   Rñ   R/   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRú   ^  s
    
(c         C   s3  |  j  j } y | j } Wn t k
 r9 i  | _ } n Xy | | j } WnT t k
 r¡ i  } | | j <x3 | j D]$ } x | j D] } | | | <q† Wqv Wn Xt } xL | j	 j
 |  j ƒ  g  ƒ D]/ } | | k rÄ |  j j | | ƒ t } qÄ qÄ W| r/x/ |  j D]! } | j st j d ƒ ‚ qqWn  d S(   sÒ   
		For each node returned by the scanner, see if there is a task that creates it,
		and infer the build order

		This has a low performance impact on null builds (1.86s->1.66s) thanks to caching (28s->1.86s)
		s	   not readyN(   R&   R8   t   dct_implicit_nodesR˜   t   current_groupR-   t	   cur_tasksR)   t   FalseRü   RV   Rn   R+   RÕ   R]   R%   R   Râ   (   R.   R8   t   cachet   dctt   tskRG   t   modified(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR  p  s*    "	(   R%   R&   R'   R(   R)   R*   R+   N(6   R   R"   R#   R   R  Ræ   R   R’   R¤   R¥   R¢   R£   R    t   SIG_NILR   Rí   RK   t   tree_weightRL   t	   __slots__R   R3   R4   R5   R6   RB   RI   R1   RN   Re   R{   R‹   Rƒ   R§   R¬   R´   RÀ   R™   RÈ   Rn   RÑ   RÓ   R×   RÜ   Rì   Rv   RÙ   R÷   R   R   Ry   RÚ   Rú   R  (    (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR   Š   s`   													<	)		)				!			
					,	4					1	i   c         C   s—   y |  j  SWn… t k
 r’ t j |  j j j d d ƒ ƒ } | j } x4 |  j |  j	 D]" } | | j
 ƒ  j d d ƒ ƒ qV W| j ƒ  |  _  |  j  SXd  S(   Ns   latin-1t   xmlcharrefreplace(   RÉ   R˜   R    RÊ   R¦   R   Ra   RË   R(   R)   RÌ   RÍ   (   R.   RÎ   RÏ   RG   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRn   ’  s    !	 c         C   s~   t  j } x0 | | j ƒ D] } | | |  j ƒ k r d Sq W|  j j | | j ƒ k r[ d S| j j | |  j ƒ k rz d Sd S(   sC  
	Returns a non-zero value if task t1 is to be executed before task t2::

		t1.ext_out = '.h'
		t2.ext_in = '.h'
		t2.after = ['t1']
		t1.before = ['t2']
		waflib.Task.is_before(t1, t2) # True

	:param t1: Task object
	:type t1: :py:class:`waflib.Task.Task`
	:param t2: Task object
	:type t2: :py:class:`waflib.Task.Task`
	i   i    (   R    t   to_listR¤   R¥   R¦   R   R£   R¢   (   t   t1t   t2R  R/   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt	   is_beforeŸ  s    	c         C   sý   t  j t ƒ } t  j t ƒ } x} |  D]u } x" | j D] } | | j | ƒ q5 Wx" | j D] } | | j | ƒ qZ Wx" | j D] } | | j | ƒ q Wq% Wt | j ƒ  ƒ j | j ƒ  ƒ } x7 | D]/ } x& | | D] } | j	 j
 | | ƒ q× WqÆ Wd S(   s¢   
	Updates the ``run_after`` attribute of all tasks based on the task inputs and outputs

	:param tasks: tasks
	:type tasks: list of :py:class:`waflib.Task.Task`
	N(   R    t   defaultdictR   R(   RÕ   R*   R)   t   keyst   intersectionR+   RË   (   t   tasksRž   RŸ   RG   R¼   t   linksR/   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   set_file_constraints»  s    !t	   TaskGroupc           B   s/   e  Z d  Z d „  Z d „  Z e e d ƒ Z RS(   s…   
	Wrap nxm task order constraints into a single object
	to prevent the creation of large list/set objects

	This is an optimization
	c         C   s   | |  _  | |  _ t |  _ d  S(   N(   R  t   nextR  t   done(   R.   R  R  (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR   Ù  s    		c         C   s%   x |  j  D] } | j s
 t Sq
 Wt S(   N(   R  R%   R,   Rx   (   R.   R/   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt
   get_hasrunÞ  s    	N(   R   R"   R#   R   R  t   propertyR   R%   (    (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR  Ò  s   		c         C   s—  t  j t ƒ } x+ |  D]# } | j ƒ  } | | j | ƒ q Wt | j ƒ  ƒ } t | ƒ } x5t | ƒ D]'} | | | d } xt | d | ƒ D]÷ } | | | d }	 t | |	 ƒ rÊ | }
 | } n! t |	 | ƒ r” | }
 | } n q” | | |
 }
 | | | } t |
 ƒ d k  s+t | ƒ d k  rOx] | D] } | j	 j
 |
 ƒ q2Wq” t t |
 ƒ t | ƒ ƒ } x | D] } | j	 j | ƒ qqWq” Wqh Wd S(   s±   
	Updates the ``run_after`` attribute of all tasks based on the after/before/ext_out/ext_in attributes

	:param tasks: tasks
	:type tasks: list of :py:class:`waflib.Task.Task`
	i    i   i   N(   R    R  R   R§   R®   R  R\   t   rangeR  R+   RË   R  R   RÕ   (   R  t   cstr_groupsRG   t   hR  t   maxit   iR  t   jR  R¼   t   bt   group(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   set_precedence_constraintsæ  s2    		$c         B   s   i  } |  | U| d S(   sµ   
	Compiles a scriptlet expression into a Python function

	:param c: function to compile
	:type c: string
	:return: the function 'f' declared in the input string
	:rtype: function
	R   (    (   t   ct   dc(    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   funex  s    	s"   (?P<var>\w+)|(?P<or>\|)|(?P<and>&)s   ^(SRC|TGT)\W+.*?$sM   (?P<backslash>\\)|(?P<dollar>\$\$)|(?P<subst>\$\{(?P<var>\w+)(?P<code>.*?)\})c            s�  g  ‰ ‡ f d †  } t  j | |  ƒ p* |  }  g  ‰ ‡ f d †  ‰  ‡  f d †  } g  } | j } xÀˆ D]¸\ } } | d k r£ | r– | d | ƒ q| d ƒ qg | d k rÓ | rÆ | d | ƒ q| d	 ƒ qg | r| j d
 ƒ r¤ˆ  | ƒ | d } | d k rd } n| | d k r&d } ng t j | ƒ rFd | d } nG t j | ƒ rfd | d } n' ˆ  | ƒ | d  d k r�d | } n  | d | | f ƒ q| j d ƒ ràt j | | d ƒ } | d | | f ƒ qd | | f }	 ˆ  |	 ƒ | |	 ƒ qg ˆ  | ƒ | d | ƒ qg W| r?d d j | ƒ } n d } t |  | f }
 t	 j
 d |
 j ƒ  j ƒ  ƒ t |
 ƒ ˆ f S(   sH   
	Creates a compiled function to execute a process through a sub-shell
	c            s\   |  j  } | d ƒ r d S| d ƒ r) d S| d ƒ rX ˆ  j | d ƒ | d ƒ f ƒ d Sd  S(	   Nt   dollart   $t	   backslashs   \\t   substt   vart   codes   %s(   R%  R®   R   (   t   matcht   g(   t   extr(    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   repl%  s    	c            s    |  ˆ  k r ˆ  j  |  ƒ n  d  S(   N(   R®   (   RG   (   R    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   add_dvar1  s    c            sK   |  j  d ƒ r d S|  j  d ƒ r& d S|  j  d ƒ } ˆ  | ƒ d | Sd  S(   Nt   ands    and t   ors    or R.  s   env[%r](   R%  (   RÎ   RG   (   R4  (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   replc5  s    
t   SRCs   tsk.inputs%ss1   " ".join([a.path_from(cwdx) for a in tsk.inputs])t   TGTs   tsk.outputs%ss2   " ".join([a.path_from(cwdx) for a in tsk.outputs])t   :i   s'   [a.path_from(cwdx) for a in tsk.inputs]s(   [a.path_from(cwdx) for a in tsk.outputs]s   [tsk.inputs%s]i   s   [tsk.outputs%s]R	  t   genR8   s   %rs   " ".join(tsk.colon(%r, %s))t   ?s   p(%r) if (%s) else ""s   %s%ss   p('%s')s   %% (%s) s   ,
		R~   s
   action: %s(   R	  R;  R8   (   t   reg_actt   subR®   t
   startswitht   re_novarR0  t   re_condRY   t   COMPILE_TEMPLATE_SHELLR   Rd   t   stript
   splitlinesR)  (   t   lineR3  R7  t   parmt   appR.  t   methRÎ   t   exprt   callR'  (    (   R4  R    R2  s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   compile_fun_shell   s^    
	

		


s[   (?P<space>\s+)|(?P<subst>\$\{(?P<var>\w+)(?P<code>.*?)\})|(?P<text>([^$ \t\n\r\f\v]|\$\$)+)c            s  g  } g  ‰ t  } | j } ‡ f d †  ‰  ‡  f d †  } xt j |  ƒ D]n} | j d ƒ rj t  } qI n| j d ƒ rŸ | d | j d ƒ j d d ƒ ƒ nà| j d ƒ r| j d	 ƒ } | j d
 ƒ } | d k rü | rï | d | ƒ q|| d ƒ q| d k r,| r| d | ƒ q|| d ƒ q| rd| j d ƒ rýˆ  | ƒ | d } | d k rjd } n| | d k rd } ng t j | ƒ rŸd | d } nG t j | ƒ r¿d | d } n' ˆ  | ƒ | d  d$ k ræd | } n  | d | | f ƒ q|| j d ƒ r9t	 j
 | | d ƒ } | d | | f ƒ q|d | | f }	 ˆ  |	 ƒ | d |	 ƒ q| d | ƒ ˆ  | ƒ n  | r±d | d | d  f }
 | d  =|
 | d  <n  t } qI Wg  | D] } d! | ^ qÂ} t d" j | ƒ } t j d# | j ƒ  j ƒ  ƒ t | ƒ ˆ f S(%   sH   
	Creates a compiled function to execute a process without a sub-shell
	c            s    |  ˆ  k r ˆ  j  |  ƒ n  d  S(   N(   R®   (   RG   (   R    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR4  |  s    c            sK   |  j  d ƒ r d S|  j  d ƒ r& d S|  j  d ƒ } ˆ  | ƒ d | Sd  S(   NR5  s    and R6  s    or R.  s   env[%r](   R%  (   RÎ   RG   (   R4  (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR7  €  s    
t   spacet   texts   [%r]s   $$R+  R-  R.  R/  R8  s   [tsk.inputs%s]s'   [a.path_from(cwdx) for a in tsk.inputs]R9  s   [tsk.outputs%s]s(   [a.path_from(cwdx) for a in tsk.outputs]R:  i   i   R	  R;  R8   s   %rs   tsk.colon(%r, %s)R<  s    to_list(env[%r] if (%s) else [])s   %s%ss   to_list(%s)s   to_list(env[%r])s   merge(%s, %s)iþÿÿÿiÿÿÿÿs   lst.extend(%s)s   
	s
   action: %s(   R	  R;  R8   (   R  R®   t   reg_act_noshellt   finditerR%  RF   R?  R@  R0  RA  R>  R]   t   COMPILE_TEMPLATE_NOSHELLRY   R   Rd   RC  RD  R)  (   RE  t   buft   mergeRG  R7  RÎ   R.  R/  RI  RJ  Rl   RG   R!   (    (   R4  R    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   compile_fun_noshells  sp    	&

		


c            sù   t  |  t ƒ rZ |  j d ƒ d k sN |  j d ƒ d k sN |  j d ƒ d k rÛ t } qÛ n� g  } g  ‰  xY |  D]Q } t  | t ƒ r± t | | ƒ \ } } | | 7} ˆ  j | ƒ qm ˆ  j | ƒ qm W‡  f d †  } | | f S| rë t |  ƒ St |  ƒ Sd S(   s�  
	Parses a string expression such as '${CC} ${SRC} -o ${TGT}' and returns a pair containing:

	* The function created (compiled) for use as :py:meth:`waflib.Task.Task.run`
	* The list of variables that must cause rebuilds when *env* data is modified

	for example::

		from waflib.Task import compile_fun
		compile_fun('cxx', '${CXX} -o ${TGT[0]} ${SRC} -I ${SRC[0].parent.bldpath()}')

		def build(bld):
			bld(source='wscript', rule='echo "foo\${SRC[0].name}\bar"')

	The env variables (CXX, ..) on the task must not hold dicts so as to preserve a consistent order.
	The reserved keywords ``TGT`` and ``SRC`` represent the task input and output nodes

	t   <i    t   >s   &&c            s+   x$ ˆ  D] } | |  ƒ } | r | Sq Wd  S(   N(   R   (   RÖ   RG   RA   (   t   funs_lst(    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   composed_funé  s
    N(   R:   R;   t   findR]   R   R®   RK  RS  (   RE  R   t	   dvars_lstRG   R!   R    RW  (    (   RV  s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR   È  s     ?


c         C   sb   g  } x8 t  |  ƒ D]* } | d  d k r | j d | ƒ q q W| r^ t t d j | ƒ ƒ Sd S(	   sÍ  
	This method produces a sig_vars method suitable for subclasses that provide
	scriptlet code in their run_str code.
	If no such method can be created, this method returns None.

	The purpose of the sig_vars method returned is to ensures
	that rebuilds occur whenever the contents of the expression changes.
	This is the case B below::

		import time
		# case A: regular variables
		tg = bld(rule='echo ${FOO}')
		tg.env.FOO = '%s' % time.time()
		# case B
		bld(rule='echo ${gen.foo}', foo='%s' % time.time())

	:param vars: env variables such as CXXFLAGS or gen.foo
	:type vars: list of string
	:return: A sig_vars method relevant for dependencies if adequate, else None
	:rtype: A function, or None in most cases
	i   R	  R;  R8   s   buf.append(%s)s   
	(   R	  R;  R8   N(   t   sortedR®   R)  t   COMPILE_TEMPLATE_SIG_VARSRY   R   (   R   RQ  RG   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR   õ  s    R$   c
         C   sù   i | p g  d 6| d 6|  d 6| d 6|	 d 6}
 t  | t ƒ sM t  | t ƒ rZ | |
 d <n
 | |
 d <t t ƒ |  t f |
 ƒ } | t |  <| r¤ t j | ƒ | _ n  | r¿ t j | ƒ | _	 n  | rÚ t j | ƒ | _
 n  | rõ t j | ƒ | _ n  | S(   s»  
	Returns a new task subclass with the function ``run`` compiled from the line given.

	:param func: method run
	:type func: string or function
	:param vars: list of variables to hash
	:type vars: list of string
	:param color: color to use
	:type color: string
	:param shell: when *func* is a string, enable/disable the use of the shell
	:type shell: bool
	:param scan: method scan
	:type scan: function
	:rtype: :py:class:`waflib.Task.Task`
	R   R’   R   R   Ry   R   R   (   R:   R;   R¡   t   typeR   R   R    R  R¤   R¥   R¢   R£   (   R   t   funcR   R’   R¤   R¥   R¢   R£   R   Ry   t   paramsR   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   task_factory  s(    


c         C   s   d „  } | |  _  |  S(   sJ   
	Task class decorator to enable rebuilds on input files task signatures
	c         S   s   t  j |  ƒ t  j |  ƒ d  S(   N(   R   RÙ   R÷   (   R.   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRÙ   C  s    (   RÙ   (   R   RÙ   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   deep_inputs?  s    		t   TaskSemaphorec           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s0  
	Task semaphores provide a simple and efficient way of throttling the amount of
	a particular task to run concurrently. The throttling value is capped
	by the amount of maximum jobs, so for example, a `TaskSemaphore(10)`
	has no effect in a `-j2` build.

	Task semaphores are typically specified on the task class level::

		class compile(waflib.Task.Task):
			semaphore = waflib.Task.TaskSemaphore(2)
			run_str = 'touch ${TGT}'

	Task semaphores are meant to be used by the build scheduler in the main
	thread, so there are no guarantees of thread safety.
	c         C   s%   | |  _  t ƒ  |  _ t ƒ  |  _ d S(   sD   
		:param num: maximum value of concurrent tasks
		:type num: int
		N(   t   numR   t   lockingt   waiting(   R.   Rb  (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyR   \  s    	c         C   s   t  |  j ƒ |  j k S(   s?   Returns True if this semaphore cannot be acquired by more tasks(   R\   Rc  Rb  (   R.   (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt	   is_lockede  s    c         C   s6   |  j  ƒ  r" t d |  j ƒ ‚ n  |  j j | ƒ d S(   sÔ   
		Mark the semaphore as used by the given task (not re-entrant).

		:param tsk: task object
		:type tsk: :py:class:`waflib.Task.Task`
		:raises: :py:class:`IndexError` in case the resource is already acquired
		s   Cannot lock more %rN(   Re  t
   IndexErrorRc  RÕ   (   R.   R	  (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   acquirei  s    c         C   s   |  j  j | ƒ d S(   sË   
		Mark the semaphore as unused by the given task.

		:param tsk: task object
		:type tsk: :py:class:`waflib.Task.Task`
		:raises: :py:class:`KeyError` in case the resource is not acquired by the task
		N(   Rc  Rf   (   R.   R	  (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   releaseu  s    (   R   R"   R#   R   Re  Rg  Rh  (    (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyRa  L  s
   				(5   R#   R<   t   reR‰   R^   Rp   t   waflibR    R   R   R,   R©   Ru   Rs   Rª   Rà   Rx   Rß   RÞ   Rã   Rá   RB  RP  R[  R   R\  R   t   objectR   R   t
   hexversionRn   R  R  R  R&  R)  t   compileRA  R@  t   MR=  RK  RN  RS  R  R   R   R   R_  R`  t   TaskBaseRa  (    (    (    s.   /git_repos/PolyLV2/poly_mclk_in/waflib/Task.pyt   <module>   sX   <"ÿ ÿ ÿ 
	
			*		R	U-	$,	
