webob
– WebOb¶webob.
Request
(environ, charset=None, unicode_errors=None, decode_param_names=None, **kw)¶The default request implementation
webob.
Response
(body=None, status=None, headerlist=None, app_iter=None, content_type=None, conditional_response=None, charset=<object object>, **kw)¶Represents a WSGI response.
If no arguments are passed, creates a Response
that uses a
variety of defaults. The defaults may be changed by sub-classing the
Response
. See the sub-classing notes.
Variables: |
|
---|
All other response attributes may be set on the response by providing them
as keyword arguments. A TypeError
will be raised for any unexpected
keywords.
Sub-classing notes:
default_content_type
is used as the default for the
Content-Type
header that is returned on the response. It is
text/html
.default_charset
is used as the default character set to return on
the Content-Type
header, if the Content-Type
allows for a
charset
parameter. Currently the only Content-Type
’s that allow
for a charset
are defined to be: text/*
, application/xml
, and
*/*+xml
. Any other Content-Type
’s will not have a charset
added.unicode_errors
is set to strict
, and access on a
text
will raise an error if it fails to decode the
body
.default_conditional_response
is set to False
. This flag may be
set to True
so that all Response
objects will attempt to check
the original request for conditional response headers. See
conditional_response_app()
for more information.default_body_encoding
is set to ‘UTF-8’ by default. It exists to
allow users to get/set the Response
object using .text
, even if
no charset
has been set for the Content-Type
.accept_ranges
¶Gets and sets the Accept-Ranges
header (HTTP spec section 14.5).
age
¶Gets and sets the Age
header (HTTP spec section 14.6). Converts it using int.
allow
¶Gets and sets the Allow
header (HTTP spec section 14.7). Converts it using list.
app_iter
¶Returns the app_iter
of the response.
If body
was set, this will create an app_iter
from that
body
(a single-item list).
app_iter_range
(start, stop)¶Return a new app_iter
built from the response app_iter
, that
serves up only the given start:stop
range.
body_file
¶A file-like object that can be used to write to the
body. If you passed in a list app_iter
, that app_iter
will be
modified by writes.
cache_control
¶Get/set/modify the Cache-Control header (HTTP spec section 14.9).
charset
¶Get/set the charset
specified in Content-Type
.
There is no checking to validate that a content_type
actually
allows for a charset
parameter.
conditional_response_app
(environ, start_response)¶Like the normal __call__
interface, but checks conditional headers:
If-Modified-Since
(304 Not Modified
; only onGET
,HEAD
)If-None-Match
(304 Not Modified
; only onGET
,HEAD
)Range
(406 Partial Content
; only onGET
,HEAD
)
content_disposition
¶Gets and sets the Content-Disposition
header (HTTP spec section 19.5.1).
content_encoding
¶Gets and sets the Content-Encoding
header (HTTP spec section 14.11).
content_language
¶Gets and sets the Content-Language
header (HTTP spec section 14.12). Converts it using list.
content_length
¶Gets and sets the Content-Length
header (HTTP spec section 14.17). Converts it using int.
content_location
¶Gets and sets the Content-Location
header (HTTP spec section 14.14).
content_md5
¶Gets and sets the Content-MD5
header (HTTP spec section 14.14).
content_range
¶Gets and sets the Content-Range
header (HTTP spec section 14.16). Converts it using ContentRange object.
content_type
¶Get/set the Content-Type
header. If no Content-Type
header is
set, this will return None
.
Changed in version 1.7: Setting a new Content-Type
will remove all Content-Type
parameters and reset the charset
to the default if the
Content-Type
is text/*
or XML (application/xml
or
*/*+xml
).
To preserve all Content-Type
parameters, you may use the
following code:
resp = Response()
params = resp.content_type_params
resp.content_type = 'application/something'
resp.content_type_params = params
content_type_params
¶A dictionary of all the parameters in the content type.
(This is not a view, set to change, modifications of the dict will not be applied otherwise.)
copy
()¶Makes a copy of the response.
date
¶Gets and sets the Date
header (HTTP spec section 14.18). Converts it using HTTP date.
Delete a cookie from the client. Note that path
and domain
must match how the cookie was originally set.
This sets the cookie to the empty string, and max_age=0
so
that it should expire immediately.
encode_content
(encoding='gzip', lazy=False)¶Encode the content with the given encoding (only gzip
and
identity
are supported).
etag
¶Gets and sets the ETag
header (HTTP spec section 14.19). Converts it using Entity tag.
expires
¶Gets and sets the Expires
header (HTTP spec section 14.21). Converts it using HTTP date.
from_file
(fp)¶Reads a response from a file-like object (it must implement
.read(size)
and .readline()
).
It will read up to the end of the response, not the end of the file.
This reads the response as represented by str(resp)
; it
may not read every valid HTTP response properly. Responses
must have a Content-Length
.
has_body
¶Determine if the the response has a body
. In
contrast to simply accessing body
, this method
will not read the underlying app_iter
.
headerlist
¶The list of response headers.
headers
¶The headers in a dictionary-like object.
json
¶Set/get the body of the response as JSON.
json_body
¶Set/get the body of the response as JSON.
last_modified
¶Gets and sets the Last-Modified
header (HTTP spec section 14.29). Converts it using HTTP date.
location
¶Gets and sets the Location
header (HTTP spec section 14.30).
md5_etag
(body=None, set_content_md5=False)¶Generate an etag for the response object using an MD5 hash of
the body (the body
parameter, or self.body
if not given).
Sets self.etag
.
If set_content_md5
is True
, sets self.content_md5
as well.
Merge the cookies that were set on this response with the
given resp
object (which can be any WSGI application).
If the resp
is a webob.Response
object, then the
other object will be modified in-place.
pragma
¶Gets and sets the Pragma
header (HTTP spec section 14.32).
retry_after
¶Gets and sets the Retry-After
header (HTTP spec section 14.37). Converts it using HTTP date or delta seconds.
server
¶Gets and sets the Server
header (HTTP spec section 14.38).
Set (add) a cookie for the response.
Arguments are:
name
The cookie name.
value
The cookie value, which should be a string orNone
. Ifvalue
isNone
, it’s equivalent to calling thewebob.response.Response.unset_cookie()
method for this cookie key (it effectively deletes the cookie on the client).
max_age
An integer representing a number of seconds,datetime.timedelta
, orNone
. This value is used as theMax-Age
of the generated cookie. Ifexpires
is not passed and this value is notNone
, themax_age
value will also influence theExpires
value of the cookie (Expires
will be set tonow
+max_age
). If this value isNone
, the cookie will not have aMax-Age
value (unlessexpires
is set). If bothmax_age
andexpires
are set, this value takes precedence.
path
A string representing the cookiePath
value. It defaults to/
.
domain
A string representing the cookieDomain
, orNone
. If domain isNone
, noDomain
value will be sent in the cookie.
secure
A boolean. If it’sTrue
, thesecure
flag will be sent in the cookie, if it’sFalse
, thesecure
flag will not be sent in the cookie.
httponly
A boolean. If it’sTrue
, theHttpOnly
flag will be sent in the cookie, if it’sFalse
, theHttpOnly
flag will not be sent in the cookie.
samesite
A string representing theSameSite
attribute of the cookie orNone
. If samesite isNone
noSameSite
value will be sent in the cookie. Should only be"Strict"
or"Lax"
.
comment
A string representing the cookieComment
value, orNone
. Ifcomment
isNone
, noComment
value will be sent in the cookie.
expires
A
datetime.timedelta
object representing an amount of time,datetime.datetime
orNone
. A non-None
value is used to generate theExpires
value of the generated cookie. Ifmax_age
is not passed, but this value is notNone
, it will influence theMax-Age
header. If this value isNone
, theExpires
cookie value will be unset (unlessmax_age
is set). Ifmax_age
is set, it will be used to generate theexpires
and this value is ignored.If a
datetime.datetime
is provided it has to either be timezone aware or be based on UTC.datetime.datetime
objects that are local time are not supported. Timezone awaredatetime.datetime
objects are converted to UTC.This argument will be removed in future versions of WebOb (version 1.9).
overwrite
If this key isTrue
, before setting the cookie, unset any existing cookie.
status
¶The status string.
status_code
¶The status as an integer.
status_int
¶The status as an integer.
text
¶Get/set the text value of the body using the charset
of the
Content-Type
or the default_body_encoding
.
ubody
¶Deprecated alias for .text
unicode_body
¶Deprecated alias for .text
Unset a cookie with the given name (remove it from the response).
vary
¶Gets and sets the Vary
header (HTTP spec section 14.44). Converts it using list.
www_authenticate
¶Gets and sets the WWW-Authenticate
header (HTTP spec section 14.47). Converts it using parse_auth
and serialize_auth
.
webob.
html_escape
(s)¶HTML-escape a string or object
This converts any non-string objects passed into it to strings
(actually, using unicode()
). All values returned are
non-unicode strings (using &#num;
entities for all non-ASCII
characters).
None is treated specially, and returns the empty string.
webob.
timedelta_to_seconds
(td)¶Converts a timedelta instance to seconds.
webob.acceptparse
¶webob.acceptparse.
Accept
¶Represent an Accept
header.
Base class for AcceptValidHeader
, AcceptNoHeader
, and
AcceptInvalidHeader
.
parse
(value)¶Parse an Accept
header.
Parameters: | value – (str ) header value |
---|---|
Returns: | If value is a valid Accept header, returns an iterator
of (media_range, qvalue, media_type_params,
extension_params) tuples, as parsed from the header from
left to right.media_range is the media range, including any media type
parameters. The media range is returned in a canonicalised
form (except the case of the characters are unchanged):
unnecessary spaces around the semicolons before media type
parameters are removed; the parameter values are returned in
a form where only the ‘
\ ’ and ‘" ’ characters are
escaped, and the values are quoted with double quotes only
if they need to be quoted.qvalue is the quality value of the media range.
media_type_params is the media type parameters, as a list
of (parameter name, value) tuples.
extension_params is the extension parameters, as a list
where each item is either a parameter string or a (parameter
name, value) tuple.
|
Raises: | ValueError – if value is an invalid header |
parse_offer
(offer)¶Parse an offer into its component parts.
Parameters: | offer – A media type or range in the format
type/subtype[;params] . |
---|---|
Returns: | A named tuple containing (*type*, *subtype*, *params*) .params is a list containing
(*parameter name*, *value*)
values. |
Raises: | ValueError – If the offer does not match the required format. |
webob.acceptparse.
MIMEAccept
(header_value)¶Backwards compatibility shim for the new functionality provided by AcceptValidHeader, AcceptInvalidHeader, or AcceptNoHeader, that acts like the old MIMEAccept from WebOb version 1.7 or lower.
This shim does use the newer Accept header parsing, which will mean your application may be less liberal in what Accept headers are correctly parsed. It is recommended that user agents be updated to send appropriate Accept headers that are valid according to rfc:RFC 7231, section 5.3.2 <7231#section-5.3.2>
Deprecated since version 1.8: Instead of directly creating the Accept object, please see:
create_accept_header(header_value)
, which will create the
appropriate object.
This shim has an extended deprecation period to allow for application developers to switch the to new API.
webob.byterange
¶webob.byterange.
Range
(start, end)¶Represents the Range header.
content_range
(length)¶Works like range_for_length; returns None or a ContentRange object
You can use it like:
response.content_range = req.range.content_range(response.content_length)
Though it’s still up to you to actually serve that content range!
parse
(header)¶Parse the header; may return None if header is invalid
range_for_length
(length)¶If there is only one range, and if it is satisfiable by the given length, then return a (start, end) non-inclusive range of bytes to serve. Otherwise return None
webob.cachecontrol
¶Represents the Cache-Control header
webob.cachecontrol.
exists_property
(prop, type=None)¶Represents a property that either is listed in the Cache-Control header, or is not listed (has no value)
webob.cachecontrol.
value_property
(prop, default=None, none=None, type=None)¶Represents a property that has a value in the Cache-Control header.
When no value is actually given, the value of self.none is returned.
webob.cachecontrol.
CacheControl
(properties, type)¶Represents the Cache-Control header.
By giving a type of 'request'
or 'response'
you can
control what attributes are allowed (some Cache-Control values
only apply to requests or responses).
copy
()¶Returns a copy of this object.
parse
(header, updates_to=None, type=None)¶Parse the header, returning a CacheControl object.
The object is bound to the request or response object
updates_to
, if that is given.
update_dict
¶alias of UpdateDict
webob.cachecontrol.
serialize_cache_control
(properties)¶webob.etag
¶Does parsing of ETag-related headers: If-None-Matches, If-Matches
Also If-Range parsing
webob.etag.
AnyETag
¶webob.etag.
NoETag
¶This module processes Python exceptions that relate to HTTP exceptions
by defining a set of exceptions, all subclasses of HTTPException.
Each exception, in addition to being a Python exception that can be
raised and caught, is also a WSGI application and webob.Response
object.
This module defines exceptions according to RFC 2068 [1] : codes with
100-300 are not really errors; 400’s are client errors, and 500’s are
server errors. According to the WSGI specification [2] , the application
can call start_response
more then once only under two conditions:
(a) the response has not yet been sent, or (b) if the second and
subsequent invocations of start_response
have a valid exc_info
argument obtained from sys.exc_info()
. The WSGI specification then
requires the server or gateway to handle the case where content has been
sent and then an exception was encountered.
HTTPOk
HTTPCreated
HTTPAccepted
HTTPNonAuthoritativeInformation
HTTPNoContent
HTTPResetContent
HTTPPartialContent
HTTPMultipleChoices
HTTPMovedPermanently
HTTPFound
HTTPSeeOther
HTTPNotModified
HTTPUseProxy
HTTPTemporaryRedirect
HTTPPermanentRedirect
HTTPBadRequest
HTTPUnauthorized
HTTPPaymentRequired
HTTPForbidden
HTTPNotFound
HTTPMethodNotAllowed
HTTPNotAcceptable
HTTPProxyAuthenticationRequired
HTTPRequestTimeout
HTTPConflict
HTTPGone
HTTPLengthRequired
HTTPPreconditionFailed
HTTPRequestEntityTooLarge
HTTPRequestURITooLong
HTTPUnsupportedMediaType
HTTPRequestRangeNotSatisfiable
HTTPExpectationFailed
HTTPUnprocessableEntity
HTTPLocked
HTTPFailedDependency
HTTPPreconditionRequired
HTTPTooManyRequests
HTTPRequestHeaderFieldsTooLarge
HTTPUnavailableForLegalReasons
HTTPInternalServerError
HTTPNotImplemented
HTTPBadGateway
HTTPServiceUnavailable
HTTPGatewayTimeout
HTTPVersionNotSupported
HTTPNetworkAuthenticationRequired
The HTTPException class is complicated by 4 factors:
- The content given to the exception may either be plain-text or as html-text.
- The template may want to have string-substitutions taken from the current
environ
or values from incoming headers. This is especially troublesome due to case sensitivity.- The final output may either be text/plain or text/html mime-type as requested by the client application.
- Each exception has a default explanation, but those who raise exceptions may want to provide additional detail.
Subclass attributes and call parameters are designed to provide an easier path through the complications.
Attributes:
code
- the HTTP status code for the exception
title
- remainder of the status line (stuff after the code)
explanation
- a plain-text explanation of the error message that is not subject to environment or header substitutions; it is accessible in the template via %(explanation)s
detail
- a plain-text message customization that is not subject to environment or header substitutions; accessible in the template via %(detail)s
body_template
- a content fragment (in HTML) used for environment and header substitution; the default template includes both the explanation and further detail provided in the message
Parameters:
detail
- a plain-text override of the default
detail
headers
- a list of (k,v) header pairs
comment
- a plain-text additional information which is usually stripped/hidden for end-users
body_template
- a string.Template object containing a content fragment in HTML that frames the explanation and further detail
To override the template (which is HTML content) or the plain-text explanation, one must subclass the given exception; or customize it after it has been created. This particular breakdown of a message into explanation, detail and template allows both the creation of plain-text and html messages for various clients as well as error-free substitution of environment variables and headers.
The subclasses of _HTTPMove
(HTTPMultipleChoices
, HTTPMovedPermanently
,
HTTPFound
, HTTPSeeOther
, HTTPUseProxy
and
HTTPTemporaryRedirect
) are redirections that require a Location
field. Reflecting this, these subclasses have two additional keyword arguments:
location
and add_slash
.
Parameters:
location
- to set the location immediately
add_slash
- set to True to redirect to the same URL as the request, except with a
/
appended
Relative URLs in the location will be resolved to absolute.
References:
[1] | https://www.python.org/dev/peps/pep-0333/#error-handling |
[2] | https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5 |
webob.exc.
no_escape
(value)¶webob.exc.
HTTPException
(message, wsgi_response)¶webob.exc.
WSGIHTTPException
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶webob.exc.
HTTPError
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶base class for status codes in the 400’s and 500’s
This is an exception which indicates that an error has occurred, and that any work in progress should not be committed. These are typically results in the 400’s and 500’s.
webob.exc.
HTTPRedirection
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶base class for 300’s status code (redirections)
This is an abstract base class for 3xx redirection. It indicates that further action needs to be taken by the user agent in order to fulfill the request. It does not necessarly signal an error condition.
webob.exc.
HTTPOk
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶Base class for the 200’s status code (successful responses)
code: 200, title: OK
webob.exc.
HTTPCreated
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPOk
This indicates that request has been fulfilled and resulted in a new resource being created.
code: 201, title: Created
webob.exc.
HTTPAccepted
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPOk
This indicates that the request has been accepted for processing, but the processing has not been completed.
code: 202, title: Accepted
webob.exc.
HTTPNonAuthoritativeInformation
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPOk
This indicates that the returned metainformation in the entity-header is not the definitive set as available from the origin server, but is gathered from a local or a third-party copy.
code: 203, title: Non-Authoritative Information
webob.exc.
HTTPNoContent
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPOk
This indicates that the server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation.
code: 204, title: No Content
webob.exc.
HTTPResetContent
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPOk
This indicates that the the server has fulfilled the request and the user agent SHOULD reset the document view which caused the request to be sent.
code: 205, title: Reset Content
webob.exc.
HTTPPartialContent
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPOk
This indicates that the server has fulfilled the partial GET request for the resource.
code: 206, title: Partial Content
webob.exc.
HTTPMultipleChoices
(detail=None, headers=None, comment=None, body_template=None, location=None, add_slash=False)¶subclass of _HTTPMove
This indicates that the requested resource corresponds to any one of a set of representations, each with its own specific location, and agent-driven negotiation information is being provided so that the user can select a preferred representation and redirect its request to that location.
code: 300, title: Multiple Choices
webob.exc.
HTTPMovedPermanently
(detail=None, headers=None, comment=None, body_template=None, location=None, add_slash=False)¶subclass of _HTTPMove
This indicates that the requested resource has been assigned a new permanent URI and any future references to this resource SHOULD use one of the returned URIs.
code: 301, title: Moved Permanently
webob.exc.
HTTPFound
(detail=None, headers=None, comment=None, body_template=None, location=None, add_slash=False)¶subclass of _HTTPMove
This indicates that the requested resource resides temporarily under a different URI.
code: 302, title: Found
webob.exc.
HTTPSeeOther
(detail=None, headers=None, comment=None, body_template=None, location=None, add_slash=False)¶subclass of _HTTPMove
This indicates that the response to the request can be found under a different URI and SHOULD be retrieved using a GET method on that resource.
code: 303, title: See Other
webob.exc.
HTTPNotModified
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPRedirection
This indicates that if the client has performed a conditional GET request and access is allowed, but the document has not been modified, the server SHOULD respond with this status code.
code: 304, title: Not Modified
webob.exc.
HTTPUseProxy
(detail=None, headers=None, comment=None, body_template=None, location=None, add_slash=False)¶subclass of _HTTPMove
This indicates that the requested resource MUST be accessed through the proxy given by the Location field.
code: 305, title: Use Proxy
webob.exc.
HTTPTemporaryRedirect
(detail=None, headers=None, comment=None, body_template=None, location=None, add_slash=False)¶subclass of _HTTPMove
This indicates that the requested resource resides temporarily under a different URI.
code: 307, title: Temporary Redirect
webob.exc.
HTTPClientError
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶base class for the 400’s, where the client is in error
This is an error condition in which the client is presumed to be in-error. This is an expected problem, and thus is not considered a bug. A server-side traceback is not warranted. Unless specialized, this is a ‘400 Bad Request’
code: 400, title: Bad Request
webob.exc.
HTTPBadRequest
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the request requires user authentication.
code: 401, title: Unauthorized
webob.exc.
HTTPPaymentRequired
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
code: 402, title: Payment Required
webob.exc.
HTTPForbidden
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the server understood the request, but is refusing to fulfill it.
code: 403, title: Forbidden
webob.exc.
HTTPNotFound
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the server did not find anything matching the Request-URI.
code: 404, title: Not Found
webob.exc.
HTTPMethodNotAllowed
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the method specified in the Request-Line is not allowed for the resource identified by the Request-URI.
code: 405, title: Method Not Allowed
webob.exc.
HTTPNotAcceptable
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates the resource identified by the request is only capable of generating response entities which have content characteristics not acceptable according to the accept headers sent in the request.
code: 406, title: Not Acceptable
webob.exc.
HTTPProxyAuthenticationRequired
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This is similar to 401, but indicates that the client must first authenticate itself with the proxy.
code: 407, title: Proxy Authentication Required
webob.exc.
HTTPRequestTimeout
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the client did not produce a request within the time that the server was prepared to wait.
code: 408, title: Request Timeout
webob.exc.
HTTPConflict
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the request could not be completed due to a conflict with the current state of the resource.
code: 409, title: Conflict
webob.exc.
HTTPGone
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the requested resource is no longer available at the server and no forwarding address is known.
code: 410, title: Gone
webob.exc.
HTTPLengthRequired
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the the server refuses to accept the request without a defined Content-Length.
code: 411, title: Length Required
webob.exc.
HTTPPreconditionFailed
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the precondition given in one or more of the request-header fields evaluated to false when it was tested on the server.
code: 412, title: Precondition Failed
webob.exc.
HTTPRequestEntityTooLarge
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the server is refusing to process a request because the request entity is larger than the server is willing or able to process.
code: 413, title: Request Entity Too Large
webob.exc.
HTTPRequestURITooLong
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the server is refusing to service the request because the Request-URI is longer than the server is willing to interpret.
code: 414, title: Request-URI Too Long
webob.exc.
HTTPUnsupportedMediaType
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method.
code: 415, title: Unsupported Media Type
webob.exc.
HTTPRequestRangeNotSatisfiable
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
The server SHOULD return a response with this status code if a request included a Range request-header field, and none of the range-specifier values in this field overlap the current extent of the selected resource, and the request did not include an If-Range request-header field.
code: 416, title: Request Range Not Satisfiable
webob.exc.
HTTPExpectationFailed
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indidcates that the expectation given in an Expect request-header field could not be met by this server.
code: 417, title: Expectation Failed
webob.exc.
HTTPUnprocessableEntity
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the server is unable to process the contained instructions.
code: 422, title: Unprocessable Entity
webob.exc.
HTTPLocked
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the resource is locked.
code: 423, title: Locked
webob.exc.
HTTPFailedDependency
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPClientError
This indicates that the method could not be performed because the requested action depended on another action and that action failed.
code: 424, title: Failed Dependency
webob.exc.
HTTPServerError
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶base class for the 500’s, where the server is in-error
This is an error condition in which the server is presumed to be in-error. This is usually unexpected, and thus requires a traceback; ideally, opening a support ticket for the customer. Unless specialized, this is a ‘500 Internal Server Error’
webob.exc.
HTTPInternalServerError
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶webob.exc.
HTTPNotImplemented
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPServerError
This indicates that the server does not support the functionality required to fulfill the request.
code: 501, title: Not Implemented
webob.exc.
HTTPBadGateway
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPServerError
This indicates that the server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request.
code: 502, title: Bad Gateway
subclass of HTTPServerError
This indicates that the server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
code: 503, title: Service Unavailable
webob.exc.
HTTPGatewayTimeout
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPServerError
This indicates that the server, while acting as a gateway or proxy, did not receive a timely response from the upstream server specified by the URI (e.g. HTTP, FTP, LDAP) or some other auxiliary server (e.g. DNS) it needed to access in attempting to complete the request.
code: 504, title: Gateway Timeout
webob.exc.
HTTPVersionNotSupported
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPServerError
This indicates that the server does not support, or refuses to support, the HTTP protocol version that was used in the request message.
code: 505, title: HTTP Version Not Supported
webob.exc.
HTTPInsufficientStorage
(detail=None, headers=None, comment=None, body_template=None, json_formatter=None, **kw)¶subclass of HTTPServerError
This indicates that the server does not have enough space to save the resource.
code: 507, title: Insufficient Storage
webob.exc.
HTTPExceptionMiddleware
(application)¶Middleware that catches exceptions in the sub-application. This does not catch exceptions in the app_iter; only during the initial calling of the application.
This should be put very close to applications that might raise these exceptions. This should not be applied globally; letting expected exceptions raise through the WSGI stack is dangerous.
webob.multidict
¶Gives a multi-value dictionary object (MultiDict) plus several wrappers
webob.multidict.
MultiDict
(*args, **kw)¶An ordered dictionary that can have multiple values for each key. Adds the methods getall, getone, mixed and extend and add to the normal dictionary interface.
add
(key, value)¶Add the key and value, not overwriting any previous value.
clear
() → None. Remove all items from D.¶dict_of_lists
()¶Returns a dictionary where each key is associated with a list of values.
from_fieldstorage
(fs)¶Create a dict from a cgi.FieldStorage instance
getall
(key)¶Return a list of all values matching the key (may be an empty list)
getone
(key)¶Get one value matching the key, raising a KeyError if multiple values were found.
items
() → list of D's (key, value) pairs, as 2-tuples¶iteritems
() → an iterator over the (key, value) items of D¶iterkeys
() → an iterator over the keys of D¶itervalues
() → an iterator over the values of D¶keys
() → list of D's keys¶mixed
()¶Returns a dictionary where the values are either single values, or a list of values when a key/value appears more than once in this dictionary. This is similar to the kind of dictionary often used to represent the variables in a web request.
pop
(k[, d]) → v, remove specified key and return the corresponding value.¶If key is not found, d is returned if given, otherwise KeyError is raised.
popitem
() → (k, v), remove and return some (key, value) pair¶as a 2-tuple; but raise KeyError if D is empty.
setdefault
(k[, d]) → D.get(k,d), also set D[k]=d if k not in D¶update
([E, ]**F) → None. Update D from mapping/iterable E and F.¶If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
values
() → list of D's values¶view_list
(lst)¶Create a dict that is a view on the given list
webob.multidict.
NestedMultiDict
(*dicts)¶Wraps several MultiDict objects, treating it as one large MultiDict
getall
(key)¶Return a list of all values matching the key (may be an empty list)
items
() → list of D's (key, value) pairs, as 2-tuples¶iteritems
() → an iterator over the (key, value) items of D¶itervalues
() → an iterator over the values of D¶keys
() → list of D's keys¶values
() → list of D's values¶webob.multidict.
NoVars
(reason=None)¶Represents no variables; used when no variables are applicable.
This is read-only
webob.request
¶webob.request.
FakeCGIBody
(vars, content_type)¶fileno
()¶Returns underlying file descriptor if one exists.
An IOError is raised if the IO object does not use a file descriptor.
webob.request.
_cgi_FieldStorage__repr__patch
(self)¶monkey patch for FieldStorage.__repr__
Unbelievably, the default __repr__ on FieldStorage reads the entire file content instead of being sane about it. This is a simple replacement that doesn’t do that
webob.response
¶webob.response.
ResponseBodyFile
(response)¶encoding
¶The encoding of the file (inherited from response.charset)
tell
()¶Provide the current location where we are going to start writing.
writelines
(seq)¶Write a sequence of lines to the response.
webob.response.
AppIterRange
(app_iter, start, stop)¶Wraps an app_iter
, returning just a range of bytes.