Add app providers, tests, docs
This commit is contained in:
parent
3cafa28ab9
commit
3a8bd1fce9
8 changed files with 288 additions and 0 deletions
57
docs/narr/providers/app.rst
Normal file
57
docs/narr/providers/app.rst
Normal file
|
@ -0,0 +1,57 @@
|
|||
|
||||
App Providers
|
||||
=============
|
||||
|
||||
An :term:`app provider` is a :term:`provider` which can "extend" the
|
||||
main :term:`app handler`.
|
||||
|
||||
The provider generally does this by adding extra methods to the app
|
||||
handler. Note that it does this regardless of which app handler is
|
||||
configured to be used.
|
||||
|
||||
:class:`~wuttjamaican.app.AppProvider` is the base class.
|
||||
|
||||
|
||||
Adding a new Provider
|
||||
---------------------
|
||||
|
||||
First define your provider class. Note that the method names should
|
||||
include a "prefix" unique to your project (``poser_`` in this case).
|
||||
This is to avoid naming collisions with the app handler itself, as
|
||||
well as other app providers. So e.g. in ``poser/app.py``::
|
||||
|
||||
from wuttjamaican.app import AppProvider
|
||||
|
||||
class PoserAppProvider(AppProvider):
|
||||
"""
|
||||
App provider for Poser system
|
||||
"""
|
||||
|
||||
# nb. method name uses 'poser_' prefix
|
||||
def poser_do_something(self, **kwargs):
|
||||
"""
|
||||
Do something for Poser
|
||||
"""
|
||||
print("did something")
|
||||
|
||||
Register the :term:`entry point` in your ``setup.cfg``:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[options.entry_points]
|
||||
|
||||
wutta.providers =
|
||||
poser = poser.app:PoserAppProvider
|
||||
|
||||
Assuming you have not customized the app handler proper, then you will
|
||||
be using the *default* app handler yet it will behave as though it has
|
||||
the "provided" methods::
|
||||
|
||||
from wuttjamaican.conf import make_config
|
||||
|
||||
# make normal app
|
||||
config = make_config()
|
||||
app = config.get_app()
|
||||
|
||||
# whatever this does..
|
||||
app.poser_do_something()
|
Loading…
Add table
Add a link
Reference in a new issue