One important detail: "digit" when talking about sdigit & ob_digit are not base-10 digits, but base 10000 for 32-bit CPython and base 1000000000 for 64-bit CPython!
That means PY_SIZE(-15) is -1, not -2! And the maximum representable integer in Python should be closer to 10000 * (sys.maxsize / 2) for 32-bit and 1000000000 * (sys.maxsize / 4) for 64-bit.