mirror of
https://github.com/micropython/micropython.git
synced 2026-01-04 19:20:22 +01:00
all: Remove Python 2.7 support.
Python 2.7 has been EOL since January 2020. Ubuntu oldoldlts (Focal Fossa, 20.04) has Python 3.8. Debian oldoldstable (Buster, from 2019) has Python 3.7. RHEL 8 (from 2019) has Python 3.6. It's easier than ever to install a modern Python using uv. Given this, it seems like a fine idea to drop Python 2.7 support. Even though the build is not tested on Python as old as 3.3, I left comments stating that "3.3+" is the baseline Python version. However, it might make sense to bump this to e.g., 3.10, the oldest Python 3 version used during CI. Or, using uv or another method actually test on the oldest Python interpreter that is desirable to support (uv goes back to Python 3.7 easily; in October 2025, the oldest supported Python interpreter version will be 3.10) Signed-off-by: Jeff Epler <jepler@gmail.com>
This commit is contained in:
committed by
Damien George
parent
d441788975
commit
f0c6f16b9e
11
tools/ci.sh
11
tools/ci.sh
@@ -130,15 +130,12 @@ function ci_code_size_build {
|
||||
|
||||
function ci_mpy_format_setup {
|
||||
sudo apt-get update
|
||||
sudo apt-get install python2.7
|
||||
sudo pip3 install pyelftools
|
||||
python2.7 --version
|
||||
python3 --version
|
||||
}
|
||||
|
||||
function ci_mpy_format_test {
|
||||
# Test mpy-tool.py dump feature on bytecode
|
||||
python2.7 ./tools/mpy-tool.py -xd tests/frozen/frozentest.mpy
|
||||
python3 ./tools/mpy-tool.py -xd tests/frozen/frozentest.mpy
|
||||
|
||||
# Build MicroPython
|
||||
@@ -683,12 +680,11 @@ function ci_unix_coverage_run_native_mpy_tests {
|
||||
function ci_unix_32bit_setup {
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt-get update
|
||||
sudo apt-get install gcc-multilib g++-multilib libffi-dev:i386 python2.7
|
||||
sudo apt-get install gcc-multilib g++-multilib libffi-dev:i386
|
||||
sudo pip3 install setuptools
|
||||
sudo pip3 install pyelftools
|
||||
sudo pip3 install ar
|
||||
gcc --version
|
||||
python2.7 --version
|
||||
python3 --version
|
||||
}
|
||||
|
||||
@@ -706,13 +702,12 @@ function ci_unix_coverage_32bit_run_native_mpy_tests {
|
||||
}
|
||||
|
||||
function ci_unix_nanbox_build {
|
||||
# Use Python 2 to check that it can run the build scripts
|
||||
ci_unix_build_helper PYTHON=python2.7 VARIANT=nanbox CFLAGS_EXTRA="-DMICROPY_PY_MATH_CONSTANTS=1"
|
||||
ci_unix_build_helper VARIANT=nanbox CFLAGS_EXTRA="-DMICROPY_PY_MATH_CONSTANTS=1"
|
||||
ci_unix_build_ffi_lib_helper gcc -m32
|
||||
}
|
||||
|
||||
function ci_unix_nanbox_run_tests {
|
||||
ci_unix_run_tests_full_no_native_helper nanbox PYTHON=python2.7
|
||||
ci_unix_run_tests_full_no_native_helper nanbox
|
||||
}
|
||||
|
||||
function ci_unix_longlong_build {
|
||||
|
||||
@@ -24,40 +24,20 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
|
||||
# Python 2/3/MicroPython compatibility code
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
|
||||
if sys.version_info[0] == 2:
|
||||
from binascii import hexlify as hexlify_py2
|
||||
|
||||
str_cons = lambda val, enc=None: str(val)
|
||||
bytes_cons = lambda val, enc=None: bytearray(val)
|
||||
is_str_type = lambda o: isinstance(o, str)
|
||||
is_bytes_type = lambda o: type(o) is bytearray
|
||||
is_int_type = lambda o: isinstance(o, int) or isinstance(o, long) # noqa: F821
|
||||
|
||||
def hexlify_to_str(b):
|
||||
x = hexlify_py2(b)
|
||||
return ":".join(x[i : i + 2] for i in range(0, len(x), 2))
|
||||
|
||||
elif sys.version_info[0] == 3: # Also handles MicroPython
|
||||
from binascii import hexlify
|
||||
|
||||
str_cons = str
|
||||
bytes_cons = bytes
|
||||
is_str_type = lambda o: isinstance(o, str)
|
||||
is_bytes_type = lambda o: isinstance(o, bytes)
|
||||
is_int_type = lambda o: isinstance(o, int)
|
||||
|
||||
def hexlify_to_str(b):
|
||||
return str(hexlify(b, ":"), "ascii")
|
||||
|
||||
|
||||
# end compatibility code
|
||||
|
||||
import sys
|
||||
import struct
|
||||
import sys
|
||||
from binascii import hexlify
|
||||
|
||||
str_cons = str
|
||||
bytes_cons = bytes
|
||||
is_str_type = lambda o: isinstance(o, str)
|
||||
is_bytes_type = lambda o: isinstance(o, bytes)
|
||||
is_int_type = lambda o: isinstance(o, int)
|
||||
|
||||
|
||||
def hexlify_to_str(b):
|
||||
return str(hexlify(b, ":"), "ascii")
|
||||
|
||||
|
||||
sys.path.append(sys.path[0] + "/../py")
|
||||
import makeqstrdata as qstrutil
|
||||
|
||||
@@ -75,11 +75,7 @@ __verbose = None
|
||||
# USB DFU interface
|
||||
__DFU_INTERFACE = 0
|
||||
|
||||
# Python 3 deprecated getargspec in favour of getfullargspec, but
|
||||
# Python 2 doesn't have the latter, so detect which one to use
|
||||
getargspec = getattr(inspect, "getfullargspec", getattr(inspect, "getargspec", None))
|
||||
|
||||
if "length" in getargspec(usb.util.get_string).args:
|
||||
if "length" in inspect.getfullargspec(usb.util.get_string).args:
|
||||
# PyUSB 1.0.0.b1 has the length argument
|
||||
def get_string(dev, index):
|
||||
return usb.util.get_string(dev, 255, index)
|
||||
|
||||
Reference in New Issue
Block a user