Usage¶
To use pkgsettings in a project
from pkgsettings import Settings
# Create the settings object for your package to use
settings = Settings()
# Now lets defined the default settings
settings.configure(hello='World', debug=False)
By calling the configure you actually inject a layer
of settings.
When requesting a setting it will go through all layers until it finds the
requested key.
Now if someone starts using your package it can easily modify the active settings of your package by calling the configure again.
from my_awesome_package.conf import settings
# Lets change the configuration here
settings.configure(debug=True)
Now from within your package you can work with the settings like so:
from conf import settings
print(settings.debug) # This will print: True
print(settings.hello) # This will print: World
It is also possible to pass an object instead of kwargs.
The settings object will call getattr(ur_object, key)
An example below:
class MySettings(object):
def __init__(self):
self.debug = True
settings = Settings()
settings.configure(MySettings())
print(settings.debug) # This will print: True
More advanced usage¶
The settings object can also be used as context manager:
with settings(debug=True):
print(settings.debug) # This will print: True
print(settings.debug) # This will print: False
Additionally you can also use this as a decorator:
@settings(debug=True)
def go()
print(settings.debug) # This will print: True
go()
print(settings.debug) # This will print: False