def get_binfo(self):
        """
        Fetch a node's build information.

        node - the node whose sources will be collected
        cache - alternate node to use for the signature cache
        returns - the build signature

        This no longer handles the recursive descent of the
        node's children's signatures.  We expect that they're
        already built and updated by someone else, if that's
        what's wanted.
        """
        try:
            return self.binfo
        except __HOLE__:
            pass

        binfo = self.new_binfo()
        self.binfo = binfo

        executor = self.get_executor()
        ignore_set = self.ignore_set

        if self.has_builder():
            binfo.bact = str(executor)
            binfo.bactsig = SCons.Util.MD5signature(executor.get_contents())

        if self._specific_sources:
            sources = []
            for s in self.sources:
                if s not in ignore_set:
                    sources.append(s)
        else:
            sources = executor.get_unignored_sources(self, self.ignore)
        seen = set()
        bsources = []
        bsourcesigs = []
        for s in sources:
            if not s in seen:
                seen.add(s)
                bsources.append(s)
                bsourcesigs.append(s.get_ninfo())
        binfo.bsources = bsources
        binfo.bsourcesigs = bsourcesigs

        depends = self.depends
        dependsigs = []
        for d in depends:
            if d not in ignore_set:
                dependsigs.append(d.get_ninfo())
        binfo.bdepends = depends
        binfo.bdependsigs = dependsigs

        implicit = self.implicit or []
        implicitsigs = []
        for i in implicit:
            if i not in ignore_set:
                implicitsigs.append(i.get_ninfo())
        binfo.bimplicit = implicit
        binfo.bimplicitsigs = implicitsigs

        return binfo
dataset/ETHPy150Open kayhayen/Nuitka/nuitka/build/inline_copy/lib/scons-2.3.2/SCons/Node/__init__.py/Node.get_binfo