API documentation

The following documentation is based on the source code of version 2.2.1 of the qpass package.

qpass

Frontend for pass, the standard unix password manager.

qpass.DEFAULT_DIRECTORY = '~/.password-store'

The default password storage directory (a string).

The value of DEFAULT_DIRECTORY is normalized using parse_path().

qpass.DIRECTORY_VARIABLE = 'PASSWORD_STORE_DIR'

The environment variable that sets the password storage directory (a string).

class qpass.AbstractPasswordStore(**kw)[source]

Abstract Python API to query passwords managed by pass.

This abstract base class has two concrete subclasses:

  • The QuickPass class manages multiple password stores as one.
  • The PasswordStore class manages a single password store.
entries

A list of PasswordEntry objects.

Perform a “fuzzy” search that matches the given characters in the given order.

Parameters:filters – The pattern(s) to search for.
Returns:The matched password names (a list of strings).
select_entry(*arguments)[source]

Select a password from the available choices.

Parameters:arguments – Refer to smart_search().
Returns:The name of a password (a string) or None (when no password matched the given arguments).

Perform a simple search for case insensitive substring matches.

Parameters:keywords – The string(s) to search for.
Returns:The matched password names (a generator of strings).

Only passwords whose names matches all of the given keywords are returned.

Perform a smart search on the given keywords or patterns.

Parameters:

arguments – The keywords or patterns to search for.

Returns:

The matched password names (a list of strings).

Raises:

The following exceptions can be raised:

This method first tries simple_search() and if that doesn’t produce any matches it will fall back to fuzzy_search(). If no matches are found an exception is raised (see above).

class qpass.QuickPass(**kw)[source]

Python API to query multiple password stores as if they are one.

See also:The PasswordStore class to query a single password store.
repr_properties = ['stores']

The properties included in the output of repr().

entries[source]

A list of PasswordEntry objects.

Note

The entries property is a cached_property. This property’s value is computed once (the first time it is accessed) and the result is cached. To clear the cached value you can use del or delattr().

stores[source]

A list of PasswordStore objects.

Note

The stores property is a custom_property. You can change the value of this property using normal attribute assignment syntax. This property’s value is computed once (the first time it is accessed) and the result is cached. To clear the cached value you can use del or delattr().

class qpass.PasswordStore(**kw)[source]

Python API to query a single password store.

See also:The QuickPass class to query multiple password stores.
repr_properties = ['directory', 'entries']

The properties included in the output of repr().

context[source]

An execution context created using executor.contexts.

The value of context defaults to a LocalContext object with the following characteristics:

Raises:MissingPasswordStoreError when directory doesn’t exist.

Note

The context property is a custom_property. You can change the value of this property using normal attribute assignment syntax. This property’s value is computed once (the first time it is accessed) and the result is cached. To clear the cached value you can use del or delattr().

directory[source]

The pathname of the password storage directory (a string).

When the environment variable given by DIRECTORY_VARIABLE is set the value of that environment variable is used, otherwise DEFAULT_DIRECTORY is used. In either case the resulting directory pathname is normalized using parse_path().

When you set the directory property, the value you set will be normalized using parse_path() and the computed value of the context property is cleared.

Note

The directory property is a custom_property. You can change the value of this property using normal attribute assignment syntax. This property’s value is computed once (the first time it is accessed) and the result is cached. To clear the cached value you can use del or delattr().

entries[source]

A list of PasswordEntry objects.

Note

The entries property is a cached_property. This property’s value is computed once (the first time it is accessed) and the result is cached. To clear the cached value you can use del or delattr().

ensure_directory_exists()[source]

Make sure directory exists.

Raises:MissingPasswordStoreError when the password storage directory doesn’t exist.
class qpass.PasswordEntry(**kw)[source]

PasswordEntry objects bind the name of a password to the store that contains the password.

repr_properties = ['name']

The properties included in the output of repr().

context

The context of store.

name[source]

The name of the password store entry (a string).

Note

The name property is a required_property. You are required to provide a value for this property by calling the constructor of the class that defines the property with a keyword argument named name (unless a custom constructor is defined, in this case please refer to the documentation of that constructor). You can change the value of this property using normal attribute assignment syntax.

password[source]

The password identified by name (a string).

Note

The password property is a cached_property. This property’s value is computed once (the first time it is accessed) and the result is cached. To clear the cached value you can use del or delattr().

store[source]

The PasswordStore that contains the entry.

Note

The store property is a required_property. You are required to provide a value for this property by calling the constructor of the class that defines the property with a keyword argument named store (unless a custom constructor is defined, in this case please refer to the documentation of that constructor). You can change the value of this property using normal attribute assignment syntax.

text[source]

The full text of the entry (a string).

Note

The text property is a cached_property. This property’s value is computed once (the first time it is accessed) and the result is cached. To clear the cached value you can use del or delattr().

copy_password()[source]

Copy the password to the clipboard.

format_text(include_password=True, use_colors=None, padding=True, filters=())[source]

Format text for viewing on a terminal.

Parameters:
  • include_passwordTrue to include the password in the formatted text, False to exclude the password from the formatted text.
  • use_colorsTrue to use ANSI escape sequences, False otherwise. When this is None terminal_supports_colors() will be used to detect whether ANSI escape sequences are supported.
  • paddingTrue to add empty lines before and after the entry and indent the entry’s text with two spaces, False to skip the padding.
  • filters – An iterable of regular expression patterns (defaults to an empty tuple). If a line in the entry’s text matches one of these patterns it won’t be shown on the terminal.
Returns:

The formatted entry (a string).

qpass.create_fuzzy_pattern(pattern)[source]

Convert a string into a fuzzy regular expression pattern.

Parameters:pattern – The input pattern (a string).
Returns:A compiled regular expression object.

This function works by adding .* between each of the characters in the input pattern and compiling the resulting expression into a case insensitive regular expression.

qpass.cli

Usage: qpass [OPTIONS] KEYWORD..

Search your password store for the given keywords or patterns and copy the password of the matching entry to the clipboard. When more than one entry matches you will be prompted to select the password to copy.

If you provide more than one KEYWORD all of the given keywords must match, in other words you’re performing an AND search instead of an OR search.

Instead of matching on keywords you can also enter just a few of the characters in the name of a password, as long as those characters are in the right order. Some examples to make this more concrete:

  • The pattern ‘pe/zbx’ will match the name ‘Personal/Zabbix’.
  • The pattern ‘ba/cc’ will match the name ‘Bank accounts/Creditcard’.

When a password is copied to the clipboard, any text after the first line will be shown on the terminal, to share any additional details about the password entry (for example the associated username or email address). The -q, --quiet option suppresses this text.

Supported options:

Option Description
-e, --edit Edit the matching entry instead of copying it to the clipboard.
-l, --list List the matching entries on standard output.
-n, --no-clipboard Don’t copy the password of the matching entry to the clipboard, instead show the password on the terminal (by default the password is copied to the clipboard but not shown on the terminal).
-p, --password-store=DIRECTORY

Search the password store in DIRECTORY. If this option isn’t given the password store is located using the $PASSWORD_STORE_DIR environment variable. If that environment variable isn’t set the directory ~/.password-store is used.

You can use the -p, --password-store option multiple times to search more than one password store at the same time. No distinction is made between passwords in different password stores, so the names of passwords need to be recognizable and unique.

-f, --filter=PATTERN Don’t show lines in the additional details which match the case insensitive regular expression given by PATTERN. This can be used to avoid revealing sensitive details on the terminal. You can use this option more than once.
-v, --verbose Increase logging verbosity (can be repeated).
-q, --quiet Decrease logging verbosity (can be repeated).
-h, --help Show this message and exit.
qpass.cli.main()[source]

Command line interface for the qpass program.

qpass.cli.edit_matching_entry(program, arguments)[source]

Edit the matching entry.

qpass.cli.list_matching_entries(program, arguments)[source]

List the entries matching the given keywords/patterns.

qpass.cli.show_matching_entry(program, arguments, use_clipboard=True, quiet=False, filters=())[source]

Show the matching entry on the terminal (and copy the password to the clipboard).

qpass.exceptions

Custom exceptions raised by qpass.

exception qpass.exceptions.PasswordStoreError[source]

Base class for custom exceptions raised by qpass.

exception qpass.exceptions.MissingPasswordStoreError[source]

Raised when the password store directory doesn’t exist.

exception qpass.exceptions.EmptyPasswordStoreError[source]

Raised when the password store is empty.

exception qpass.exceptions.NoMatchingPasswordError[source]

Raised when no matching password can be selected.