Skip to content

utils.keepass

KeePassSettings

Bases: ServiceSettings

Settings for the KeePass service.

Configuration settings for accessing KeePass password databases, supporting authentication using both keyfiles and passwords.

settings_customise_sources classmethod

settings_customise_sources(
    settings_cls: type[BaseSettings],
    init_settings: PydanticBaseSettingsSource,
    env_settings: PydanticBaseSettingsSource,
    dotenv_settings: PydanticBaseSettingsSource,
    file_secret_settings: PydanticBaseSettingsSource,
) -> tuple[PydanticBaseSettingsSource, ...]

Customizes the settings sources to include the safe YAML settings source.

Parameters:

Name Type Description Default
settings_cls type[BaseSettings]

The settings class

required
init_settings PydanticBaseSettingsSource

The initial settings source

required
env_settings PydanticBaseSettingsSource

The environment settings source

required
dotenv_settings PydanticBaseSettingsSource

The dotenv settings source

required
file_secret_settings PydanticBaseSettingsSource

The file secret settings source

required

Returns:

Type Description
tuple[PydanticBaseSettingsSource, ...]

Tuple[PydanticBaseSettingsSource, ...]: A tuple of settings sources

Source code in src/clabe/services.py
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
@classmethod
def settings_customise_sources(
    cls,
    settings_cls: type[ps.BaseSettings],
    init_settings: ps.PydanticBaseSettingsSource,
    env_settings: ps.PydanticBaseSettingsSource,
    dotenv_settings: ps.PydanticBaseSettingsSource,
    file_secret_settings: ps.PydanticBaseSettingsSource,
) -> tuple[ps.PydanticBaseSettingsSource, ...]:
    """
    Customizes the settings sources to include the safe YAML settings source.

    Args:
        settings_cls: The settings class
        init_settings: The initial settings source
        env_settings: The environment settings source
        dotenv_settings: The dotenv settings source
        file_secret_settings: The file secret settings source

    Returns:
        Tuple[PydanticBaseSettingsSource, ...]: A tuple of settings sources
    """
    yaml_sources = [
        _SafeYamlSettingsSource(settings_cls, yaml_file=p, yaml_config_section=cls.__yml_section__)
        for p in KNOWN_CONFIG_FILES
    ]
    # The in-memory document ranks right after the first (local override) config file
    return (
        init_settings,
        *yaml_sources[:1],
        _InMemorySettingsSource(settings_cls, config_section=cls.__yml_section__),
        *yaml_sources[1:],
        env_settings,
        dotenv_settings,
        file_secret_settings,
    )

KeePass

KeePass(settings: KeePassSettings)

Bases: Service

KeePass password manager service for accessing password database entries.

Provides an interface for connecting to and retrieving entries from KeePass password databases, supporting both keyfile and password-based authentication.

Methods:

Name Description
get_entry

Retrieves a password entry by title

Initialize the KeePass service with the provided settings.

Creates a connection to the KeePass database using the authentication credentials specified in the settings. The connection is established immediately upon initialization.

Parameters:

Name Type Description Default
settings KeePassSettings

Configuration settings containing database path and authentication credentials

required

Raises:

Type Description
FileNotFoundError

If the database file cannot be found

CredentialsError

If the provided authentication credentials are invalid

IOError

If there's an error reading the database or keyfile

Example
settings = KeePassSettings(database=Path("passwords.kdbx"))
keepass = KeePass(settings)
Source code in src/clabe/utils/keepass.py
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def __init__(self, settings: KeePassSettings):
    """
    Initialize the KeePass service with the provided settings.

    Creates a connection to the KeePass database using the authentication
    credentials specified in the settings. The connection is established
    immediately upon initialization.

    Args:
        settings: Configuration settings containing database path and authentication credentials

    Raises:
        FileNotFoundError: If the database file cannot be found
        CredentialsError: If the provided authentication credentials are invalid
        IOError: If there's an error reading the database or keyfile

    Example:
        ```python
        settings = KeePassSettings(database=Path("passwords.kdbx"))
        keepass = KeePass(settings)
        ```
    """
    self._settings = settings
    self._keepass = PyKeePass(
        filename=self._settings.database,
        password=self._settings.password,
        keyfile=self._settings.keyfile,
    )

get_entry

get_entry(title: str) -> Entry

Retrieve a password entry from the database by title.

Searches the KeePass database for entries matching the specified title and returns the first match found. Entry titles are typically unique within a database, but if multiple entries share the same title, only the first one encountered will be returned.

Parameters:

Name Type Description Default
title str

The title of the entry to retrieve. This should match the entry title exactly (case-sensitive)

required

Returns:

Name Type Description
Entry Entry

The KeePass entry object containing username, password, and other metadata associated with the specified title

Raises:

Type Description
ValueError

If no entry is found with the specified title

Example
# Retrieve credentials for a service
entry = keepass.get_entry("GitHub API Token")
token = entry.password

# Access other entry properties
username = entry.username
url = entry.url
notes = entry.notes
Source code in src/clabe/utils/keepass.py
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
def get_entry(self, title: str) -> Entry:
    """
    Retrieve a password entry from the database by title.

    Searches the KeePass database for entries matching the specified title
    and returns the first match found. Entry titles are typically unique
    within a database, but if multiple entries share the same title,
    only the first one encountered will be returned.

    Args:
        title: The title of the entry to retrieve. This should match the entry title exactly (case-sensitive)

    Returns:
        Entry: The KeePass entry object containing username, password, and other metadata associated with the specified title

    Raises:
        ValueError: If no entry is found with the specified title

    Example:
        ```python
        # Retrieve credentials for a service
        entry = keepass.get_entry("GitHub API Token")
        token = entry.password

        # Access other entry properties
        username = entry.username
        url = entry.url
        notes = entry.notes
        ```
    """
    entries = self._keepass.find_entries(title=title)
    if not entries:
        raise ValueError(f"No entry found with title '{title}'")
    else:
        return entries[0]