DiamondLightSource / aioca

Asynchronous Channel Access client for asyncio and Python using libca via ctypes
Apache License 2.0
6 stars 3 forks source link

Come up with a python version support policy and implement in CI #49

Open DominicOram opened 5 days ago

DominicOram commented 5 days ago

Currently the python 3.7 tests are failing, it looks like potentially because there is no longer an installable version of 3.7 for that OS (https://github.com/DiamondLightSource/aioca/actions/runs/9990760182/job/27612112943). Either way 3.7 is very old now so we should think about when to drop it.

We should write a page in the aioca documentation on what our depreciation policy is then make CI match it. For other DLS projects we follow https://numpy.org/neps/nep-0029-deprecation_policy.html, if we followed that the CI should be updated to run against 3.10+

AlexanderWells-diamond commented 5 days ago

What's happened here is the macos-latest machines upgraded to ARM64, and does not have the same level of backwards compatibility as before. What I did for pythonSoftIOC was to simply use the older runners. The same fix should probably be applied here as a stop-gap.

We've been keeping Python3.7 support as currently it is still DLS's reference python3 version. Once we can get rid of that we could look at dropping 3.7 support.

DominicOram commented 5 days ago

We've been keeping Python3.7 support as currently it is still DLS's reference python3 version. Once we can get rid of that we could look at dropping 3.7 support.

Ok, even if we can't drop support for it can we include up to 3.12 on the CI as downstream applications are using it?

AlexanderWells-diamond commented 5 days ago

Sure. I'll add CI support in #50. I leave it up to @coretl to use this issue if we want to define a deprecation policy for this module at this time.

coretl commented 2 days ago

This is a stable module with few changes, so I suggest that we follow the approach of "we guarantee to support NEP29, but will keep old versions of python if it doesn't cause us any pain". Basically as soon as GitHub/numpy/epicscorelibs makes it difficult to support an old python we drop it, but we make sure that we add new pythons inline with the copier template.