From d4df8f4925ae6e4875b521f1c35571f0b51e405a Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 4 Jan 2016 13:13:39 +0000 Subject: [PATCH] py/objstr: In str.format, handle case of no format spec for string arg. Handles, eg, "{:>20}".format("foo"), where there is no explicit spec for the type of the argument. --- py/objstr.c | 5 +---- tests/basics/string_format.py | 4 ++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/py/objstr.c b/py/objstr.c index 8839acbf95..c4335bbac7 100644 --- a/py/objstr.c +++ b/py/objstr.c @@ -1259,10 +1259,7 @@ mp_obj_t mp_obj_str_format(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kwa } switch (type) { - case '\0': - mp_obj_print_helper(&print, arg, PRINT_STR); - break; - + case '\0': // no explicit format type implies 's' case 's': { mp_uint_t slen; const char *s = mp_obj_str_get_data(arg, &slen); diff --git a/tests/basics/string_format.py b/tests/basics/string_format.py index d8724c9474..7fb53cb491 100644 --- a/tests/basics/string_format.py +++ b/tests/basics/string_format.py @@ -62,6 +62,10 @@ test("{:@<6d}", -123) test("{:@=6d}", -123) test("{:06d}", -123) +test("{:>20}", "foo") +test("{:^20}", "foo") +test("{:<20}", "foo") + print("{foo}/foo".format(foo="bar")) print("{}".format(123, foo="bar")) print("{}-{foo}".format(123, foo="bar"))