omry / omegaconf

Flexible Python configuration system. The last one you will ever need.
BSD 3-Clause "New" or "Revised" License
1.98k stars 112 forks source link

consider dropping formal Python 3.6 support for OmegaConf 2.2 #791

Open Jasha10 opened 3 years ago

Jasha10 commented 3 years ago

Python 3.6 eol is coming in a couple of months: https://endoflife.date/python

Originally posted by @omry in https://github.com/omry/omegaconf/issues/749#issuecomment-928161041

Jasha10 commented 3 years ago

EOL is Dec 23rd, 2021

pixelb commented 3 years ago

The main thing to consider here is usage on popular systems. python 3.6 is in use by RHEL 8 (centos 8) at least, so I don't think we should deprecate immediately. We should consider this though if it becomes awkward to support 3.6

Jasha10 commented 2 years ago

Sounds good. For the record, there is currently at least one edge-case where python3.6 compatibility is imperfect: pickling optional types fails on python3.6, so some OmegaConf objects cannot be pickled in python3.6 if their metadata contains an optional type:

$ python3.6
...
>>> import pickle
>>> from typing import Optional
>>> pickle.dumps(Optional[int])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
_pickle.PicklingError: Can't pickle typing.Union[int, NoneType]: it's not the same object as typing.Union

This comes up in particular with OmegaConf containers that have an optional element_type, e.g. containers typed as Dict[str, Optional[int]]. The current approach is for OmegaConf to preempt such a python3.6 pickling error and raise an OmegaConfBaseException instead.

omry commented 2 years ago

I think we should feel comfortable dropping 3.6. People that need to continue using it can stick to older version of OmegaConf/Hydra.

Jasha10 commented 1 year ago

python-attrs (which is a core dependency of omegaconf) has deprecated support for python3.6. This which is causing Hydra CI failure

DeprecationWarning: Running attrs on Python 3.6 is deprecated & we intend to drop support soon. If that's a problem for you, please let us know why & we MAY re-evaluate: <https://github.com/python-attrs/attrs/pull/993>

As a first step, I'll remove the python3.6 classifier from the Hydra setup.py file and will disable the py3.6 CI job.