whatsnew: sys.__interactivehook__. (#5845)

I decided to leave the (slightly expanded) Other Improvements
entry as well, since someone looking for command line behavior
changes isn't going to look in the 'sys' module section.
This commit is contained in:
R David Murray 2014-03-09 12:03:30 -04:00
parent 04ea3f35bd
commit 4e40cec924
3 changed files with 28 additions and 8 deletions

View File

@ -123,9 +123,13 @@ On systems that support :mod:`readline`, this module will also import and
configure the :mod:`rlcompleter` module, if Python is started in
:ref:`interactive mode <tut-interactive>` and without the :option:`-S` option.
The default behavior is enable tab-completion and to use
:file:`~/.python_history` as the history save file. To disable it, override
the :data:`sys.__interactivehook__` attribute in your :mod:`sitecustomize`
or :mod:`usercustomize` module or your :envvar:`PYTHONSTARTUP` file.
:file:`~/.python_history` as the history save file. To disable it, delete (or
override) the :data:`sys.__interactivehook__` attribute in your
:mod:`sitecustomize` or :mod:`usercustomize` module or your
:envvar:`PYTHONSTARTUP` file.
.. versionchanged:: 3.4
Activation of rlcompleter and history was made automatic.
Module contents

View File

@ -692,10 +692,11 @@ always available.
.. data:: __interactivehook__
When present, this function is automatically called (with no arguments)
when the interpreter is launched in :ref:`interactive mode <tut-interactive>`.
This is done after the :envvar:`PYTHONSTARTUP` file is read, so that you
can set this hook there.
When this attribute exists, its value is automatically called (with no
arguments) when the interpreter is launched in :ref:`interactive mode
<tut-interactive>`. This is done after the :envvar:`PYTHONSTARTUP` file is
read, so that you can set this hook there. The :mod:`site` module
:ref:`sets this <rlcompleter-config>`.
.. versionadded:: 3.4

View File

@ -1360,6 +1360,19 @@ blocks allocated by the interpreter (in CPython with the default
especially if automated via a test suite. (Contributed by Antoine Pitrou
in :issue:`13390`.)
When the Python interpreter starts in :ref:`interactive mode
<tut-interactive>`, it checks for an :data:`~sys.__interactivehook__` attribute
on the :mod:`sys` module. If the attribute exists, its value is called with no
arguments just before interactive mode is started. The check is made after the
:envvar:`PYTHONSTARTUP` file is read, so it can be set there. The :mod:`site`
module :ref:`sets it <rlcompleter-config>` to a function that enables tab
completion and history saving (in :file:`~/.python-history`) if the platform
supports :mod:`readline`. If you do not want this (new) behavior, you can
override it in :envvar:`PYTHONSTARTUP`, :mod:`sitecustomize`, or
:mod:`usercustomize` by deleting this attribute from :mod:`sys` (or setting it
to some other callable). (Contributed by Éric Araujo and Antoine Pitrou in
:issue:`5845`.)
textwrap
--------
@ -1694,7 +1707,9 @@ Other Improvements
most POSIX systems it can and should be used in the ``#!`` line of system
scripts. (Contributed by Christian Heimes in :issue:`16499`.)
* Tab-completion is now enabled by default in the interactive interpreter.
* Tab-completion is now enabled by default in the interactive interpreter
on systems that support :mod:`readline`. History is also enabled by default,
and is written to (and read from) the file :file:`~/.python-history`.
(Contributed by Antoine Pitrou and Éric Araujo in :issue:`5845`.)
* Invoking the Python interpreter with ``--version`` now outputs the version to