msg276541 - (view) |
Author: Matthias Klose (doko) *  |
Date: 2016-09-15 09:50 |
platform.linux_distribution() was deprecated in 3.5, and should be removed.
Can't be kept up to date, see #18872, #19213, #20454, #1180267, plus uncounted issues closed as won't fix.
I'm surprised that #26041 removed the removal warnings again after such a long discussion.
|
msg276542 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2016-09-15 10:22 |
> platform.linux_distribution() was deprecated in 3.5, and should be removed.
Is it replaced with the distro package?
FYI I reported the issue to pip and it seems like pip now embeds and uses distro:
* https://github.com/pypa/pip/issues/3823
* https://github.com/pypa/pip/pull/3906
|
msg276543 - (view) |
Author: Berker Peksag (berker.peksag) *  |
Date: 2016-09-15 10:30 |
I think the current consensus is to keep old APIs around to make porting from Python 2 easier. That's why I opened issue 26041.
See also msg256111 and "Deprecation policy PEP" proposed at https://mail.python.org/pipermail/python-committers/2016-January/003706.html
If Marc-Andre (platform module maintainer) and Ned give their +1s, I don't have a strong objection against the removal of the function.
Also, it looks like I forgot to remove deprecated-removed directive in 5d9f961edc30: https://docs.python.org/3.6/library/platform.html#platform.linux_distribution
|
msg285004 - (view) |
Author: Serhiy Storchaka (serhiy.storchaka) *  |
Date: 2017-01-08 19:04 |
But platform.dist() can be removed. It was deprecated in 2.6.
|
msg285030 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2017-01-09 09:59 |
+1 to remove platform.linux_distribution().
Linux distributions are moving much faster than the Python stdlib, so using the distro module which is hosted on PyPI is much simpler. In 2017, it became very easy to have dependencies, pip became the de factor standard.
|
msg315983 - (view) |
Author: Matthias Bussonnier (mbussonn) * |
Date: 2018-05-01 04:32 |
In the docs it is marked as "going to be removed in 3.7", and emitting PendingDeprecationWarning. I supposed it should either be updated to change to 3.8 and switch PendingDeprecationWarning to DeprecationWarning, or be actually removed.
|
msg316055 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2018-05-02 08:50 |
IMHO it's now too late to remove it from Python 3.7.
Moreover, if the current warning is *PendingDeprecationWarning*, the warning must first become in Python N, to then remove the feature in Python N+1.
I'm ok to just change the warning and schedule a removal from Python 3.8.
|
msg316056 - (view) |
Author: Christian Heimes (christian.heimes) *  |
Date: 2018-05-02 08:58 |
We still don't have a suitable replacement for the feature. Five years, Matthias suggested to add a parser for freedesktop's os-release file.
|
msg316065 - (view) |
Author: Matthias Klose (doko) *  |
Date: 2018-05-02 10:17 |
there is https://pypi.org/project/distro/
|
msg316666 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-05-15 15:17 |
New changeset 9eb40bc38de83e6ad3fad1931bba1cd36ae88c24 by Petr Viktorin (Matthias Bussonnier) in branch 'master':
bpo-28167: bump platform.linux_distribution removal to 3.8 (GH-6669)
https://github.com/python/cpython/commit/9eb40bc38de83e6ad3fad1931bba1cd36ae88c24
|
msg316682 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-05-15 17:30 |
New changeset f4fdb619ddb5b00178c79c2b90adc45075b5f17d by Petr Viktorin (Miss Islington (bot)) in branch '3.7':
bpo-28167: bump platform.linux_distribution removal to 3.8 (GH-6669) (GH-6862)
https://github.com/python/cpython/commit/f4fdb619ddb5b00178c79c2b90adc45075b5f17d
|
msg316683 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-05-15 17:31 |
New changeset e618e96581a711f2bc4f9bbcff6069bea15f0177 by Petr Viktorin in branch '3.6':
bpo-28167: bump platform.linux_distribution removal to 3.8 (GH-6864)
https://github.com/python/cpython/commit/e618e96581a711f2bc4f9bbcff6069bea15f0177
|
msg316694 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-05-15 18:58 |
Marc-Andre, I opened a PR to remove platform.linux_distribution() in Python 3.8.
How do you feel about this?
|
msg316763 - (view) |
Author: Berker Peksag (berker.peksag) *  |
Date: 2018-05-16 05:05 |
Adding Łukasz since he is the release manager of Python 3.8.
|
msg316769 - (view) |
Author: Marc-Andre Lemburg (lemburg) *  |
Date: 2018-05-16 06:27 |
Hi Petr, I'm fine with this. Maintaining the necessary logic Python is not really possible in the stdlib. It's better to have a PyPI module for this which can be updated much more easily.
Thanks.
|
msg316823 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-05-16 15:51 |
New changeset 8b94b41ab7b12f745dea744e8940631318816935 by Petr Viktorin in branch 'master':
bpo-28167: Remove platform.linux_distribution (GH-6871)
https://github.com/python/cpython/commit/8b94b41ab7b12f745dea744e8940631318816935
|
msg316824 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-05-16 15:54 |
platform.linux_distribution is removed from Python 3.8. Thanks for everyone involved!
If there are any complaints or other fallout you don't want to deal with, feel free to point people to me :)
|
msg316889 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2018-05-17 07:08 |
Can you please have a look at bpo-33513 which is for Python 2.7: "incorrect detection of information of some distributions python2"?
|
msg317176 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-05-20 15:05 |
Thanks for closing that one.
|
msg317283 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2018-05-22 13:41 |
FYI I created bpo-33600: "[EASY DOC] Python 2: document that platform.linux_distribution() has been removed".
|
msg327345 - (view) |
Author: (rb) * |
Date: 2018-10-08 11:59 |
> Maintaining the necessary logic Python is not really possible in the stdlib. It's better to have a PyPI module for this which can be updated much more easily.
The /etc/os-release syntax is stable, the file is implemented nearly everywhere and is unlikely to change, so I don't see why it'll be difficult to maintain. Just parse and give us the key/value pairs, please!
It's disappointing to have to add Yet Another Dependency to get this functionality, contrary to Python's "batteries included" philosophy.
|
msg327347 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-10-08 12:11 |
In the recommended library, distro, real-world issues blew the code size up to 1000 lines of code and the open issue count to 15 – so while it's definitely useful, it doesn't seem either fully complete or trivial to maintain: https://github.com/nir0s/distro/blob/master/distro.py
If you can do better, please make a library to implement the simple name/value parsing, publish it on PyPI (sadly, as Yet Another Dependency at this point), make sure it's unit-tested, documented and widely useful in the real world, and *then* suggest inclusion in the standard library. That's how things get into the stdlib nowadays.
If that sounds like a lot of work, please consider your tone when asking others to do it.
|
msg327348 - (view) |
Author: (rb) * |
Date: 2018-10-08 12:33 |
Apologies for my tone. I wasn't aware that starting out with a PyPI module is the only accepted process for getting functionality into stdlib. That certainly is a lot of work for what would be a trivial handful of lines to parse key/value pairs and handle error paths, etc (and corresponding tests of course).
As a distribution developer, from my perspective we've already (finally) managed to reach widespread standardization and unification on a simple key/value pair specification, so it is particularly surprising to me that as a Python developer I cannot easily get to it.
IMHO, forcing the PyPI route seems like a recipe for scope creep to me in this case. Looking at that module, it tries to do so much more. /etc/os-release is widely accepted nowadays, and I think it would be widely useful to the majority of users to simply pass the values through to a Python dictionary, reflecting "this is what the OS says it is" over "this is my promised stable view". Many of the issues there are because it's trying to be "clever", IMHO, rather than just passing through the provided information from the platform. My proposed API promise would simply be "this is what os-release says" or "os-release information not available".
Of course the most popular PyPI module to solve a particular problem will always be the one with the widest scope, so there seems little point in writing a parallel minimal one. The cost of adding Yet Another Dependency has to be paid in either case.
|
msg327349 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-10-08 12:58 |
> I wasn't aware that starting out with a PyPI module is the only accepted process for getting functionality into stdlib.
It's the main way things should get in. (Other ways exist, for example, dataclasses were added as simplification/merging of several existing libraries.)
> That certainly is a lot of work for what would be a trivial handful of lines to parse key/value pairs and handle error paths, etc (and corresponding tests of course).
Releasing on PyPI is trivial once you have the tests and documentation. I'll be glad to help with that.
> IMHO, forcing the PyPI route seems like a recipe for scope creep to me in this case.
Not necessarily. You just need to carefully define the scope of the PyPI module – same as you would for the stdlib module. There's not much difference between stdlib and PyPI here:
after all, I'd argue the main reason platform.linux_distribution() was removed is that its scope was too wide to be maintainable.
> The cost of adding Yet Another Dependency has to be paid in either case.
Indeed. But it will be hard to get in otherwise.
BTW, another way a PyPI release help is that the functionality would be useful for previous versions of Python. At this point new features are targetting Python 3.8.
So, even if this does get into stdlib, a backport on PyPI would still be useful. Consider prior art like:
https://pypi.org/project/dataclasses/
https://pypi.org/project/asyncio/
|
msg327350 - (view) |
Author: Petr Viktorin (petr.viktorin) *  |
Date: 2018-10-08 13:07 |
Actually, the scope (right balance between usefulness and maintainability) is probably the hardest real problem to solve here.
PyPI lets you iterate on that. For a straight-to-stdlib module, you'd need to get it exactly right on the first time.
|
msg330660 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2018-11-29 02:14 |
New changeset 7cc1fa40b76de34a0fe86162667c87ce7a18f33d by Victor Stinner in branch 'master':
bpo-28167: Remove platform._dist_try_harder() (GH-10787)
https://github.com/python/cpython/commit/7cc1fa40b76de34a0fe86162667c87ce7a18f33d
|
|
Date |
User |
Action |
Args |
2022-04-11 14:58:36 | admin | set | github: 72354 |
2018-11-29 02:14:08 | vstinner | set | messages:
+ msg330660 |
2018-11-29 01:51:25 | vstinner | set | pull_requests:
+ pull_request10031 |
2018-10-08 13:13:05 | yan12125 | set | nosy:
- yan12125
|
2018-10-08 13:07:16 | petr.viktorin | set | messages:
+ msg327350 |
2018-10-08 12:58:52 | petr.viktorin | set | messages:
+ msg327349 |
2018-10-08 12:33:10 | rb | set | messages:
+ msg327348 |
2018-10-08 12:11:49 | petr.viktorin | set | messages:
+ msg327347 |
2018-10-08 11:59:32 | rb | set | nosy:
+ rb messages:
+ msg327345
|
2018-05-22 13:41:10 | vstinner | set | messages:
+ msg317283 |
2018-05-20 15:05:48 | petr.viktorin | set | messages:
+ msg317176 |
2018-05-20 11:34:30 | berker.peksag | set | pull_requests:
- pull_request6650 |
2018-05-20 02:59:36 | mrandybu | set | pull_requests:
+ pull_request6650 |
2018-05-17 07:08:09 | vstinner | set | messages:
+ msg316889 |
2018-05-16 15:54:53 | petr.viktorin | set | status: open -> closed resolution: fixed messages:
+ msg316824
stage: patch review -> resolved |
2018-05-16 15:51:24 | petr.viktorin | set | messages:
+ msg316823 |
2018-05-16 06:27:56 | lemburg | set | messages:
+ msg316769 |
2018-05-16 05:05:11 | berker.peksag | set | versions:
+ Python 3.8 nosy:
+ lukasz.langa
messages:
+ msg316763
components:
+ Library (Lib) type: enhancement |
2018-05-15 18:58:31 | petr.viktorin | set | nosy:
+ lemburg messages:
+ msg316694
|
2018-05-15 18:43:52 | petr.viktorin | set | pull_requests:
+ pull_request6545 |
2018-05-15 17:31:51 | petr.viktorin | set | messages:
+ msg316683 |
2018-05-15 17:30:15 | petr.viktorin | set | messages:
+ msg316682 |
2018-05-15 15:41:26 | petr.viktorin | set | pull_requests:
+ pull_request6538 |
2018-05-15 15:18:21 | miss-islington | set | pull_requests:
+ pull_request6536 |
2018-05-15 15:17:02 | petr.viktorin | set | nosy:
+ petr.viktorin messages:
+ msg316666
|
2018-05-02 10:17:55 | doko | set | messages:
+ msg316065 |
2018-05-02 08:58:32 | christian.heimes | set | nosy:
+ christian.heimes messages:
+ msg316056
|
2018-05-02 08:50:20 | vstinner | set | messages:
+ msg316055 |
2018-05-01 04:43:15 | mbussonn | set | keywords:
+ patch stage: patch review pull_requests:
+ pull_request6363 |
2018-05-01 04:32:56 | mbussonn | set | nosy:
+ mbussonn messages:
+ msg315983
|
2017-01-09 09:59:52 | vstinner | set | messages:
+ msg285030 |
2017-01-08 19:04:52 | serhiy.storchaka | set | nosy:
+ serhiy.storchaka messages:
+ msg285004
|
2016-09-15 10:30:52 | berker.peksag | set | messages:
+ msg276543 |
2016-09-15 10:22:11 | vstinner | set | nosy:
+ vstinner messages:
+ msg276542
|
2016-09-15 10:04:33 | yan12125 | set | nosy:
+ yan12125
|
2016-09-15 09:50:07 | doko | create | |