47def _encode_int_underscores(buffer: io.StringIO, value: int) -> str:
48 if value >= MAX_RAW_NUMBER:
49 mod = value % MAX_RAW_NUMBER
50 left_padding = PADDING_SIZE - len(str(mod))
51 _encode_int_underscores(buffer, value // MAX_RAW_NUMBER)
52 buffer.write("_")
53 buffer.write("0" * left_padding)
54 buffer.write(str(mod))
55 return buffer.getvalue()
56 elif value < 0:
57 buffer.write("-")
58 _encode_int_underscores(buffer, abs(value))
59 return buffer.getvalue()
60 else:
61 buffer.write(str(value))
62 return buffer.getvalue()
63
64