kdbxtool.templates¶
Entry templates for common account types.
This module provides typed template classes for creating entries with predefined fields and icons. Templates follow KeePass conventions for icon IDs and provide full IDE autocompletion for field names.
Example
>>> from kdbxtool import Database, Templates
>>> db = Database.create(password="secret")
>>> entry = db.root_group.create_entry(
... title="GitHub",
... template=Templates.Login(),
... username="user@example.com",
... password="secret123",
... url="https://github.com",
... )
>>> entry = db.root_group.create_entry(
... title="Visa Card",
... template=Templates.CreditCard(
... card_number="4111111111111111",
... expiry_date="12/25",
... cvv="123",
... ),
... )
- Custom templates can be created by subclassing EntryTemplate:
>>> from dataclasses import dataclass >>> from typing import ClassVar >>> from kdbxtool import EntryTemplate, IconId >>> >>> @dataclass ... class VPNConnection(EntryTemplate): ... _icon_id: ClassVar[int] = IconId.TERMINAL_ENCRYPTED ... _protected_fields: ClassVar[frozenset[str]] = frozenset({"certificate"}) ... ... server: str | None = None ... protocol: str = "OpenVPN" ... certificate: str | None = None
Classes
|
Bank account entry template. |
|
Credit card entry template. |
|
Database connection entry template. |
|
Email account entry template. |
Base class for entry templates. |
|
|
KeePass standard icon IDs. |
|
Identity/personal information entry template. |
|
Standard login entry template. |
Secure note entry template. |
|
|
Server/SSH entry template. |
|
Software license entry template. |
Namespace containing all built-in entry templates. |
|
|
Wireless router entry template. |
- class kdbxtool.templates.IconId(*values)[source]¶
Bases:
IntEnumKeePass standard icon IDs.
These correspond to the PwIcon enumeration in KeePass. There are 69 standard icons (0-68) built into KeePass/KeePassXC.
- KEY = 0¶
- WORLD = 1¶
- WARNING = 2¶
- NETWORK_SERVER = 3¶
- MARKED_DIRECTORY = 4¶
- USER_COMMUNICATION = 5¶
- PARTS = 6¶
- NOTEPAD = 7¶
- WORLD_SOCKET = 8¶
- IDENTITY = 9¶
- PAPER_READY = 10¶
- DIGICAM = 11¶
- IR_COMMUNICATION = 12¶
- MULTI_KEYS = 13¶
- ENERGY = 14¶
- SCANNER = 15¶
- WORLD_STAR = 16¶
- CDROM = 17¶
- MONITOR = 18¶
- EMAIL = 19¶
- CONFIGURATION = 20¶
- CLIPBOARD_READY = 21¶
- PAPER_NEW = 22¶
- SCREEN = 23¶
- ENERGY_CAREFUL = 24¶
- EMAIL_BOX = 25¶
- DISK = 26¶
- DRIVE = 27¶
- PAPER_Q = 28¶
- TERMINAL_ENCRYPTED = 29¶
- CONSOLE = 30¶
- PRINTER = 31¶
- PROGRAM_ICONS = 32¶
- RUN = 33¶
- SETTINGS = 34¶
- WORLD_COMPUTER = 35¶
- ARCHIVE = 36¶
- HOMEBANKING = 37¶
- DRIVE_WINDOWS = 38¶
- CLOCK = 39¶
- EMAIL_SEARCH = 40¶
- PAPER_FLAG = 41¶
- MEMORY = 42¶
- TRASH_BIN = 43¶
- NOTE = 44¶
- EXPIRED = 45¶
- INFO = 46¶
- PACKAGE = 47¶
- FOLDER = 48¶
- FOLDER_OPEN = 49¶
- FOLDER_PACKAGE = 50¶
- LOCK_OPEN = 51¶
- PAPER_LOCKED = 52¶
- CHECKED = 53¶
- PEN = 54¶
- THUMBNAIL = 55¶
- BOOK = 56¶
- LIST = 57¶
- USER_KEY = 58¶
- TOOL = 59¶
- HOME = 60¶
- STAR = 61¶
- TUX = 62¶
- FEATHER = 63¶
- APPLE = 64¶
- WIKI = 65¶
- MONEY = 66¶
- CERTIFICATE = 67¶
- BLACKBERRY = 68¶
- class kdbxtool.templates.EntryTemplate[source]¶
Bases:
objectBase class for entry templates. Subclass to create custom templates.
- Class variables to override:
_icon_id: Icon for entries using this template (default: KEY) _include_standard: Whether to populate username/password/url (default: True) _protected_fields: Field names that should be memory-protected
Example
>>> @dataclass ... class VPNConnection(EntryTemplate): ... _icon_id: ClassVar[int] = IconId.TERMINAL_ENCRYPTED ... _protected_fields: ClassVar[frozenset[str]] = frozenset({"certificate"}) ... ... server: str | None = None ... protocol: str = "OpenVPN" ... certificate: str | None = None ... >>> entry = group.create_entry( ... title="Work VPN", ... template=VPNConnection(server="vpn.company.com"), ... )
- __init__()¶
- Return type:
None
- class kdbxtool.templates.Login[source]¶
Bases:
EntryTemplateStandard login entry template.
Uses standard fields (title, username, password, url) without additional custom fields.
- __init__()¶
- Return type:
None
- class kdbxtool.templates.CreditCard(card_number=None, expiry_date=None, cvv=None, cardholder_name=None, pin=None)[source]¶
Bases:
EntryTemplateCredit card entry template.
Includes card number, expiry date, CVV, cardholder name, and PIN. Sensitive fields (card_number, cvv, pin) are memory-protected. Does not use standard username/password fields.
- Parameters:
- class kdbxtool.templates.SecureNote[source]¶
Bases:
EntryTemplateSecure note entry template.
For storing text without standard credential fields. Use the notes parameter in create_entry() for content.
- __init__()¶
- Return type:
None
- class kdbxtool.templates.Identity(first_name=None, last_name=None, email=None, phone=None, address=None, city=None, state=None, postal_code=None, country=None)[source]¶
Bases:
EntryTemplateIdentity/personal information entry template.
Includes name, contact, and address fields. Does not use standard username/password fields.
- Parameters:
- __init__(first_name=None, last_name=None, email=None, phone=None, address=None, city=None, state=None, postal_code=None, country=None)¶
- class kdbxtool.templates.BankAccount(bank_name=None, account_type=None, account_number=None, routing_number=None, swift_bic=None, iban=None, pin=None)[source]¶
Bases:
EntryTemplateBank account entry template.
Includes account details and routing information. Sensitive fields (account_number, iban, pin) are memory-protected. Does not use standard username/password fields.
- Parameters:
- __init__(bank_name=None, account_type=None, account_number=None, routing_number=None, swift_bic=None, iban=None, pin=None)¶
- class kdbxtool.templates.Server(hostname=None, port='22', ssh_key=None)[source]¶
Bases:
EntryTemplateServer/SSH entry template.
Includes hostname, port, and SSH key fields. Uses standard username/password fields for credentials. SSH key is memory-protected.
- class kdbxtool.templates.WirelessRouter(ssid=None, security_type='WPA2', admin_url=None, admin_username=None, admin_password=None)[source]¶
Bases:
EntryTemplateWireless router entry template.
Includes SSID, security type, and admin credentials. Admin password is memory-protected.
- Parameters:
- class kdbxtool.templates.Email(email_address=None, imap_server=None, imap_port='993', smtp_server=None, smtp_port='587')[source]¶
Bases:
EntryTemplateEmail account entry template.
Includes email address and server settings. Uses standard username/password fields for credentials.
- Parameters:
- class kdbxtool.templates.SoftwareLicense(license_key=None, registered_email=None, registered_name=None, purchase_date=None, download_url=None)[source]¶
Bases:
EntryTemplateSoftware license entry template.
Includes license key and registration information. License key is memory-protected. Does not use standard username/password fields.
- Parameters:
- class kdbxtool.templates.DatabaseConnection(database_type='PostgreSQL', host=None, port='5432', database_name=None, connection_string=None)[source]¶
Bases:
EntryTemplateDatabase connection entry template.
Includes database type, host, port, and connection details. Connection string is memory-protected. Uses standard username/password fields for credentials.
- Parameters:
- class kdbxtool.templates.Templates[source]¶
Bases:
objectNamespace containing all built-in entry templates.
Provides discoverability via IDE autocompletion.
- Usage:
>>> from kdbxtool import Templates >>> >>> entry = group.create_entry( ... title="My Card", ... template=Templates.CreditCard( ... card_number="4111111111111111", ... cvv="123", ... ), ... )
- Available templates:
Login: Standard login (username, password, url)
CreditCard: Card number, expiry, CVV, cardholder, PIN
SecureNote: Notes-only entry
Identity: Personal information (name, address, etc.)
BankAccount: Account and routing numbers
Server: Hostname, port, SSH key
WirelessRouter: SSID, security type, admin credentials
Email: Email address and server settings
SoftwareLicense: License key and registration info
Database: Database connection details
- class Login¶
Bases:
EntryTemplateStandard login entry template.
Uses standard fields (title, username, password, url) without additional custom fields.
- __init__()¶
- Return type:
None
- class CreditCard(card_number=None, expiry_date=None, cvv=None, cardholder_name=None, pin=None)¶
Bases:
EntryTemplateCredit card entry template.
Includes card number, expiry date, CVV, cardholder name, and PIN. Sensitive fields (card_number, cvv, pin) are memory-protected. Does not use standard username/password fields.
- Parameters:
- __init__(card_number=None, expiry_date=None, cvv=None, cardholder_name=None, pin=None)¶
- class SecureNote¶
Bases:
EntryTemplateSecure note entry template.
For storing text without standard credential fields. Use the notes parameter in create_entry() for content.
- __init__()¶
- Return type:
None
- class Identity(first_name=None, last_name=None, email=None, phone=None, address=None, city=None, state=None, postal_code=None, country=None)¶
Bases:
EntryTemplateIdentity/personal information entry template.
Includes name, contact, and address fields. Does not use standard username/password fields.
- Parameters:
- __init__(first_name=None, last_name=None, email=None, phone=None, address=None, city=None, state=None, postal_code=None, country=None)¶
- class BankAccount(bank_name=None, account_type=None, account_number=None, routing_number=None, swift_bic=None, iban=None, pin=None)¶
Bases:
EntryTemplateBank account entry template.
Includes account details and routing information. Sensitive fields (account_number, iban, pin) are memory-protected. Does not use standard username/password fields.
- Parameters:
- __init__(bank_name=None, account_type=None, account_number=None, routing_number=None, swift_bic=None, iban=None, pin=None)¶
- class Server(hostname=None, port='22', ssh_key=None)¶
Bases:
EntryTemplateServer/SSH entry template.
Includes hostname, port, and SSH key fields. Uses standard username/password fields for credentials. SSH key is memory-protected.
- __init__(hostname=None, port='22', ssh_key=None)¶
- class WirelessRouter(ssid=None, security_type='WPA2', admin_url=None, admin_username=None, admin_password=None)¶
Bases:
EntryTemplateWireless router entry template.
Includes SSID, security type, and admin credentials. Admin password is memory-protected.
- Parameters:
- __init__(ssid=None, security_type='WPA2', admin_url=None, admin_username=None, admin_password=None)¶
- class Email(email_address=None, imap_server=None, imap_port='993', smtp_server=None, smtp_port='587')¶
Bases:
EntryTemplateEmail account entry template.
Includes email address and server settings. Uses standard username/password fields for credentials.
- Parameters:
- __init__(email_address=None, imap_server=None, imap_port='993', smtp_server=None, smtp_port='587')¶
- class SoftwareLicense(license_key=None, registered_email=None, registered_name=None, purchase_date=None, download_url=None)¶
Bases:
EntryTemplateSoftware license entry template.
Includes license key and registration information. License key is memory-protected. Does not use standard username/password fields.
- Parameters:
- __init__(license_key=None, registered_email=None, registered_name=None, purchase_date=None, download_url=None)¶
- Database¶
alias of
DatabaseConnection