parameters: (self, node, filename)
docstring: Find a file from the input directory
  
  		:param node: directory
  		:type node: :py:class:`waflib.Node.Node`
  		:param filename: header to find
  		:type filename: string
  		:return: the node if found, or None
  		:rtype: :py:class:`waflib.Node.Node`
docstring_summary: Find a file from the input directory
docstring_tokens: Find a file from the input directory
function: def cached_find_resource(self, node, filename):
  		"""
  		Find a file from the input directory
  
  		:param node: directory
  		:type node: :py:class:`waflib.Node.Node`
  		:param filename: header to find
  		:type filename: string
  		:return: the node if found, or None
  		:rtype: :py:class:`waflib.Node.Node`
  		"""
  		try:
  			cache = node.ctx.preproc_cache_node
  		except AttributeError:
  			cache = node.ctx.preproc_cache_node = Utils.lru_cache(FILE_CACHE_SIZE)
  
  		key = (node, filename)
  		try:
  			return cache[key]
  		except KeyError:
  			ret = node.find_resource(filename)
  			if ret:
  				if getattr(ret, 'children', None):
  					ret = None
  				elif ret.is_child_of(node.ctx.bldnode):
  					tmp = node.ctx.srcnode.search_node(ret.path_from(node.ctx.bldnode))
  					if tmp and getattr(tmp, 'children', None):
  						ret = None
  			cache[key] = ret
  			return ret
function_tokens: def cached_find_resource ( self , node , filename ) : try : cache = node . ctx . preproc_cache_node except AttributeError : cache = node . ctx . preproc_cache_node = Utils . lru_cache ( FILE_CACHE_SIZE ) key = ( node , filename ) try : return cache [ key ] except KeyError : ret = node . find_resource ( filename ) if ret : if getattr ( ret , 'children' , None ) : ret = None elif ret . is_child_of ( node . ctx . bldnode ) : tmp = node . ctx . srcnode . search_node ( ret . path_from ( node . ctx . bldnode ) ) if tmp and getattr ( tmp , 'children' , None ) : ret = None cache [ key ] = ret return ret