swapforth icon indicating copy to clipboard operation
swapforth copied to clipboard

fix more array.tostring() removal issues in Python 3.9

Open stuij opened this issue 3 years ago • 2 comments

Several shell.py script versions use the depreciated array.tostring() method, which has been removed in Python 3.9. I changed these instances to .tobytes(), and adjusted .ljust()'s second argument to be a byte string.

I also fixed a related issue, where #flash'ing from a shell.py which assumes a 2-cell wide Forth to a non-.hex file would error because the unsigned short array returned from serialize() would be written to file with assumptions of signed short:

open(dest, "wb").write(array.array("h", d).tobytes())

This would cause an overflow error. Changing "h" to "H" in that last code snippet (in swapforth.py), lines up the signdedness.

stuij avatar Oct 14 '22 12:10 stuij

I did notice that the previous commit to fix this kind of issue made a wrapper function to be compatible both with pre and post Python 3.2 code. However Python 3.2 has been released 11 years ago, and I hoped for this repo which might not be too embedded in the corporate world, we might be able to make the assumption/minimum requirement of people using Python 3.2 or later?

stuij avatar Oct 14 '22 12:10 stuij

updated with fix for J1b

stuij avatar Oct 18 '22 21:10 stuij