<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _read_source(self) -> None: """ Reads the source file. """

        with open(self.full_path, "rt") as f:
            for linenum, line_with_nl in enumerate(f.readlines(), start=1):
                line_without_newline = (
                    line_with_nl[:-1] if line_with_nl.endswith(NL)
                    else line_with_nl
                )
                if TAB in line_without_newline:
                    self._warn("Tab character at line {}".format(linenum))
                if CR in line_without_newline:
                    self._warn("Carriage return character at line {} "
                               "(Windows CR+LF endings?)".format(linenum))
                self.source_lines.append(line_without_newline)