You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Franzi c40ac809f6
this is also compatible with python 3.9
2 years ago
.gitignore initialize repo 2 years ago
LICENSE initialize repo 2 years ago fix typo in README 2 years ago check for required variables before doing anything else in _get_contents_from_keepass() 2 years ago this is also compatible with python 3.9 2 years ago

Use secrets from keepass in your BundleWrap repo.


pip install bundlewrap-keepass


Create .bw_keepass.cfg in your home. It should contain two lines: First line should contain a path to your keepass file, second line may contain your password.

If you're not comfortable putting your password into a plain-text file, you may also use BW_KEEPASS_PASSWORD in your environment variables.

You may also set BW_KEEPASS_FILE in your environment to overwrite the location of your keepass file. Please note that if you set the file path in your environment, you must also set the password.


All function calls accept lists or strings as their arguments. If you need to traverse into subdirectories in your keepass file, you have to use | as separator when not using lists.

For example, if you want to access the Password for 'mysite', which is located inside the directory 'bundlewrap', you can use either one of these:

bwkeepass.password(['bundlewrap', 'mysite'])


import bwkeepass as keepass

nodes = {
    'somenode': {
        'metadata': {
            'my_secret': keepass.password('my_identifier'),

Available Fields/Methods are:

  • bwkeepass.password() for passwords
  • bwkeepass.username() for usernames
  • bwkeepass.url() for urls
  • bwkeepass.notes() for notes

Note: This will insert a proxy object into your metadata, the actual secret is not retrieved until you convert it to a string (e.g. by inserting it in a template or calling str() explicitly).

© 2021 Franziska Kunsmann