Bradley Smith <bra...@gmail.com> added the comment:

I ran into the same bug in the documentation recently. I've opened a pull 
request here that fixes it:

https://github.com/python/cpython/pull/3925

As I was trying to figure out why the example was broken, I wrote up a little 
more context to explain the current behavior and the fix:

https://docs.python.org/3.7/library/readline.html#example
https://docs.python.org/3.6/library/readline.html#example

In the "Example" section, the second example that "supports concurrent 
interactive sessions, by only appending the new history" will actually *never* 
write any lines to a custom history file. This is conveniently masked by the 
fact that the file path used in the example code also happens to be the default 
path that readline automatically writes history to, but if you specify *any* 
other file path, you will see that the new file is created but never has any 
content written to it.

The problem in this example is the use of `get_history_length` to get 
"previous" and "current" history lengths for determining how many lines to 
append to the file. Both calls to `get_history_length` always return `-1` here. 
Thus, when `append_history_file` is called, it always receives a first argument 
of `0` (because `-1 - -1 == 0`), resulting in zero lines written to the file.

Instead of `get_history_length`, the example code *should* call 
`get_current_history_length`. Swapping that function call makes the example 
behave as expected, appending new lines to the file.

----------
nosy: +infinitewarp

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue31537>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to