# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
############################################################
## Functions
############################################################
def loadapp(uri, name=None, relative_to=None, global_conf=None):
"""
Provided by ``paste.deploy.loadapp``.
Load the specified URI as a WSGI application (returning IWSGIApp).
The ``name`` can be in the URI (typically as ``#name``). If it is
and ``name`` is given, the keyword argument overrides the URI.
If the URI contains a relative filename, then ``relative_to`` is
used (if ``relative_to`` is not provided, then it is an error).
``global_conf`` is used to load the configuration (additions
override the values). ``global_conf`` is copied before modifying.
"""
def loadfilter(uri, name=None, relative_to=None, global_conf=None):
"""
Provided by ``paste.deploy.loadfilter``.
Like ``loadapp()``, except returns in IFilter object.
"""
def loadserver(uri, name=None, relative_to=None, global_conf=None):
"""
Provided by ``paste.deploy.loadserver``.
Like ``loadapp()``, except returns in IServer object.
"""
############################################################
## Factories
############################################################
class IPasteAppFactory(object):
"""
This is the spec for the ``paste.app_factory``
protocol/entry_point.
"""
def __call__(global_conf, **local_conf):
"""
Returns a WSGI application (IWSGIAPP) given the global
configuration and the local configuration passed in as keyword
arguments.
All keys are strings, but values in local_conf may not be
valid Python identifiers (if you use ``**kw`` you can still
capture these values).
"""
class IPasteCompositFactory(object):
"""
This is the spec for the ``paste.composit_factory``
protocol/entry_point.
This also produces WSGI applications, like ``paste.app_factory``,
but is given more access to the context in which it is loaded.
"""
def __call__(loader, global_conf, **local_conf):
"""
Like IPasteAppFactory this returns a WSGI application
(IWSGIApp). The ``loader`` value conforms to the ``ILoader``
interface, and can be used to load (contextually) more
applications.
"""
class IPasteFilterFactory(object):
"""
This is the spec for the ``paste.filter_factory``
protocol/entry_point.
"""
def __call__(global_conf, **local_conf):
"""
Returns a IFilter object.
"""
class IPasteFilterAppFactory(object):
"""
This is the spec for the ``paste.filter_app_factory``
protocol/entry_point.
"""
def __call__(wsgi_app, global_conf, **local_conf):
"""
Returns a WSGI application that wraps ``wsgi_app``.
Note that paste.deploy creates a wrapper for these
objects that implement the IFilter interface.
"""
class IPasteServerFactory(object):
"""
This is the spec for the ``paste.server_factory``
protocol/entry_point.
"""
def __call__(global_conf, **local_conf):
"""
Returns a IServer object.
"""
class IPasteServerRunner(object):
"""
This is the spec for the ``paste.server_runner``
protocol/entry_point.
"""
def __call__(wsgi_app, global_conf, **local_conf):
"""
Serves the given WSGI application. May serve once, many
times, forever; nothing about how the server works is
specified here.
Note that paste.deploy creates a wrapper for these
objects that implement the IServer interface.
"""
class ILoader(object):
"""
This is an object passed into ``IPasteCompositFactory``. It is
currently implemented in ``paste.deploy.loadwsgi`` by
``ConfigLoader`` and ``EggLoader``.
"""
def get_app(name_or_uri, global_conf=None):
"""
Return an IWSGIApp object. If the loader supports named
applications, then you can use a simple name; otherwise
you must use a full URI.
Any global configuration you pass in will be added; you should
generally pass through the global configuration you received.
"""
def get_filter(name_or_uri, global_conf=None):
"""
Return an IFilter object, like ``get_app``.
"""
def get_server(name_or_uri, global_conf=None):
"""
Return an IServer object, like ``get_app``.
"""
############################################################
## Objects
############################################################
class IWSGIApp(object):
"""
This is an application that conforms to `PEP 333