Skip to content

Drop Python 3.7 (up to 3.9?) support #275

@chrysn

Description

@chrysn

The next round of Python required-version bumps is not too promising in terms of new features, but there are some:

  • New in 3.8:
    • Positional-only parameters could help keep the API evolvable.
    • Happy Eyeballs is available in asyncio
    • Named tasks are available in asyncio (they're already used but with a workaround to make it no-op in earlier versions)
    • f-strings support {var=} (would be a reason to finally move some % code over)
  • New in 3.9:
    • The new dict and string methods are nice, but not nice enough I'd start to redo old code, and are only a minor annoyance when CI says "no" to them.
    • ipaddress scope handling are improved.

None of the other changes appear to be very helpful to aiocoap (or they are, but are automatically useful to users of the new version, or are useful already by being in any version like the stabilization of asyncio.run); so it would seem that the earliest Python 3.7 removal is due is when dependencies start becoming hard to get by on that platform, when the CI images generally become problematic, or when the CI list of platforms is just getting too long.

Still, I'd like to check which user groups have concrete timelines:

  • Debian has 3.9 already in bullseye (buster / ucrrent oldstable has 3.7)
  • pypy already has a 3.9 out (beta, yet to be added to CI but clearly not the stopper this time)
  • FIT IoT Lab probably still has 3.7 around.
  • Ubuntu focal (current LTS) has 3.8; next LTS with 3.9 coming up 2022.04 (jammy).
  • RIOT images: will be a while until it advances to jammy (WIP in riotdocker-base: bump to 2022.04 (Jammy Jellyfish) RIOT-OS/riotdocker#189)
  • HomeAssistant is running on 3.9/3.10 currently

As outlined above, I'm in no hurry to bump the Python dependency, but if anyone needs aiocoap supporting 3.8 for longer than any of those listed, please speak up.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions