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()
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.2.tar.gz
(3.8 kB
view hashes)
Built Distribution
Close
Hashes for miniconfig-0.3.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e77829c8fda68643770a02e1417f622ca6a5c87e72d117e8056239e1423e15d |
|
MD5 | 3277b963f03685d53a8b6092c728b66f |
|
BLAKE2b-256 | c770bdec2c2b9f99208e7663135b4f6901aa205069c57675a764dbdb107a473f |