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
remove platform.linux_distribution() #72354
Comments
platform.linux_distribution() was deprecated in 3.5, and should be removed. Can't be kept up to date, see bpo-18872, bpo-19213, bpo-20454, bpo-1180267, plus uncounted issues closed as won't fix. I'm surprised that bpo-26041 removed the removal warnings again after such a long discussion. |
Is it replaced with the distro package? FYI I reported the issue to pip and it seems like pip now embeds and uses distro: |
I think the current consensus is to keep old APIs around to make porting from Python 2 easier. That's why I opened bpo-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 |
But platform.dist() can be removed. It was deprecated in 2.6. |
+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. |
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. |
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. |
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. |
there is https://pypi.org/project/distro/ |
Marc-Andre, I opened a PR to remove platform.linux_distribution() in Python 3.8. |
Adding Łukasz since he is the release manager of Python 3.8. |
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. |
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 :) |
Can you please have a look at bpo-33513 which is for Python 2.7: "incorrect detection of information of some distributions python2"? |
Thanks for closing that one. |
FYI I created bpo-33600: "[EASY DOC] Python 2: document that platform.linux_distribution() has been removed". |
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. |
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 that sounds like a lot of work, please consider your tone when asking others to do it. |
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. |
It's the main way things should get in. (Other ways exist, for example, dataclasses were added as simplification/merging of several existing libraries.)
Releasing on PyPI is trivial once you have the tests and documentation. I'll be glad to help with that.
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:
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. |
Actually, the scope (right balance between usefulness and maintainability) is probably the hardest real problem to solve here. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: