Skip to content

gh-104773: PEP 594: Remove the nntplib module #104894

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

Merged
merged 1 commit into from
May 24, 2023

Conversation

vstinner
Copy link
Member

@vstinner vstinner commented May 24, 2023

  • socket_helper.transient_internet() no longer imports nntplib to catch nntplib.NNTPTemporaryError.
  • ssltests.py no longer runs test_nntplib.
  • "make quicktest" no longer runs test_nntplib.
  • WASM: remove nntplib from OMIT_NETWORKING_FILES.
  • Remove mentions to nntplib in the email documentation.

📚 Documentation preview 📚: https://cpython-previews--104894.org.readthedocs.build/

@vstinner
Copy link
Member Author

cc @mcepl

@mcepl
Copy link
Contributor

mcepl commented May 24, 2023

For those who might be interested in this module, let’s continue with the fun on https://git.sr.ht/~mcepl/nntplib (and on PyPI as https://pypi.org/project/nntplib/).

* socket_helper.transient_internet() no longer imports nntplib to
  catch nntplib.NNTPTemporaryError.
* ssltests.py no longer runs test_nntplib.
* "make quicktest" no longer runs test_nntplib.
* WASM: remove nntplib from OMIT_NETWORKING_FILES.
* Remove mentions to nntplib in the email documentation.
@Julien-Elie
Copy link

Thanks @mcepl for having created nntplib on PyPi and making it still alive :)
It is greatly appreciated as this module works pretty fine, has a great documentation, and implements the latest version of the NNTP standard (RFC 3977). Too bad that its test suite had too many false alerts :(

And thanks @vstinner too for all your work on Python!

@vstinner
Copy link
Member Author

Too bad that its test suite had too many false alerts :(

Running a CI on a live server is hard. Each time that the server is busy, being upgraded, or has some network issues, the test fails. Sadly, no one managed to modify test_nntplib to tolerate temporary server/network issues.

IMO it's better to maintain such project outside Python to ease contributions. These days, pip install nntplib is trivial. And it's possible to only have a requirement on Python >= 3.13 using environment markers.

@vstinner
Copy link
Member Author

For those who might be interested in this module, let’s continue with the fun on https://git.sr.ht/~mcepl/nntplib (and on PyPI as https://pypi.org/project/nntplib/).

If you look carefully to my PR, you will see that I recommend this replacement in What's New in Python 3.13, where the removal is documented ;-)

@vstinner vstinner enabled auto-merge (squash) May 24, 2023 21:05
@vstinner vstinner merged commit ded5f1f into python:main May 24, 2023
@vstinner vstinner deleted the remove_nntplib branch May 24, 2023 21:16
@vstinner
Copy link
Member Author

Using import nntplib|from nntplib regex, I found a single project on PyPI top 5,000 projects (2023-04-13) using nntplib: zipfile36 project.

zipfile36 only uses nntplib in a copy of the Python test/support/__init__.py file:

zipfile36-0.1.3.tar.gz: zipfile36-0.1.3/test/support/__init__.py: import nntplib

https://pypi.org/project/zipfile36/ is a backport of the zipfile module from Python 3.6 "which contains some improvements". Suggested usage:

if sys.version_info >= (3, 6):
    import zipfile
else:
    import zipfile36 as zipfile

I suppose that Python 3.13 users are not supposed to use a backport of the Python 3.6 zipfile module :-)

@mcepl
Copy link
Contributor

mcepl commented May 24, 2023

If you look carefully to my PR, you will see that I recommend this replacement in What's New in Python 3.13, where the removal is documented ;-)

Thanks!

@mcepl
Copy link
Contributor

mcepl commented May 24, 2023

Using import nntplib|from nntplib regex, I found a single project on PyPI top 5,000 projects (2023-04-13) using nntplib: zipfile36 project.

I use it in my https://pypi.org/project/pygn/ (which certainly isn’t in any Top anything ;)).

@vstinner
Copy link
Member Author

I use it in my https://pypi.org/project/pygn/ (which certainly isn’t in any Top anything ;)).

Maybe add a requirement to your own PyPI nntplib module? :-) (with a env markers to only install it on Python 3.13 and newer).

@mcepl
Copy link
Contributor

mcepl commented May 25, 2023

Thanks @mcepl for having created nntplib on PyPi and making it still alive :) It is greatly appreciated as this module works pretty fine, has a great documentation, and implements the latest version of the NNTP standard (RFC 3977). Too bad that its test suite had too many false alerts :(

Any patches are hugely welcome! Especially if somebody helped with mocking out the servers. It doesn't make a sense to run the test suite against real servers.

@merwok
Copy link
Member

merwok commented May 26, 2023

How can the module be under the BSD license, as it was copied from the stdlib that’s under the Python license? (not the same thing as the PSF license)

@mcepl
Copy link
Contributor

mcepl commented May 26, 2023

How can the module be under the BSD license, as it was copied from the stdlib that’s under the Python license? (not the same thing as the PSF license)

You are right, I have to investigate this https://todo.sr.ht/~mcepl/pygn/9

Hmm, except https://docs.python.org/3/license.html#psf-license-agreement-for-python-release really doesn’t read like something which could be used outside of the Python 3.11 itself.

Does anybody have any good example of a stand-alone Python module which would be licensed under PSF License?

@hugovk
Copy link
Member

hugovk commented May 26, 2023

Via https://pypi.org/classifiers/ here's the PyPI packages with the "License :: OSI Approved :: Python License (CNRI Python License" Trove classifier:

(There's also a PSF licence one, but I guess you need Python licence.)

@mcepl
Copy link
Contributor

mcepl commented May 27, 2023

Any comments on https://git.sr.ht/~mcepl/nntplib/commit/4cb431e3e40d ?

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 this pull request may close these issues.

6 participants