[PATCH v2] binman: Fix typing for python >= 3.5
Yannic Moog
Y.Moog at phytec.de
Tue Jul 15 08:00:07 CEST 2025
Am Montag, dem 14.07.2025 um 11:13 -0600 schrieb Tom Rini:
> On Mon, Jul 14, 2025 at 08:29:20AM -0600, Tom Rini wrote:
> > On Mon, Jul 14, 2025 at 08:56:57AM -0500, Bryan Brattlof wrote:
> > > On July 14, 2025 thus sayeth Yannic Moog:
> > > > Am Montag, dem 14.07.2025 um 07:02 -0500 schrieb Bryan Brattlof:
> > > > > On July 14, 2025 thus sayeth Yannic Moog:
> > > > > > To make it work with python 3.5 and 3.6, need type hints from the
> > > > > > typing module.
> > > > > >
> > > > > > Reported-by: Tim Harvey <tharvey at gateworks.com>
> > > > > > Fixes: 21bc3433a43d ("binman: rework dropping absent entries from
> > > > > > packaged
> > > > > > image")
> > > > > > Signed-off-by: Yannic Moog <y.moog at phytec.de>
> > > > > > ---
> > > > > > Changes in v2:
> > > > > > - drop newline changes
> > > > > > - Link to v1:
> > > > > > https://lore.kernel.org/r/20250711-binman-typing-fix-v1-1-66ab075015ac@phytec.de
> > > > > > ---
> > > > > > tools/binman/etype/cbfs.py | 3 ++-
> > > > > > tools/binman/etype/mkimage.py | 3 ++-
> > > > > > tools/binman/etype/section.py | 3 ++-
> > > > > > 3 files changed, 6 insertions(+), 3 deletions(-)
> > > > > >
> > > > > > diff --git a/tools/binman/etype/cbfs.py b/tools/binman/etype/cbfs.py
> > > > > > index
> > > > > > 5879f377231bf94697bea97c3cfc3a2515665b8f..c5e77f3a0df22ff768aa7254e4
> > > > > > dd9ecbe6
> > > > > > f81684 100644
> > > > > > --- a/tools/binman/etype/cbfs.py
> > > > > > +++ b/tools/binman/etype/cbfs.py
> > > > > > @@ -6,6 +6,7 @@
> > > > > > #
> > > > > >
> > > > > > from collections import OrderedDict
> > > > > > +from typing import Dict
> > > > >
> > > > > It's been a while from my Python days so I'm still trying to
> > > > > understand
> > > > > what's going on, but my understanding is the 'typing' module is
> > > > > considered deprecated after Python 3.9 with PEP 589[0]
> > > >
> > > > That is correct. Afaik it is supposed to be removed with 3.14. (Source:
> > > > Fluent
> > > > Python 2nd Edition).
> > > > Python 3.6 (and 3.5) does not have access to __futures__.annotations,
> > > > that is
> > > > why I asked if we strive for python >= 3.5 support or >= 3.7.
> > > >
> > > > So it seems to me there are two paths:
> > > >
> > > > - remove type annotations again.
> > > > - when this typing module gets removed, migrate and require python >=
> > > > 3.7
> > > >
> > > > What do you think is the best course of action?
> > > >
> > >
> > > Grepping around some more it looks like mbedtls is still using the
> > > typing module so it's probably fine for now. Though I think 3.14 will
> > > be available by October this year and just in time for this next
> > > release :/
> > >
> > > Going off Python's version status page[0] it looks like we're safe to
> > > move the minimum requirement to 3.6 or 3.7. Python 3.5 isn't even
> > > listed as end-of-life anymore.
> > >
> > > Debian's oldstable (bullseye) seems to be using 3.9[1]
> > > Ubuntu's 22.04 (Jammy) seems to use 3.10[2]
> > > Yocto's Dunfell is using 3.8[3]
> > >
> > > I seem remember Rocky 8 using 3.6 but I can't find a source for that.
> > >
> > > It seems like we should look into bumping the minimum version but I
> > > tend to refresh my system a little more often so I don't know what
> > > pain this would cause others
> > >
> > > [0] https://devguide.python.org/versions/
> > > [1] https://wiki.debian.org/Python
> > > [2] https://packages.ubuntu.com/search?keywords=python3
> > > [3]
> > > https://github.com/openembedded/openembedded-core/blob/c4fb7d1f0f157ffafd9f907f49ea74b93b2c1d40/meta/recipes-devtools/python/python3_3.8.18.bb#L67
> >
> > We partly hit this because Ubuntu 20.04 is on, uh, I forget what Tim
> > said now. But I really like to be able to say we work on the oldest
> > still supported common LTS distributions. We may have to bump to 3.7 or
> > newer after v2025.10 so that we don't run in to too many problems with
> > bleeding edge distributions instead.
>
> Ah, I should have looked this up as I see:
> https://wiki.ubuntu.com/FocalFossa/ReleaseNotes#Python3_by_default
>
> This says Ubuntu 20.04 is Python 3.8. Sorry for all the reworking here
> Yannic. Given the removal of this in 3.14 which will come out in time
> for us to get bug reports after the release, and also that the oldest
> LTS still otherwise supported is using Python 3.8, I asked you to
> support too far back and we should aim for 3.7 or newer in a way that
> won't cause problems with 3.14 as soon as that comes out.
No worries, Tom. Thanks for clarifying. Will send with __future__ import.
More information about the U-Boot
mailing list