Support Python 3.13.
Drop Python 3.8 support.
Send binary responses if the 'content-encoding' header is set to any value, rather than just 'gzip'.
Thanks to Zoe Guillen for the report in PR #496.
Enable binary support by default for ALB events.
Thanks to Oliver Ford for the report in Issue #513.
Treat the content-type header "application/problem+json" as non binary by default.
Thanks to Ido Savion in PR #503.
- Drop Python 3.7 support.
- Support Python 3.12.
Avoid v2 trailing slash removal by reading
rawPath
rather thanrequestContext.http.path
. This change prevents redirect loops on applications that automatically append slash, like Django’s default setup.Thanks to Jon Culver for the report in Issue #376 and Tobias McNulty for the fix in PR #426.
- Make type hints more correct by using
wsgiref.types
on Python 3.11+, and backport it on older Python versions.
- Support Python 3.11.
- Drop Python 3.6 support.
Handle
requestContext
beingNone
, as can happen from Lambda invoke.Thanks to scottmn for the report in Issue #289.
Fix handling of query string encoding in ALB deployments.
Thanks to Jason Capriotti for the fix in PR #254.
Add type hints.
- Support Python 3.10.
- Stop distributing tests to reduce package size. Tests are not intended to be run outside of the tox setup in the repository. Repackagers can use GitHub's tarballs per tag.
- Drop Python 3.5 support.
- Unquote paths, as per the WSGI specification. This fixes a bug where paths
like
/api/path%2Finfo"
were not correctly received by the application as/api/path/info"
(Pull Request #188).
- Support Python 3.9.
- Fix query string parameter encoding so that symbols are correctly re-encoded for WSGI, for API Gateway format version 1 (Issue #186).
- Move license from ISC to MIT License.
- Always send
isBase64Encoded
in responses, as per the AWS documentation. - Support format version 2 <https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html>, which was introduced by API Gateway for “HTTP API's” (Issue #124)..
binary_support
now defaults toNone
, which means that it will automatically enable binary support for format version 2 events.
- Use multi-value headers in the response when given in the request. (PR #157).
- Add defaults for
SERVER_HOST
,SERVER_PORT
andwsgi.url_scheme
. This enables responding to ELB health check events, which don't contain the relevant headers (Issue #155).
- Pass Lambda Context object as a WSGI environ variable (PR #122).
- Restore setting
HTTP_CONTENT_TYPE
andHTTP_HOST
in the environ, accidentally broken in 2.5.0 with multi-value header feature (Issue #117).
- Support multi-value headers and query parameters as API Gateway added (Issue #103).
- Pass full event as a WSGI environ variable (PR #111).
- Fix URL parameter encoding - URL escaping like %3A will now be passed correctly to your application (Issue #101). Whilst this is a bugfix release, it may break any workarounds you have in your application - please check when upgrading.
- Converted setuptools metadata to configuration file. This meant removing the
__version__
attribute from the package. If you want to inspect the installed version, useimportlib.metadata.version("apig-wsgi")
(docs / backport). - Support Python 3.8.
- Add application/vnd.api+json to default non-binary content type prefixes.
- Add support for custom non-binary content type prefixes. This lets you control which content types should be treated as plain text when binary support is enabled.
- Update Python support to 3.5-3.7, as 3.4 has reached its end of life.
- Return binary content for gzipped responses with text or JSON content types.
- If API Gateway event includes
requestContext
, for example for custom authorizers, pass it in the WSGIenviron
asapig_wsgi.request_context
.
- Revert adding
statusDescription
because it turns out API Gateway doesn't ignore it but instead fails the response with an internal server error.
- Change
statusCode
returned to API Gateway / ALB to an integer. It seems API Gateway always supported both strings and integers, whilst ALB only supports integers. - Add
statusDescription
in return value. API Gateway doesn't seem to use this whilst the ALB documentation mentions it as supported.
- Drop Python 2 support, only Python 3.4+ is supported now.
- Temporarily restore Python 2 support. This is in order to fix a packaging
metadata issue that 2.0.0 was marked as supporting Python 2, so a new release
is needed with a higher version number for
python -m pip install apig-wsgi
to resolve properly on Python 2. Version 2.0.2+ ofapig-wsgi
will not support Python 2.
- Drop Python 2 support, only Python 3.4+ is supported now.
- If
exc_info
is passed in, re-raise the exception (previously it would be ignored and crash in a different way). This isn't the nicest experience, however the behaviour is copied fromwsgiref
's simple server, and most WSGI applications implement their own exception conversion to a "500 Internal Server Error" page already. - Noted that the EC2 ALB to Lambda integration is also supported as it uses the same event format as API Gateway.
- Work with base64 encoded
body
values in requests from API Gateway.
- Fix crash using binary support for responses missing a
Content-Type
header.
- Remove debug
print()
- Add
binary_support
flag to enable sending binary responses, if enabled on API Gateway.
- First release on PyPI, working basic integration for WSGI apps on API Gateway.