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
Deprecate threading.Thread.isDaemon etc #68391
Comments
In threading.Thread isDaemon, setDaemon, getName, setName are not needed since 2.6 (preferring directly changing daemon or name instead). They should probably be depreciated in 3.5 and removed later. isAlive has already been removed. |
Any consensus? |
+1 for deprecating them. Removing them would make porting code from Python 2 harder so I think it's better to keep them for a while. |
So, no deprecations. The API is now a bit redundant but it isn't broken or problematic in any way. We don't have to deprecate this for any reason other than to satisfy a personal sense of neatness and compactness. This API has long history. See https://docs.python.org/release/1.5.2/lib/thread-objects.html. The older the API, the more likely that there is a lot of existing code that relies on the API (including public and private projects that no longer have an active maintainer or adequate tests). For the sake of developers who rely on the standard library being "standard" and for the mountains of existing code on PyPI, we need to have a strong aversion to unnecessary deprecations. The deprecations cause headaches for users, they present obstacles to upgrading Python, and they increase the likelihood that package distributors will monkey-patch or duplicate the code to restore prior behavior (for example, the Hypothesis project will likely have to duplicate the code that was recently taken out of the inspect module in favor of signature objects). Put me down for a -1 on a unnecessary deprecation. We should put more focus on proposed new APIs and making sure that they are something we want to live with for a very long time. The saying is that the standard library is where code goes to die and it should preferably be dead-on-arrival (one reason that Requests is not be added to the standard library is that the code is still living and evolving). |
Well, the idea would be to do a documentation-only deprecation; as in, effectively: this is the older API, you probably really want to use this newer API that is more convenient. I don't have a strong opinion either way in this case. |
The docs for old API already say:
https://docs.python.org/3.5/library/threading.html#threading.Thread.getName Users don't read the documentation every six or fifteen months so it would be nice to document old APIs properly as deprecated. And I don't think documentation-only deprecation would work. See bpo-25964 for a real world example. Users still don't know that optparse is deprecated.
The original request came from a Python user, not from a new generation perfectionist core developer.
That doesn't mean we shouldn't tell users "Hey, there is a new API which was added back in 2008. Use it if you want to."
I'm not sure we are on the same page here. I already said that I don't want to remove the old API, but document it properly as deprecated. The inspect case you've mentioned has already been solved in bpo-25486. See bpo-26069 (old trace API) and bpo-26041 (platform.dist() and platform.linux_distribution() deprecation) for my views on deprecation policy.
Agreed, but we need to advertise new APIs better. Otherwise no one is going to notice and use them. I think deprecating old APIs (with a clear upgrade path) would be a good way to promote new ones. |
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: