More KWARGS! Let call parameters override kwargs
Project description
More KWARGS!
Motivation
Extensive use of dependency injection, plus managing the configuration for each of the components being injected, can result in some spectacularly complex system configuration. One way to reduce the complexity is to use configuration templates that contain useful defaults, and then overwrite the properties that need to be changed for the desired configuration. @override
has been created to provide this templating system for Python function calls (primarily class constructors).
@override
will decorate a function to accept a kwargs
parameter which is just like **kwargs
, but the call parameters will override the properties in kwargs
, rather than raise duplicate key exceptions.
Example
We decorate the login()
function with @override
. In this case, username
is a required parameter, and password
will default to None
. The kwargs parameter should always default to None
so that it's not required.
@override
def login(username, password=None, kwargs=None):
pass
Define some dicts
for use with our kwargs
parameter:
creds = {"userame": "ekyle", "password": "password123"}
alt_creds = {"username": "klahnakoski"}
The simplest case is when we use kwargs with no overrides
login(kwargs=creds)
# SAME AS
login(**creds)
# SAME AS
login(username="ekyle", password="password123")
You may override any property in kwargs: In this case it is password
login(password="123", kwargs=creds)
# SAME AS
login(username="ekyle", password="123")
There is no problem with overriding everything in kwargs
:
login(username="klahnakoski", password="asd213", kwargs=creds)
# SAME AS
login(username="klahnakoski", password="asd213")
You may continue to use **kwargs
; which provides a way to overlay one parameter template (creds
) with another (alt_creds
)
login(kwargs=creds, **alt_creds)
# SAME AS
login(username="klahnakoski", password="password123")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file mo-kwargs-2.31.19025.tar.gz
.
File metadata
- Download URL: mo-kwargs-2.31.19025.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/2.7.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f900e61fd6e04ae2ec823caeaf6dd46c5cd572667a6e7f1ffe1f1d755a1a4445 |
|
MD5 | 3f701cc0ce09bf1de5d8f6fde1b14193 |
|
BLAKE2b-256 | 2fc17402f12e1a52a48abd5a5b1911ca2cb7deb9296d89b5c53445221631fedd |