Skip to main content

keyring_configparser

GitHub Workflow Status PyPI PyPI - Downloads PyPI - License

A ConfigParser subclass that can read values stored with the keyring pypi package.

Installation

pip install keyring_configparser

Usage

It is recommended to be familiar with the ConfigParser module and the keyring pypi package before use.

KeryingConfigParser is identical to ConfigParser except when it reads a specific token as a configuration value ("$." by default) it uses the keyring package to resolve the value. This enables using secret values in configuration files without storing the value as plain-text within the file.

Basic Example

#/tmp/app.config
[section_name]
non_secret = hello world
secret_name = $.
import keyring

keyring.set_password("section_name", "secret_name", "secret_value")
from keyring_configparser import KeyringConfigParser

config = KeyringConfigParser()
config.read("/tmp/app.config")
config.get('section_name', 'non_secret')
> "hello world"
sec = config.get('section_name', 'secret_name')
> "secret_value"

Additional Examples

Configured Keyring Instances

A configured keyring instance can be supplied to the KeyringConfigParser constructor. This allows using non-default backends or any other non-default keyring settings when looking up values in keyring.

For example, to use the keyrings.cryptfile backend:

#/tmp/app.config
[section_name]
non_secret = hello world
secret_name = $.
from keyrings.cryptfile.cryptfile import CryptFileKeyring

kr = CryptFileKeyring()
kr.keyring_key = "CRYPTFILE_PASSWORD"
kr.set_password("section_name", "secret_name", "secret_value")
from keyring_configparser import KeyringConfigParser
from keyrings.cryptfile.cryptfile import CryptFileKeyring

kr = CryptFileKeyring()
kr.keyring_key = "CRYPTFILE_PASSWORD"

config = KeyringConfigParser(keyring=kr)
config.read("/tmp/app.config")
config.get('section_name', 'secret_name')
> "secret_value"

Custom Config Token

A token can be supplied to the KeyringConfigParser constructor to override the default token "$.". When the custom token is encountered in the configuration file the value will be resolved with keyring.

#/tmp/app.config
[section_name]
non_secret = hello world
secret_name = !~!
default_token = $.
import keyring

keyring.set_password("section_name", "secret_name", "secret_value")
from keyring_configparser import KeyringConfigParser

config = KeyringConfigParser(token="!~!")
config.read("/tmp/app.config")
config.get('section_name', 'secret_name')
> "secret_value"
config.get('section_name', 'default_token')
> "$."

Questions / Issues

Please raise any questions in the Discussions page of the repository.

Please document any issues encountered in the Issues page of the repository.

Metadata

Release files for keyring-configparser 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for keyring-configparser 1.0.0
File Size Uploaded
keyring_configparser-1.0.0.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for keyring-configparser 1.0.0
File Interpreter ABI Platform
keyring_configparser-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.5 kB

Release files / keyring_configparser-1.0.0.tar.gz

Download URL keyring_configparser-1.0.0.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
44d9deff97e49e10ddac22f4500df8f15884abb00d17ce2e031038930cffa930
BLAKE2b-256 checksum
How to use checksums
11bbf6ad97ddf0ea3f3c929b9d7112be52583850ae5d69d5a50d80a334ef4d4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.2

Release files / keyring_configparser-1.0.0-py3-none-any.whl

Download URL keyring_configparser-1.0.0-py3-none-any.whl
Size 5.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fcbf580441924bb49a7eace30de8aca65a0099c9a108fb59504815a1ba87f03e
BLAKE2b-256 checksum
How to use checksums
97b3ce0a019b4b064a945e475edb9f000ae18671780472bc41c2f064677175a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.2

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page