Important

This documentation covers IPython versions 6.0 and higher. Beginning with version 6.0, IPython stopped supporting compatibility with Python versions lower than 3.3 including all versions of Python 2.7.

If you are looking for an IPython version compatible with Python 2.7, please use the IPython 5.x LTS release and refer to its documentation (LTS is the long term support release).

Module: core.history

History related magics and functionality

4 Classes

class IPython.core.history.HistoryAccessorBase(**kwargs: Any)

Bases: LoggingConfigurable

An abstract class for History Accessors

class IPython.core.history.HistoryAccessor(**kwargs: Any)

Bases: HistoryAccessorBase

Access the history database without adding to it.

This is intended for use by standalone history tools. IPython shells use HistoryManager, below, which is a subclass of this.

__init__(profile='default', hist_file='', **traits)

Create a new history accessor.

Parameters:
  • profile (str) – The name of the profile from which to open history.

  • hist_file (str) – Path to an SQLite history database stored by IPython. If specified, hist_file overrides profile.

  • config (Config) – Config object. hist_file can also be set through this.

connection_options

Options for configuring the SQLite connection

These options are passed as keyword args to sqlite3.connect when establishing database connections.

enabled

enable the SQLite history

set enabled=False to disable the SQLite history, in which case there will be no stored history, no SQLite connection, and no background saving thread. This may be necessary in some threaded environments where IPython is embedded.

get_last_session_id()

Get the last session ID currently in the database.

Within IPython, this should be the same as the value stored in HistoryManager.session_number.

get_range(session, start=1, stop=None, raw=True, output=False)

Retrieve input by session.

Parameters:
  • session (int) – Session number to retrieve.

  • start (int) – First line to retrieve.

  • stop (int) – End of line range (excluded from output itself). If None, retrieve to the end of the session.

  • raw (bool) – If True, return untranslated input

  • output (bool) – If True, attempt to include output. This will be ‘real’ Python objects for the current session, or text reprs from previous sessions if db_log_output was enabled at the time. Where no output is found, None is used.

Returns:

An iterator over the desired lines. Each line is a 3-tuple, either (session, line, input) if output is False, or (session, line, (input, output)) if output is True.

Return type:

entries

get_range_by_str(rangestr, raw=True, output=False)

Get lines of history from a string of ranges, as used by magic commands %hist, %save, %macro, etc.

Parameters:
  • rangestr (str) – A string specifying ranges, e.g. “5 ~2/1-4”. See magic_history() for full details.

  • raw (bool) – As get_range()

  • output (bool) – As get_range()

Return type:

Tuples as get_range()

get_session_info(session)

Get info about a session.

Parameters:

session (int) – Session number to retrieve.

Returns:

  • session_id (int) – Session ID number

  • start (datetime) – Timestamp for the start of the session.

  • end (datetime) – Timestamp for the end of the session, or None if IPython crashed.

  • num_cmds (int) – Number of commands run, or None if IPython crashed.

  • remark (unicode) – A manually set description.

get_tail(n=10, raw=True, output=False, include_latest=False)

Get the last n lines from the history database.

Parameters:
  • n (int) – The number of lines to get

  • raw (bool) – See get_range()

  • output (bool) – See get_range()

  • include_latest (bool) – If False (default), n+1 lines are fetched, and the latest one is discarded. This is intended to be used where the function is called by a user command, which it should not return.

Return type:

Tuples as get_range()

hist_file

Path to file to use for SQLite history database.

By default, IPython will put the history database in the IPython profile directory. If you would rather share one history among profiles, you can set this value in each, so that they are consistent.

Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts. If you see IPython hanging, try setting this to something on a local disk, e.g:

ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite

you can also use the specific value :memory: (including the colon at both end but not the back ticks), to avoid creating an history file.

init_db()

Connect to the database, and create tables if necessary.

search(pattern='*', raw=True, search_raw=True, output=False, n=None, unique=False)

Search the database using unix glob-style matching (wildcards * and ?).

Parameters:
  • pattern (str) – The wildcarded pattern to match when searching

  • search_raw (bool) – If True, search the raw input, otherwise, the parsed input

  • raw (bool) – See get_range()

  • output (bool) – See get_range()

  • n (None or int) – If an integer is given, it defines the limit of returned entries.

  • unique (bool) – When it is true, return only unique entries.

Return type:

Tuples as get_range()

writeout_cache()

Overridden by HistoryManager to dump the cache before certain database lookups.

class IPython.core.history.HistoryManager(**kwargs: Any)

Bases: HistoryAccessor

A class to organize all history-related functionality in one place.

__init__(shell=None, config=None, **traits)

Create a new history manager associated with a shell instance.

db_cache_size

Write to database every x commands (higher values save disk access & power). Values of 1 or less effectively disable caching.

db_log_output

no)

Type:

Should the history database include output? (default

end_session()

Close the database session, filling in the end time and line count.

get_range(session=0, start=1, stop=None, raw=True, output=False)

Retrieve input by session.

Parameters:
  • session (int) – Session number to retrieve. The current session is 0, and negative numbers count back from current session, so -1 is previous session.

  • start (int) – First line to retrieve.

  • stop (int) – End of line range (excluded from output itself). If None, retrieve to the end of the session.

  • raw (bool) – If True, return untranslated input

  • output (bool) – If True, attempt to include output. This will be ‘real’ Python objects for the current session, or text reprs from previous sessions if db_log_output was enabled at the time. Where no output is found, None is used.

Returns:

An iterator over the desired lines. Each line is a 3-tuple, either (session, line, input) if output is False, or (session, line, (input, output)) if output is True.

Return type:

entries

get_session_info(session=0)

Get info about a session.

Parameters:

session (int) – Session number to retrieve. The current session is 0, and negative numbers count back from current session, so -1 is the previous session.

Returns:

  • session_id (int) – Session ID number

  • start (datetime) – Timestamp for the start of the session.

  • end (datetime) – Timestamp for the end of the session, or None if IPython crashed.

  • num_cmds (int) – Number of commands run, or None if IPython crashed.

  • remark (unicode) – A manually set description.

name_session(name)

Give the current session a name in the history database.

new_session(conn=None)

Get a new session number.

reset(new_session=True)

Clear the session history, releasing all object references, and optionally open a new session.

store_inputs(line_num, source, source_raw=None)

Store source and raw input in history and create input cache variables _i*.

Parameters:
  • line_num (int) – The prompt number of this input.

  • source (str) – Python input.

  • source_raw (str, optional) – If given, this is the raw input without any IPython transformations applied to it. If not given, source is used.

store_output(line_num)

If database output logging is enabled, this saves all the outputs from the indicated prompt number to the database. It’s called by run_cell after code has been executed.

Parameters:

line_num (int) – The line number from which to save outputs

writeout_cache(conn=None)

Write any entries in the cache to the database.

class IPython.core.history.HistorySavingThread(history_manager)

Bases: Thread

This thread takes care of writing history to the database, so that the UI isn’t held up while that happens.

It waits for the HistoryManager’s save_flag to be set, then writes out the history cache. The main thread is responsible for setting the flag when the cache size reaches a defined threshold.

__init__(history_manager)

This constructor should always be called with keyword arguments. Arguments are:

group should be None; reserved for future extension when a ThreadGroup class is implemented.

target is the callable object to be invoked by the run() method. Defaults to None, meaning nothing is called.

name is the thread name. By default, a unique name is constructed of the form “Thread-N” where N is a small decimal number.

args is a list or tuple of arguments for the target invocation. Defaults to ().

kwargs is a dictionary of keyword arguments for the target invocation. Defaults to {}.

If a subclass overrides the constructor, it must make sure to invoke the base class constructor (Thread.__init__()) before doing anything else to the thread.

run()

Method representing the thread’s activity.

You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.

stop()

This can be called from the main thread to safely stop this thread.

Note that it does not attempt to write out remaining history before exiting. That should be done by calling the HistoryManager’s end_session method.

3 Functions

IPython.core.history.needs_sqlite(f, self)

Decorator: return an empty list in the absence of sqlite.

IPython.core.history.catch_corrupt_db(f, self)

A decorator which wraps HistoryAccessor method calls to catch errors from a corrupt SQLite database, move the old database out of the way, and create a new one.

We avoid clobbering larger databases because this may be triggered due to filesystem issues, not just a corrupt file.

IPython.core.history.extract_hist_ranges(ranges_str)

Turn a string of history ranges into 3-tuples of (session, start, stop).

Examples

>>> list(extract_hist_ranges("~8/5-~7/4 2"))
[(-8, 5, None), (-7, 1, 5), (0, 2, 3)]