Named Temporary File Reader

        This provides an object compatible with NamedTemporaryFile, used for reading this
        files contents. This will still delete after the object falls out of scope.

        This solves the problem on windows where a NamedTemporaryFile can not be read
        while it's being written to

def namedTempFileReader(self) -> NamedTempFileReader:
        """ Named Temporary File Reader

        This provides an object compatible with NamedTemporaryFile, used for reading this
        files contents. This will still delete after the object falls out of scope.

        This solves the problem on windows where a NamedTemporaryFile can not be read
        while it's being written to
        """

        # Get the weak ref
        directory = self._directory()
        assert isinstance(directory, Directory), (
            "Expected Directory, receieved %s" % directory)

        # Return the object
        return NamedTempFileReader(directory, self)