configurator
Project description
miniconfig
making configuration phase, in your application. (Tiny version of almost pyramid’s configurator object)
# yourapp/__init__.py
from miniconfig import ConfiguratorCore
class Configurator(ConfiguratorCore):
def make_app(self):
self.commit()
return App(self.settings)
class App:
def __init__(self, settings):
self.settings = settings
yourapp/pluginA.py
class A:
pass
def includeme(config):
config.settings["A"] = A()
def includeme(config):
config.settings["A"] = PluginA()
yourapp/pluginB.py
class B:
pass
def includeme(config):
config.include(".pluginA")
config.settings["B"] = B()
application user
from yourapp import Configurator
config = Configurator()
config.include("yourapp.pluginB")
app = config.make_app()
print(app.settings.keys()) # dict_keys(['A', 'B'])
Adding directives
directive means that action of configurator.
how to define and use directive
def hello(config, name):
def register():
assert config.settings["foo"] == "foo"
print("hello: {}".format(name))
discriminator = (hello, name)
config.action(discriminator, register)
config = Configurator(settings={"foo": "foo"})
config.add_directive("hello", hello)
config.hello("foo")
it is also supported that to define directives by dotted name
## foo/bar.py
def hello(config):
def register():
print("hai")
discriminator = id(object()) # xxx
config.action(discriminator, register)
## yourapp
config = Configurator()
config.add_directive("hello", "foo.bar:hello")
config.hello()
config.commit() # hai
0.3.0
conflict check is supported, (but discriminator is needed, in action)
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
miniconfig-0.3.1.tar.gz
(3.8 kB
view hashes)
Built Distribution
Close
Hashes for miniconfig-0.3.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e33a08b7477a1fc88c4901de7119fdf050c69aba24b266d7cf960526d5793bc |
|
MD5 | cc03bd6f6a17c2ffe8aaadd83506a07b |
|
BLAKE2b-256 | b7f7df242c358bdfa766847347a13d479aca617cfa1e4aded1863c16e60ddeaa |