• Tim Peters's avatar
    Derived from Martin's SF patch 110609: support unbounded ints in %d,i,u,x,X,o formats. · 38fd5b64
    Tim Peters yazdı
    Note a curious extension to the std C rules:  x, X and o formatting can never produce
    a sign character in C, so the '+' and ' ' flags are meaningless for them.  But
    unbounded ints *can* produce a sign character under these conversions (no fixed-
    width bitstring is wide enough to hold all negative values in 2's-comp form).  So
    these flags become meaningful in Python when formatting a Python long which is too
    big to fit in a C long.  This required shuffling around existing code, which hacked
    x and X conversions to death when both the '#' and '0' flags were specified:  the
    hacks weren't strong enough to deal with the simultaneous possibility of the ' ' or
    '+' flags too, since signs were always meaningless before for x and X conversions.
    Isomorphic shuffling was required in unicodeobject.c.
    Also added dozens of non-trivial new unbounded-int test cases to test_format.py.
    38fd5b64
stringobject.h 4.32 KB