The Pyramid Web Framework, a Pylons project
Project description
Pyramid
Pyramid is a small, fast, down-to-earth, open source Python web framework. It makes real-world web application development and deployment more fun, more predictable, and more productive.
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
def hello_world(request):
return Response('Hello %(name)s!' % request.matchdict)
if __name__ == '__main__':
with Configurator() as config:
config.add_route('hello', '/hello/{name}')
config.add_view(hello_world, route_name='hello')
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()
Pyramid is a project of the Pylons Project.
Support and Documentation
See Pyramid Support and Development for documentation, reporting bugs, and getting support.
Developing and Contributing
See HACKING.txt and contributing.md for guidelines on running tests, adding features, coding style, and updating documentation when developing in or contributing to Pyramid.
License
Pyramid is offered under the BSD-derived Repoze Public License.
1.9b1 (2017-06-19)
Add an informative error message when unknown predicates are supplied. The new message suggests alternatives based on the list of known predicates. See https://github.com/Pylons/pyramid/pull/3054
Added integrity attributes for JavaScripts in cookiecutters, scaffolds, and resulting source files in tutorials. See https://github.com/Pylons/pyramid/issues/2548
Update RELEASING.txt for updating cookiecutters. Change cookiecutter URLs to use shortcut. See https://github.com/Pylons/pyramid/issues/3042
Ensure the correct threadlocals are pushed during view execution when invoked from request.invoke_exception_view. See https://github.com/Pylons/pyramid/pull/3060
Fix a bug in which pyramid.security.ALL_PERMISSIONS failed to return a valid iterator in its __iter__ implementation. See https://github.com/Pylons/pyramid/pull/3074
Normalize the permission results to a proper class hierarchy. pyramid.security.ACLAllowed is now a subclass of pyramid.security.Allowed and pyramid.security.ACLDenied is now a subclass of pyramid.security.Denied. See https://github.com/Pylons/pyramid/pull/3084
Add a quote_via argument to pyramid.encode.urlencode to follow the stdlib’s version and enable custom quoting functions. See https://github.com/Pylons/pyramid/pull/3088
Support _query=None and _anchor=None in request.route_url as well as query=None and anchor=None in request.resource_url. Previously this would cause an ? and a #, respectively, in the url with nothing after it. Now the unnecessary parts are dropped from the generated URL. See https://github.com/Pylons/pyramid/pull/3034
Revamp the IRouter API used by IExecutionPolicy to force pushing/popping the request threadlocals. The IRouter.make_request(environ) API has been replaced by IRouter.request_context(environ) which should be used as a context manager. See https://github.com/Pylons/pyramid/pull/3086
1.9a2 (2017-05-09)
Backward Incompatibilities
request.exception and request.exc_info will only be set if the response was generated by the EXCVIEW tween. This is to avoid any confusion where a response was generated elsewhere in the pipeline and not in direct relation to the original exception. If anyone upstream wants to catch and render responses for exceptions they should set request.exception and request.exc_info themselves to indicate the exception that was squashed when generating the response.
Similar behavior occurs with request.invoke_exception_view in which the exception properties are set to reflect the exception if a response is successfully generated by the method.
This is a very minor incompatibility. Most tweens right now would give priority to the raised exception and ignore request.exception. This change just improves and clarifies that bookkeeping by trying to be more clear about the relationship between the response and its squashed exception. See https://github.com/Pylons/pyramid/pull/3029 and https://github.com/Pylons/pyramid/pull/3031
1.9a1 (2017-05-01)
Major Features
The file format used by all p* command line scripts such as pserve and pshell, as well as the pyramid.paster.bootstrap function is now replaceable thanks to a new dependency on plaster.
For now, Pyramid is still shipping with integrated support for the PasteDeploy INI format by depending on the plaster_pastedeploy binding library. This may change in the future.
Added an execution policy hook to the request pipeline. An execution policy has the ability to control creation and execution of the request objects before they enter the rest of the pipeline. This means for a single request environ the policy may create more than one request object.
The first library to use this feature is pyramid_retry.
CSRF support has been refactored out of sessions and into its own independent API in the pyramid.csrf module. It supports a pluggable pyramid.interfaces.ICSRFStoragePolicy which can be used to define your own mechanism for generating and validating CSRF tokens. By default, Pyramid continues to use the pyramid.csrf.LegacySessionCSRFStoragePolicy that uses the request.session.get_csrf_token and request.session.new_csrf_token APIs under the hood to preserve compatibility. Two new policies are shipped as well, pyramid.csrf.SessionCSRFStoragePolicy and pyramid.csrf.CookieCSRFStoragePolicy which will store the CSRF tokens in the session and in a standalone cookie, respectively. The storage policy can be changed by using the new pyramid.config.Configurator.set_csrf_storage_policy config directive.
CSRF tokens should be used via the new pyramid.csrf.get_csrf_token, pyramid.csrf.new_csrf_token and pyramid.csrf.check_csrf_token APIs in order to continue working if the storage policy is changed. Also, the pyramid.csrf.get_csrf_token function is injected into templates to be used conveniently in UI code.
See https://github.com/Pylons/pyramid/pull/2854 and https://github.com/Pylons/pyramid/pull/3019
Minor Features
Support an open_url config setting in the pserve section of the config file. This url is used to open a web browser when pserve --browser is invoked. When this setting is unavailable the pserve script will attempt to guess the port the server is using from the server:<server_name> section of the config file but there is no requirement that the server is being run in this format so it may fail. See https://github.com/Pylons/pyramid/pull/2984
The pyramid.config.Configurator can now be used as a context manager which will automatically push/pop threadlocals (similar to config.begin() and config.end()). It will also automatically perform a config.commit() and thus it is only recommended to be used at the top-level of your app. See https://github.com/Pylons/pyramid/pull/2874
The threadlocals are now available inside any function invoked via config.include. This means the only config-time code that cannot rely on threadlocals is code executed from non-actions inside the main. This can be alleviated by invoking config.begin() and config.end() appropriately or using the new context manager feature of the configurator. See https://github.com/Pylons/pyramid/pull/2989
Bug Fixes
HTTPException’s accepts a detail kwarg that may be used to pass additional details to the exception. You may now pass objects so long as they have a valid __str__ method. See https://github.com/Pylons/pyramid/pull/2951
Fix a reference cycle causing memory leaks in which the registry would keep a Configurator instance alive even after the configurator was discarded. Another fix was also added for the global_registries object in which the registry was stored in a closure preventing it from being deallocated. See https://github.com/Pylons/pyramid/pull/2967
Fix a bug directly invoking pyramid.scripts.pserve.main with the --reload option in which sys.argv is always used in the subprocess instead of the supplied argv. See https://github.com/Pylons/pyramid/pull/2962
Deprecations
Pyramid currently depends on plaster_pastedeploy to simplify the transition to plaster by maintaining integrated support for INI files. This dependency on plaster_pastedeploy should be considered subject to Pyramid’s deprecation policy and may be removed in the future. Applications should depend on the appropriate plaster binding to satisfy their needs.
Retrieving CSRF token from the session has been deprecated in favor of equivalent methods in the pyramid.csrf module. The CSRF methods (ISession.get_csrf_token and ISession.new_csrf_token) are no longer required on the ISession interface except when using the default pyramid.csrf.LegacySessionCSRFStoragePolicy.
Also, pyramid.session.check_csrf_token is now located at pyramid.csrf.check_csrf_token.
See https://github.com/Pylons/pyramid/pull/2854 and https://github.com/Pylons/pyramid/pull/3019
Documentation Changes
Added the execution policy to the routing diagram in the Request Processing chapter. See https://github.com/Pylons/pyramid/pull/2993
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyramid-1.9b1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2906209761358ad0bb2ef70bb6cc47d3210c5fa4fe8ddf12014afb4104e7843b |
|
MD5 | e577159b87b9fca57a4e1945a88dc077 |
|
BLAKE2b-256 | 83146b86a523f5f9a6618840e8fe7737b9f86936bcc50c86a7ea5ea54d22622b |