Ñò
 „Pc           @   sé   d  Z  d d k Z d d k Z d d k Z d d k Z d d k l Z l Z d Z d „  Z	 d „  Z
 e i d ƒ Z d „  Z e i d	 j o
 e
 Z	 n e i o
 e Z	 n d
 e f d „  ƒ  YZ e i i ƒ  Z d e f d „  ƒ  YZ d S(   s:  
Node: filesystem structure, contains lists of nodes

#. Each file/folder is represented by exactly one node.

#. Some potential class properties are stored on :py:class:`waflib.Build.BuildContext` : nodes to depend on, etc.
   Unused class members can increase the `.wafpickle` file size sensibly.

#. Node objects should never be created directly, use
   the methods :py:func:`Node.make_node` or :py:func:`Node.find_node`

#. The methods :py:func:`Node.find_resource`, :py:func:`Node.find_dir` :py:func:`Node.find_or_declare` should be
   used when a build context is present

#. Each instance of :py:class:`waflib.Context.Context` has a unique :py:class:`Node` subclass.
   (:py:class:`waflib.Node.Nod3`, see the :py:class:`waflib.Context.Context` initializer). A reference to the context owning a node is held as self.ctx
iÿÿÿÿN(   t   Utilst   Errorss#  
**/*~
**/#*#
**/.#*
**/%*%
**/._*
**/CVS
**/CVS/**
**/.cvsignore
**/SCCS
**/SCCS/**
**/vssver.scc
**/.svn
**/.svn/**
**/BitKeeper
**/.git
**/.git/**
**/.gitignore
**/.bzr
**/.bzrignore
**/.bzr/**
**/.hg
**/.hg/**
**/_MTN
**/_MTN/**
**/.arch-ids
**/{arch}
**/_darcs
**/_darcs/**
**/.DS_Storec         C   s   |  i  d ƒ S(   s™   
	Split a path by os.sep (This is not os.path.split)

	:param path: path to split
	:type path: string
	:rtype: list of string
	:return: the path, split
	t   /(   t   split(   t   path(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt
   split_path=   s    	c         C   sG   |  i  d ƒ o* |  i d ƒ d } d | d | d <| S|  i d ƒ S(   Ns   //R   i   i    (   t
   startswithR   (   R   t   ret(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   split_path_cygwinH   s
    s   [/\\]c         C   sM   |  i  d ƒ o- t i t |  ƒ d } d | d | d <| St i t |  ƒ S(   Ns   \\i   s   \i    (   R   t   reR   t   re_sp(   R   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   split_path_win32P   s
    t   cygwint   Nodec           B   s¦  e  Z d  Z d3 Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z	 d „  Z
 d „  Z d d d „ Z d 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 d4 d! g  e e e d" „ Z d# „  Z d$ „  Z  d% „  Z! d& „  Z" d' „  Z# d( „  Z$ d) „  Z% d* „  Z& d4 d+ „ Z' d4 d, „ Z( d- „  Z) d. „  Z* d/ „  Z+ d0 „  Z, d1 „  Z- d2 „  Z. e Z/ RS(5   s   
	This class is organized in two parts

	* The basic methods meant for filesystem access (compute paths, create folders, etc)
	* The methods bound to a :py:class:`waflib.Build.BuildContext` (require ``bld.srcnode`` and ``bld.bldnode``)

	The Node objects are not thread safe in any way.
	t   namet   sigt   childrent   parentt   cache_abspatht   cache_isdirc         C   s[   | |  _  | |  _ | o> | | i j o t i d | | f ƒ ‚ n |  | i | <n d  S(   Ns-   node %s exists in the parent files %r already(   R   R   R   R   t   WafError(   t   selfR   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   __init__g   s    		c         C   sb   | d |  _  | d |  _ | d d j	 o | d |  _ n | d d j	 o | d |  _ n d S(   s   Deserializes from datai    i   i   i   N(   R   R   t   NoneR   R   (   R   t   data(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   __setstate__p   s    c         C   s.   |  i  |  i t |  d d ƒ t |  d d ƒ f S(   s   Serialize the node infoR   R   N(   R   R   t   getattrR   (   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   __getstate__y   s    c         C   s   |  i  S(   s4   String representation (name), for debugging purposes(   R   (   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   __str__}   s    c         C   s
   |  i  ƒ  S(   s7   String representation (abspath), for debugging purposes(   t   abspath(   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   __repr__   s    c         C   s
   t  |  ƒ S(   sB   Node hash, used for storage in dicts. This hash is not persistent.(   t   id(   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   __hash__…   s    c         C   s   t  |  ƒ t  | ƒ j S(   s!   Node comparison, based on the IDs(   R   (   R   t   node(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   __eq__‰   s    c         C   s   t  i d ƒ ‚ d S(   sD   Implemented to prevent nodes from being copied (raises an exception)s#   nodes are not supposed to be copiedN(   R   R   (   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   __copy__   s    t   rs	   ISO8859-1c         C   s   t  i |  i ƒ  | | ƒ S(   s  
		Return the contents of the file represented by this node::

			def build(bld):
				bld.path.find_node('wscript').read()

		:type  fname: string
		:param fname: Path to file
		:type  m: string
		:param m: Open mode
		:rtype: string
		:return: File contents
		(   R    t   readfR   (   R   t   flagst   encoding(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   read‘   s    t   wc         C   s    t  i |  i ƒ  | | | ƒ d S(   sø   
		Write some text to the physical file represented by this node::

			def build(bld):
				bld.path.make_node('foo.txt').write('Hello, world!')

		:type  data: string
		:param data: data to write
		:type  flags: string
		:param flags: Write mode
		N(   R    t   writefR   (   R   R   R&   R'   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   write¡   s    c         C   s   t  i |  i ƒ  | ƒ d S(   sV   
		Change file/dir permissions::

			def build(bld):
				bld.path.chmod(493) # 0755
		N(   t   ost   chmodR   (   R   t   val(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyR-   ¯   s    c         C   se   yA t  |  d d ƒ o t i |  i ƒ  ƒ n t i |  i ƒ  ƒ Wn t j
 o n X|  i ƒ  d S(   sZ   Delete the file/folders, and remove this node from the tree. It becomes invalid after thatR   N(	   R   R   t   shutilt   rmtreeR   R,   t   unlinkt   OSErrort   evict(   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   delete¸   s    c         C   s   |  i  i |  i =d S(   s(   Internal - called when a node is removedN(   R   R   R   (   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyR3   Ã   s    c         C   s&   t  d |  i i d ƒ ƒ } |  i | S(   s   Return the file extensioni    t   .(   t   maxR   t   rfind(   R   t   k(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   suffixÇ   s    c         C   s2   |  } d } x | o | i  } | d 7} q W| S(   sR   Depth in the folder hierarchy from the filesystem root or from all the file drivesiÿÿÿÿi   (   R   (   R   t   dR.   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   heightÌ   s     	c         C   s#   t  i |  i ƒ  ƒ } | i ƒ  | S(   s   List the folder contents(   R    t   listdirR   t   sort(   R   t   lst(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyR<   Õ   s    
c         C   sç   t  |  d d ƒ o d Sy |  i i ƒ  Wn t j
 o n X|  i o‘ y t i |  i ƒ  ƒ Wn t j
 o n Xt i	 i
 |  i ƒ  ƒ p t i d |  i ƒ  ƒ ‚ n y |  i WqÚ t j
 o h  |  _ qÚ Xn t |  _ d S(   s¤   
		Create a folder represented by this node, creating intermediate nodes as needed
		An exception will be raised only when the folder cannot possibly exist there
		R   Ns!   Could not create the directory %s(   R   R   R   t   mkdirR2   R   R,   t   makedirsR   R   t   isdirR   R   R   t   AttributeErrort   TrueR   (   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyR?   Û   s$    
c         C   sº  t  | t ƒ oC g  } t | ƒ D]% } | o | d j o | | q! q! ~ } n |  } xÒ | D]Ê } | d j o | i p | } q` n y | i } Wn t j
 o h  | _ n, Xy | i | } w` Wn t j
 o n X|  i | | ƒ } y t i	 | i
 ƒ  ƒ Wq` t j
 o | i ƒ  d SXq` W| } y t i	 | i
 ƒ  ƒ Wn t j
 o | i ƒ  d SXy4 x- t | i d d ƒ p | i } t | _ qrWWn t j
 o n X| S(   s–   
		Find a node on the file system (files or folders), create intermediate nodes as needed

		:param lst: path
		:type lst: string or list of string
		R5   s   ..R   N(   t
   isinstancet   strR   R   R   RB   t   KeyErrort	   __class__R,   t   statR   R2   R3   R   R   RC   R   (   R   R>   t   _[1]t   xt   curt   chR   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt	   find_nodeø   sJ    C 


 	c         C   sè   t  | t ƒ oC g  } t | ƒ D]% } | o | d j o | | q! q! ~ } n |  } xˆ | D]€ } | d j o | i p | } q` n t | d h  ƒ o( | | i j o | i | } q` qÎ n
 h  | _ |  i | | ƒ } q` W| S(   sw   
		Find or create a node without looking on the filesystem

		:param lst: path
		:type lst: string or list of string
		R5   s   ..R   (   RD   RE   R   R   R   R   RG   (   R   R>   RI   RJ   RK   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt	   make_node-  s    C 	c      	   C   s½   t  | t ƒ oC g  } t | ƒ D]% } | o | d j o | | q! q! ~ } n |  } x] | D]U } | d j o | i p | } q` y | i | } Wq` t t f j
 o d SXq` W| S(   ss   
		Search for a node without looking on the filesystem

		:param lst: path
		:type lst: string or list of string
		R5   s   ..N(   RD   RE   R   R   R   RB   RF   R   (   R   R>   RI   RJ   RK   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   search_nodeF  s    C 
c   	      C   s,  |  } | } | i  ƒ  } | i  ƒ  } g  } d } x5 | | j o' | i | i ƒ | i } | d 8} q3 Wx/ | | j o! | d 7} | i } | d 8} qk WxJ t | ƒ t | ƒ j o0 | i | i ƒ | d 7} | i } | i } q Wx! t | ƒ D] } | i d ƒ qô W| i ƒ  t i i	 | ƒ p d S(   s  
		Path of this node seen from the other::

			def build(bld):
				n1 = bld.path.find_node('foo/bar/xyz.txt')
				n2 = bld.path.find_node('foo/stuff/')
				n1.path_from(n2) # './bar/xyz.txt'

		:param node: path to use as a reference
		:type node: :py:class:`waflib.Node.Node`
		i    i   s   ..R5   (
   R;   t   appendR   R   R   t   ranget   reverseR,   t   sept   join(	   R   R!   t   c1t   c2t   c1ht   c2hR>   t   upt   i(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt	   path_from[  s6     	 
	 
	 
c         C   sõ   y |  i  SWn t j
 o n Xt i d j oY |  i p t i } qè |  i i p t i |  i } qè |  i i ƒ  t i |  i } n_ |  i p
 d } nK |  i i p |  i t i } n* |  i i ƒ  i t i ƒ t i |  i } | |  _  | S(   sM   
		Absolute path. A cache is kept in the context as ``cache_node_abspath``
		R   t    (   R   RB   R,   RS   R   R   R   t   rstrip(   R   R.   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyR   ‡  s"    
!

)	c         C   sZ   |  } |  i  ƒ  | i  ƒ  } x% | d j o | d 8} | i } q Wt | ƒ t | ƒ j S(   së   
		Does this node belong to the subtree node?::

			def build(bld):
				node = bld.path.find_node('wscript')
				node.is_child_of(bld.path) # True

		:param node: path to use as a reference
		:type node: :py:class:`waflib.Node.Node`
		i    i   (   R;   R   R   (   R   R!   t   pt   diff(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   is_child_of£  s     
i   c         c   s«  |  i  ƒ  } | i ƒ  y t |  i i ƒ  ƒ } Wn t j
 o h  |  _ n9 X| o0 x- | t | ƒ D] }	 |  i |	 i ƒ  qf Wn x| D]}
 | |
 | ƒ } | oõ | d oê g  | d j } |  i |
 g ƒ } t i	 i
 | i ƒ  ƒ } | o/ | o | o	 | Vqq#| o	 | Vq#n t | d d
 ƒ p | o\ t | _ | oH xE | i d | d | d d | d | d | d	 | ƒ D] } | Vq‚Wq™qqŒ qŒ Wt ‚ d
 S(   s_  
		Semi-private and recursive method used by ant_glob.

		:param accept: function used for accepting/rejecting a node, returns the patterns that can be still accepted in recursion
		:type accept: function
		:param maxdepth: maximum depth in the filesystem (25)
		:type maxdepth: int
		:param pats: list of patterns to accept and list of patterns to exclude
		:type pats: tuple
		:param dir: return folders too (False by default)
		:type dir: bool
		:param src: return files (True by default)
		:type src: bool
		:param remove: remove files/folders that do not exist (True by default)
		:type remove: bool
		i    R   t   acceptt   maxdepthi   t   patst   dirt   srct   removeN(   R<   R=   t   setR   t   keysRB   R3   RN   R,   R   RA   R   R   R   RC   R   t   ant_itert   StopIteration(   R   Ra   Rb   Rc   Rd   Re   Rf   t   dircontR>   RJ   R   t   npatst   acceptedR!   RA   R8   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyRi   µ  s<    
  	5 c            sO  | i  d t ƒ } | i  d t ƒ } | i  d t ƒ } | o | d p | i  d d ƒ } | i  d d ƒ o t i ‰  ‡  f d †  } d	 „  ‰ ‡ f d
 †  } g  }	 |  i d | d | | ƒ | | ƒ g d d d | d | d | i  d t ƒ ƒ D] }
 |	 |
 qð ~	 } | i  d t ƒ o2 d i g  } | D] }
 | |
 i |  ƒ q*~ ƒ S| S(   së  
		This method is used for finding files across folders. It behaves like ant patterns:

		* ``**/*`` find all files recursively
		* ``**/*.class`` find all files ending by .class
		* ``..`` find files having two dot characters

		For example::

			def configure(cfg):
				cfg.path.ant_glob('**/*.cpp') # find all .cpp files
				cfg.root.ant_glob('etc/*.txt') # using the filesystem root can be slow
				cfg.path.ant_glob('*.cpp', excl=['*.c'], src=True, dir=False)

		For more information see http://ant.apache.org/manual/dirtasks.html

		The nodes that correspond to files and folders that do not exist will be removed. To prevent this
		behaviour, pass 'remove=False'

		:param incl: ant patterns or list of patterns to include
		:type incl: string or list of strings
		:param excl: ant patterns or list of patterns to exclude
		:type excl: string or list of strings
		:param dir: return folders too (False by default)
		:type dir: bool
		:param src: return files (True by default)
		:type src: bool
		:param remove: remove files/folders that do not exist (True by default)
		:type remove: bool
		:param maxdepth: maximum depth of recursion
		:type maxdepth: int
		:param ignorecase: ignore case while matching (False by default)
		:type ignorecase: bool
		Re   Rd   t   excli    t   incls   **t
   ignorecasec      
      sE  t  i |  ƒ } g  } x)| D]!} | i d d ƒ i d d ƒ } | i d ƒ o | d 7} n | i d ƒ } g  } xº | D]² } | d j o | i | ƒ qz | i d d ƒ i d d ƒ i d	 d ƒ i d
 d ƒ } d | } y  | i t i | d ˆ  ƒƒ Wqz t j
 o } t	 i
 d | | ƒ ‚ qz Xqz W| i | ƒ q W| S(   Ns   \R   s   //s   **R5   s   [.]t   *s   .*t   ?t   +s   \+s   ^%s$R&   s   Invalid pattern: %s(   R    t   to_listt   replacet   endswithR   RP   R	   t   compilet	   ExceptionR   R   (   t   sR>   R   RJ   t   lst2t   accuR8   t   e(   t   reflags(    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   to_pat  s*      6
 c         S   s¾   g  } x± | D]© } | p q | d d j o^ | i  | ƒ t | ƒ d j o- | d i |  ƒ o | i  | d ƒ q‰ q¶ | i  g  ƒ q | d i |  ƒ o | i  | d ƒ q q W| S(   Ni    s   **i   i   (   RP   t   lent   match(   R   t   nnR   R>   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   filtre+  s     c            sG   ˆ  |  | d ƒ } ˆ  |  | d ƒ } g  | j o
 g  } n | | g S(   Ni    i   (    (   R   Rc   t   nacct   nrej(   R‚   (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyRa   ;  s
    
Ra   Rc   Rb   i   Rf   t   flatt    (	   t   getRC   t   Falset   exclude_regsR	   t   IRi   RT   R[   (   R   R8   t   kwRe   Rd   Rn   Ro   R~   Ra   RI   RJ   R   t   _[2](    (   R}   R‚   s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   ant_globé  s    $$	i2c         C   sy   |  } t  |  i i ƒ } t  |  i i ƒ } xH | i o= t  | ƒ | j o t St  | ƒ | j o t S| i } q- Wt S(   sl   
		True if the node is below the source directory
		note: !is_src does not imply is_bld()

		:rtype: bool
		(   R   t   ctxt   srcnodet   bldnodeR   Rˆ   RC   (   R   RK   RJ   t   y(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   is_srcM  s     
c         C   sO   |  } t  |  i i ƒ } x0 | i o% t  | ƒ | j o t S| i } q Wt S(   si   
		True if the node is below the build directory
		note: !is_bld does not imply is_src

		:rtype: bool
		(   R   RŽ   R   R   RC   Rˆ   (   R   RK   R‘   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   is_bld_  s     
c         C   s¨   |  } t  |  i i ƒ } t  |  i i ƒ } g  } xq | i of t  | ƒ | j o | i ƒ  |  i i i | ƒ St  | ƒ | j o |  S| i | i ƒ | i } q3 W|  S(   sf   
		Return the equivalent src node (or self if not possible)

		:rtype: :py:class:`waflib.Node.Node`
		(	   R   RŽ   R   R   R   RR   RN   RP   R   (   R   RK   RJ   R‘   R>   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   get_srcn  s     

c         C   s  |  } t  |  i i ƒ } t  |  i i ƒ } g  } xq | i of t  | ƒ | j o |  St  | ƒ | j o | i ƒ  |  i i i | ƒ S| i | i ƒ | i } q3 W| i ƒ  | oK t	 i
 oA t | d ƒ d j o* | d i d ƒ o | d d | d <n |  i i i d g | ƒ S(   sf   
		Return the equivalent bld node (or self if not possible)

		:rtype: :py:class:`waflib.Node.Node`
		i    i   t   :t   __root__(   R   RŽ   R   R   R   RR   RN   RP   R   R    t   is_win32R   Rv   (   R   RK   RJ   R‘   R>   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   get_bld‚  s"     


<c         C   s»   t  | t ƒ oC g  } t | ƒ D]% } | o | d j o | | q! q! ~ } n |  i ƒ  i | ƒ } | p |  i ƒ  }  |  i | ƒ } n | o" t i i	 | i
 ƒ  ƒ o d Sn | S(   sr   
		Try to find a declared build node or a source file

		:param lst: path
		:type lst: string or list of string
		R5   N(   RD   RE   R   R˜   RO   R”   RM   R,   R   RA   R   R   (   R   R>   RI   RJ   R!   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   find_resourceš  s    C	c         C   s'  t  | t ƒ oC g  } t | ƒ D]% } | o | d j o | | q! q! ~ } n |  i ƒ  i | ƒ } | o8 t i i | i ƒ  ƒ p d | _
 | i i ƒ  n | S|  i ƒ  }  |  i | ƒ } | o8 t i i | i ƒ  ƒ p d | _
 | i i ƒ  n | S|  i ƒ  i | ƒ } | i i ƒ  | S(   s   
		if 'self' is in build directory, try to return an existing node
		if no node is found, go to the source directory
		try to find an existing node in the source directory
		if no node is found, create it in the build directory

		:param lst: path
		:type lst: string or list of string
		R5   N(   RD   RE   R   R˜   RO   R,   R   t   isfileR   R   R   R   R?   R”   RM   RN   (   R   R>   RI   RJ   R!   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   find_or_declare­  s$    
C		c         C   s¥   t  | t ƒ oC g  } t | ƒ D]% } | o | d j o | | q! q! ~ } n |  i | ƒ } y" t i i | i ƒ  ƒ p d SWn t	 t
 f j
 o d SX| S(   se   
		Search for a folder in the filesystem

		:param lst: path
		:type lst: string or list of string
		R5   N(   RD   RE   R   RM   R,   R   RA   R   R   R2   RB   (   R   R>   RI   RJ   R!   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   find_dirË  s    C	c         C   sz   |  i  } | d j o< | i d ƒ } | d j o | |  | } qg | | } n | t | ƒ  | } |  i i | g ƒ S(   ss   
		:return: A build node of the same path, but with a different extension
		:rtype: :py:class:`waflib.Node.Node`
		R5   i    N(   R   R   R7   R   R   R›   (   R   t   extt   ext_inR   R8   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt
   change_extß  s    	c         C   s   |  i  |  i i ƒ  ƒ S(   sy   
		Return the path seen from the launch directory.
		Can be used for opening files easily (copy-paste in the console).
		(   R[   RŽ   t   launch_node(   R   t   env(    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt	   nice_pathð  s    c         C   s   |  i  |  i i ƒ S(   s6   Path seen from the build directory default/src/foo.cpp(   R[   RŽ   R   (   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   bldpath÷  s    c         C   s   |  i  |  i i ƒ S(   s2   Path seen from the source directory ../src/foo.cpp(   R[   RŽ   R   (   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   srcpathû  s    c         C   s[   |  } t  |  i i ƒ } x6 | i o+ t  | ƒ | j o |  i ƒ  S| i } q W|  i ƒ  S(   s7   If a file in the build directory, bldpath, else srcpath(   R   RŽ   R   R   R£   R¤   (   R   RK   RJ   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   relpathÿ  s     
c         C   s   |  i  i ƒ  S(   s    Build path without the file name(   R   R£   (   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   bld_dir	  s    c         C   s.   t  i i |  i ƒ d } |  i ƒ  t  i | S(   s3   Build path without the extension: src/dir/foo(.cpp)i    (   R,   R   t   splitextR   R¦   RS   (   R   Ry   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   bld_base  s    c         C   s¶   y |  i  i t |  ƒ } Wn1 t j
 o n$ t j
 o h  |  i  _ n X| S|  i ƒ  p |  i  i |  i  i j o t i	 |  i
 ƒ  ƒ |  _ n |  i |  i  i t |  ƒ <} | S(   sA   
		Node signature, assuming the file is in the build directory
		(   RŽ   t
   hash_cacheR   RF   RB   R“   R   R   R    t   h_fileR   R   (   R   R   (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   get_bld_sig  s    '(   s   names   sigs   childrens   parents   cache_abspaths   cache_isdirN(0   t   __name__t
   __module__t   __doc__t	   __slots__R   R   R   R   R   R    R"   R#   R(   R+   R-   R4   R3   R9   R;   R<   R?   RM   RN   RO   R[   R   R`   R   Rˆ   RC   Ri   R   R’   R“   R”   R˜   R™   R›   Rœ   RŸ   R¢   R£   R¤   R¥   R¦   R¨   R«   t   search(    (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyR   \   sV   																				5			,		4	d										
			t   Nod3c           B   s   e  Z d  Z RS(   s5   Mandatory subclass for thread-safe node serialization(   R¬   R­   R®   (    (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyR±   *  s   (   R®   R,   R	   t   sysR/   t   waflibR    R   R‰   R   R   Rw   R
   R   t   platformR—   t   objectR   t	   threadingt   Lockt   pickle_lockR±   (    (    (    s8   /home/data/ftp/pub/unpacked/waf.tmpconfig/waflib/Node.pyt   <module>   s    0			


ÿ ÿ Í