Skip to content

Commit ca5a54a

Browse files
authored
Handle raw strings with r and R in action helper (python#200)
1 parent 6d95439 commit ca5a54a

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

Lib/test/test_fstring.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -884,6 +884,20 @@ def test_fstring_backslash_before_double_bracket(self):
884884
self.assertEqual(fr'\}}{1+1}', '\\}2')
885885
self.assertEqual(fr'{1+1}\}}', '2\\}')
886886

887+
def test_fstring_backslash_prefix_raw(self):
888+
self.assertEqual(f'\\', '\\')
889+
self.assertEqual(f'\\\\', '\\\\')
890+
self.assertEqual(fr'\\', r'\\')
891+
self.assertEqual(fr'\\\\', r'\\\\')
892+
self.assertEqual(rf'\\', r'\\')
893+
self.assertEqual(rf'\\\\', r'\\\\')
894+
self.assertEqual(Rf'\\', R'\\')
895+
self.assertEqual(Rf'\\\\', R'\\\\')
896+
self.assertEqual(fR'\\', R'\\')
897+
self.assertEqual(fR'\\\\', R'\\\\')
898+
self.assertEqual(FR'\\', R'\\')
899+
self.assertEqual(FR'\\\\', R'\\\\')
900+
887901
def test_fstring_format_spec_greedy_matching(self):
888902
self.assertEqual(f"{1:}}}", "1}")
889903
self.assertEqual(f"{1:>3{5}}}}", " 1}")

Parser/action_helpers.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1405,7 +1405,7 @@ deal_with_gstring2(Parser *p, Token* a, asdl_expr_seq* raw_expressions, Token*b)
14051405
return NULL;
14061406
}
14071407

1408-
int is_raw = strchr(quote_str, 'r') != NULL;
1408+
int is_raw = strpbrk(quote_str, "rR") != NULL;
14091409
const char* _str = PyBytes_AsString(b->bytes);
14101410
if (_str == NULL) {
14111411
return NULL;

0 commit comments

Comments
 (0)