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__':
config = Configurator()
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.8.4 (2017-06-11)
Bug Fixes
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/3076
Documentation Changes
Updated pyramid-cookiecutter-starter prompts and description to include Mako. See https://github.com/Pylons/pyramid/pull/2982
Added integrity attributes for JavaScripts in cookiecutters, scaffolds, and resulting source files in tutorials. See https://github.com/Pylons/pyramid/issues/2548
Update cookiecutter command to use a checkout for specific branch and shorten it. See https://github.com/Pylons/pyramid/issues/3042
1.8.3 (2017-03-12)
Bug Fixes
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/2973
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/2974
Documentation Changes
Updated pyramid-cookiecutter-starter prompts and reformat presentation of all cookiecutter prompts. See https://github.com/Pylons/pyramid/pull/2966
1.8.2 (2017-02-20)
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 Configurator(settings=settings) to copy the passed in settings dictionary instead of using it verbatim. This fixes a regression from 1.7 introduced via https://github.com/Pylons/pyramid/pull/2823. See https://github.com/Pylons/pyramid/pull/2960
1.8.1 (2017-01-24)
Restore the pyramid.registry.Registry signature that forwards extra *args, **kwargs to zope.interface.registry.Components allowing implementations to specify a custom registry with bases. See https://github.com/Pylons/pyramid/pull/2918
1.8 (2017-01-21)
No major changes from 1.8b1.
1.8b1 (2017-01-17)
Features
Added an override option to config.add_translation_dirs to allow later calls to place translation directories at a higher priority than earlier calls. See https://github.com/Pylons/pyramid/pull/2902
Documentation Changes
Improve registry documentation to discuss uses as a component registry and as a dictionary. See https://github.com/Pylons/pyramid/pull/2893
Quick Tour, Quick Tutorial, and most other remaining documentation updated to use cookiecutters instead of pcreate and scaffolds. See https://github.com/Pylons/pyramid/pull/2888 and https://github.com/Pylons/pyramid/pull/2889
Fix unittests in wiki2 to work without different dependencies between py2 and py3. See https://github.com/Pylons/pyramid/pull/2899
Update Windows documentation to track newer Python 3 improvements to the installer. See https://github.com/Pylons/pyramid/pull/2900
Updated the mod_wsgi tutorial to use cookiecutters and Apache 2.4+. See https://github.com/Pylons/pyramid/pull/2901
1.8a1 (2016-12-25)
Backward Incompatibilities
Support for the IContextURL interface that was deprecated in Pyramid 1.3 has been removed. See https://github.com/Pylons/pyramid/pull/2822
Following the Pyramid deprecation period (1.6 -> 1.8), daemon support for pserve has been removed. This includes removing the daemon commands (start, stop, restart, status) as well as the following arguments: --daemon, --pid-file, --log-file, --monitor-restart, --status, --user, --group, --stop-daemon
To run your server as a daemon you should use a process manager instead of pserve.
pcreate is now interactive by default. You will be prompted if a file already exists with different content. Previously if there were similar files it would silently skip them unless you specified --interactive or --overwrite. See https://github.com/Pylons/pyramid/pull/2775
Removed undocumented argument cachebust_match from pyramid.static.static_view. This argument was shipped accidentally in Pyramid 1.6. See https://github.com/Pylons/pyramid/pull/2681
Change static view to avoid setting the Content-Encoding response header to an encoding guessed using Python’s mimetypes module. This was causing clients to decode the content of gzipped files when downloading them. The client would end up with a foo.txt.gz file on disk that was already decoded, thus should really be foo.txt. Also, the Content-Encoding should only have been used if the client itself broadcast support for the encoding via Accept-Encoding request headers. See https://github.com/Pylons/pyramid/pull/2810
Settings are no longer accessible as attributes on the settings object (e.g. request.registry.settings.foo). This was deprecated in Pyramid 1.2. See https://github.com/Pylons/pyramid/pull/2823
Features
Python 3.6 compatibility. https://github.com/Pylons/pyramid/issues/2835
pcreate learned about --package-name to allow you to create a new project in an existing folder with a different package name than the project name. See https://github.com/Pylons/pyramid/pull/2783
The _get_credentials private method of BasicAuthAuthenticationPolicy has been extracted into standalone function extract_http_basic_credentials in pyramid.authentication module, this function extracts HTTP Basic credentials from a request object, and returns them as a named tuple. See https://github.com/Pylons/pyramid/pull/2662
Pyramid 1.4 silently dropped a feature of the configurator that has been restored. It’s again possible for action discriminators to conflict across different action orders. See https://github.com/Pylons/pyramid/pull/2757
pyramid.paster.bootstrap and its sibling pyramid.scripting.prepare can now be used as context managers to automatically invoke the closer and pop threadlocals off of the stack to prevent memory leaks. See https://github.com/Pylons/pyramid/pull/2760
Added pyramid.config.Configurator.add_exception_view and the pyramid.view.exception_view_config decorator. It is now possible using these methods or via the new exception_only=True option to add_view to add a view which will only be matched when handling an exception. Previously any exception views were also registered for a traversal context that inherited from the exception class which prevented any exception-only optimizations. See https://github.com/Pylons/pyramid/pull/2660
Added the exception_only boolean to pyramid.interfaces.IViewDeriverInfo which can be used by view derivers to determine if they are wrapping a view which only handles exceptions. This means that it is no longer necessary to perform request-time checks for request.exception to determine if the view is handling an exception - the pipeline can be optimized at config-time. See https://github.com/Pylons/pyramid/pull/2660
pserve should now work with gevent and other workers that need to monkeypatch the process, assuming the server and / or the app do so as soon as possible before importing the rest of pyramid. See https://github.com/Pylons/pyramid/pull/2797
Pyramid no longer copies the settings object passed to the pyramid.config.Configurator(settings=). The original dict is kept. See https://github.com/Pylons/pyramid/pull/2823
The csrf trusted origins setting may now be a whitespace-separated list of domains. Previously only a python list was allowed. Also, it can now be set using the PYRAMID_CSRF_TRUSTED_ORIGINS environment variable similar to other settings. See https://github.com/Pylons/pyramid/pull/2823
pserve --reload now uses the hupper library to monitor file changes. This comes with many improvements:
If the watchdog package is installed then monitoring will be done using inotify instead of cpu and disk-intensive polling.
The monitor is now a separate process that will not crash and starts up before any of your code.
The monitor will not restart the process after a crash until a file is saved.
The monitor works on windows.
You can now trigger a reload manually from a pyramid view or any other code via hupper.get_reloader().trigger_reload(). Kind of neat.
You can trigger a reload by issuing a SIGHUP to the monitor process.
A new [pserve] section is supported in your config files with a watch_files key that can configure pserve --reload to monitor custom file paths. See https://github.com/Pylons/pyramid/pull/2827
Allow streaming responses to be made from subclasses of pyramid.httpexceptions.HTTPException. Previously the response would be unrolled while testing for a body, making it impossible to stream a response. See https://github.com/Pylons/pyramid/pull/2863
Update starter, alchemy and zodb scaffolds to support IPv6 by using the new listen directives in waitress. See https://github.com/Pylons/pyramid/pull/2853
All p* scripts now use argparse instead of optparse. This improves their --help output as well as enabling nicer documentation of their options. See https://github.com/Pylons/pyramid/pull/2864
Any deferred configuration action registered via config.action may now depend on threadlocal state, such as asset overrides, being active when the action is executed. See https://github.com/Pylons/pyramid/pull/2873
Asset specifications for directories passed to config.add_translation_dirs now support overriding the entire asset specification, including the folder name. Previously only the package name was supported and the folder would always need to have the same name. See https://github.com/Pylons/pyramid/pull/2873
config.begin() will propagate the current threadlocal request through as long as the registry is the same. For example:
request = Request.blank(...) config.begin(request) # pushes a request config.begin() # propagates the previous request through unchanged assert get_current_request() is request
Added a new callback option to config.set_default_csrf_options which can be used to determine per-request whether CSRF checking should be enabled to allow for a mix authentication methods. Only cookie-based methods generally require CSRF checking. See https://github.com/Pylons/pyramid/pull/2778
Bug Fixes
Fixed bug in proutes such that it now shows the correct view when a class and attr is involved. See: https://github.com/Pylons/pyramid/pull/2687
Fix a FutureWarning in Python 3.5 when using re.split on the format setting to the proutes script. See https://github.com/Pylons/pyramid/pull/2714
Fix a RuntimeWarning emitted by WebOb when using arbitrary objects as the userid in the AuthTktAuthenticationPolicy. This is now caught by the policy and the object is serialized as a base64 string to avoid the cryptic warning. Since the userid will be read back as a string on subsequent requests a more useful warning is emitted encouraging you to use a primitive type instead. See https://github.com/Pylons/pyramid/pull/2715
Pyramid 1.6 introduced the ability for an action to invoke another action. There was a bug in the way that config.add_view would interact with custom view derivers introduced in Pyramid 1.7 because the view’s discriminator cannot be computed until view derivers and view predicates have been created in earlier orders. Invoking an action from another action would trigger an unrolling of the pipeline and would compute discriminators before they were ready. The new behavior respects the order of the action and ensures the discriminators are not computed until dependent actions from previous orders have executed. See https://github.com/Pylons/pyramid/pull/2757
Fix bug in i18n where the default domain would always use the Germanic plural style, even if a different plural function is defined in the relevant messages file. See https://github.com/Pylons/pyramid/pull/2859
The config.override_asset method now occurs during pyramid.config.PHASE1_CONFIG such that it is ordered to execute before any calls to config.add_translation_dirs. See https://github.com/Pylons/pyramid/pull/2873
Deprecations
The pcreate script and related scaffolds have been deprecated in favor of the popular cookiecutter project.
All of Pyramid’s official scaffolds as well as the tutorials have been ported to cookiecutters:
Documentation Changes
Update Typographical Conventions. https://github.com/Pylons/pyramid/pull/2838
Add pyramid_nacl_session to session factories. See https://github.com/Pylons/pyramid/issues/2791
Update HACKING.txt from stale branch that was never merged to master. See https://github.com/Pylons/pyramid/pull/2782
Updated Windows installation instructions and related bits. See https://github.com/Pylons/pyramid/issues/2661
Fix an inconsistency in the documentation between view predicates and route predicates and highlight the differences in their APIs. See https://github.com/Pylons/pyramid/pull/2764
Clarify a possible misuse of the headers kwarg to subclasses of pyramid.httpexceptions.HTTPException in which more appropriate kwargs from the parent class pyramid.response.Response should be used instead. See https://github.com/Pylons/pyramid/pull/2750
The SQLAlchemy + URL Dispatch + Jinja2 (wiki2) and ZODB + Traversal + Chameleon (wiki) tutorials have been updated to utilize the new cookiecutters and drop support for the pcreate scaffolds.
See https://github.com/Pylons/pyramid/pull/2881 and https://github.com/Pylons/pyramid/pull/2883.
Improve output of p* script descriptions for help. See https://github.com/Pylons/pyramid/pull/2886
Quick Tour updated to use cookiecutters instead of pcreate and scaffolds. See https://github.com/Pylons/pyramid/pull/2888
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.8.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9251e4be533fb5f0e507349e2cabe737832e20ee114c66d37c0cf433febe9e39 |
|
MD5 | 4e39fee6571a288b520e7e0804ead2ff |
|
BLAKE2b-256 | 471758be4b5be72d800d12cb0c1bbe97040c499cd41c03fb5d0312425147db14 |