AFAIR, users should use codecs when possible instead of directly accessing encodings and the submodules are documented but only their name is public I think (I'm on mobile so it's hard to check).
The encodings package itself provides codec search functions, which gets registered upon import and a normalization function which is used by the search functions. The search functions not only take care of mapping a codec name to codec module (within the encodings package), but also define the codec module interface which all codec modules in the encodings package have to use.
Those search functions can be used directly as well if you want to bypass the normal codecs.lookup() API for some reason.
If we document these, we should add a note that these functions should normally not be used directly, only in special cases, e.g. for testing purposes or to check whether a particular encodings codec module is available or not (the codecs.lookup() API scans all search functions, so it may well find other such modules elsewhere).
Activity
picnixz commented on Jul 1, 2025
AFAIR, users should use codecs when possible instead of directly accessing encodings and the submodules are documented but only their name is public I think (I'm on mobile so it's hard to check).
cc @malemburg what do you recommend?
malemburg commented on Jul 1, 2025
The encodings package itself provides codec search functions, which gets registered upon import and a normalization function which is used by the search functions. The search functions not only take care of mapping a codec name to codec module (within the encodings package), but also define the codec module interface which all codec modules in the encodings package have to use.
Those search functions can be used directly as well if you want to bypass the normal codecs.lookup() API for some reason.
If we document these, we should add a note that these functions should normally not be used directly, only in special cases, e.g. for testing purposes or to check whether a particular encodings codec module is available or not (the codecs.lookup() API scans all search functions, so it may well find other such modules elsewhere).
pythongh-136162: Document `encodings` package functions (python#136164)
pythongh-136162: Document `encodings` package functions (pythonGH-136164
pythongh-136162: Document `encodings` package functions (pythonGH-136164
[3.13] gh-136162: Document `encodings` package functions (GH-136164) (#…
[3.14] gh-136162: Document `encodings` package functions (GH-136164) (#…
[3.13] gh-136162: Clean up `encodings` package documentation (#136456)
pythongh-136162: Document `encodings` package functions (python#136164)
pythongh-136162: Document `encodings` package functions (python#136164)
pythongh-136162: Document `encodings` package functions (python#136164)
pythongh-136162: Document `encodings` package functions (python#136164)
pythongh-136162: Document `encodings` package functions (python#136164)
[3.14] pythongh-136162: Document `encodings` package functions (pytho…