+1 On 5/23/19 1:00 AM, Alex Walters wrote: > I've watched the entire thread and its taken me a few days to put a finger > on what bothers me about it. > > In my opinion, this shouldn't be a pep describing the list of modules that > need to go as "dead batteries", but should be a process pep describing how > dead batteries should be removed, and the individual modules should be given > their own pep. I think reactions to individual module peps will give a > better indication of if it's a used module or not. > >> -----Original Message----- >> From: Python-Dev <python-dev-bounces+tritium- >> list=sdamon.com at python.org> On Behalf Of Christian Heimes >> Sent: Monday, May 20, 2019 4:15 PM >> To: Python Dev <Python-Dev at python.org> >> Subject: [Python-Dev] PEP 594: Removing dead batteries from the standard >> library >> >> Hi, >> >> here is the first version of my PEP 594 to deprecate and eventually remove >> modules from the standard library. The PEP started last year with talk > during >> the Python Language Summit 2018, https://lwn.net/Articles/755229/. >> >> The PEP can be confirmed in two stages. I'm not planning any code changes >> for 3.8. Instead I only like to document a bunch of modules as deprecated. >> Active deprecation is planned for 3.9 and removal for 3.10. The long >> deprecation phase gives us 3 years to change our minds or handle edge >> cases, too. >> >> Regards, >> Christian >> >> >> > ---------------------------------------------------------------------------- >> PEP: 594 >> Title: Removing dead batteries from the standard library >> Author: Christian Heimes <christian at python.org> >> Status: Active >> Type: Process >> Content-Type: text/x-rst >> Created: 20-May-2019 >> Post-History: >> >> >> Abstract >> ======== >> >> This PEP proposed a list of standard library modules to be removed from > the >> standard library. The modules are mostly historic data formats and APIs > that >> have been superseded a long time ago, e.g. Mac OS 9 and Commodore. >> >> >> Rationale >> ========= >> >> Back in the early days of Python, the interpreter came with a large set of >> useful modules. This was often refrained to as "batteries included" >> philosophy and was one of the corner stones to Python's success story. >> Users didn't have to figure out how to download and install separate >> packages in order to write a simple web server or parse email. >> >> Times have changed. The introduction of the cheese shop (PyPI), > setuptools, >> and later pip, it became simple and straight forward to download and > install >> packages. Nowadays Python has a rich and vibrant ecosystem of third party >> packages. It's pretty much standard to either install packages from PyPI > or >> use one of the many Python or Linux distributions. >> >> On the other hand, Python's standard library is piling up cruft, > unnecessary >> duplication of functionality, and dispensable features. This is > undesirable >> for several reasons. >> >> * Any additional module increases the maintenance cost for the Python core >> development team. The team has limited resources, reduced maintenance >> cost >> frees development time for other improvements. >> * Modules in the standard library are generally favored and seen as the >> de-facto solution for a problem. A majority of users only pick 3rd party >> modules to replace a stdlib module, when they have a compelling reason, >> e.g. >> lxml instead of `xml`. The removal of an unmaintained stdlib module >> increases the chances of a community contributed module to become >> widely >> used. >> * A lean and mean standard library benefits platforms with limited > resources >> like devices with just a few hundred kilobyte of storage (e.g. BBC >> Micro:bit). Python on mobile platforms like BeeWare or WebAssembly >> (e.g. pyodide) also benefit from reduced download size. >> >> The modules in the PEP have been selected for deprecation because their >> removal is either least controversial or most beneficial. For example >> least controversial are 30 years old multimedia formats like ``sunau`` >> audio format, which was used on SPARC and NeXT workstations in the late >> 1980ties. The ``crypt`` module has fundamental flaws that are better > solved >> outside the standard library. >> >> This PEP also designates some modules as not scheduled for removal. Some >> modules have been deprecated for several releases or seem unnecessary at >> first glance. However it is beneficial to keep the modules in the standard >> library, mostly for environments where installing a package from PyPI is > not >> an option. This can be cooperate environments or class rooms where >> external >> code is not permitted without legal approval. >> >> * The usage of FTP is declining, but some files are still provided over >> the FTP protocol or hosters offer FTP to upload content. Therefore >> ``ftplib`` is going to stay. >> * The ``optparse`` and ``getopt`` module are widely used. They are mature >> modules with very low maintenance overhead. >> * According to David Beazley [5]_ the ``wave`` module is easy to teach to >> kids and can make crazy sounds. Making a computer generate crazy sounds >> is >> powerful and highly motivating exercise for a 9yo aspiring developer. > It's >> a fun battery to keep. >> >> >> Deprecation schedule >> ==================== >> >> 3.8 >> --- >> >> This PEP targets Python 3.8. Version 3.8.0 final is scheduled to be > released >> a few months before Python 2.7 will reach its end of lifetime. We expect > that >> Python 3.8 will be targeted by users that migrate to Python 3 in 2019 and >> 2020. To reduce churn and to allow a smooth transition from Python 2, >> Python 3.8 will neither raise `DeprecationWarning` nor remove any >> modules that have been scheduled for removal. Instead deprecated >> modules will >> just be *documented* as deprecated. Optionally modules may emit a >> `PendingDeprecationWarning`. >> >> All deprecated modules will also undergo a feature freeze. No additional >> features should be added. Bug should still be fixed. >> >> 3.9 >> --- >> >> Starting with Python 3.9, deprecated modules will start issuing >> `DeprecationWarning`. >> >> >> 3.10 >> ---- >> >> In 3.10 all deprecated modules will be removed from the CPython repository >> together with tests, documentation, and autoconf rules. >> >> >> PEP acceptance process >> ====================== >> >> 3.8.0b1 is scheduled to be release shortly after the PEP is officially >> submitted. Since it's improbable that the PEP will pass all stages of the >> PEP process in time, I propose a two step acceptance process that is >> analogous Python's two release deprecation process. >> >> The first *provisionally accepted* phase targets Python 3.8.0b1. In the > first >> phase no code is changes or removed. Modules are only documented as >> deprecated. >> >> The final decision, which modules will be removed and how the removed >> code >> is preserved, can be delayed for another year. >> >> >> Deprecated modules >> ================== >> >> The modules are grouped as data encoding, multimedia, network, OS >> interface, >> and misc modules. The majority of modules are for old data formats or >> old APIs. Some others are rarely useful and have better replacements on >> PyPI, e.g. Pillow for image processing or NumPy-based projects to deal > with >> audio processing. >> >> .. csv-table:: Table 1: Proposed modules deprecations >> :header: "Module", "Deprecated in", "To be removed", "Replacement" >> >> aifc,3.8,3.10,\- >> asynchat,3.8,3.10,asyncio >> asyncore,3.8,3.10,asyncio >> audioop,3.8,3.10,\- >> binhex,3.8,3.10,\- >> cgi,3.8,3.10,\- >> cgitb,3.8,3.10,\- >> chunk,3.8,3.10,\- >> colorsys,**3.8?**,**3.10?**,\- >> crypt,3.8,3.10,\- >> fileinput,3.8,3.10,argparse >> formatter,3.4,3.10,\- >> fpectl,**3.7**,**3.7**,\- >> getopt,**3.2**,**keep**,"argparse, optparse" >> imghdr,3.8,3.10,\- >> imp,**3.4**,3.10,importlib >> lib2to3,\-,**keep**, >> macpath,**3.7**,**3.8**,\- >> msilib,3.8,3.10,\- >> nntplib,3.8,3.10,\- >> nis,3.8,3.10,\- >> optparse,\-,**keep**,argparse >> ossaudiodev,3.8,3.10,\- >> pipes,3.8,3.10,subprocess >> smtpd,**3.7**,3.10,aiosmtpd >> sndhdr,3.8,3.10,\- >> spwd,3.8,3.10,\- >> sunau,3.8,3.10,\- >> uu,3.8,3.10,\- >> wave,\-,**keep**, >> xdrlib,3.8,3.10,\- >> >> >> Data encoding modules >> --------------------- >> >> binhex >> ~~~~~~ >> >> The `binhex <https://docs.python.org/3/library/binhex.html>`_ module >> encodes >> and decodes Apple Macintosh binhex4 data. It was originally developed for >> TSR-80. In the 1980s and early 1990s it was used on classic Mac OS 9 to >> encode binary email attachments. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> uu >> ~~ >> >> The `uu <https://docs.python.org/3/library/uu.html>`_ module provides >> uuencode format, an old binary encoding format for email from 1980. The uu >> format has been replaced by MIME. The uu codec is provided by the binascii >> module. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> xdrlib >> ~~~~~~ >> >> The `xdrlib <https://docs.python.org/3/library/xdrlib.html>`_ module >> supports >> the Sun External Data Representation Standard. XDR is an old binary >> serialization format from 1987. These days it's rarely used outside >> specialized domains like NFS. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> >> Multimedia modules >> ------------------ >> >> aifc >> ~~~~ >> >> The `aifc <https://docs.python.org/3/library/aifc.html>`_ module provides >> support for reading and writing AIFF and AIFF-C files. The Audio > Interchange >> File Format is an old audio format from 1988 based on Amiga IFF. It was > most >> commonly used on the Apple Macintosh. These days only few specialized >> application use AIFF. >> >> Module type >> pure Python (depends on `audioop`_ C extension) >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> audioop >> ~~~~~~~ >> >> The `audioop <https://docs.python.org/3/library/audioop.html>`_ module >> contains helper functions to manipulate raw audio data and adaptive >> differential pulse-code modulated audio data. The module is implemented in >> C without any additional dependencies. The `aifc`_, `sunau`_, and `wave`_ >> module depend on `audioop`_ for some operations. >> >> Module type >> C extension >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> colorsys >> ~~~~~~~~ >> >> The `colorsys <https://docs.python.org/3/library/colorsys.html>`_ module >> defines color conversion functions between RGB, YIQ, HSL, and HSV >> coordinate >> systems. The Pillow library provides much faster conversation between >> color systems. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> `Pillow <https://pypi.org/project/Pillow/>`_, >> `colorspacious <https://pypi.org/project/colorspacious/>`_ >> >> chunk >> ~~~~~ >> >> The `chunk <https://docs.python.org/3/library/chunk.html>`_ module >> provides >> support for reading and writing Electronic Arts' Interchange File Format. >> IFF is an old audio file format originally introduced for Commodore and >> Amiga. The format is no longer relevant. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> imghdr >> ~~~~~~ >> >> The `imghdr <https://docs.python.org/3/library/imghdr.html>`_ module is a >> simple tool to guess the image file format from the first 32 bytes >> of a file or buffer. It supports only a limited amount of formats and >> neither returns resolution nor color depth. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> *n/a* >> >> ossaudiodev >> ~~~~~~~~~~~ >> >> The `ossaudiodev <https://docs.python.org/3/library/ossaudiodev.html>`_ >> module provides support for Open Sound System, an interface to sound >> playback and capture devices. OSS was initially free software, but later >> support for newer sound devices and improvements were proprietary. Linux >> community abandoned OSS in favor of ALSA [1]_. Some operation systems >> like >> OpenBSD and NetBSD provide an incomplete [2]_ emulation of OSS. >> >> Module type >> C extension >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> sndhdr >> ~~~~~~ >> >> The `sndhdr <https://docs.python.org/3/library/sndhdr.html>`_ module is >> similar to the `imghdr`_ module but for audio formats. It guesses file >> format, channels, frame rate, and sample widths from the first 512 bytes > of >> a file or buffer. The module only supports AU, AIFF, HCOM, VOC, WAV, and >> other ancient formats. >> >> Module type >> pure Python (depends on `audioop`_ C extension for some operations) >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> *n/a* >> >> sunau >> ~~~~~ >> >> The `sunau <https://docs.python.org/3/library/sunhdr.html>`_ module >> provides >> support for Sun AU sound format. It's yet another old, obsolete file > format. >> Module type >> pure Python (depends on `audioop`_ C extension for some operations) >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> >> Networking modules >> ------------------ >> >> asynchat >> ~~~~~~~~ >> >> The `asynchat <https://docs.python.org/3/library/asynchat.html>`_ module >> is build on top of `asyncore`_ and has been deprecated since Python 3.6. >> >> Module type >> pure Python >> Deprecated in >> 3.6 >> Removed in >> 3.10 >> Substitute >> asyncio >> >> asyncore >> ~~~~~~~~ >> >> The `asyncore <https://docs.python.org/3/library/asyncore.html>`_ module >> was >> the first module for asynchronous socket service clients and servers. It >> has been replaced by asyncio and is deprecated since Python 3.6. >> >> The ``asyncore`` module is also used in stdlib tests. The tests for >> ``ftplib``, ``logging``, ``smptd``, ``smtplib``, and ``ssl`` are partly >> based on ``asyncore``. These tests must be updated to use asyncio or >> threading. >> >> Module type >> pure Python >> Deprecated in >> 3.6 >> Removed in >> 3.10 >> Substitute >> asyncio >> >> >> cgi >> ~~~ >> >> The `cgi <https://docs.python.org/3/library/cgi.html>`_ module is a > support >> module for Common Gateway Interface (CGI) scripts. CGI is deemed as >> inefficient because every incoming request is handled in a new process. > PEP >> 206 considers the module as *designed poorly and are now near-impossible >> to fix*. >> >> Several people proposed to either keep the cgi module for features like >> `cgi.parse_qs()` or move `cgi.escape()` to a different module. The >> functions `cgi.parse_qs` and `cgi.parse_qsl` have been >> deprecated for a while and are actually aliases for >> `urllib.parse.parse_qs` and `urllib.parse.parse_qsl`. The >> function `cgi.quote` has been deprecated in favor of `html.quote` >> with secure default values. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> >> cgitb >> ~~~~~ >> >> The `cgitb <https://docs.python.org/3/library/cgitb.html>`_ module is a >> helper for the cgi module for configurable tracebacks. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> smtpd >> ~~~~~ >> >> The `smtpd <https://docs.python.org/3/library/smtpd.html>`_ module >> provides >> a simple implementation of a SMTP mail server. The module documentation >> recommends ``aiosmtpd``. >> >> Module type >> pure Python >> Deprecated in >> **3.7** >> To be removed in >> 3.10 >> Substitute >> aiosmtpd >> >> nntplib >> ~~~~~~~ >> >> The `nntplib <https://docs.python.org/3/library/nntplib.html>`_ module >> implements the client side of the Network News Transfer Protocol (nntp). >> News >> groups used to be a dominant platform for online discussions. Over the > last >> two decades, news has been slowly but steadily replaced with mailing lists >> and web-based discussion platforms. >> >> The ``nntplib`` tests have been the cause of additional work in the recent >> past. Python only contains client side of NNTP. The test cases depend on >> external news server. These servers were unstable in the past. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> >> Operating system interface >> -------------------------- >> >> crypt >> ~~~~~ >> >> The `crypt <https://docs.python.org/3/library/crypt.html>`_ module >> implements >> password hashing based on ``crypt(3)`` function from ``libcrypt`` or >> ``libxcrypt`` on Unix-like platform. The algorithms are mostly old, of > poor >> quality and insecure. Users are discouraged to use them. >> >> * The module is not available on Windows. Cross-platform application need >> an alternative implementation any way. >> * Only DES encryption is guarenteed to be available. DES has an extremely >> limited key space of 2**56. >> * MD5, salted SHA256, salted SHA512, and Blowfish are optional extension. >> SSHA256 and SSHA512 are glibc extensions. Blowfish (bcrypt) is the only >> algorithm that is still secure. However it's in glibc and therefore not >> commonly available on Linux. >> * Depending on the platform, the ``crypt`` module is not thread safe. Only >> implementations with ``crypt_r(3)`` are thread safe. >> >> Module type >> C extension + Python module >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> `bcrypt <https://pypi.org/project/bcrypt/>`_, >> `passlib <https://pypi.org/project/passlib/>`_, >> `argon2cffi <https://pypi.org/project/argon2-cffi/>`_, >> hashlib module (PBKDF2, scrypt) >> >> macpath >> ~~~~~~~ >> >> The `macpath <https://docs.python.org/3/library/macpath.html>`_ module >> provides Mac OS 9 implementation of os.path routines. Mac OS 9 is no > longer >> supported >> >> Module type >> pure Python >> Deprecated in >> 3.7 >> Removed in >> 3.8 >> Substitute >> **none** >> >> nis >> ~~~ >> >> The `nis <https://docs.python.org/3/library/nis.html>`_ module provides >> NIS/YP support. Network Information Service / Yellow Pages is an old and >> deprecated directory service protocol developed by Sun Microsystems. It's >> designed successor NIS+ from 1992 never took off. For a long time, libc's >> Name Service Switch, LDAP, and Kerberos/GSSAPI are considered a more >> powerful >> and more secure replacement of NIS. >> >> Module type >> C extension >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> spwd >> ~~~~ >> >> The `spwd <https://docs.python.org/3/library/spwd.html>`_ module >> provides >> direct access to Unix shadow password database using non-standard APIs. >> In general it's a bad idea to use the spwd. The spwd circumvents system >> security policies, it does not use the PAM stack, and is >> only compatible with local user accounts. >> >> Module type >> C extension >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> Misc modules >> ------------ >> >> fileinput >> ~~~~~~~~~ >> >> The `fileinput <https://docs.python.org/3/library/fileinput.html>`_ module >> implements a helpers to iterate over a list of files from ``sys.argv``. > The >> module predates the optparser and argparser module. The same >> functionality >> can be implemented with the argparser module. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> argparse >> >> formatter >> ~~~~~~~~~ >> >> The `formatter <https://docs.python.org/3/library/formatter.html>`_ >> module >> is an old text formatting module which has been deprecated since Python >> 3.4. >> >> Module type >> pure Python >> Deprecated in >> 3.4 >> To be removed in >> 3.10 >> Substitute >> *n/a* >> >> imp >> ~~~ >> >> The `imp <https://docs.python.org/3/library/imp.html>`_ module is the >> predecessor of the >> `importlib <https://docs.python.org/3/library/importlib.html>`_ module. >> Most >> functions have been deprecated since Python 3.3 and the module since >> Python 3.4. >> >> Module type >> C extension >> Deprecated in >> 3.4 >> To be removed in >> 3.10 >> Substitute >> importlib >> >> msilib >> ~~~~~~ >> >> The `msilib <https://docs.python.org/3/library/msilib.html>`_ package is a >> Windows-only package. It supports the creation of Microsoft Installers > (MSI). >> The package also exposes additional APIs to create cabinet files (CAB). > The >> module is used to facilitate distutils to create MSI installers with >> ``bdist_msi`` command. In the past it was used to create CPython's > official >> Windows installer, too. >> >> Microsoft is slowly moving away from MSI in favor of Windows 10 Apps >> (AppX) >> as new deployment model [3]_. >> >> Module type >> C extension + Python code >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> **none** >> >> pipes >> ~~~~~ >> >> The `pipes <https://docs.python.org/3/library/pipes.html>`_ module >> provides >> helpers to pipe the input of one command into the output of another >> command. >> The module is built on top of ``os.popen``. Users are encouraged to use >> the subprocess module instead. >> >> Module type >> pure Python >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> subprocess module >> >> Removed modules >> =============== >> >> fpectl >> ------ >> >> The `fpectl <https://docs.python.org/3.6/library/fpectl.html>`_ module was >> never built by default, its usage was discouraged and considered > dangerous. >> It also required a configure flag that caused an ABI incompatibility. The >> module was removed in 3.7 by Nathaniel J. Smith in >> `bpo-29137 <https://bugs.python.org/issue29137>`_. >> >> Module type >> C extension + CAPI >> Deprecated in >> 3.7 >> Removed in >> 3.7 >> Substitute >> **none** >> >> >> Modules to keep >> =============== >> >> Some modules were originally proposed for deprecation. >> >> lib2to3 >> ------- >> >> The `lib2to3 <https://docs.python.org/3/library/2to3.html>`_ package >> provides >> the ``2to3`` command to transpile Python 2 code to Python 3 code. >> >> The package is useful for other tasks besides porting code from Python 2 > to >> 3. For example `black`_ uses it for code reformatting. >> >> Module type >> pure Python >> >> getopt >> ------ >> >> The `getopt <https://docs.python.org/3/library/getopt.html>`_ module >> mimics >> C's getopt() option parser. Although users are encouraged to use argparse >> instead, the getopt module is still widely used. >> >> Module type >> pure Python >> >> optparse >> -------- >> >> The `optparse <https://docs.python.org/3/library/optparse.html>`_ module >> is >> the predecessor of the argparse module. Although it has been deprecated >> for >> many years, it's still widely used. >> >> Module type >> pure Python >> Deprecated in >> 3.2 >> Substitute >> argparse >> >> wave >> ~~~~ >> >> The `wave <https://docs.python.org/3/library/wave.html>`_ module >> provides >> support for the WAV sound format. The module uses one simple function >> from the `audioop`_ module to perform byte swapping between little and >> big >> endian formats. Before 24 bit WAV support was added, byte swap used to be >> implemented with the ``array`` module. To remove ``wave``'s dependency on >> the >> ``audioop``, the byte swap function could be either be moved to another >> module (e.g. ``operator``) or the ``array`` module could gain support for >> 24 bit (3 byte) arrays. >> >> Module type >> pure Python (depends on *byteswap* from `audioop`_ C extension) >> Deprecated in >> 3.8 >> To be removed in >> 3.10 >> Substitute >> *n/a* >> >> >> Future maintenance of removed modules >> ===================================== >> >> The main goal of the PEP is to reduce the burden and workload on the >> Python >> core developer team. Therefore removed modules will not be maintained by >> the core team as separate PyPI packages. However the removed code, tests >> and >> documentation may be moved into a new git repository, so community >> members >> have a place from which they can pick up and fork code. >> >> A first draft of a `legacylib <https://github.com/tiran/legacylib>`_ >> repository is available on my private Github account. >> >> It's my hope that some of the deprecated modules will be picked up and >> adopted by users that actually care about them. For example ``colorsys`` > and >> ``imghdr`` are useful modules, but have limited feature set. A fork of >> ``imghdr`` can add new features and support for more image formats, >> without >> being constrained by Python's release cycle. >> >> Most of the modules are in pure Python and can be easily packaged. Some >> depend on a simple C module, e.g. `audioop`_ and `crypt`_. Since > `audioop`_ >> does not depend on any external libraries, it can be shipped in as binary >> wheels with some effort. Other C modules can be replaced with ctypes or >> cffi. >> For example I created `legacycrypt > <https://github.com/tiran/legacycrypt>`_ >> with ``_crypt`` extension reimplemented with a few lines of ctypes code. >> >> >> Discussions >> =========== >> >> * Elana Hashman and Nick Coghlan suggested to keep the *getopt* module. >> * Berker Peksag proposed to deprecate and removed *msilib*. >> * Brett Cannon recommended to delay active deprecation warnings and >> removal >> of modules like *imp* until Python 3.10. Version 3.8 will be released >> shortly before Python 2 reaches end of lifetime. A delay reduced churn > for >> users that migrate from Python 2 to 3.8. >> * Brett also came up with the idea to keep lib2to3. The package is useful >> for other purposes, e.g. `black <https://pypi.org/project/black/>`_ uses >> it to reformat Python code. >> * At one point, distutils was mentioned in the same sentence as this PEP. >> To avoid lengthy discussion and delay of the PEP, I decided against > dealing >> with distutils. Deprecation of the distutils package will be handled by >> another PEP. >> * Multiple people (Gregory P. Smith, David Beazley, Nick Coghlan, ...) >> convinced me to keep the `wave`_ module. [4]_ >> * Gregory P. Smith proposed to deprecate `nntplib`_. [4]_ >> >> >> References >> ========== >> >> .. [1] >> https://en.wikipedia.org/wiki/Open_Sound_System#Free,_proprietary,_fre >> e >> .. [2] https://man.openbsd.org/ossaudio >> .. [3] https://blogs.msmvps.com/installsite/blog/2015/05/03/the-future-of- >> windows-installer-msi-in-the-light-of-windows-10-and-the-universal- >> windows-platform/ >> .. [4] https://twitter.com/ChristianHeimes/status/1130257799475335169 >> .. [5] https://twitter.com/dabeaz/status/1130278844479545351 >> >> >> Copyright >> ========= >> >> This document has been placed in the public domain. >> >> >> >> >> .. >> Local Variables: >> mode: indented-text >> indent-tabs-mode: nil >> sentence-end-double-space: t >> fill-column: 70 >> coding: utf-8 >> End: >> >> >> _______________________________________________ >> Python-Dev mailing list >> Python-Dev at python.org >> https://mail.python.org/mailman/listinfo/python-dev >> Unsubscribe: https://mail.python.org/mailman/options/python-dev/tritium- >> list%40sdamon.com > _______________________________________________ > Python-Dev mailing list > Python-Dev at python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: https://mail.python.org/mailman/options/python-dev/websurfer%40surf2c.net -- ----------------------------------------- From there to here, from here to there, funny things are everywhere. -- Theodore Geisel -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20190523/53abeb1d/attachment-0001.html>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4