### Navigation

- index
- modules |
- next |
- previous |
- home|
- search|
- documentation »
- The IPython API »

# Module: `core.history`

History related magics and functionality

## 5 Classes

class `IPython.core.history.``DummyDB`

  Bases: `object`

  Dummy DB that will act as a black hole for history.

  Only used in the absence of sqlite

class `IPython.core.history.``DatabaseError`

  Bases: `sqlite3.Error`

class `IPython.core.history.``HistoryAccessor`(profile='default', hist_file=u'', **traits)

  Bases: `IPython.config.configurable.Configurable`

  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=u'', **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 object. hist_file can also be set through this.

  `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. :

  `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, output : bool

    > As `get_range()`

    Returns: | Tuples as :meth:`get_range` :

  `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 previous session.

    Returns: | (session_id [int], start [datetime], end [datetime], num_cmds [int], : remark [unicode]) : Sessions that are running or did not exit cleanly will have `end=None` : and `num_cmds=None`. :

  `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, 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.

    Returns: | Tuples as :meth:`get_range` :

  `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, 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.

    Returns: | Tuples as :meth:`get_range` :

  `writeout_cache`()

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

class `IPython.core.history.``HistoryManager`(shell=None, config=None, **traits)

  Bases: `IPython.core.history.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.

  `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. :

  `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: `threading.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)
  `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)

  return an empty list in the absence of sqlite

`IPython.core.history.``catch_corrupt_db`(f)

  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.

`IPython.core.history.``extract_hist_ranges`(ranges_str)

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

  Examples

  list(extract_input_ranges(“~8/5-~7/4 2”)) [(-8, 5, None), (-7, 1, 4), (0, 2, 3)]

### Navigation

- index
- modules |
- next |
- previous |
- home|
- search|
- documentation »
- The IPython API »