From b87f7f2c213225cbe5c4bd8f8a83883e0824c7d0 Mon Sep 17 00:00:00 2001 From: slateny <46876382+slateny@users.noreply.github.com> Date: Tue, 26 Apr 2022 12:12:02 -0700 Subject: bpo-21761: Clarify __file__/__cached__ in import reference (GH-31565) Automerge-Triggered-By: GH:brettcannon --- Doc/reference/import.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst index 988d41c..3a41403 100644 --- a/Doc/reference/import.rst +++ b/Doc/reference/import.rst @@ -610,15 +610,16 @@ the module. import system may opt to leave it unset if it has no semantic meaning (e.g. a module loaded from a database). - If ``__file__`` is set, it may also be appropriate to set the - ``__cached__`` attribute which is the path to any compiled version of + If ``__file__`` is set then the ``__cached__`` attribute might also + be set, which is the path to any compiled version of the code (e.g. byte-compiled file). The file does not need to exist to set this attribute; the path can simply point to where the compiled file would exist (see :pep:`3147`). - It is also appropriate to set ``__cached__`` when ``__file__`` is not + Note that ``__cached__`` may be set even if ``__file__`` is not set. However, that scenario is quite atypical. Ultimately, the - loader is what makes use of ``__file__`` and/or ``__cached__``. So + loader is what makes use of the module spec provided by the finder + (from which ``__file__`` and ``__cached__`` are derived). So if a loader can load from a cached module but otherwise does not load from a file, that atypical scenario may be appropriate. -- cgit v0.12