Python: module database

database | index /tmp/makerelease-pwman-python.sqFeT8RO/pwman-python-2.13/libpwman/database.py

#
# Simple password manager
# Encrypted database
#
# Copyright (c) 2011-2023 Michael Büsch <m@bues.ch>
# Licensed under the GNU/GPL version 2 or later.
#

Modules
csv io | libpwman os | pathlib sys |

Classes
|  | builtins.Exception(builtins.BaseException) libpwman.cryptsql.CSQLError builtins.object PWManEntry PWManEntryAttr PWManEntryBulk PWManEntryTOTP libpwman.cryptsql.CryptSQL(builtins.object) PWManDatabase
class CSQLError(builtins.Exception)
| CryptSQL exception.
| Method resolution order: CSQLError builtins.Exception builtins.BaseException builtins.object Data descriptors defined here: __weakref__ list of weak references to the object Methods inherited from builtins.Exception: __init__(self, /, *args, **kwargs) Initialize self. See help(type(self)) for accurate signature. Static methods inherited from builtins.Exception: __new__(*args, **kwargs) class method of builtins.Exception Create and return a new object. See help(type) for accurate signature. Methods inherited from builtins.BaseException: __getattribute__(self, name, /) Return getattr(self, name). __reduce__(self, /) Helper for pickle. __repr__(self, /) Return repr(self). __setstate__(self, object, /) __str__(self, /) Return str(self). add_note(self, object, /) Exception.add_note(note) -- add a note to the exception with_traceback(self, object, /) Exception.with_traceback(tb) -- set self.__traceback__ to tb and return self. Data descriptors inherited from builtins.BaseException: __cause__ exception cause __context__ exception context __dict__ __suppress_context__ __traceback__ args
class PWManDatabase(libpwman.cryptsql.CryptSQL)
| PWManDatabase(filename, passphrase, key=None, readOnly=True, silent=False) Encrypted pwman database.
| Method resolution order: PWManDatabase libpwman.cryptsql.CryptSQL builtins.object Methods defined here: __init__(self, filename, passphrase, key=None, readOnly=True, silent=False) filename: Path to the database file. If it does not exist, a new file is created. passphrase: The passphrase string for the database file. key: An optional key to use instead of the passphrase. Don't use it. readOnly: Open the filename read-only. Commits will raise an exception. silent: Do not print information messages to the console. addEntry(self, entry) Create a new entry in the database. entry: A PWManEntry() instance. categoryExists(self, category) Returns True, if a category exists in the database. category: The name string of the category. commit(self) Write all changes to the encrypted database file. delEntry(self, entry) Delete an existing entry from the database. entry: The PWManEntry() instance to delete from the database. dropUncommitted(self) Drop all changes that are not committed, yet. dumpEntries(self, totp='hide') Returns a human readable dump string of all entries. dumpEntriesCsv(self, totp='hide') Returns a CSV format dump string of all entries. dumpEntry(self, entry, totp='gen') Returns a human readable dump string of an entry. editEntry(self, entry) Update the contents of an existing entry. entry: A PWManEntry() containing the new data of the entry/ entryExists(self, category, title) Returns True, if an entry exists in the database. category: The name string of the category. title: The title string of the entry. findEntries( self, pattern, useRegexp=False, search=True, inCategory=None, matchCategory=False, matchTitle=False, matchUser=False, matchPw=False, matchBulk=False, matchAttrName=False, matchAttrData=False ) Search the database for entries that match a pattern. useRegexp: If True, then the pattern is a regular expression string. If False, then the pattern is a SQL LIKE pattern string. inCategory: If specified as non-zero length string, then only search the category with this name. matchCategory: Match the pattern to the category name string of an entry. matchTitle: Match the pattern to the title string of an entry. matchUser: Match the pattern to the user string of an entry. matchPw: Match the pattern to the password string of an entry. matchBulk: Match the pattern to the bulk data string of an entry. matchAttrName: Match the pattern to all attribute name strings of an entry. matchAttrData: Match the pattern to all attribute data strings of an entry. Returns a list of PWManEntry() instances that match the pattern. flunkDirty(self) Print a warning, if the database contains uncommitted data. Then set the flag for uncommitted data to False. getCategoryNames(self) Get all category names in the database. Returns a sorted list of strings. getEntry(self, category, title) Get an entry from the database. category: The name string of the category to get an entry from. title: The title string of the entry to get. Returns a PWManEntry() instance. getEntryAttr(self, entry, attrName) Get an attribute associated with an entry. entry: The PWManEntry() to get the attribute for. attrName: The name string of the attribute to get. Returns a PWManEntryAttr() instance, or None if there is such attribute. getEntryAttrs(self, entry) Get all attributes associated with an entry. entry: The PWManEntry() to get the attributes for. Returns a list of PWManEntryAttr() instances, or an empty list if there are no attributes. getEntryBulk(self, entry) Get the bulk data associated with an entry. entry: The PWManEntry() to get the bulk data for. Returns a PWManEntryBulk() instance or None, if there is no bulk data. getEntryTitles(self, category) Get all titles from one category in the database. category: The category name string. Returns a sorted list of strings. getEntryTotp(self, entry) Get the TOTP parameters associated with an entry. entry: The PWManEntry() to get the TOTP parameters for. Returns a PWManEntryTOTP() instance, or None if there is no TOTP data. getGlobalAttr(self, name) Get a global attribute. A global attribute is not associated with an entry. Returns None, if the attribute does not exist. getOnDiskDb(self) Get a read-only instance of PWManDatabase that contains the current on-disk data. The on-disk data is the data at the last commit. importSqlScript(self, *args, **kwargs) Imports a plain text dump into the database. script: The script string to import. clear: If True, drop all tables from the database before importing. isDirty(self) Returns True, if the database contains uncommitted data. moveEntries(self, fromCategory, toCategory, toDb=None, copy=False) Move or copy all entries from one category to another category. fromCategory: The category to move all entries from. toCategory: The (new) category to move all entries to. toDb: The target database. Defaults to self. copy: If False, then move. If True, then copy. moveEntry(self, entry, newCategory, newTitle, toDb=None, copy=False) Move or copy an existing entry to a new category and/or set a new entry title. entry: The PWManEntry() instance to move/copy. newCategory: The target category name string. newTitle: The target title string. toDb: The target database. Defaults to self. copy: If False, then move. If True, then copy. setEntryAttr(self, entryAttr) Set an attribute associated with an entry. entryAttr: The new PWManEntryAttr() instance to write to the database. If entryAttr.data is None, then the attribute is deleted. setEntryBulk(self, entryBulk) Set the bulk data associated with an entry. entryBulk: The new PWManEntryBulk() instance to write to the database. If entryBulk.data is None, then the bulk data is deleted. setEntryTotp(self, entryTotp) Set the TOTP data associated with an entry. entryTotp: The new PWManEntryTOTP() instance to write to the database. If entryTotp.key is None, then the TOTP data is deleted. setGlobalAttr(self, name, data, setDirty=True) Set a global attribute. A global attribute is not associated with an entry. If data is None or empty, the attribute is deleted from the database. setPassphrase(self, passphrase) Set a new passphrase string for encryption and decryption. Data and other attributes defined here: DB_TYPE = 'PWMan database' DB_VER = ('0', '1') Methods inherited from libpwman.cryptsql.CryptSQL: DEFAULT_KDF_ITER lambda kdfMem KDF_ITERLIMIT_A lambda kdfMem close(self) Close the currently opened database. This does not commit. All uncommitted changes are lost. dropAllTables(self) Drop all tables from the database. getFilename(self) Get the file path of the currently open database. May return None, if no database file is opened. getKey(self) Get the raw key. May be None, if there is none, yet. Do not use this. getPassphrase probably is what you want. getPassphrase(self) Get the current passphrase string for encryption and decryption. isOpen(self) Returns True, if a database file is opened. open(self, filename) Open a database file and decrypt its contents into memory. filename: The database file path. setKey(self, key) Set the raw key. Do not use this. setPassphrase probably is what you want. setRegexpFlags(self, search=True, ignoreCase=True, multiLine=True, dotAll=True) Change the behavior of the REGEXP operator. sqlCreateFunction(self, name, nrParams, func) Create an SQL function. See sqlite3.Connection.create_function for more details. sqlExec(self, code, params=[]) Execute one SQL statement. sqlExecScript(self, code) Execute multiple SQL statements. Warning: This implicitly commits pending transactions before executing. sqlIsEmpty(self) Returns True, if the database does not contain any tables. sqlPlainDump(self) Get a plain text dump of the database. Returns bytes. sqlVacuum(self) Run the SQL VACUUM statement. This also commits all changes to the SQL database, but not to the database file. Data descriptors inherited from libpwman.cryptsql.CryptSQL: __dict__ dictionary for instance variables __weakref__ list of weak references to the object Data and other attributes inherited from libpwman.cryptsql.CryptSQL: CSQL_HEADER = b'CryptSQL v1' DEFAULT_KDF_MEM = 131096 KDF_ITERLIMIT_B = 2 KDF_MEMLIMIT = 24584 KDF_MEM_BASE = 131072 KDF_MEM_CHUNK = 28 KDF_SALT_NBYTES = 19 KDF_THREADS = 7
class PWManEntry(builtins.object)
| PWManEntry( category: str, title: str, user: str = None, pw: str = None, entryId: int = None ) -&gt; None Database entry data structure.
| Methods defined here: __eq__(self, other) Return self==value. __init__( self, category: str, title: str, user: str = None, pw: str = None, entryId: int = None ) -> None Initialize self. See help(type(self)) for accurate signature. __replace__ = _replace(self, /, **changes) from dataclasses __repr__(self) Return repr(self). Data descriptors defined here: __dict__ dictionary for instance variables __weakref__ list of weak references to the object Data and other attributes defined here: __annotations__ = {'category': <class 'str'>, 'entryId': <class 'int'>, 'pw': <class 'str'>, 'title': <class 'str'>, 'user': <class 'str'>} __dataclass_fields__ = {'category': Field(name='category',type=<class 'str'>,default...appingproxy({}),kw_only=False,_field_type=_FIELD), 'entryId': Field(name='entryId',type=<class 'int'>,default=...appingproxy({}),kw_only=False,_field_type=_FIELD), 'pw': Field(name='pw',type=<class 'str'>,default=None,...appingproxy({}),kw_only=False,_field_type=_FIELD), 'title': Field(name='title',type=<class 'str'>,default=<d...appingproxy({}),kw_only=False,_field_type=_FIELD), 'user': Field(name='user',type=<class 'str'>,default=Non...appingproxy({}),kw_only=False,_field_type=_FIELD)} __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,ord...rue,kw_only=False,slots=False,weakref_slot=False) __hash__ = None __match_args__ = ('category', 'title', 'user', 'pw', 'entryId') entryId = None pw = None user = None
class PWManEntryAttr(builtins.object)
| PWManEntryAttr( name: str, data: str = None, entry: database.PWManEntry = None, attrId: int = None ) -&gt; None Entry attribute data structure.
| Methods defined here: __eq__(self, other) Return self==value. __init__( self, name: str, data: str = None, entry: database.PWManEntry = None, attrId: int = None ) -> None Initialize self. See help(type(self)) for accurate signature. __replace__ = _replace(self, /, **changes) from dataclasses __repr__(self) Return repr(self). Data descriptors defined here: __dict__ dictionary for instance variables __weakref__ list of weak references to the object Data and other attributes defined here: __annotations__ = {'attrId': <class 'int'>, 'data': <class 'str'>, 'entry': <class 'database.PWManEntry'>, 'name': <class 'str'>} __dataclass_fields__ = {'attrId': Field(name='attrId',type=<class 'int'>,default=N...appingproxy({}),kw_only=False,_field_type=_FIELD), 'data': Field(name='data',type=<class 'str'>,default=Non...appingproxy({}),kw_only=False,_field_type=_FIELD), 'entry': Field(name='entry',type=<class 'database.PWManEn...appingproxy({}),kw_only=False,_field_type=_FIELD), 'name': Field(name='name',type=<class 'str'>,default=<da...appingproxy({}),kw_only=False,_field_type=_FIELD)} __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,ord...rue,kw_only=False,slots=False,weakref_slot=False) __hash__ = None __match_args__ = ('name', 'data', 'entry', 'attrId') attrId = None data = None entry = None
class PWManEntryBulk(builtins.object)
| PWManEntryBulk( data: str = None, entry: database.PWManEntry = None, bulkId: int = None ) -&gt; None Entry bulk-data data structure.
| Methods defined here: __eq__(self, other) Return self==value. __init__( self, data: str = None, entry: database.PWManEntry = None, bulkId: int = None ) -> None Initialize self. See help(type(self)) for accurate signature. __replace__ = _replace(self, /, **changes) from dataclasses __repr__(self) Return repr(self). Data descriptors defined here: __dict__ dictionary for instance variables __weakref__ list of weak references to the object Data and other attributes defined here: __annotations__ = {'bulkId': <class 'int'>, 'data': <class 'str'>, 'entry': <class 'database.PWManEntry'>} __dataclass_fields__ = {'bulkId': Field(name='bulkId',type=<class 'int'>,default=N...appingproxy({}),kw_only=False,_field_type=_FIELD), 'data': Field(name='data',type=<class 'str'>,default=Non...appingproxy({}),kw_only=False,_field_type=_FIELD), 'entry': Field(name='entry',type=<class 'database.PWManEn...appingproxy({}),kw_only=False,_field_type=_FIELD)} __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,ord...rue,kw_only=False,slots=False,weakref_slot=False) __hash__ = None __match_args__ = ('data', 'entry', 'bulkId') bulkId = None data = None entry = None
class PWManEntryTOTP(builtins.object)
| PWManEntryTOTP( key: str, digits: int = 6, hmacHash: str = 'SHA1', entry: database.PWManEntry = None, totpId: int = None ) -&gt; None Entry TOTP-data data structure.
| Methods defined here: __eq__(self, other) Return self==value. __init__( self, key: str, digits: int = 6, hmacHash: str = 'SHA1', entry: database.PWManEntry = None, totpId: int = None ) -> None Initialize self. See help(type(self)) for accurate signature. __replace__ = _replace(self, /, **changes) from dataclasses __repr__(self) Return repr(self). generate(self) Data descriptors defined here: __dict__ dictionary for instance variables __weakref__ list of weak references to the object Data and other attributes defined here: __annotations__ = {'digits': <class 'int'>, 'entry': <class 'database.PWManEntry'>, 'hmacHash': <class 'str'>, 'key': <class 'str'>, 'totpId': <class 'int'>} __dataclass_fields__ = {'digits': Field(name='digits',type=<class 'int'>,default=6...appingproxy({}),kw_only=False,_field_type=_FIELD), 'entry': Field(name='entry',type=<class 'database.PWManEn...appingproxy({}),kw_only=False,_field_type=_FIELD), 'hmacHash': Field(name='hmacHash',type=<class 'str'>,default...appingproxy({}),kw_only=False,_field_type=_FIELD), 'key': Field(name='key',type=<class 'str'>,default=<dat...appingproxy({}),kw_only=False,_field_type=_FIELD), 'totpId': Field(name='totpId',type=<class 'int'>,default=N...appingproxy({}),kw_only=False,_field_type=_FIELD)} __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,ord...rue,kw_only=False,slots=False,weakref_slot=False) __hash__ = None __match_args__ = ('key', 'digits', 'hmacHash', 'entry', 'totpId') digits = 6 entry = None hmacHash = 'SHA1' totpId = None

Functions
|  | getDefaultDatabase() Get the default database path. Returns a pathlib.Path() instance.

Data
|  | __all__ = ['CSQLError', 'PWManDatabase', 'PWManEntry', 'PWManEntryAttr', 'PWManEntryBulk', 'PWManEntryTOTP', 'getDefaultDatabase']