-
-
Notifications
You must be signed in to change notification settings - Fork 30.9k
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
Meta issue for cleaning up import system cruft #97850
Comments
I've removed |
Remove all known instances of module_repr()
Tracking in python#97850 instead.
* main: (66 commits) pythongh-65961: Raise `DeprecationWarning` when `__package__` differs from `__spec__.parent` (python#97879) docs(typing): add "see PEP 675" to LiteralString (python#97926) pythongh-97850: Remove all known instances of module_repr() (python#97876) I changed my surname early this year (python#96671) pythongh-93738: Documentation C syntax (:c:type:<C type> -> :c:expr:<C type>) (python#97768) pythongh-91539: improve performance of get_proxies_environment (python#91566) build(deps): bump actions/stale from 5 to 6 (python#97701) pythonGH-95172 Make the same version `versionadded` oneline (python#95172) pythongh-88050: Fix asyncio subprocess to kill process cleanly when process is blocked (python#32073) pythongh-93738: Documentation C syntax (Function glob patterns -> literal markup) (python#97774) pythongh-93357: Port test cases to IsolatedAsyncioTestCase, part 2 (python#97896) pythongh-95196: Disable incorrect pickling of the C implemented classmethod descriptors (pythonGH-96383) pythongh-97758: Fix a crash in getpath_joinpath() called without arguments (pythonGH-97759) pythongh-74696: Pass root_dir to custom archivers which support it (pythonGH-94251) pythongh-97661: Improve accuracy of sqlite3.Cursor.fetchone docs (python#97662) pythongh-87092: bring compiler code closer to a preprocessing-opt-assembler organisation (pythonGH-97644) pythonGH-96704: Add {Task,Handle}.get_context(), use it in call_exception_handler() (python#96756) pythongh-93738: Documentation C syntax (:c:type:`PyTypeObject*` -> :c:expr:`PyTypeObject*`) (python#97778) pythongh-97825: fix AttributeError when calling subprocess.check_output(input=None) with encoding or errors args (python#97826) Add re.VERBOSE flag documentation example (python#97678) ...
…nce (pythonGH-97935) Remove the open issues section from the import reference Tracking in python#97850 instead. (cherry picked from commit f8edc6f) Co-authored-by: Brett Cannon <[email protected]>
…nce (pythonGH-97935) Remove the open issues section from the import reference Tracking in python#97850 instead. (cherry picked from commit f8edc6f) Co-authored-by: Brett Cannon <[email protected]>
…H-97935) Remove the open issues section from the import reference Tracking in #97850 instead. (cherry picked from commit f8edc6f) Co-authored-by: Brett Cannon <[email protected]>
…ence (GH-97935) (GH-97994) Remove the open issues section from the import reference Tracking in #97850 instead. (cherry picked from commit f8edc6f) Co-authored-by: Brett Cannon <[email protected]> Automerge-Triggered-By: GH:brettcannon
* main: fixes pythongh-96078: os.sched_yield release the GIL while calling sched_yield(2). (pythongh-97965) pythongh-65961: Do not rely solely on `__cached__` (pythonGH-97990) pythongh-97850: Remove the open issues section from the import reference (python#97935) Docs: pin sphinx-lint (pythonGH-97992) pythongh-94590: add signatures to operator itemgetter, attrgetter, methodcaller (python#94591) Add Pynche's move to the What's new in 3.11 (python#97974) pythongh-97781: Apply changes from importlib_metadata 5. (pythonGH-97785) pythongh-86482: Document assignment expression need for ()s (python#23291) pythongh-97943: PyFunction_GetAnnotations should return a borrowed reference. (python#97949) pythongh-94808: Coverage: Test that maximum indentation level is handled (python#95926)
* gh-97850: Remove deprecated functions from `importlib.utils` * Rebase and remove `set_package` from diff
* main: (53 commits) pythongh-94808: Coverage: Test that maximum indentation level is handled (python#95926) pythonGH-88050: fix race in closing subprocess pipe in asyncio (python#97951) pythongh-93738: Disallow pre-v3 syntax in the C domain (python#97962) pythongh-95986: Fix the example using match keyword (python#95989) pythongh-97897: Prevent os.mkfifo and os.mknod segfaults with macOS 13 SDK (pythonGH-97944) pythongh-94808: Cover `PyUnicode_Count` in CAPI (python#96929) pythongh-94808: Cover `PyObject_PyBytes` case with custom `__bytes__` method (python#96610) pythongh-95691: Doc BufferedWriter and BufferedReader (python#95703) pythonGH-88968: Add notes about socket ownership transfers (python#97936) pythongh-96865: [Enum] fix Flag to use CONFORM boundary (pythonGH-97528) pythongh-65961: Raise `DeprecationWarning` when `__package__` differs from `__spec__.parent` (python#97879) docs(typing): add "see PEP 675" to LiteralString (python#97926) pythongh-97850: Remove all known instances of module_repr() (python#97876) I changed my surname early this year (python#96671) pythongh-93738: Documentation C syntax (:c:type:<C type> -> :c:expr:<C type>) (python#97768) pythongh-91539: improve performance of get_proxies_environment (python#91566) build(deps): bump actions/stale from 5 to 6 (python#97701) pythonGH-95172 Make the same version `versionadded` oneline (python#95172) pythongh-88050: Fix asyncio subprocess to kill process cleanly when process is blocked (python#32073) pythongh-93738: Documentation C syntax (Function glob patterns -> literal markup) (python#97774) ...
* main: pythonGH-97002: Prevent `_PyInterpreterFrame`s from backing more than one `PyFrameObject` (pythonGH-97996) pythongh-97973: Return all necessary information from the tokenizer (pythonGH-97984) fixes pythongh-96078: os.sched_yield release the GIL while calling sched_yield(2). (pythongh-97965) pythongh-65961: Do not rely solely on `__cached__` (pythonGH-97990) pythongh-97850: Remove the open issues section from the import reference (python#97935) Docs: pin sphinx-lint (pythonGH-97992) pythongh-94590: add signatures to operator itemgetter, attrgetter, methodcaller (python#94591) Add Pynche's move to the What's new in 3.11 (python#97974) pythongh-97781: Apply changes from importlib_metadata 5. (pythonGH-97785) pythongh-86482: Document assignment expression need for ()s (python#23291) pythongh-97943: PyFunction_GetAnnotations should return a borrowed reference. (python#97949)
* main: pythongh-86298: Ensure that __loader__ and __spec__.loader agree in warnings.warn_explicit() (pythonGH-97803) pythongh-82874: Convert remaining importlib format uses to f-str. (python#98005) Docs: Fix backtick errors found by sphinx-lint (python#97998) pythongh-97850: Remove deprecated functions from `importlib.utils` (python#97898) Remove extra spaces in custom openSSL documentation. (python#93568) pythonGH-90985: Revert "Deprecate passing a message into cancel()" (python#97999)
…7876) Remove all known instances of module_repr()
…nce (python#97935) Remove the open issues section from the import reference Tracking in python#97850 instead.
…ython#97898) * pythongh-97850: Remove deprecated functions from `importlib.utils` * Rebase and remove `set_package` from diff
… `importlib.util.module_for_loader` have been removed (#108719) Note in py312 whatsnew that `importlib.util.set_loader` and `importlib.util.module_for_loader` have been removed
…r` and `importlib.util.module_for_loader` have been removed (pythonGH-108719) Note in py312 whatsnew that `importlib.util.set_loader` and `importlib.util.module_for_loader` have been removed (cherry picked from commit 013a99a) Co-authored-by: Alex Waygood <[email protected]>
…er` and `importlib.util.module_for_loader` have been removed (GH-108719) (#108723) gh-97850: Note in py312 whatsnew that `importlib.util.set_loader` and `importlib.util.module_for_loader` have been removed (GH-108719) Note in py312 whatsnew that `importlib.util.set_loader` and `importlib.util.module_for_loader` have been removed (cherry picked from commit 013a99a) Co-authored-by: Alex Waygood <[email protected]>
We're now over 50% of those in the checklist. |
We're now at 78% (fixed or unmaintained/abandoned). |
…119656) Co-authored-by: Hugo van Kemenade <[email protected]> Co-authored-by: Brett Cannon <[email protected]>
…til`` (python#119656) Co-authored-by: Hugo van Kemenade <[email protected]> Co-authored-by: Brett Cannon <[email protected]>
Related issue: #121604 Here's a couple more things that might need attention:
In general, lots of methods/attributes are marked as deprecated in the docs for a long time (for example: DEBUG_BYTECODE_SUFFIXES is deprecated since 3.5). It's probably not a good idea to remove them now (especially those that don't yet raise a Would like to know your thoughts on what to do about these :) |
👍
That's a @jaraco question.
If it has been documented as deprecated for 5 releases and raising an exception for as long, then it can come out.
We should keep it all around for 5 releases of being documented as deprecated as well as raising an exception. There's no rush here as we are just trying to nudge people to better APIs long-term more than avoiding buggy code that's blocking some other change. |
Thanks for the tag. I'm not certain It was in #93963 that It seems this discontinuity has led to previous confusion (e.g. #107352), though it doesn't seem the discontinuity was resolved. I'm not sure if there was ever an intention to deprecate On the other hand, maybe it makes sense to simply change the documentation to reflect the deprecation without any scheduled removal. That would be my preference. Do you have an opinion @encukou? |
Thanks to both for your answers! @jaraco If I understand correctly, you lean more towards keeping |
That sounds good to me too. It's no longer the best way to do things, but I don't think that's a good reason to break people's working code -- or even bother them with warnings. I know some people stick to |
I do, but I'm not confident there's a clear path to deprecate, because although the interface is deprecated, it's an interface that's used both by providers and consumers of that interface. Even its replacement subclasses that interface, so it's not even obvious to me that a deprecation warning is possible. Sounds like it's best to just leave it documented. Thanks. |
My first impression: The deprecation code seems like a bigger maintenance burden than the deprecated API itself; better to just leave it alone. Let's deprecate things that are dangerous or misleading, not just old and limited. |
If it doesn't match any of those criteria then agreed there's no urgency to remove them and break code. |
…128602) Remove the mention of removal from ResourceReader docs
…ocs (pythonGH-128602) Remove the mention of removal from ResourceReader docs (cherry picked from commit a1284e9) Co-authored-by: Tomas R. <[email protected]>
…ocs (pythonGH-128602) Remove the mention of removal from ResourceReader docs (cherry picked from commit a1284e9) Co-authored-by: Tomas R. <[email protected]>
…til`` (python#119656) Co-authored-by: Hugo van Kemenade <[email protected]> Co-authored-by: Brett Cannon <[email protected]>
This is a meta issue tracking all the things that need to be cleaned up in the import system. From removing long deprecated APIs to migrating internal access to
__spec__
, we'll have several task lists for each related set of clean ups.@brettcannon @ericsnowcurrently for visibility.
Removing deprecated APIs
Over in What's New for Python 3.11 there's a long list of things that have been deprecated long enough that they can be removed in Python 3.12. Here's that task list for tracking purposes. Watch for linked PRs (maybe one big one or many small ones -- we'll see!).
@brettcannon @ericsnowcurrently for visibility.
importlib.util.set_loader_wrapper()
importlib.util.set_package_wrapper()
importlib.machinery.BuiltinImporter.find_module()
importlib.machinery.BuiltinLoader.module_repr()
(3.12: gh-97850: Remove all known instances of module_repr() #97876)importlib.machinery.FileFinder.find_module()
importlib.machinery.FrozenImporter.find_module()
importlib.machinery.FrozenLoader.module_repr()
(3.12: gh-97850: Remove all known instances of module_repr() #97876)importlib.machinery.WindowsRegistryFinder.find_module()
pkgutil.ImpImporter
(3.12: already deprecated)pkgutil.ImpLoader
imp
module (3.12: Remove more deprecated importlib APIs from Python 3.12 #98040)importlib.abc.Finder
Update docs
__main__
is initialized?__main__
quirks/pitfalls (i.e. copy from PEP 395).Missing deprecations
Here's a list of related APIs that have not yet been deprecated, but should be. We'll deprecate them in 3.12 and remove them in 3.14.
pkgutil.find_loader()
pkgutil.get_loader()
(or it needs to be reimplemented to not usefind_loader()
)Other:
find_loader
andget_loader
inpkgutil
#98520module_repr
method #104133importlib.util
functions #104134importlib.util.set_loader
andimportlib.util.module_for_loader
have been removed #108719importlib.util.set_loader
andimportlib.util.module_for_loader
have been removed (GH-108719) #108723find_loader
andget_loader
frompkgutil
#119656TraversableResources
as the alternative forResourceLoader
. #128601ResourceReader
docs #128602ResourceReader
docs (GH-128602) #128654ResourceReader
docs (GH-128602) #128655The text was updated successfully, but these errors were encountered: