def file_handles(self) -> Iterable[IO[str]]:
        """Generates all file handles represented by the analysis.
        Callee owns file handle and closes it when the next is yielded or the
        generator ends.
        """
        if self.file_handle:
            yield self.file_handle
            self.file_handle.close()
            self.file_handle = None
        else:
            for name in self.file_names():
                with open(name, "r") as f:
                    yield f
def file_handles ( self ) -> Iterable [ IO [ str ] ] : if self . file_handle : yield self . file_handle self . file_handle . close ( ) self . file_handle = None else : for name in self . file_names ( ) : with open ( name , "r" ) as f : yield f
Generates all file handles represented by the analysis.
        Callee owns file handle and closes it when the next is yielded or the
        generator ends.