@@ -1012,6 +1012,22 @@ _PyPegen_check_fstring_conversion(Parser *p, Token* conv_token, expr_ty conv)
10121012 return result_token_with_metadata (p , conv , conv_token -> metadata );
10131013}
10141014
1015+ Token *
1016+ _PyPegen_check_pretty_conversion (Parser * p , Token * conv_token , expr_ty conv )
1017+ {
1018+ if (conv_token -> lineno != conv -> lineno || conv_token -> end_col_offset != conv -> col_offset ) {
1019+ return NULL ;
1020+ }
1021+ if (PyUnicode_GET_LENGTH (conv -> v .Name .id ) != 1 ) {
1022+ return NULL ;
1023+ }
1024+ Py_UCS4 first = PyUnicode_READ_CHAR (conv -> v .Name .id , 0 );
1025+ if (first != 'p' ) {
1026+ return NULL ;
1027+ }
1028+ return conv_token ;
1029+ }
1030+
10151031ResultTokenWithMetadata *
10161032_PyPegen_setup_full_format_spec (Parser * p , Token * colon , asdl_expr_seq * spec , int lineno , int col_offset ,
10171033 int end_lineno , int end_col_offset , PyArena * arena )
@@ -1633,6 +1649,38 @@ expr_ty _PyPegen_formatted_value(Parser *p, expr_ty expression, Token *debug, Re
16331649 return _PyAST_JoinedStr (values , lineno , col_offset , debug_end_line , debug_end_offset , p -> arena );
16341650}
16351651
1652+ expr_ty _PyPegen_pretty_formatted_value (Parser * p , expr_ty expression , Token * debug ,
1653+ Token * conv_token , expr_ty pretty_func ,
1654+ Token * closing_brace , int lineno , int col_offset ,
1655+ int end_lineno , int end_col_offset , PyArena * arena ) {
1656+ int conversion_val = (int )'p' ;
1657+
1658+ expr_ty formatted_value = _PyAST_FormattedValue (
1659+ expression , conversion_val , pretty_func ,
1660+ lineno , col_offset , end_lineno ,
1661+ end_col_offset , arena
1662+ );
1663+
1664+ if (!debug ) {
1665+ return formatted_value ;
1666+ }
1667+
1668+ int debug_end_line = conv_token -> lineno ;
1669+ int debug_end_offset = conv_token -> col_offset ;
1670+ PyObject * debug_metadata = conv_token -> metadata ;
1671+
1672+ expr_ty debug_text = _PyAST_Constant (debug_metadata , NULL , lineno , col_offset + 1 , debug_end_line ,
1673+ debug_end_offset - 1 , p -> arena );
1674+ if (!debug_text ) {
1675+ return NULL ;
1676+ }
1677+
1678+ asdl_expr_seq * values = _Py_asdl_expr_seq_new (2 , arena );
1679+ asdl_seq_SET (values , 0 , debug_text );
1680+ asdl_seq_SET (values , 1 , formatted_value );
1681+ return _PyAST_JoinedStr (values , lineno , col_offset , debug_end_line , debug_end_offset , p -> arena );
1682+ }
1683+
16361684static expr_ty
16371685_build_concatenated_bytes (Parser * p , asdl_expr_seq * strings , int lineno ,
16381686 int col_offset , int end_lineno , int end_col_offset ,
0 commit comments