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

Need for pydot 2.0 to support Python 3.5, 3.6? #268

Closed
peternowee opened this issue Jun 22, 2021 · 3 comments
Closed

Need for pydot 2.0 to support Python 3.5, 3.6? #268

peternowee opened this issue Jun 22, 2021 · 3 comments

Comments

@peternowee
Copy link
Member

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.)

@peternowee peternowee added this to the 2.0.0 (or later) milestone Jun 22, 2021
@peternowee peternowee pinned this issue Jun 22, 2021
@peternowee peternowee changed the title Need for pydot 2.0 to support PY 3.5, 3.6? Need for pydot 2.0 to support Python 3.5, 3.6? Jun 22, 2021
peternowee added a commit to peternowee/pydot that referenced this issue Jun 24, 2021
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
peternowee added a commit to peternowee/pydot that referenced this issue Jun 25, 2021
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
@jarrodmillman
Copy link

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:

@alexprengere
Copy link

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+".
Personally, I would be in favor of having at least one release supporting "Python3.6+", and wait one more release to drop it (2.1?). There are already a lot of things you can do when "just" dropping Python2 (modernize the codebase, add type hints, leverage newer syntax).

@peternowee peternowee unpinned this issue Nov 19, 2021
@lkk7
Copy link
Member

lkk7 commented Dec 31, 2023

Versions 3.7+ are supported.
Support for Python 2.x has been dropped.

@lkk7 lkk7 closed this as completed Dec 31, 2023
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Feb 6, 2024
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants