The Pyramid web application development framework, a Pylons project
Pyramid is a small, fast, down-to-earth, open source Python web application development framework. It makes real-world web application development and deployment more fun, more predictable, and more productive.
Pyramid is produced by the Pylons Project.
Support and Documentation
See the Pylons Project website to view documentation, report bugs, and obtain support.
Pyramid is offered under the BSD-derived Repoze Public License.
- Python 3.2 compatibility.
- New pyramid.compat module and API documentation which provides Python 2/3 straddling support for Pyramid add-ons and development environments.
- A mako.directories setting is no longer required to use Mako templates Rationale: Mako template renderers can be specified using an absolute asset spec. An entire application can be written with such asset specs, requiring no ordered lookup path.
- bpython interpreter compatibility in pshell. See the “Command-Line Pyramid” narrative docs chapter for more information.
- Added get_appsettings API function to the pyramid.paster module. This function returns the settings defined within an [app:...] section in a PasteDeploy ini file.
- Added setup_logging API function to the pyramid.paster module. This function sets up Python logging according to the logging configuration in a PasteDeploy ini file.
- Configuration conflict reporting is reported in a more understandable way (“Line 11 in file…” vs. a repr of a tuple of similar info).
- A configuration introspection system was added; see the narrative documentation chapter entitled “Pyramid Configuration Introspection” for more information. New APIs: pyramid.registry.Introspectable, pyramid.config.Configurator.introspector, pyramid.config.Configurator.introspectable, pyramid.registry.Registry.introspector.
- Allow extra keyword arguments to be passed to the pyramid.config.Configurator.action method.
- New APIs: pyramid.path.AssetResolver and pyramid.path.DottedNameResolver. The former can be used to resolve asset specifications, the latter can be used to resolve dotted names to modules or packages.
- Make test suite pass on 32-bit systems; closes #286. closes #306. See also https://github.com/Pylons/pyramid/issues/286
- The pryamid.view.view_config decorator did not accept a match_params predicate argument. See https://github.com/Pylons/pyramid/pull/308
- The AuthTktCookieHelper could potentially generate Unicode headers inappropriately when the tokens argument to remember was used. See https://github.com/Pylons/pyramid/pull/314.
- The AuthTktAuthenticationPolicy did not use a timing-attack-aware string comparator. See https://github.com/Pylons/pyramid/pull/320 for more info.
- The DummySession in pyramid.testing now generates a new CSRF token if one doesn’t yet exist.
- request.static_url now generates URL-quoted URLs when fed a path argument which contains characters that are unsuitable for URLs. See https://github.com/Pylons/pyramid/issues/349 for more info.
- Prevent a scaffold rendering from being named site (conflicts with Python internal site.py).
- Support for using instances as targets of the pyramid.wsgi.wsgiapp and pryramid.wsgi.wsgiapp2 functions. See https://github.com/Pylons/pyramid/pull/370 for more info.
- Pyramid no longer runs on Python 2.5 (which includes the most recent release of Jython and the Python 2.5 version of GAE as of this writing).
- The paster command is no longer the documented way to create projects, start the server, or run debugging commands. To create projects from scaffolds, paster create is replaced by the pcreate console script. To serve up a project, paster serve is replaced by the pserve console script. New console scripts named pshell, pviews, proutes, and ptweens do what their paster <commandname> equivalents used to do. Rationale: the Paste and PasteScript packages do not run under Python 3.
- The default WSGI server run as the result of pserve from newly rendered scaffolding is now the wsgiref WSGI server instead of the paste.httpserver server. Rationale: Rationale: the Paste and PasteScript packages do not run under Python 3.
- The pshell command (see “paster pshell”) no longer accepts a --disable-ipython command-line argument. Instead, it accepts a -p or --python-shell argument, which can be any of the values python, ipython or bpython.
- Removed the pyramid.renderers.renderer_from_name function. It has been deprecated since Pyramid 1.0, and was never an API.
- To use ZCML with versions of Pyramid >= 1.3, you will need pyramid_zcml version >= 0.8 and zope.configuration version >= 3.8.0. The pyramid_zcml package version 0.8 is backwards compatible all the way to Pyramid 1.0, so you won’t be warned if you have older versions installed and upgrade Pyramid “in-place”; it may simply break instead.
- Pyramid no longer depends on the zope.component package, except as a testing dependency.
- Pyramid now depends on a zope.interface>=3.8.0, WebOb>=1.2dev, repoze.lru>=0.4, zope.deprecation>=3.5.0, translationstring>=0.4 (for Python 3 compatibility purposes). It also, as a testing dependency, depends on WebTest>=1.3.1 for the same reason.
- Pyramid no longer depends on the Paste or PasteScript packages.
- The SQLAlchemy Wiki tutorial has been updated. It now uses @view_config decorators and an explicit database population script.
- Minor updates to the ZODB Wiki tutorial.
- A narrative documentation chapter named “Extending Pyramid Configuration” was added; it describes how to add a new directive, and how use the pyramid.config.Configurator.action method within custom directives. It also describes how to add introspectable objects.
- A narrative documentation chapter named “Pyramid Configuration Introspection” was added. It describes how to query the introspection system.
- Rendered scaffolds have now been changed to be more relocatable (fewer mentions of the package name within files in the package).
- The routesalchemy scaffold has been renamed alchemy, replacing the older (traversal-based) alchemy scaffold (which has been retired).
- The starter scaffold now uses URL dispatch by default.