Framework.OSS package¶
Submodules¶
Framework.OSS.bottle module¶
Bottle is a fast and simple micro-framework for small web applications. It offers request dispatching (Routes) with URL parameter support, templates, a built-in HTTP Server and adapters for many third party WSGI/HTTP-server and template engines - all in a single file and with no dependencies other than the Python Standard Library.
Homepage and documentation: http://bottlepy.org/
Copyright (c) 2015, Marcel Hellkamp. License: MIT (see LICENSE for details)
-
class
Framework.OSS.bottle.
AiohttpServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Untested. aiohttp https://pypi.python.org/pypi/aiohttp/
-
class
Framework.OSS.bottle.
AppEngineServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Adapter for Google App Engine.
-
quiet
= True¶
-
-
class
Framework.OSS.bottle.
AppStack
[source]¶ Bases:
list
A stack-like list. Calling it returns the head of the stack.
-
default
¶
-
-
class
Framework.OSS.bottle.
AutoServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Untested.
-
adapters
= [<class 'Framework.OSS.bottle.WaitressServer'>, <class 'Framework.OSS.bottle.PasteServer'>, <class 'Framework.OSS.bottle.TwistedServer'>, <class 'Framework.OSS.bottle.CherryPyServer'>, <class 'Framework.OSS.bottle.WSGIRefServer'>]¶
-
-
class
Framework.OSS.bottle.
BaseRequest
(environ=None)[source]¶ Bases:
object
A wrapper for WSGI environment dictionaries that adds a lot of convenient access methods and properties. Most of them are read-only.
Adding new attributes to a request actually adds them to the environ dictionary (as ‘bottle.request.ext.<name>’). This is the recommended way to store and access request-specific data.
-
POST
[source]¶ The values of
forms
andfiles
combined into a singleFormsDict
. Values are either strings (form values) or instances ofcgi.FieldStorage
(file uploads).
-
auth
¶ HTTP authentication data as a (user, password) tuple. This implementation currently supports basic (not digest) authentication only. If the authentication happened at a higher level (e.g. in the front web-server or a middleware), the password field is None, but the user field is looked up from the
REMOTE_USER
environ variable. On any errors, None is returned.
-
body
¶ The HTTP request body as a seek-able file-like object. Depending on
MEMFILE_MAX
, this is either a temporary file or aio.BytesIO
instance. Accessing this property for the first time reads and replaces thewsgi.input
environ variable. Subsequent accesses just do a seek(0) on the file object.
-
chunked
¶ True if Chunked transfer encoding was.
-
content_length
¶ The request body length as an integer. The client is responsible to set this header. Otherwise, the real length of the body is unknown and -1 is returned. In this case,
body
will be empty.
-
content_type
¶ The Content-Type header as a lowercase-string (default: empty).
Cookies parsed into a
FormsDict
. Signed cookies are NOT decoded. Useget_cookie()
if you expect signed cookies.
-
environ
¶ The wrapped WSGI environ dictionary. This is the only real attribute. All other attributes actually are read-only properties.
-
files
[source]¶ File uploads parsed from multipart/form-data encoded POST or PUT request body. The values are instances of
FileUpload
.
-
forms
[source]¶ Form values parsed from an url-encoded or multipart/form-data encoded POST or PUT request body. The result is returned as a
FormsDict
. All keys and values are strings. File uploads are stored separately infiles
.
-
fullpath
¶ Request path including
script_name
(if present).
Return the content of a cookie. To read a Signed Cookie, the secret must match the one used to create the cookie (see
BaseResponse.set_cookie()
). If anything goes wrong (missing cookie or wrong signature), return a default value.
-
get_header
(name, default=None)[source]¶ Return the value of a request header, or a given default value.
-
headers
[source]¶ A
WSGIHeaderDict
that provides case-insensitive access to HTTP request headers.
-
is_xhr
¶ True if the request was triggered by a XMLHttpRequest. This only works with JavaScript libraries that support the X-Requested-With header (most of the popular libraries do).
-
json
[source]¶ If the
Content-Type
header isapplication/json
orapplication/json-rpc
, this property holds the parsed content of the request body. Only requests smaller thanMEMFILE_MAX
are processed to avoid memory exhaustion. Invalid JSON raises a 400 error response.
-
method
¶ The
REQUEST_METHOD
value as an uppercase string.
-
params
[source]¶ A
FormsDict
with the combined values ofquery
andforms
. File uploads are stored infiles
.
-
path
¶ The value of
PATH_INFO
with exactly one prefixed slash (to fix broken clients and avoid the “empty path” edge case).
-
path_shift
(shift=1)[source]¶ - Shift path segments from
path
toscript_name
and - vice versa.
Parameters: shift – The number of path segments to shift. May be negative to change the shift direction. (default: 1) - Shift path segments from
-
query
[source]¶ The
query_string
parsed into aFormsDict
. These values are sometimes called “URL arguments” or “GET parameters”, but not to be confused with “URL wildcards” as they are provided by theRouter
.
-
remote_addr
¶ The client IP as a string. Note that this information can be forged by malicious clients.
-
remote_route
¶ A list of all IPs that were involved in this request, starting with the client IP and followed by zero or more proxies. This does only work if all proxies support the
`X-Forwarded-For
header. Note that this information can be forged by malicious clients.
-
script_name
¶ The initial portion of the URL’s path that was removed by a higher level (server or routing middleware) before the application was called. This script path is returned with leading and tailing slashes.
-
url
¶ The full request URI including hostname and scheme. If your app lives behind a reverse proxy or load balancer and you get confusing results, make sure that the
X-Forwarded-Host
header is set correctly.
-
-
class
Framework.OSS.bottle.
BaseResponse
(body='', status=None, headers=None, **more_headers)[source]¶ Bases:
object
Storage class for a response body as well as headers and cookies.
This class does support dict-like case-insensitive item-access to headers, but is NOT a dict. Most notably, iterating over a response yields parts of the body and not the headers.
Parameters: - body – The response body as one of the supported types.
- status – Either an HTTP status code (e.g. 200) or a status line including the reason phrase (e.g. ‘200 OK’).
- headers – A dictionary or a list of name-value pairs.
Additional keyword arguments are added to the list of headers. Underscores in the header name are replaced with dashes.
-
bad_headers
= {204: set(['Content-Length', 'Content-Type']), 304: set(['Allow', 'Content-Encoding', 'Content-Language', 'Content-Length', 'Content-Md5', 'Content-Range', 'Content-Type', 'Last-Modified'])}¶
-
charset
¶ Return the charset specified in the content-type header (default: utf8).
-
content_length
¶ Current value of the ‘Content-Length’ header.
-
content_type
¶ Current value of the ‘Content-Type’ header.
-
default_content_type
= 'text/html; charset=UTF-8'¶
-
default_status
= 200¶
Delete a cookie. Be sure to use the same domain and path settings as used to create the cookie.
-
expires
¶ Current value of the ‘Expires’ header.
-
get_header
(name, default=None)[source]¶ Return the value of a previously defined header. If there is no header with that name, return a default value.
-
headerlist
¶ WSGI conform list of (header, value) tuples.
-
headers
¶ An instance of
HeaderDict
, a case-insensitive dict-like view on the response headers.
-
iter_headers
()[source]¶ Yield (header, value) tuples, skipping headers that are not allowed with the current response status code.
Create a new cookie or replace an old one. If the secret parameter is set, create a Signed Cookie (described below).
Parameters: - name – the name of the cookie.
- value – the value of the cookie.
- secret – a signature key required for signed cookies.
Additionally, this method accepts all RFC 2109 attributes that are supported by
cookie.Morsel
, including:Parameters: - max_age – maximum age in seconds. (default: None)
- expires – a datetime object or UNIX timestamp. (default: None)
- domain – the domain that is allowed to read the cookie. (default: current domain)
- path – limits the cookie to a given path (default: current path)
- secure – limit the cookie to HTTPS connections (default: off).
- httponly – prevents client-side javascript to read this cookie (default: off, requires Python 2.6 or newer).
If neither expires nor max_age is set (default), the cookie will expire at the end of the browser session (as soon as the browser window is closed).
Signed cookies may store any pickle-able object and are cryptographically signed to prevent manipulation. Keep in mind that cookies are limited to 4kb in most browsers.
Warning: Signed cookies are not encrypted (the client can still see the content) and not copy-protected (the client can restore an old cookie). The main intention is to make pickling and unpickling save, not to store secret information at client side.
-
set_header
(name, value)[source]¶ Create a new response header, replacing any previously defined headers with the same name.
-
status
¶ A writeable property to change the HTTP response status. It accepts either a numeric code (100-999) or a string with a custom reason phrase (e.g. “404 Brain not found”). Both
status_line
andstatus_code
are updated accordingly. The return value is always a status string.
-
status_code
¶ The HTTP status code as an integer (e.g. 404).
-
status_line
¶ The HTTP status line as a string (e.g.
404 Not Found
).
-
class
Framework.OSS.bottle.
BaseTemplate
(source=None, name=None, lookup=None, encoding='utf8', **settings)[source]¶ Bases:
object
Base class and minimal API for template adapters
-
defaults
= {}¶
-
extensions
= ['tpl', 'html', 'thtml', 'stpl']¶
-
classmethod
global_config
(key, *args)[source]¶ This reads or sets the global settings stored in class.settings.
-
prepare
(**options)[source]¶ Run preparations (parsing, caching, …). It should be possible to call this again to refresh a template or to update settings.
-
render
(*args, **kwargs)[source]¶ Render the template with the specified local variables and return a single byte or unicode string. If it is a byte string, the encoding must match self.encoding. This method must be thread-safe! Local variables may be provided in dictionaries (args) or directly, as keywords (kwargs).
-
classmethod
search
(name, lookup=None)[source]¶ Search name in all directories specified in lookup. First without, then with common extensions. Return first hit.
-
settings
= {}¶
-
-
class
Framework.OSS.bottle.
BjoernServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Fast server written in C: https://github.com/jonashaag/bjoern
-
class
Framework.OSS.bottle.
Bottle
(catchall=True, autojson=True)[source]¶ Bases:
object
Each Bottle object represents a single, distinct web application and consists of routes, callbacks, plugins, resources and configuration. Instances are callable WSGI applications.
Parameters: catchall – If true (default), handle all exceptions. Turn off to let debugging middleware handle exceptions. -
add_hook
(name, func)[source]¶ Attach a callback to a hook. Three hooks are currently implemented:
- before_request
- Executed once before each request. The request context is available, but no routing has happened yet.
- after_request
- Executed once after each request regardless of its outcome.
- app_reset
- Called whenever
Bottle.reset()
is called.
-
config
= None¶ A
ConfigDict
for app specific configuration.
-
delete
(path=None, method='DELETE', **options)[source]¶ Equals
route()
with aDELETE
method parameter.
-
hook
(name)[source]¶ Return a decorator that attaches a callback to a hook. See
add_hook()
for details.
-
install
(plugin)[source]¶ Add a plugin to the list of plugins and prepare it for being applied to all routes of this application. A plugin may be a simple decorator or an object that implements the
Plugin
API.
-
match
(environ)[source]¶ Search for a matching route and return a (
Route
, urlargs) tuple. The second value is a dictionary with parameters extracted from the URL. RaiseHTTPError
(404/405) on a non-match.
-
merge
(routes)[source]¶ Merge the routes of another
Bottle
application or a list ofRoute
objects into this application. The routes keep their ‘owner’, meaning that theRoute.app
attribute is not changed.
-
mount
(prefix, app, **options)[source]¶ Mount an application (
Bottle
or plain WSGI) to a specific URL prefix. Example:parent_app.mount('/prefix/', child_app)
Parameters: - prefix – path prefix or mount-point.
- app – an instance of
Bottle
or a WSGI application.
Plugins from the parent application are not applied to the routes of the mounted child application. If you need plugins in the child application, install them separately.
While it is possible to use path wildcards within the prefix path (
Bottle
childs only), it is highly discouraged.The prefix path must end with a slash. If you want to access the root of the child application via /prefix in addition to /prefix/, consider adding a route with a 307 redirect to the parent application.
-
reset
(route=None)[source]¶ Reset all routes (force plugins to be re-applied) and clear all caches. If an ID or route object is given, only that specific route is affected.
-
resources
= None¶ A
ResourceManager
for application files
-
route
(path=None, method='GET', callback=None, name=None, apply=None, skip=None, **config)[source]¶ A decorator to bind a function to a request URL. Example:
@app.route('/hello/<name>') def hello(name): return 'Hello %s' % name
The
<name>
part is a wildcard. SeeRouter
for syntax details.Parameters: - path – Request path or a list of paths to listen to. If no path is specified, it is automatically generated from the signature of the function.
- method – HTTP method (GET, POST, PUT, …) or a list of methods to listen to. (default: GET)
- callback – An optional shortcut to avoid the decorator
syntax.
route(..., callback=func)
equalsroute(...)(func)
- name – The name for this route. (default: None)
- apply – A decorator or plugin or a list of plugins. These are applied to the route callback in addition to installed plugins.
- skip – A list of plugins, plugin classes or names. Matching
plugins are not installed to this route.
True
skips all.
Any additional keyword arguments are stored as route-specific configuration and passed to plugins (see
Plugin.apply()
).
-
-
exception
Framework.OSS.bottle.
BottleException
[source]¶ Bases:
exceptions.Exception
A base class for exceptions used by bottle.
-
class
Framework.OSS.bottle.
CGIServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
-
quiet
= True¶
-
-
class
Framework.OSS.bottle.
CheetahTemplate
(source=None, name=None, lookup=None, encoding='utf8', **settings)[source]¶ Bases:
Framework.OSS.bottle.BaseTemplate
-
prepare
(**options)[source]¶ Run preparations (parsing, caching, …). It should be possible to call this again to refresh a template or to update settings.
-
render
(*args, **kwargs)[source]¶ Render the template with the specified local variables and return a single byte or unicode string. If it is a byte string, the encoding must match self.encoding. This method must be thread-safe! Local variables may be provided in dictionaries (args) or directly, as keywords (kwargs).
-
-
class
Framework.OSS.bottle.
ConfigDict
[source]¶ Bases:
dict
A dict-like configuration storage with additional support for namespaces, validators, meta-data, on_change listeners and more.
-
load_config
(filename)[source]¶ Load values from an
*.ini
style config file.If the config file contains sections, their names are used as namespaces for the values within. The two special sections
DEFAULT
andbottle
refer to the root namespace (no prefix).
-
load_dict
(source, namespace='')[source]¶ Load values from a dictionary structure. Nesting can be used to represent namespaces.
>>> c = ConfigDict() >>> c.load_dict({'some': {'namespace': {'key': 'value'} } }) {'some.namespace.key': 'value'}
-
-
class
Framework.OSS.bottle.
DictProperty
(attr, key=None, read_only=False)[source]¶ Bases:
object
Property that maps to a key in a local dict-like attribute.
-
class
Framework.OSS.bottle.
DieselServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Untested.
-
Framework.OSS.bottle.
ERROR_PAGE_TEMPLATE
= '\n%try:\n %from Framework.OSS.bottle import DEBUG, request\n <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">\n <html>\n <head>\n <title>Error: {{e.status}}</title>\n <style type="text/css">\n html {background-color: #eee; font-family: sans-serif;}\n body {background-color: #fff; border: 1px solid #ddd;\n padding: 15px; margin: 15px;}\n pre {background-color: #eee; border: 1px solid #ddd; padding: 5px;}\n </style>\n </head>\n <body>\n <h1>Error: {{e.status}}</h1>\n <p>Sorry, the requested URL <tt>{{repr(request.url)}}</tt>\n caused an error:</p>\n <pre>{{e.body}}</pre>\n %if DEBUG and e.exception:\n <h2>Exception:</h2>\n <pre>{{repr(e.exception)}}</pre>\n %end\n %if DEBUG and e.traceback:\n <h2>Traceback:</h2>\n <pre>{{e.traceback}}</pre>\n %end\n </body>\n </html>\n%except ImportError:\n <b>ImportError:</b> Could not generate the error page. Please add bottle to\n the import path.\n%end\n'¶ The default template used for error pages. Override with @error()
-
class
Framework.OSS.bottle.
EventletServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Untested. Options:
- backlog adjust the eventlet backlog parameter which is the maximum number of queued connections. Should be at least 1; the maximum value is system-dependent.
- family: (default is 2) socket family, optional. See socket documentation for available families.
-
class
Framework.OSS.bottle.
FapwsServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Extremely fast webserver using libev. See http://www.fapws.org/
-
class
Framework.OSS.bottle.
FileCheckerThread
(lockfile, interval)[source]¶ Bases:
threading.Thread
Interrupt main-thread as soon as a changed module file is detected, the lockfile gets deleted or gets too old.
-
run
()[source]¶ Method representing the thread’s activity.
You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.
-
status
= None¶ Is one of ‘reload’, ‘error’ or ‘exit’
-
-
class
Framework.OSS.bottle.
FileUpload
(fileobj, name, filename, headers=None)[source]¶ Bases:
object
-
content_length
¶ Current value of the ‘Content-Length’ header.
-
content_type
¶ Current value of the ‘Content-Type’ header.
-
file
= None¶ Open file(-like) object (BytesIO buffer or temporary file)
-
filename
[source]¶ Name of the file on the client file system, but normalized to ensure file system compatibility. An empty filename is returned as ‘empty’.
Only ASCII letters, digits, dashes, underscores and dots are allowed in the final filename. Accents are removed, if possible. Whitespace is replaced by a single dash. Leading or tailing dots or dashes are removed. The filename is limited to 255 characters.
-
headers
= None¶ A
HeaderDict
with additional headers (e.g. content-type)
-
name
= None¶ Name of the upload form field
-
raw_filename
= None¶ Raw filename as sent by the client (may contain unsafe characters)
-
save
(destination, overwrite=False, chunk_size=65536)[source]¶ Save file to disk or copy its content to an open file(-like) object. If destination is a directory,
filename
is added to the path. Existing files are not overwritten by default (IOError).Parameters: - destination – File path, directory or file(-like) object.
- overwrite – If True, replace existing files. (default: False)
- chunk_size – Bytes to read at a time. (default: 64kb)
-
-
class
Framework.OSS.bottle.
FormsDict
(*a, **k)[source]¶ Bases:
Framework.OSS.bottle.MultiDict
This
MultiDict
subclass is used to store request form data. Additionally to the normal dict-like item access methods (which return unmodified data as native strings), this container also supports attribute-like access to its values. Attributes are automatically de- or recoded to matchinput_encoding
(default: ‘utf8’). Missing attributes default to an empty string.-
decode
(encoding=None)[source]¶ Returns a copy with all keys and values de- or recoded to match
input_encoding
. Some libraries (e.g. WTForms) want a unicode dictionary.
-
getunicode
(name, default=None, encoding=None)[source]¶ Return the value as a unicode string, or the default.
-
input_encoding
= 'utf8'¶ Encoding used for attribute values.
-
recode_unicode
= True¶ If true (default), unicode strings are first encoded with latin1 and then decoded to match
input_encoding
.
-
-
class
Framework.OSS.bottle.
GeventServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Untested. Options:
- See gevent.wsgi.WSGIServer() documentation for more options.
-
class
Framework.OSS.bottle.
GunicornServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Untested. See http://gunicorn.org/configure.html for options.
-
exception
Framework.OSS.bottle.
HTTPError
(status=None, body=None, exception=None, traceback=None, **more_headers)[source]¶ Bases:
Framework.OSS.bottle.HTTPResponse
-
default_status
= 500¶
-
-
exception
Framework.OSS.bottle.
HTTPResponse
(body='', status=None, headers=None, **more_headers)[source]¶ Bases:
Framework.OSS.bottle.BaseResponse
,Framework.OSS.bottle.BottleException
-
Framework.OSS.bottle.
HTTP_CODES
= {100: 'Continue', 101: 'Switching Protocols', 200: 'OK', 201: 'Created', 202: 'Accepted', 203: 'Non-Authoritative Information', 204: 'No Content', 205: 'Reset Content', 206: 'Partial Content', 300: 'Multiple Choices', 301: 'Moved Permanently', 302: 'Found', 303: 'See Other', 304: 'Not Modified', 305: 'Use Proxy', 306: '(Unused)', 307: 'Temporary Redirect', 400: 'Bad Request', 401: 'Unauthorized', 402: 'Payment Required', 403: 'Forbidden', 404: 'Not Found', 405: 'Method Not Allowed', 406: 'Not Acceptable', 407: 'Proxy Authentication Required', 408: 'Request Timeout', 409: 'Conflict', 410: 'Gone', 411: 'Length Required', 412: 'Precondition Failed', 413: 'Request Entity Too Large', 414: 'Request-URI Too Long', 415: 'Unsupported Media Type', 416: 'Requested Range Not Satisfiable', 417: 'Expectation Failed', 418: "I'm a teapot", 428: 'Precondition Required', 429: 'Too Many Requests', 431: 'Request Header Fields Too Large', 500: 'Internal Server Error', 501: 'Not Implemented', 502: 'Bad Gateway', 503: 'Service Unavailable', 504: 'Gateway Timeout', 505: 'HTTP Version Not Supported', 511: 'Network Authentication Required'}¶ A dict to map HTTP status codes (e.g. 404) to phrases (e.g. ‘Not Found’)
-
class
Framework.OSS.bottle.
HeaderDict
(*a, **ka)[source]¶ Bases:
Framework.OSS.bottle.MultiDict
A case-insensitive version of
MultiDict
that defaults to replace the old value instead of appending it.-
get
(key, default=None, index=-1)[source]¶ Return the most recent value for a key.
Parameters: - default – The default value to be returned if the key is not present or the type conversion fails.
- index – An index for the list of available values.
- type – If defined, this callable is used to cast the value into a specific type. Exception are suppressed and result in the default value to be returned.
-
-
class
Framework.OSS.bottle.
HeaderProperty
(name, reader=None, writer=<type 'str'>, default='')[source]¶ Bases:
object
-
class
Framework.OSS.bottle.
JSONPlugin
(json_dumps=<function dumps>)[source]¶ Bases:
object
-
api
= 2¶
-
name
= 'json'¶
-
-
class
Framework.OSS.bottle.
Jinja2Template
(source=None, name=None, lookup=None, encoding='utf8', **settings)[source]¶ Bases:
Framework.OSS.bottle.BaseTemplate
-
prepare
(filters=None, tests=None, globals={}, **kwargs)[source]¶ Run preparations (parsing, caching, …). It should be possible to call this again to refresh a template or to update settings.
-
render
(*args, **kwargs)[source]¶ Render the template with the specified local variables and return a single byte or unicode string. If it is a byte string, the encoding must match self.encoding. This method must be thread-safe! Local variables may be provided in dictionaries (args) or directly, as keywords (kwargs).
-
-
class
Framework.OSS.bottle.
LocalRequest
(environ=None)[source]¶ Bases:
Framework.OSS.bottle.BaseRequest
A thread-local subclass of
BaseRequest
with a different set of attributes for each thread. There is usually only one global instance of this class (request
). If accessed during a request/response cycle, this instance always refers to the current request (even on a multithreaded server).-
bind
(environ=None)¶ Wrap a WSGI environ dictionary.
-
environ
¶ Thread-local property
-
-
class
Framework.OSS.bottle.
LocalResponse
(body='', status=None, headers=None, **more_headers)[source]¶ Bases:
Framework.OSS.bottle.BaseResponse
A thread-local subclass of
BaseResponse
with a different set of attributes for each thread. There is usually only one global instance of this class (response
). Its attributes are used to build the HTTP response at the end of the request/response cycle.-
bind
(body='', status=None, headers=None, **more_headers)¶ x.__init__(…) initializes x; see help(type(x)) for signature
-
body
¶ Thread-local property
-
-
class
Framework.OSS.bottle.
MakoTemplate
(source=None, name=None, lookup=None, encoding='utf8', **settings)[source]¶ Bases:
Framework.OSS.bottle.BaseTemplate
-
prepare
(**options)[source]¶ Run preparations (parsing, caching, …). It should be possible to call this again to refresh a template or to update settings.
-
render
(*args, **kwargs)[source]¶ Render the template with the specified local variables and return a single byte or unicode string. If it is a byte string, the encoding must match self.encoding. This method must be thread-safe! Local variables may be provided in dictionaries (args) or directly, as keywords (kwargs).
-
-
class
Framework.OSS.bottle.
MultiDict
(*a, **k)[source]¶ Bases:
_abcoll.MutableMapping
This dict stores multiple values per key, but behaves exactly like a normal dict in that it returns only the newest value for any given key. There are special methods available to access the full list of values.
-
get
(key, default=None, index=-1, type=None)[source]¶ Return the most recent value for a key.
Parameters: - default – The default value to be returned if the key is not present or the type conversion fails.
- index – An index for the list of available values.
- type – If defined, this callable is used to cast the value into a specific type. Exception are suppressed and result in the default value to be returned.
-
getlist
(key)¶ Return a (possibly empty) list of values for a key.
-
getone
(key, default=None, index=-1, type=None)¶ Aliases for WTForms to mimic other multi-dict APIs (Django)
-
-
Framework.OSS.bottle.
Request
¶ alias of
Framework.OSS.bottle.BaseRequest
-
class
Framework.OSS.bottle.
ResourceManager
(base='./', opener=<built-in function open>, cachemode='all')[source]¶ Bases:
object
This class manages a list of search paths and helps to find and open application-bound resources (files).
Parameters: - base – default value for
add_path()
calls. - opener – callable used to open resources.
- cachemode – controls which lookups are cached. One of ‘all’, ‘found’ or ‘none’.
-
add_path
(path, base=None, index=None, create=False)[source]¶ Add a new path to the list of search paths. Return False if the path does not exist.
Parameters: - path – The new search path. Relative paths are turned into an absolute and normalized form. If the path looks like a file (not ending in /), the filename is stripped off.
- base – Path used to absolutize relative search paths.
Defaults to
base
which defaults toos.getcwd()
. - index – Position within the list of search paths. Defaults to last index (appends to the list).
The base parameter makes it easy to reference files installed along with a python module or package:
res.add_path('./resources/', __file__)
-
cache
= None¶ A cache for resolved paths.
res.cache.clear()
clears the cache.
-
lookup
(name)[source]¶ Search for a resource and return an absolute file path, or None.
The
path
list is searched in order. The first match is returend. Symlinks are followed. The result is cached to speed up future lookups.
-
open
(name, mode='r', *args, **kwargs)[source]¶ Find a resource and return a file object, or raise IOError.
-
path
= None¶ A list of search paths. See
add_path()
for details.
- base – default value for
-
Framework.OSS.bottle.
Response
¶ alias of
Framework.OSS.bottle.BaseResponse
-
class
Framework.OSS.bottle.
RocketServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Untested.
-
class
Framework.OSS.bottle.
Route
(app, rule, method, callback, name=None, plugins=None, skiplist=None, **config)[source]¶ Bases:
object
This class wraps a route callback along with route specific metadata and configuration and applies Plugins on demand. It is also responsible for turing an URL path rule into a regular expression usable by the Router.
-
app
= None¶ The application this route is installed to.
-
call
[source]¶ The route callback with all plugins applied. This property is created on demand and then cached to speed up subsequent requests.
-
callback
= None¶ The original callback with no plugins applied. Useful for introspection.
-
config
= None¶ Additional keyword arguments passed to the
Bottle.route()
decorator are stored in this dictionary. Used for route-specific plugin configuration and meta-data.
-
get_callback_args
()[source]¶ Return a list of argument names the callback (most likely) accepts as keyword arguments. If the callback is a decorated function, try to recover the original function before inspection.
-
get_config
(key, default=None)[source]¶ Lookup a config field and return its value, first checking the route.config, then route.app.config.
-
get_undecorated_callback
()[source]¶ Return the callback. If the callback is a decorated function, try to recover the original function.
-
method
= None¶ The HTTP method as a string (e.g.
GET
).
-
name
= None¶ The name of the route (if specified) or
None
.
-
plugins
= None¶ A list of route-specific plugins (see
Bottle.route()
).
-
reset
()[source]¶ Forget any cached values. The next time
call
is accessed, all plugins are re-applied.
-
rule
= None¶ The path-rule string (e.g.
/wiki/<page>
).
-
skiplist
= None¶ A list of plugins to not apply to this route (see
Bottle.route()
).
-
-
exception
Framework.OSS.bottle.
RouteBuildError
[source]¶ Bases:
Framework.OSS.bottle.RouteError
The route could not be built.
-
exception
Framework.OSS.bottle.
RouteError
[source]¶ Bases:
Framework.OSS.bottle.BottleException
This is a base class for all routing related exceptions
-
exception
Framework.OSS.bottle.
RouteReset
[source]¶ Bases:
Framework.OSS.bottle.BottleException
If raised by a plugin or request handler, the route is reset and all plugins are re-applied.
-
exception
Framework.OSS.bottle.
RouteSyntaxError
[source]¶ Bases:
Framework.OSS.bottle.RouteError
The route parser found something not supported by this router.
-
class
Framework.OSS.bottle.
Router
(strict=False)[source]¶ Bases:
object
A Router is an ordered collection of route->target pairs. It is used to efficiently match WSGI requests against a number of routes and return the first target that satisfies the request. The target may be anything, usually a string, ID or callable object. A route consists of a path-rule and a HTTP method.
The path-rule is either a static path (e.g. /contact) or a dynamic path that contains wildcards (e.g. /wiki/<page>). The wildcard syntax and details on the matching order are described in docs:routing.
-
add
(rule, method, target, name=None)[source]¶ Add a new rule or replace the target for an existing rule.
-
add_filter
(name, func)[source]¶ Add a filter. The provided function is called with the configuration string as parameter and must return a (regexp, to_python, to_url) tuple. The first element is a string, the last two are callables or None.
-
default_filter
= 're'¶
-
default_pattern
= '[^/]+'¶
-
rule_syntax
= <_sre.SRE_Pattern object>¶
-
strict_order
= None¶ If true, static routes are no longer checked first.
-
-
class
Framework.OSS.bottle.
ServerAdapter
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
object
-
quiet
= False¶
-
-
class
Framework.OSS.bottle.
SimpleTemplate
(source=None, name=None, lookup=None, encoding='utf8', **settings)[source]¶
-
class
Framework.OSS.bottle.
StplParser
(source, syntax=None, encoding='utf8')[source]¶ Bases:
object
Parser for stpl templates.
-
default_syntax
= '<% %> % {{ }}'¶
-
syntax
¶ Tokens as a space separated string (default: <% %> % {{ }})
-
-
class
Framework.OSS.bottle.
TemplatePlugin
[source]¶ Bases:
object
This plugin applies the
view()
decorator to all routes with a template config parameter. If the parameter is a tuple, the second element must be a dict with additional options (e.g. template_engine) or default variables for the template.-
api
= 2¶
-
name
= 'template'¶
-
-
class
Framework.OSS.bottle.
TornadoServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
The super hyped asynchronous server by facebook. Untested.
-
class
Framework.OSS.bottle.
TwistedServer
(host='127.0.0.1', port=8080, **options)[source]¶ Bases:
Framework.OSS.bottle.ServerAdapter
Untested.
-
class
Framework.OSS.bottle.
WSGIHeaderDict
(environ)[source]¶ Bases:
_abcoll.MutableMapping
This dict-like class wraps a WSGI environ dict and provides convenient access to HTTP_* fields. Keys and values are native strings (2.x bytes or 3.x unicode) and keys are case-insensitive. If the WSGI environment contains non-native string values, these are de- or encoded using a lossless ‘latin1’ character set.
The API will remain stable even on changes to the relevant PEPs. Currently PEP 333, 444 and 3333 are supported. (PEP 444 is the only one that uses non-native strings.)
-
cgikeys
= ('CONTENT_TYPE', 'CONTENT_LENGTH')¶ List of keys that do not have a
HTTP_
prefix.
-
-
Framework.OSS.bottle.
abort
(code=500, text='Unknown Error.')[source]¶ Aborts execution and causes a HTTP error.
-
Framework.OSS.bottle.
auth_basic
(check, realm='private', text='Access denied')[source]¶ Callback decorator to require HTTP auth (basic). TODO: Add route(check_auth=…) parameter.
-
class
Framework.OSS.bottle.
cached_property
(func)[source]¶ Bases:
object
A property that is only computed once per instance and then replaces itself with an ordinary attribute. Deleting the attribute resets the property.
-
Framework.OSS.bottle.
cheetah_template
()¶ Get a rendered template as a string iterator. You can use a name, a filename or a template string as first parameter. Template rendering arguments can be passed as dictionaries or directly (as keyword arguments).
-
Framework.OSS.bottle.
cheetah_view
()¶ Decorator: renders a template for a handler. The handler can control its behavior like that:
- return a dict of template vars to fill out the template
- return something other than a dict and the view decorator will not process the template, but return the handler result as is. This includes returning a HTTPResponse(dict) to get, for instance, JSON with autojson or other castfilters.
Verify and decode an encoded string. Return an object or None.
Encode and sign a pickle-able object. Return a (byte) string
Return True if the argument looks like a encoded cookie.
-
Framework.OSS.bottle.
debug
(mode=True)[source]¶ Change the debug level. There is only one debug level supported at the moment.
-
Framework.OSS.bottle.
error
(*a, **ka)¶ Decorator: Register an output handler for a HTTP error code
-
Framework.OSS.bottle.
ext
= <module 'Framework.OSS.bottle.ext' from '/home/docs/checkouts/readthedocs.org/user_builds/warriorframework/checkouts/stable/warrior/Framework/OSS/bottle.py'>¶ A virtual package that redirects import statements. Example:
import bottle.ext.sqlite
actually imports bottle_sqlite.
-
Framework.OSS.bottle.
hook
(*a, **ka)¶ Return a decorator that attaches a callback to a hook. See
add_hook()
for details.
-
Framework.OSS.bottle.
html_quote
(string)[source]¶ Escape and quote a string to be used as an HTTP attribute.
-
Framework.OSS.bottle.
install
(*a, **ka)¶ Add a plugin to the list of plugins and prepare it for being applied to all routes of this application. A plugin may be a simple decorator or an object that implements the
Plugin
API.
-
Framework.OSS.bottle.
jinja2_template
()¶ Get a rendered template as a string iterator. You can use a name, a filename or a template string as first parameter. Template rendering arguments can be passed as dictionaries or directly (as keyword arguments).
-
Framework.OSS.bottle.
jinja2_view
()¶ Decorator: renders a template for a handler. The handler can control its behavior like that:
- return a dict of template vars to fill out the template
- return something other than a dict and the view decorator will not process the template, but return the handler result as is. This includes returning a HTTPResponse(dict) to get, for instance, JSON with autojson or other castfilters.
-
class
Framework.OSS.bottle.
lazy_attribute
(func)[source]¶ Bases:
object
A property that caches itself to the class object.
-
Framework.OSS.bottle.
load
(target, **namespace)[source]¶ Import a module or fetch an object from a module.
package.module
returns module as a module object.pack.mod:name
returns the module variable name from pack.mod.pack.mod:func()
calls pack.mod.func() and returns the result.
The last form accepts not only function calls, but any type of expression. Keyword arguments passed to this function are available as local variables. Example:
import_string('re:compile(x)', x='[a-z]')
-
Framework.OSS.bottle.
load_app
(target)[source]¶ Load a bottle application from a module and make sure that the import does not affect the current default application, but returns a separate application object. See
load()
for the target parameter.
-
Framework.OSS.bottle.
local
= <thread._local object>¶ A thread-safe namespace. Not used by Bottle.
-
Framework.OSS.bottle.
make_default_app_wrapper
(name)[source]¶ Return a callable that relays calls to the current default app.
-
Framework.OSS.bottle.
mako_template
()¶ Get a rendered template as a string iterator. You can use a name, a filename or a template string as first parameter. Template rendering arguments can be passed as dictionaries or directly (as keyword arguments).
-
Framework.OSS.bottle.
mako_view
()¶ Decorator: renders a template for a handler. The handler can control its behavior like that:
- return a dict of template vars to fill out the template
- return something other than a dict and the view decorator will not process the template, but return the handler result as is. This includes returning a HTTPResponse(dict) to get, for instance, JSON with autojson or other castfilters.
-
Framework.OSS.bottle.
mount
(*a, **ka)¶ Mount an application (
Bottle
or plain WSGI) to a specific URL prefix. Example:parent_app.mount('/prefix/', child_app)
Parameters: - prefix – path prefix or mount-point.
- app – an instance of
Bottle
or a WSGI application.
Plugins from the parent application are not applied to the routes of the mounted child application. If you need plugins in the child application, install them separately.
While it is possible to use path wildcards within the prefix path (
Bottle
childs only), it is highly discouraged.The prefix path must end with a slash. If you want to access the root of the child application via /prefix in addition to /prefix/, consider adding a route with a 307 redirect to the parent application.
-
Framework.OSS.bottle.
parse_auth
(header)[source]¶ Parse rfc2617 HTTP authentication header string (basic) and return (user,pass) tuple or None
-
Framework.OSS.bottle.
parse_date
(ims)[source]¶ Parse rfc1123, rfc850 and asctime timestamps and return UTC epoch.
-
Framework.OSS.bottle.
parse_range_header
(header, maxlen=0)[source]¶ Yield (start, end) ranges parsed from a HTTP Range header. Skip unsatisfiable ranges. The end index is non-inclusive.
-
Framework.OSS.bottle.
path_shift
(script_name, path_info, shift=1)[source]¶ Shift path fragments from PATH_INFO to SCRIPT_NAME and vice versa.
Returns: The modified paths.
Parameters: - script_name – The SCRIPT_NAME path.
- script_name – The PATH_INFO path.
- shift – The number of path fragments to shift. May be negative to change the shift direction. (default: 1)
-
Framework.OSS.bottle.
redirect
(url, code=None)[source]¶ Aborts execution and causes a 303 or 302 redirect, depending on the HTTP protocol version.
-
Framework.OSS.bottle.
request
= <LocalRequest: GET http://127.0.0.1/>¶ A thread-safe instance of
LocalRequest
. If accessed from within a request callback, this instance always refers to the current request (even on a multi-threaded server).
-
Framework.OSS.bottle.
response
= Content-Type: text/html; charset=UTF-8 ¶ A thread-safe instance of
LocalResponse
. It is used to change the HTTP response for the current request.
-
Framework.OSS.bottle.
route
(*a, **ka)¶ A decorator to bind a function to a request URL. Example:
@app.route('/hello/<name>') def hello(name): return 'Hello %s' % name
The
<name>
part is a wildcard. SeeRouter
for syntax details.Parameters: - path – Request path or a list of paths to listen to. If no path is specified, it is automatically generated from the signature of the function.
- method – HTTP method (GET, POST, PUT, …) or a list of methods to listen to. (default: GET)
- callback – An optional shortcut to avoid the decorator
syntax.
route(..., callback=func)
equalsroute(...)(func)
- name – The name for this route. (default: None)
- apply – A decorator or plugin or a list of plugins. These are applied to the route callback in addition to installed plugins.
- skip – A list of plugins, plugin classes or names. Matching
plugins are not installed to this route.
True
skips all.
Any additional keyword arguments are stored as route-specific configuration and passed to plugins (see
Plugin.apply()
).
-
Framework.OSS.bottle.
run
(app=None, server='wsgiref', host='127.0.0.1', port=8080, interval=1, reloader=False, quiet=False, plugins=None, debug=None, config=None, **kargs)[source]¶ Start a server instance. This method blocks until the server terminates.
Parameters: - app – WSGI application or target string supported by
load_app()
. (default:default_app()
) - server – Server adapter to use. See
server_names
keys for valid names or pass aServerAdapter
subclass. (default: wsgiref) - host – Server address to bind to. Pass
0.0.0.0
to listens on all interfaces including the external one. (default: 127.0.0.1) - port – Server port to bind to. Values below 1024 require root privileges. (default: 8080)
- reloader – Start auto-reloading server? (default: False)
- interval – Auto-reloader interval in seconds (default: 1)
- quiet – Suppress output to stdout and stderr? (default: False)
- options – Options passed to the server adapter.
- app – WSGI application or target string supported by
-
Framework.OSS.bottle.
static_file
(filename, root, mimetype=True, download=False, charset='UTF-8', etag=None)[source]¶ Open a file in a safe way and return an instance of
HTTPResponse
that can be sent back to the client.Parameters: - filename – Name or path of the file to send, relative to
root
. - root – Root path for file lookups. Should be an absolute directory path.
- mimetype – Provide the content-type header (default: guess from file extension)
- download – If True, ask the browser to open a Save as… dialog instead of opening the file with the associated program. You can specify a custom filename as a string. If not specified, the original filename is used (default: False).
- charset – The charset for files with a
text/*
mime-type. (default: UTF-8) - etag – Provide a pre-computed ETag header. If set to
False
, ETag handling is disabled. (default: auto-generate ETag header)
While checking user input is always a good idea, this function provides additional protection against malicious
filename
parameters from breaking out of theroot
directory and leaking sensitive information to an attacker.Read-protected files or files outside of the
root
directory are answered with403 Access Denied
. Missing files result in a404 Not Found
response. Conditional requests (If-Modified-Since
,If-None-Match
) are answered with304 Not Modified
whenever possible.HEAD
andRange
requests (used by download managers to check or continue partial downloads) are also handled automatically.- filename – Name or path of the file to send, relative to
-
Framework.OSS.bottle.
template
(*args, **kwargs)[source]¶ Get a rendered template as a string iterator. You can use a name, a filename or a template string as first parameter. Template rendering arguments can be passed as dictionaries or directly (as keyword arguments).
-
Framework.OSS.bottle.
tonat
(s, enc='utf8')¶
-
Framework.OSS.bottle.
uninstall
(*a, **ka)¶ Uninstall plugins. Pass an instance to remove a specific plugin, a type object to remove all plugins that match that type, a string to remove all plugins with a matching
name
attribute orTrue
to remove all plugins. Return the list of removed plugins.
-
Framework.OSS.bottle.
url
(*a, **ka)¶ Return a string that matches a named route
-
Framework.OSS.bottle.
view
(tpl_name, **defaults)[source]¶ Decorator: renders a template for a handler. The handler can control its behavior like that:
- return a dict of template vars to fill out the template
- return something other than a dict and the view decorator will not process the template, but return the handler result as is. This includes returning a HTTPResponse(dict) to get, for instance, JSON with autojson or other castfilters.
-
Framework.OSS.bottle.
yieldroutes
(func)[source]¶ Return a generator for routes that match the signature (name, args) of the func parameter. This may yield more than one route if the function takes optional keyword arguments. The output is best described by example:
a() -> '/a' b(x, y) -> '/b/<x>/<y>' c(x, y=5) -> '/c/<x>' and '/c/<x>/<y>' d(x=5, y=6) -> '/d' and '/d/<x>' and '/d/<x>/<y>'
Framework.OSS.xmltodict module¶
Makes working with XML feel like you are working with JSON
-
Framework.OSS.xmltodict.
parse
(xml_input, encoding=None, expat=<module 'xml.parsers.expat' from '/home/docs/.pyenv/versions/2.7.18/lib/python2.7/xml/parsers/expat.pyc'>, process_namespaces=False, namespace_separator=':', **kwargs)[source]¶ Parse the given XML input and convert it into a dictionary.
xml_input can either be a string or a file-like object.
If xml_attribs is True, element attributes are put in the dictionary among regular child elements, using @ as a prefix to avoid collisions. If set to False, they are just ignored.
Simple example:
>>> import xmltodict >>> doc = xmltodict.parse(""" ... <a prop="x"> ... <b>1</b> ... <b>2</b> ... </a> ... """) >>> doc['a']['@prop'] u'x' >>> doc['a']['b'] [u'1', u'2']
If item_depth is 0, the function returns a dictionary for the root element (default behavior). Otherwise, it calls item_callback every time an item at the specified depth is found and returns None in the end (streaming mode).
The callback function receives two parameters: the path from the document root to the item (name-attribs pairs), and the item (dict). If the callback’s return value is false-ish, parsing will be stopped with the
ParsingInterrupted
exception.Streaming example:
>>> def handle(path, item): ... print 'path:%s item:%s' % (path, item) ... return True ... >>> xmltodict.parse(""" ... <a prop="x"> ... <b>1</b> ... <b>2</b> ... </a>""", item_depth=2, item_callback=handle) path:[(u'a', {u'prop': u'x'}), (u'b', None)] item:1 path:[(u'a', {u'prop': u'x'}), (u'b', None)] item:2
The optional argument postprocessor is a function that takes path, key and value as positional arguments and returns a new (key, value) pair where both key and value may have changed. Usage example:
>>> def postprocessor(path, key, value): ... try: ... return key + ':int', int(value) ... except (ValueError, TypeError): ... return key, value >>> xmltodict.parse('<a><b>1</b><b>2</b><b>x</b></a>', ... postprocessor=postprocessor) OrderedDict([(u'a', OrderedDict([(u'b:int', [1, 2]), (u'b', u'x')]))])
You can pass an alternate version of expat (such as defusedexpat) by using the expat parameter. E.g:
>>> import defusedexpat >>> xmltodict.parse('<a>hello</a>', expat=defusedexpat.pyexpat) OrderedDict([(u'a', u'hello')])
You can use the force_list argument to force lists to be created even when there is only a single child of a given level of hierarchy. The force_list argument is a tuple of keys. If the key for a given level of hierarchy is in the force_list argument, that level of hierarchy will have a list as a child (even if there is only one sub-element). The index_keys operation takes precendence over this. This is applied after any user-supplied postprocessor has already run.
For example, given this input: <servers>
- <server>
<name>host1</name> <os>Linux</os> <interfaces>
- <interface>
- <name>em0</name> <ip_address>10.0.0.1</ip_address>
</interface>
</interfaces>
</server>
</servers>
If called with force_list=(‘interface’,), it will produce this dictionary: {‘servers’:
- {‘server’:
- {‘name’: ‘host1’,
‘os’: ‘Linux’}, ‘interfaces’:
- {‘interface’:
- [ {‘name’: ‘em0’, ‘ip_address’: ‘10.0.0.1’ } ] } } }
force_list can also be a callable that receives path, key and value. This is helpful in cases where the logic that decides whether a list should be forced is more complex.
-
Framework.OSS.xmltodict.
unparse
(input_dict, output=None, encoding='utf-8', full_document=True, **kwargs)[source]¶ Emit an XML document for the given input_dict (reverse of parse).
The resulting XML document is returned as a string, but if output (a file-like object) is specified, it is written there instead.
Dictionary keys prefixed with attr_prefix (default=`’@’) are interpreted as XML node attributes, whereas keys equal to `cdata_key (default=`’#text’`) are treated as character data.
The pretty parameter (default=`False`) enables pretty-printing. In this mode, lines are terminated with `’
- ‘` and indented with ‘ ‘, but this
- can be customized with the newl and indent parameters.
Module contents¶
Copyright 2017, Fujitsu Network Communications, Inc. Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.