-
Notifications
You must be signed in to change notification settings - Fork 158
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
Need for pydot 2.0 to support Python 3.5, 3.6? #268
Comments
This starts a series of commits to drop support for Python 2 and 3.4 as discussed in [pydot#171][171] and [pydot#229][229]. | Python version | Python EOL | PyPI 2020-05-02 | PyPI 2021-06-21 | |----------------|------------|-----------------|-----------------| | Python 2.7 | 2020-01-01 | 26% | 12% | | Python 3.4 | 2019-03-18 | 0% | 0% | | Python 3.5 | 2020-09-30 | 27% | 3% | | Python 3.6 | 2021-12 | 21% | 14% | | Python 3.7 | 2023-06 | 23% | 51% | | Python 3.8 | 2024-10 | 3% | 13% | | Python 3.9 | 2025-10 | 0% | 6% | | Python 3.10 | 2026-10 | - | 0% | EOL : End of life, from End of security support on [Wikipedia][1]. PyPI: Python Package Index statistics for pydot from [PyPIstats.org][2]. Without support for Python 2, wheel distributions of pydot can [no longer be marked as "universal"][3], so removing that from `setup.cfg`. **USER FEEDBACK REQUESTED** We are considering if pydot 2.0 should drop support for Python 3.5 and 3.6 as well. If this would affect you, please leave a comment in [pydot#268][268]. [1]: https://en.wikipedia.org/w/index.php?title=History_of_Python&oldid=1022680403#Table_of_versions [2]: https://pypistats.org/packages/pydot [3]: https://github.com/pypa/packaging.python.org/blob/44313e5db4d729eede0bcb91c08d6ec93e89c5c8/source/guides/dropping-older-python-versions.rst#dealing-with-the-universal-wheels [171]: pydot#171 (comment) [229]: pydot#229 [268]: pydot#268
This starts a series of commits to drop support for Python 2 and 3.4 as discussed in [pydot#171][171] and [pydot#229][229]. | Python version | Python EOL | PyPI 2020-05-02 | PyPI 2021-06-21 | |----------------|------------|-----------------|-----------------| | Python 2.7 | 2020-01-01 | 26% | 12% | | Python 3.4 | 2019-03-18 | 0% | 0% | | Python 3.5 | 2020-09-30 | 27% | 3% | | Python 3.6 | 2021-12 | 21% | 14% | | Python 3.7 | 2023-06 | 23% | 51% | | Python 3.8 | 2024-10 | 3% | 13% | | Python 3.9 | 2025-10 | 0% | 6% | | Python 3.10 | 2026-10 | - | 0% | EOL : End of life, from End of security support on [Wikipedia][1]. PyPI: Python Package Index statistics for pydot from [PyPIstats.org][2]. Without support for Python 2, wheel distributions of pydot can [no longer be marked as "universal"][3], so removing that from `setup.cfg`. **USER FEEDBACK REQUESTED** We are considering if pydot 2.0 should drop support for Python 3.5 and 3.6 as well. If this would affect you, please leave a comment in [pydot#268][268]. [1]: https://en.wikipedia.org/w/index.php?title=History_of_Python&oldid=1022680403#Table_of_versions [2]: https://pypistats.org/packages/pydot [3]: https://github.com/pypa/packaging.python.org/blob/44313e5db4d729eede0bcb91c08d6ec93e89c5c8/source/guides/dropping-older-python-versions.rst#dealing-with-the-universal-wheels [171]: pydot#171 (comment) [229]: pydot#229 [268]: pydot#268
FYI, many of the core projects in the scientific Python ecosystem (e.g., numpy, scipy, matplotlib, pandas, networkx, etc.) have already dropped Python 3.6 and will drop 3.7 for any releases after Dec 26, 2021. For more information, please see: |
At the time of writing this message, Python3.6 is still officially supported. For projects that recently dropped Python2 support, the usual "next" threshold is "Python3.6+". |
Versions 3.7+ are supported. |
2.0.0 (2023-12-30) ------------------ Changed: - Broken parsing caused by `pyparsing` updates fixed. With this, the pydot project rises from the dead. - (Internal) CI revived by @ferdnyc. Modernized and clarified the development process. Testing is done against multiple Python versions. - Reorganized package/module structure. The `pydot` package is installed as a directory now instead of as two modules: Before (pydot 0.x, 1.x) After (pydot 2.x) site-packages/ site-packages/ |-- pydot.py `-- pydot/ `-- dot_parser.py |-- __init__.py |-- core.py |-- dot_parser.py `-- exceptions.py This is mostly an internal change that should go unnoticed by most users, especially those upgrading through `pip` or a software distribution. `import pydot` should work as it did before. Special cases: - `import dot_parser` no longer works. Change it to `from pydot import dot_parser` or see if you can use the wrappers `pydot.graph_from_dot_data()` or `pydot.graph_from_dot_file()`. **USER FEEDBACK REQUESTED** We assume pydot users do not often directly `import dot_parser`. If you do, please report your reasons, so that we can consider making it available again before the final release of pydot 2.0: pydot/pydot#230 - If you use pydot from a (cloned) pydot source tree: - The pydot source modules moved from the top directory to subdirectory `src/pydot/`. - When using a `PYTHONPATH` environment variable: Append `/src`, e.g. `PYTHONPATH=~/Development/pydot/src`. If you need to switch between pydot 1.x and pydot 2.x, add both, e.g. `PYTHONPATH=~/Development/pydot/src:~/Development/pydot` - When using an editable install (development mode): Re-run `pip install -e .` from the top directory of the source tree to update the links. - For users of the test suite: - The test suite no longer refuses to run from the top of the source tree. - This makes the test suite option `--no-check` redundant. It has no effect except for printing a deprecation warning. It will be removed in a future major release (pydot 3 or higher), then leading to an error. - Reorganized exception hierarchy: - New base class `PydotException`, derived from Python's `Exception`. - Pydot's `Error` exception class is now derived from `PydotException` instead of from Python's built-in `Exception` directly. Existing handlers should not be affected. - Exception class `InvocationException` was removed. It has not been raised by pydot since 2016 (v1.2.0). - API (minor): Renamed the first parameter of the parser functions listed below from `str` to `s`. These functions primarily exist for internal use and would normally be called using positional arguments, so few users should be affected. push_top_graph_stmt(s, loc, toks) push_graph_stmt(s, loc, toks) push_subgraph_stmt(s, loc, toks) push_default_stmt(s, loc, toks) push_attr_list(s, loc, toks) push_edge_stmt(s, loc, toks) Deprecated: - Test suite option `--no-check`. See "Reorganized package/module structure" above. Removed: - Drop support for Python 2 and Python < 3.7. **USER FEEDBACK REQUESTED** ~~We are considering if pydot 2.0 should drop support for Python 3.5 and 3.6 as well. If this would affect you, please leave a comment in pydot/pydot#268 EDIT: This was decided to be done, with a lot of time passed since this entry.
Pydot 2.0 will drop support for Python 2.7 and 3.4 (see PR #229). I am still considering if we should drop support for Python 3.5 (EOL since 2020-09-30) as well. And given that the final pydot 2.0 might not get released until after 2021 the question will probably be raised if we should not drop support for Python 3.6 (EOL planned 2021-12) as well.
It is not clear to me how much demand there actually is for continued support of older Python versions.
Supporting older Python versions does not make the support itself cost more time, but it prevents the developers of pydot from using language additions that were introduced in higher Python versions. This is not a big problem by itself either, because problems can still be solved without the latest tools, but it would be a waste if we constrained ourselves for nothing.
So, if you think that you will need pydot 2.0 to support Python 3.5 or 3.6, please make yourself heard now by leaving a comment below to describe your situation (e.g. why you cannot upgrade Python, when that might change, what planned improvements you need from pydot 2.0 that are not in pydot 1.4.2, etc.), so that we can make a more informed decision.
(No need for arguments in favor of dropping Python 3.5/3.6 support. Those are quite clear to me already and can be found all over the Internet. I hope this poll can give us some idea about the pydot users that would be negatively affected. We can discuss if that is a price we are willing to pay after this poll has been open for a while, let's say 3 months.)
The text was updated successfully, but these errors were encountered: