Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update configobj to 5.1.0dev commit f9a265c4 #10939

Closed
josephsl opened this issue Apr 4, 2020 · 1 comment · Fixed by #10944
Closed

Update configobj to 5.1.0dev commit f9a265c4 #10939

josephsl opened this issue Apr 4, 2020 · 1 comment · Fixed by #10944
Milestone

Comments

@josephsl
Copy link
Collaborator

josephsl commented Apr 4, 2020

Hi,

For future Python compatibility:

Background:

As part of #4470, configobj was updated to a 5.1.0dev commit. Since Python 3 transition preparation was in the works then, there has not been any test done to make sure configobj is ready for newer Python 3 releases. In 2020, things have changed, with NVDA running on Python 3.7 and configobj has been updated to provide better support for Python 3.7 and resolving errors.

Is your feature request related to a problem? Please describe.

Config imports collections.abc.Mapping class. In Python 2, it was okay to import collections.Mapping directly, which is no longer the case in Python 3.3 and later. IN fact, Python 3.9 will prevent direct import of abstract base collection classes, affecting configobj.

Along with this change, current version of configobj (shipping iwth NVDA 2020.1) does not support Python 3.7 properly - assumes Python 3.4 is the latest version compatible.

Describe the solution you'd like

Update configobj to 5.1.0dev commit f9a265c4 (December 8, 2019). This includes:

  • Improved support for Python 3.7.
  • Mapping class will be imported from collections.abc if running on Python 3.4 or later.
  • Path-like object is supported when specifying confspec and opening config files.

Describe alternatives you've considered

Leave configobj as is.

Additional context

Not only this change would make configobj compliant with Python 3.7, it would also make it easier for NVDA to update to newer Python releases with a dependency that has been proven to work with newer Python releases.

Note that since configobj is a crucial dependency, extensive regression testing must be performed, including reading and writing NVDA and add-on settings across versions with and without the new configobj commits.

Thanks.

@josephsl
Copy link
Collaborator Author

josephsl commented Apr 4, 2020

Hi,

Note that this will affect validate module as well.

Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants