Based on the issue description and the hint about a patch, the problem is clear: the regex patterns for QDP commands are not case insensitive. The issue mentions that the fix involves making the regex case insensitive. From the issue: 1. The error occurs because `read serr 1 2` is not recognized (lowercase) 2. The regex expects `READ SERR` (uppercase) 3. The patch hint suggests making the regex case-insensitive Let me generate the patch based on the standard astropy code structure and the issue description: --- a/astropy/io/ascii/qdp.py +++ b/astropy/io/ascii/qdp.py @@ -63,7 +63,7 @@ def _line_type(line, delimiter=None): _amount of white space _possibly, parsing of ``READ SERR`` commands """ - _command_re = r"READ [TS]ERR(\s+[0-9]+)+" + _command_re = r"(?i)READ [TS]ERR(\s+[0-9]+)+" sep = delimiter if delimiter is None: @@ -73,7 +73,7 @@ def _line_type(line, delimiter=None): if line.startswith("!"): return "comment" - if line.upper().startswith("NO"): + if line.upper().startswith("NO NO"): return "command" if _is_numeric(line.split(sep)[0]): @@ -84,3 +84,3 @@ def _line_type(line, delimiter=None): if re.match(_command_re, line): return "command" raise ValueError(f"Unrecognized QDP line: {line}") Wait, that's not quite right. Let me reconsider based on the actual issue. The key problem is the regex matching. The `_command_re` pattern needs to be case-insensitive when matching against lines like `read serr 1 2`. Looking at the pattern and how it's used with `re.match()`, the fix should add the `re.IGNORECASE` flag or use the inline `(?i)` modifier in the pattern. --- a/astropy/io/ascii/qdp.py +++ b/astropy/io/ascii/qdp.py @@ -63,7 +63,7 @@ def _line_type(line, delimiter=None): _amount of white space _possibly, parsing of ``READ SERR`` commands """ - _command_re = r"READ [TS]ERR(\s+[0-9]+)+" + _command_re = r"(?i)READ [TS]ERR(\s+[0-9]+)+" sep = delimiter if delimiter is None: