@@ -768,7 +768,8 @@ ensure_unicode(PyObject *obj)
768
768
{
769
769
if (!PyUnicode_Check (obj )) {
770
770
PyErr_Format (PyExc_TypeError ,
771
- "must be str, not %T" , obj );
771
+ "must be str, not %.100s" ,
772
+ Py_TYPE (obj )-> tp_name );
772
773
return -1 ;
773
774
}
774
775
return PyUnicode_READY (obj );
@@ -2529,7 +2530,7 @@ unicode_fromformat_write_str(_PyUnicodeWriter *writer, PyObject *str,
2529
2530
}
2530
2531
2531
2532
static int
2532
- unicode_fromformat_write_utf8 (_PyUnicodeWriter * writer , const char * str ,
2533
+ unicode_fromformat_write_cstr (_PyUnicodeWriter * writer , const char * str ,
2533
2534
Py_ssize_t width , Py_ssize_t precision )
2534
2535
{
2535
2536
/* UTF-8 */
@@ -2746,7 +2747,7 @@ unicode_fromformat_arg(_PyUnicodeWriter *writer,
2746
2747
{
2747
2748
/* UTF-8 */
2748
2749
const char * s = va_arg (* vargs , const char * );
2749
- if (unicode_fromformat_write_utf8 (writer , s , width , precision ) < 0 )
2750
+ if (unicode_fromformat_write_cstr (writer , s , width , precision ) < 0 )
2750
2751
return NULL ;
2751
2752
break ;
2752
2753
}
@@ -2772,7 +2773,7 @@ unicode_fromformat_arg(_PyUnicodeWriter *writer,
2772
2773
}
2773
2774
else {
2774
2775
assert (str != NULL );
2775
- if (unicode_fromformat_write_utf8 (writer , str , width , precision ) < 0 )
2776
+ if (unicode_fromformat_write_cstr (writer , str , width , precision ) < 0 )
2776
2777
return NULL ;
2777
2778
}
2778
2779
break ;
@@ -2826,17 +2827,6 @@ unicode_fromformat_arg(_PyUnicodeWriter *writer,
2826
2827
break ;
2827
2828
}
2828
2829
2829
- case 'T' :
2830
- {
2831
- /* Object type name (tp_name) */
2832
- PyObject * obj = va_arg (* vargs , PyObject * );
2833
- PyTypeObject * type = Py_TYPE (obj );
2834
- const char * type_name = type -> tp_name ;
2835
- if (unicode_fromformat_write_utf8 (writer , type_name , -1 , -1 ) < 0 ) {
2836
- return NULL ;
2837
- }
2838
- break ;
2839
- }
2840
2830
case '%' :
2841
2831
if (_PyUnicodeWriter_WriteCharInline (writer , '%' ) < 0 )
2842
2832
return NULL ;
@@ -3034,7 +3024,8 @@ PyUnicode_FromObject(PyObject *obj)
3034
3024
return _PyUnicode_Copy (obj );
3035
3025
}
3036
3026
PyErr_Format (PyExc_TypeError ,
3037
- "Can't convert '%T' object to str implicitly" , obj );
3027
+ "Can't convert '%.100s' object to str implicitly" ,
3028
+ Py_TYPE (obj )-> tp_name );
3038
3029
return NULL ;
3039
3030
}
3040
3031
@@ -3070,8 +3061,8 @@ PyUnicode_FromEncodedObject(PyObject *obj,
3070
3061
/* Retrieve a bytes buffer view through the PEP 3118 buffer interface */
3071
3062
if (PyObject_GetBuffer (obj , & buffer , PyBUF_SIMPLE ) < 0 ) {
3072
3063
PyErr_Format (PyExc_TypeError ,
3073
- "decoding to str: need a bytes-like object, %T found" ,
3074
- obj );
3064
+ "decoding to str: need a bytes-like object, %.80s found" ,
3065
+ Py_TYPE ( obj ) -> tp_name );
3075
3066
return NULL ;
3076
3067
}
3077
3068
@@ -3201,9 +3192,10 @@ PyUnicode_Decode(const char *s,
3201
3192
goto onError ;
3202
3193
if (!PyUnicode_Check (unicode )) {
3203
3194
PyErr_Format (PyExc_TypeError ,
3204
- "'%.400s' decoder returned '%T ' instead of 'str'; "
3195
+ "'%.400s' decoder returned '%.400s ' instead of 'str'; "
3205
3196
"use codecs.decode() to decode to arbitrary types" ,
3206
- encoding , unicode );
3197
+ encoding ,
3198
+ Py_TYPE (unicode )-> tp_name );
3207
3199
Py_DECREF (unicode );
3208
3200
goto onError ;
3209
3201
}
@@ -3263,9 +3255,10 @@ PyUnicode_AsDecodedUnicode(PyObject *unicode,
3263
3255
goto onError ;
3264
3256
if (!PyUnicode_Check (v )) {
3265
3257
PyErr_Format (PyExc_TypeError ,
3266
- "'%.400s' decoder returned '%T ' instead of 'str'; "
3258
+ "'%.400s' decoder returned '%.400s ' instead of 'str'; "
3267
3259
"use codecs.decode() to decode to arbitrary types" ,
3268
- encoding , unicode );
3260
+ encoding ,
3261
+ Py_TYPE (unicode )-> tp_name );
3269
3262
Py_DECREF (v );
3270
3263
goto onError ;
3271
3264
}
@@ -3496,9 +3489,10 @@ PyUnicode_AsEncodedString(PyObject *unicode,
3496
3489
}
3497
3490
3498
3491
PyErr_Format (PyExc_TypeError ,
3499
- "'%.400s' encoder returned '%T ' instead of 'bytes'; "
3492
+ "'%.400s' encoder returned '%.400s ' instead of 'bytes'; "
3500
3493
"use codecs.encode() to encode to arbitrary types" ,
3501
- encoding , v );
3494
+ encoding ,
3495
+ Py_TYPE (v )-> tp_name );
3502
3496
Py_DECREF (v );
3503
3497
return NULL ;
3504
3498
}
@@ -3529,9 +3523,10 @@ PyUnicode_AsEncodedUnicode(PyObject *unicode,
3529
3523
goto onError ;
3530
3524
if (!PyUnicode_Check (v )) {
3531
3525
PyErr_Format (PyExc_TypeError ,
3532
- "'%.400s' encoder returned '%T ' instead of 'str'; "
3526
+ "'%.400s' encoder returned '%.400s ' instead of 'str'; "
3533
3527
"use codecs.encode() to encode to arbitrary types" ,
3534
- encoding , v );
3528
+ encoding ,
3529
+ Py_TYPE (v )-> tp_name );
3535
3530
Py_DECREF (v );
3536
3531
goto onError ;
3537
3532
}
@@ -3703,11 +3698,9 @@ PyUnicode_FSDecoder(PyObject* arg, void* addr)
3703
3698
3704
3699
if (!PyBytes_Check (path ) &&
3705
3700
PyErr_WarnFormat (PyExc_DeprecationWarning , 1 ,
3706
- "path should be string, bytes, "
3707
- "or os.PathLike, not %T" ,
3708
- arg ))
3709
- {
3710
- Py_DECREF (path );
3701
+ "path should be string, bytes, or os.PathLike, not %.200s" ,
3702
+ Py_TYPE (arg )-> tp_name )) {
3703
+ Py_DECREF (path );
3711
3704
return 0 ;
3712
3705
}
3713
3706
path_bytes = PyBytes_FromObject (path );
@@ -3724,8 +3717,8 @@ PyUnicode_FSDecoder(PyObject* arg, void* addr)
3724
3717
}
3725
3718
else {
3726
3719
PyErr_Format (PyExc_TypeError ,
3727
- "path should be string, bytes, or os.PathLike, not %T " ,
3728
- arg );
3720
+ "path should be string, bytes, or os.PathLike, not %.200s " ,
3721
+ Py_TYPE ( arg ) -> tp_name );
3729
3722
Py_DECREF (path );
3730
3723
return 0 ;
3731
3724
}
@@ -9893,8 +9886,9 @@ _PyUnicode_JoinArray(PyObject *separator, PyObject *const *items, Py_ssize_t seq
9893
9886
else {
9894
9887
if (!PyUnicode_Check (separator )) {
9895
9888
PyErr_Format (PyExc_TypeError ,
9896
- "separator: expected str instance, %T found" ,
9897
- separator );
9889
+ "separator: expected str instance,"
9890
+ " %.80s found" ,
9891
+ Py_TYPE (separator )-> tp_name );
9898
9892
goto onError ;
9899
9893
}
9900
9894
if (PyUnicode_READY (separator ))
@@ -9925,8 +9919,9 @@ _PyUnicode_JoinArray(PyObject *separator, PyObject *const *items, Py_ssize_t seq
9925
9919
item = items [i ];
9926
9920
if (!PyUnicode_Check (item )) {
9927
9921
PyErr_Format (PyExc_TypeError ,
9928
- "sequence item %zd: expected str instance, %T found" ,
9929
- i , item );
9922
+ "sequence item %zd: expected str instance,"
9923
+ " %.80s found" ,
9924
+ i , Py_TYPE (item )-> tp_name );
9930
9925
goto onError ;
9931
9926
}
9932
9927
if (PyUnicode_READY (item ) == -1 )
@@ -10741,7 +10736,7 @@ convert_uc(PyObject *obj, void *addr)
10741
10736
if (!PyUnicode_Check (obj )) {
10742
10737
PyErr_Format (PyExc_TypeError ,
10743
10738
"The fill character must be a unicode character, "
10744
- "not %T " , obj );
10739
+ "not %.100s " , Py_TYPE ( obj ) -> tp_name );
10745
10740
return 0 ;
10746
10741
}
10747
10742
if (PyUnicode_READY (obj ) < 0 )
@@ -11147,8 +11142,8 @@ PyUnicode_Contains(PyObject *str, PyObject *substr)
11147
11142
11148
11143
if (!PyUnicode_Check (substr )) {
11149
11144
PyErr_Format (PyExc_TypeError ,
11150
- "'in <string>' requires string as left operand, not %T " ,
11151
- substr );
11145
+ "'in <string>' requires string as left operand, not %.100s " ,
11146
+ Py_TYPE ( substr ) -> tp_name );
11152
11147
return -1 ;
11153
11148
}
11154
11149
if (PyUnicode_READY (substr ) == -1 )
@@ -12853,7 +12848,9 @@ unicode_split_impl(PyObject *self, PyObject *sep, Py_ssize_t maxsplit)
12853
12848
if (PyUnicode_Check (sep ))
12854
12849
return split (self , sep , maxsplit );
12855
12850
12856
- PyErr_Format (PyExc_TypeError , "must be str or None, not %T" , sep );
12851
+ PyErr_Format (PyExc_TypeError ,
12852
+ "must be str or None, not %.100s" ,
12853
+ Py_TYPE (sep )-> tp_name );
12857
12854
return NULL ;
12858
12855
}
12859
12856
@@ -13039,7 +13036,9 @@ unicode_rsplit_impl(PyObject *self, PyObject *sep, Py_ssize_t maxsplit)
13039
13036
if (PyUnicode_Check (sep ))
13040
13037
return rsplit (self , sep , maxsplit );
13041
13038
13042
- PyErr_Format (PyExc_TypeError , "must be str or None, not %T" , sep );
13039
+ PyErr_Format (PyExc_TypeError ,
13040
+ "must be str or None, not %.100s" ,
13041
+ Py_TYPE (sep )-> tp_name );
13043
13042
return NULL ;
13044
13043
}
13045
13044
@@ -13334,8 +13333,8 @@ unicode_startswith(PyObject *self,
13334
13333
if (!PyUnicode_Check (substring )) {
13335
13334
PyErr_Format (PyExc_TypeError ,
13336
13335
"tuple for startswith must only contain str, "
13337
- "not %T " ,
13338
- substring );
13336
+ "not %.100s " ,
13337
+ Py_TYPE ( substring ) -> tp_name );
13339
13338
return NULL ;
13340
13339
}
13341
13340
result = tailmatch (self , substring , start , end , -1 );
@@ -13351,7 +13350,7 @@ unicode_startswith(PyObject *self,
13351
13350
if (!PyUnicode_Check (subobj )) {
13352
13351
PyErr_Format (PyExc_TypeError ,
13353
13352
"startswith first arg must be str or "
13354
- "a tuple of str, not %T " , subobj );
13353
+ "a tuple of str, not %.100s " , Py_TYPE ( subobj ) -> tp_name );
13355
13354
return NULL ;
13356
13355
}
13357
13356
result = tailmatch (self , subobj , start , end , -1 );
@@ -13388,8 +13387,8 @@ unicode_endswith(PyObject *self,
13388
13387
if (!PyUnicode_Check (substring )) {
13389
13388
PyErr_Format (PyExc_TypeError ,
13390
13389
"tuple for endswith must only contain str, "
13391
- "not %T " ,
13392
- substring );
13390
+ "not %.100s " ,
13391
+ Py_TYPE ( substring ) -> tp_name );
13393
13392
return NULL ;
13394
13393
}
13395
13394
result = tailmatch (self , substring , start , end , +1 );
@@ -13404,7 +13403,7 @@ unicode_endswith(PyObject *self,
13404
13403
if (!PyUnicode_Check (subobj )) {
13405
13404
PyErr_Format (PyExc_TypeError ,
13406
13405
"endswith first arg must be str or "
13407
- "a tuple of str, not %T " , subobj );
13406
+ "a tuple of str, not %.100s " , Py_TYPE ( subobj ) -> tp_name );
13408
13407
return NULL ;
13409
13408
}
13410
13409
result = tailmatch (self , subobj , start , end , +1 );
@@ -14314,13 +14313,15 @@ mainformatlong(PyObject *v,
14314
14313
case 'x' :
14315
14314
case 'X' :
14316
14315
PyErr_Format (PyExc_TypeError ,
14317
- "%%%c format: an integer is required, not %T" ,
14318
- type , v );
14316
+ "%%%c format: an integer is required, "
14317
+ "not %.200s" ,
14318
+ type , Py_TYPE (v )-> tp_name );
14319
14319
break ;
14320
14320
default :
14321
14321
PyErr_Format (PyExc_TypeError ,
14322
- "%%%c format: a number is required, not %T" ,
14323
- type , v );
14322
+ "%%%c format: a number is required, "
14323
+ "not %.200s" ,
14324
+ type , Py_TYPE (v )-> tp_name );
14324
14325
break ;
14325
14326
}
14326
14327
return -1 ;
0 commit comments