Fix invalid escape sequences in regex by using raw string literals #294
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When running contemplate_koans.py on Python 3.8+, the following warnings appear:
❯ python3 contemplate_koans.py
/Users/user1/projects/python_koans/runner/sensei.py:63: SyntaxWarning: invalid escape sequence '\d'
m = re.search("(?<= line )\d+" ,err)
/Users/user1/projects/python_koans/runner/sensei.py:149: SyntaxWarning: invalid escape sequence '\w'
m = re.search("^ \w(\w)+.*$",line)
These warnings occur because \d and \w are special escape sequences in regular expressions, and Python expects them to be inside a raw string literal (r"pattern") or properly escaped ("\d").
Fix
Converted the affected regex patterns into raw string literals (r"pattern") to prevent Python from misinterpreting escape sequences:
Before (causing warnings):
m = re.search("(?<= line )\d+" ,err)
m = re.search("^ \w(\w)+.*$",line)
After (fixed with raw strings):
m = re.search(r"(?<= line )\d+" ,err)
m = re.search(r"^ \w(\w)+.*$",line)
Impact
Let me know if any additional changes are needed! 🚀