summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt20
-rw-r--r--CONTRIBUTORS.txt2
-rw-r--r--TODO.txt48
-rw-r--r--docs/api/request.rst11
-rw-r--r--docs/api/response.rst5
-rw-r--r--docs/glossary.rst5
-rw-r--r--docs/narr/MyProject/development.ini12
-rw-r--r--docs/narr/MyProject/production.ini12
-rw-r--r--docs/narr/commandline.rst12
-rw-r--r--docs/narr/environment.rst162
-rw-r--r--docs/narr/hooks.rst34
-rw-r--r--docs/narr/i18n.rst18
-rw-r--r--docs/narr/project.rst16
-rw-r--r--docs/narr/renderers.rst5
-rw-r--r--docs/narr/security.rst4
-rw-r--r--docs/narr/startup.rst24
-rw-r--r--docs/narr/templates.rst12
-rw-r--r--docs/narr/urldispatch.rst2
-rw-r--r--docs/narr/viewconfig.rst14
-rw-r--r--docs/tutorials/wiki/src/authorization/development.ini12
-rw-r--r--docs/tutorials/wiki/src/authorization/production.ini12
-rw-r--r--docs/tutorials/wiki/src/authorization/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki/src/authorization/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki/src/basiclayout/development.ini12
-rw-r--r--docs/tutorials/wiki/src/basiclayout/production.ini12
-rw-r--r--docs/tutorials/wiki/src/basiclayout/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki/src/basiclayout/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki/src/models/development.ini12
-rw-r--r--docs/tutorials/wiki/src/models/production.ini12
-rw-r--r--docs/tutorials/wiki/src/models/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki/src/models/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki/src/tests/development.ini12
-rw-r--r--docs/tutorials/wiki/src/tests/production.ini12
-rw-r--r--docs/tutorials/wiki/src/tests/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki/src/tests/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki/src/views/development.ini12
-rw-r--r--docs/tutorials/wiki/src/views/production.ini12
-rw-r--r--docs/tutorials/wiki/src/views/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki/src/views/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki2/basiclayout.rst2
-rw-r--r--docs/tutorials/wiki2/src/authorization/development.ini12
-rw-r--r--docs/tutorials/wiki2/src/authorization/production.ini12
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/development.ini12
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/production.ini12
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki2/src/models/development.ini12
-rw-r--r--docs/tutorials/wiki2/src/models/production.ini12
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki2/src/tests/development.ini12
-rw-r--r--docs/tutorials/wiki2/src/tests/production.ini12
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/templates/mytemplate.pt3
-rw-r--r--docs/tutorials/wiki2/src/views/development.ini12
-rw-r--r--docs/tutorials/wiki2/src/views/production.ini12
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/static/pylons.css4
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/templates/mytemplate.pt3
-rw-r--r--pyramid/config.py17
-rw-r--r--pyramid/interfaces.py6
-rw-r--r--pyramid/request.py1
-rw-r--r--pyramid/response.py59
-rw-r--r--pyramid/router.py14
-rw-r--r--pyramid/scaffolds/alchemy/+package+/static/pylons.css2
-rw-r--r--pyramid/scaffolds/alchemy/+package+/templates/model.pt_tmpl4
-rw-r--r--pyramid/scaffolds/alchemy/+package+/templates/root.pt_tmpl4
-rw-r--r--pyramid/scaffolds/alchemy/development.ini_tmpl14
-rw-r--r--pyramid/scaffolds/alchemy/production.ini_tmpl14
-rw-r--r--pyramid/scaffolds/routesalchemy/+package+/static/pylons.css2
-rw-r--r--pyramid/scaffolds/routesalchemy/+package+/templates/mytemplate.pt_tmpl4
-rw-r--r--pyramid/scaffolds/routesalchemy/development.ini_tmpl14
-rw-r--r--pyramid/scaffolds/routesalchemy/production.ini_tmpl14
-rw-r--r--pyramid/scaffolds/starter/+package+/static/pylons.css2
-rw-r--r--pyramid/scaffolds/starter/+package+/templates/mytemplate.pt_tmpl4
-rw-r--r--pyramid/scaffolds/starter/development.ini_tmpl13
-rw-r--r--pyramid/scaffolds/starter/production.ini_tmpl13
-rw-r--r--pyramid/scaffolds/zodb/+package+/static/pylons.css2
-rw-r--r--pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt_tmpl4
-rw-r--r--pyramid/scaffolds/zodb/development.ini_tmpl14
-rw-r--r--pyramid/scaffolds/zodb/production.ini_tmpl14
-rw-r--r--pyramid/settings.py34
-rw-r--r--pyramid/tests/test_config.py29
-rw-r--r--pyramid/tests/test_response.py64
-rw-r--r--pyramid/tests/test_router.py3
-rw-r--r--pyramid/tests/test_settings.py270
-rw-r--r--pyramid/urldispatch.py1
-rw-r--r--setup.py2
89 files changed, 954 insertions, 414 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index e14d4629b..c94ecb800 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,11 +4,15 @@ Next release
Features
--------
+- Added a decorator-based way to configure a response adapter:
+ ``pyramid.response.response_adapter``. This decorator has the same use as
+ ``pyramid.config.Configurator.add_response_adapter`` but it's declarative.
+
- The ``pyramid.events.BeforeRender`` event now has an attribute named
``rendering_val``. This can be used to introspect the value returned by a
view in a BeforeRender subscriber.
-- New configurator directive:^
+- New configurator directive:
``pyramid.config.Configurator.add_request_handler``. This directive adds
a request handler factory.
@@ -72,6 +76,20 @@ Features
normal logging channels. The logger name of the debug logger will be the
package name of the *caller* of the Configurator's constructor.
+- A new attribute is available on request objects: ``exc_info``. Its value
+ will be ``None`` until an exception is caught by the Pyramid router, after
+ which it will be the result of ``sys.exc_info()``.
+
+Deprecations
+------------
+
+- All Pyramid-related deployment settings (e.g. ``debug_all``,
+ ``debug_notfound``) are now meant to be prefixed with the prefix
+ ``pyramid.``. For example: ``debug_all`` -> ``pyramid.debug_all``. The
+ old non-prefixed settings will continue to work indefinitely but supplying
+ them may print a deprecation warning. All scaffolds and tutorials have
+ been changed to use prefixed settings.
+
Backwards Incompatibilities
---------------------------
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 4e9d944ea..a165c0dc6 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -144,3 +144,5 @@ Contributors
- Christoph Zwerschke, 2011/06/07
- Shane Hathaway, 2011/07/22
+
+- Manuel Hermann, 2011/07/11
diff --git a/TODO.txt b/TODO.txt
index 14c52fe3d..fda59d7b4 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -4,22 +4,53 @@ Pyramid TODOs
Should-Have
-----------
+- Merge https://github.com/Pylons/pyramid/pull/242 (IPython update; requires
+ test fixes and additional test coverage).
+
- Make "localizer" a property of request (instead of requiring
- "get_localizer(request)"?
+ "get_localizer(request)"
-- Add narrative docs for wsgiapp and wsgiapp2.
+- Make ``current_route_url`` a method of request.
+
+- Create a ``current_route_path`` function and make it a method of request.
+
+- Provide a way to set the authentication policy and the authorization policy
+ during a config.include (they are related, so just exposing the currently
+ underscored-private _set_auth* methods won't cut it).
+
+- Try to figure out a way to keep "settings" as the original dictionary
+ passed to the Configurator instead of copying it.
+
+- Merge aodag's config.include(route_prefix=...) fork.
+
+- Merge Michael's route group work.
+
+- Kill off ``bfg.routes`` envvars in router.
+
+- Alias the stupid long default session factory name.
+
+- Fix indirect circular import between router and config.
+
+- Eliminate non-deployment-non-scaffold-related Paste dependencies:
+ ``paste.urlparser.StaticURLParser``, ``paste.auth.auth_tkt`` (cutnpaste or
+ reimplement both).
+
+- Use ``pyramid.include`` to add pyramid_debugtoolbar to all scaffolds and
+ remove weberror.
Nice-to-Have
------------
-- Rename all config file values with a ``pyramid.`` prefix.
+- Add narrative docs for wsgiapp and wsgiapp2.
-- Maybe add ``add_renderer_globals`` method to Configurator.
+- Provide a ``has_view`` function.
+
+- Debug option to print view matching decision (e.g. debug_viewlookup or so).
- Speed up startup time (defer _bootstrap and registerCommonDirectives()
until needed by ZCML, as well as unfound speedups).
-- Nicer Mako exceptions in WebError.
+- Nicer Mako exceptions in debug toolbar.
- Better "Extending" chapter.
@@ -53,13 +84,16 @@ Nice-to-Have
- Create a function which performs a recursive request.
-- Debug option to print view matching decision.
-
- Update App engine chapter with less creaky directions.
+Probably Bad Ideas
+------------------
+
- Add functionality that mocks the behavior of ``repoze.browserid``.
- Consider implementing the API outlined in
http://plope.com/pyramid_auth_design_api_postmortem, phasing out the
current auth-n-auth abstractions in a backwards compatible way.
+- Maybe add ``add_renderer_globals`` method to Configurator.
+
diff --git a/docs/api/request.rst b/docs/api/request.rst
index 404825d1b..2ab3977d5 100644
--- a/docs/api/request.rst
+++ b/docs/api/request.rst
@@ -85,6 +85,17 @@
of ``request.exception`` will be ``None`` within response and
finished callbacks.
+ .. attribute:: exc_info
+
+ If an exception was raised by a :term:`root factory` or a :term:`view
+ callable`, or at various other points where :app:`Pyramid` executes
+ user-defined code during the processing of a request, result of
+ ``sys.exc_info()`` will be available as the ``exc_info`` attribute of
+ the request within a :term:`exception view`, a :term:`response callback`
+ or a :term:`finished callback`. If no exception occurred, the value of
+ ``request.exc_info`` will be ``None`` within response and finished
+ callbacks.
+
.. attribute:: response
This attribute is actually a "reified" property which returns an
diff --git a/docs/api/response.rst b/docs/api/response.rst
index e67b15568..8020b629a 100644
--- a/docs/api/response.rst
+++ b/docs/api/response.rst
@@ -9,3 +9,8 @@
:members:
:inherited-members:
+Functions
+~~~~~~~~~
+
+.. autofunction:: response_adapter
+
diff --git a/docs/glossary.rst b/docs/glossary.rst
index cc1d6201d..c6705fdc5 100644
--- a/docs/glossary.rst
+++ b/docs/glossary.rst
@@ -23,6 +23,11 @@ Glossary
a subclass such as :class:`pyramid.httpexceptions.HTTPFound`. See
:ref:`webob_chapter` for information about response objects.
+ response adapter
+ A callable which accepts an arbitrary object and "converts" it to a
+ :class:`pyramid.response.Response` object. See :ref:`using_iresponse`
+ for more information.
+
Repoze
"Repoze" is essentially a "brand" of software developed by `Agendaless
Consulting <http://agendaless.com>`_ and a set of contributors. The
diff --git a/docs/narr/MyProject/development.ini b/docs/narr/MyProject/development.ini
index 29486ce56..d0db3047c 100644
--- a/docs/narr/MyProject/development.ini
+++ b/docs/narr/MyProject/development.ini
@@ -1,11 +1,11 @@
[app:MyProject]
use = egg:MyProject
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
[pipeline:main]
pipeline =
diff --git a/docs/narr/MyProject/production.ini b/docs/narr/MyProject/production.ini
index c1d0eee82..d0ed9628c 100644
--- a/docs/narr/MyProject/production.ini
+++ b/docs/narr/MyProject/production.ini
@@ -1,11 +1,11 @@
[app:MyProject]
use = egg:MyProject
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
[filter:weberror]
use = egg:WebError#error_catcher
diff --git a/docs/narr/commandline.rst b/docs/narr/commandline.rst
index f4cf951ba..509af7dd3 100644
--- a/docs/narr/commandline.rst
+++ b/docs/narr/commandline.rst
@@ -134,11 +134,11 @@ might have a ``[app:MyProject]`` section that looks like so:
[app:MyProject]
use = egg:MyProject
- reload_templates = true
- debug_authorization = false
- debug_notfound = false
- debug_templates = true
- default_locale_name = en
+ pyramid.reload_templates = true
+ pyramid.debug_authorization = false
+ pyramid.debug_notfound = false
+ pyramid.debug_templates = true
+ pyramid.default_locale_name = en
If so, you can use the following command to invoke a debug shell using the
name ``MyProject`` as a section name:
@@ -160,7 +160,7 @@ name ``MyProject`` as a section name:
<myproject.resources.MyResource object at 0x445270>
>>> registry
<Registry myproject>
- >>> registry.settings['debug_notfound']
+ >>> registry.settings['pyramid.debug_notfound']
False
>>> from myproject.views import my_view
>>> from pyramid.request import Request
diff --git a/docs/narr/environment.rst b/docs/narr/environment.rst
index 53234cba1..6465c2a1e 100644
--- a/docs/narr/environment.rst
+++ b/docs/narr/environment.rst
@@ -47,14 +47,14 @@ changes to templates take effect immediately during development. This
flag is meaningful to Chameleon and Mako templates, as well as most
third-party template rendering extensions.
-+---------------------------------+-----------------------------+
-| Environment Variable Name | Config File Setting Name |
-+=================================+=============================+
-| ``PYRAMID_RELOAD_TEMPLATES`` | ``reload_templates`` |
-| | |
-| | |
-| | |
-+---------------------------------+-----------------------------+
++---------------------------------+--------------------------------+
+| Environment Variable Name | Config File Setting Name |
++=================================+================================+
+| ``PYRAMID_RELOAD_TEMPLATES`` | ``pyramid.reload_templates`` |
+| | |
+| | |
+| | |
++---------------------------------+--------------------------------+
Reloading Assets
----------------
@@ -65,7 +65,7 @@ also :ref:`overriding_assets_section`.
+---------------------------------+-----------------------------+
| Environment Variable Name | Config File Setting Name |
+=================================+=============================+
-| ``PYRAMID_RELOAD_ASSETS`` | ``reload_assets`` |
+| ``PYRAMID_RELOAD_ASSETS`` | ``pyramid.reload_assets`` |
| | |
| | |
| | |
@@ -73,7 +73,7 @@ also :ref:`overriding_assets_section`.
.. note:: For backwards compatibility purposes, aliases can be
used for configurating asset reloading: ``PYRAMID_RELOAD_RESOURCES`` (envvar)
- and ``reload_resources`` (config file).
+ and ``pyramid.reload_resources`` (config file).
Debugging Authorization
-----------------------
@@ -81,14 +81,14 @@ Debugging Authorization
Print view authorization failure and success information to stderr
when this value is true. See also :ref:`debug_authorization_section`.
-+---------------------------------+-----------------------------+
-| Environment Variable Name | Config File Setting Name |
-+=================================+=============================+
-| ``PYRAMID_DEBUG_AUTHORIZATION`` | ``debug_authorization`` |
-| | |
-| | |
-| | |
-+---------------------------------+-----------------------------+
++---------------------------------+-----------------------------------+
+| Environment Variable Name | Config File Setting Name |
++=================================+===================================+
+| ``PYRAMID_DEBUG_AUTHORIZATION`` | ``pyramid.debug_authorization`` |
+| | |
+| | |
+| | |
++---------------------------------+-----------------------------------+
Debugging Not Found Errors
--------------------------
@@ -96,14 +96,14 @@ Debugging Not Found Errors
Print view-related ``NotFound`` debug messages to stderr
when this value is true. See also :ref:`debug_notfound_section`.
-+---------------------------------+-----------------------------+
-| Environment Variable Name | Config File Setting Name |
-+=================================+=============================+
-| ``PYRAMID_DEBUG_NOTFOUND`` | ``debug_notfound`` |
-| | |
-| | |
-| | |
-+---------------------------------+-----------------------------+
++---------------------------------+------------------------------+
+| Environment Variable Name | Config File Setting Name |
++=================================+==============================+
+| ``PYRAMID_DEBUG_NOTFOUND`` | ``pyramid.debug_notfound`` |
+| | |
+| | |
+| | |
++---------------------------------+------------------------------+
Debugging Route Matching
------------------------
@@ -111,14 +111,14 @@ Debugging Route Matching
Print debugging messages related to :term:`url dispatch` route matching when
this value is true. See also :ref:`debug_routematch_section`.
-+---------------------------------+-----------------------------+
-| Environment Variable Name | Config File Setting Name |
-+=================================+=============================+
-| ``PYRAMID_DEBUG_ROUTEMATCH`` | ``debug_routematch`` |
-| | |
-| | |
-| | |
-+---------------------------------+-----------------------------+
++---------------------------------+--------------------------------+
+| Environment Variable Name | Config File Setting Name |
++=================================+================================+
+| ``PYRAMID_DEBUG_ROUTEMATCH`` | ``pyramid.debug_routematch`` |
+| | |
+| | |
+| | |
++---------------------------------+--------------------------------+
.. _preventing_http_caching:
@@ -130,14 +130,14 @@ globally in this process when this value is true. No http caching-related
response headers will be set by the Pyramid ``http_cache`` view configuration
feature when this is true. See also :ref:`influencing_http_caching`.
-+---------------------------------+-----------------------------+
-| Environment Variable Name | Config File Setting Name |
-+=================================+=============================+
-| ``PYRAMID_PREVENT_HTTP_CACHE`` | ``prevent_http_cache`` |
-| | |
-| | |
-| | |
-+---------------------------------+-----------------------------+
++---------------------------------+----------------------------------+
+| Environment Variable Name | Config File Setting Name |
++=================================+==================================+
+| ``PYRAMID_PREVENT_HTTP_CACHE`` | ``pyramid.prevent_http_cache`` |
+| | |
+| | |
+| | |
++---------------------------------+----------------------------------+
Debugging All
-------------
@@ -147,7 +147,7 @@ Turns on all ``debug*`` settings.
+---------------------------------+-----------------------------+
| Environment Variable Name | Config File Setting Name |
+=================================+=============================+
-| ``PYRAMID_DEBUG_ALL`` | ``debug_all`` |
+| ``PYRAMID_DEBUG_ALL`` | ``pyramid.debug_all`` |
| | |
| | |
| | |
@@ -161,7 +161,7 @@ Turns on all ``reload*`` settings.
+---------------------------------+-----------------------------+
| Environment Variable Name | Config File Setting Name |
+=================================+=============================+
-| ``PYRAMID_RELOAD_ALL`` | ``reload_all`` |
+| ``PYRAMID_RELOAD_ALL`` | ``pyramid.reload_all`` |
| | |
| | |
| | |
@@ -176,14 +176,14 @@ The value supplied here is used as the default locale name when a
:term:`locale negotiator` is not registered. See also
:ref:`localization_deployment_settings`.
-+---------------------------------+-----------------------------+
-| Environment Variable Name | Config File Setting Name |
-+=================================+=============================+
-| ``PYRAMID_DEFAULT_LOCALE_NAME`` | ``default_locale_name`` |
-| | |
-| | |
-| | |
-+---------------------------------+-----------------------------+
++---------------------------------+-----------------------------------+
+| Environment Variable Name | Config File Setting Name |
++=================================+===================================+
+| ``PYRAMID_DEFAULT_LOCALE_NAME`` | ``pyramid.default_locale_name`` |
+| | |
+| | |
+| | |
++---------------------------------+-----------------------------------+
.. _mako_template_renderer_settings:
@@ -346,8 +346,8 @@ an example of such a section:
[app:main]
use = egg:MyProject#app
- reload_templates = true
- debug_authorization = true
+ pyramid.reload_templates = true
+ pyramid.debug_authorization = true
You can also use environment variables to accomplish the same purpose
for settings documented as such. For example, you might start your
@@ -364,18 +364,18 @@ respective settings in the ``[app:main]`` section of your
application's ``.ini`` file.
If you want to turn all ``debug`` settings (every setting that starts
-with ``debug_``). on in one fell swoop, you can use
+with ``pyramid.debug_``). on in one fell swoop, you can use
``PYRAMID_DEBUG_ALL=1`` as an environment variable setting or you may use
-``debug_all=true`` in the config file. Note that this does not affect
-settings that do not start with ``debug_*`` such as
-``reload_templates``.
+``pyramid.debug_all=true`` in the config file. Note that this does not affect
+settings that do not start with ``pyramid.debug_*`` such as
+``pyramid.reload_templates``.
-If you want to turn all ``reload`` settings (every setting that starts
-with ``reload_``) on in one fell swoop, you can use
+If you want to turn all ``pyramid.reload`` settings (every setting that starts
+with ``pyramid.reload_``) on in one fell swoop, you can use
``PYRAMID_RELOAD_ALL=1`` as an environment variable setting or you may use
-``reload_all=true`` in the config file. Note that this does not
-affect settings that do not start with ``reload_*`` such as
-``debug_notfound``.
+``pyramid.reload_all=true`` in the config file. Note that this does not
+affect settings that do not start with ``pyramid.reload_*`` such as
+``pyramid.debug_notfound``.
.. note::
Specifying configuration settings via environment variables is generally
@@ -392,35 +392,35 @@ affect settings that do not start with ``reload_*`` such as
Understanding the Distinction Between ``reload_templates`` and ``reload_assets``
--------------------------------------------------------------------------------
-The difference between ``reload_assets`` and ``reload_templates`` is a bit
-subtle. Templates are themselves also treated by :app:`Pyramid` as asset
-files (along with other static files), so the distinction can be confusing.
-It's helpful to read :ref:`overriding_assets_section` for some context
-about assets in general.
+The difference between ``pyramid.reload_assets`` and
+``pyramid.reload_templates`` is a bit subtle. Templates are themselves also
+treated by :app:`Pyramid` as asset files (along with other static files), so the
+distinction can be confusing. It's helpful to read
+:ref:`overriding_assets_section` for some context about assets in general.
-When ``reload_templates`` is true, :app:`Pyramid` takes advantage of the
+When ``pyramid.reload_templates`` is true, :app:`Pyramid` takes advantage of the
underlying templating systems' ability to check for file modifications to an
-individual template file. When ``reload_templates`` is true but
-``reload_assets`` is *not* true, the template filename returned by the
+individual template file. When ``pyramid.reload_templates`` is true but
+``pyramid.reload_assets`` is *not* true, the template filename returned by the
``pkg_resources`` package (used under the hood by asset resolution) is cached
by :app:`Pyramid` on the first request. Subsequent requests for the same
template file will return a cached template filename. The underlying
templating system checks for modifications to this particular file for every
-request. Setting ``reload_templates`` to ``True`` doesn't affect performance
-dramatically (although it should still not be used in production because it
-has some effect).
+request. Setting ``pyramid.reload_templates`` to ``True`` doesn't affect
+performance dramatically (although it should still not be used in production
+because it has some effect).
-However, when ``reload_assets`` is true, :app:`Pyramid` will not cache the
-template filename, meaning you can see the effect of changing the content of
-an overridden asset directory for templates without restarting the server
+However, when ``pyramid.reload_assets`` is true, :app:`Pyramid` will not cache
+the template filename, meaning you can see the effect of changing the content
+of an overridden asset directory for templates without restarting the server
after every change. Subsequent requests for the same template file may
return different filenames based on the current state of overridden asset
-directories. Setting ``reload_assets`` to ``True`` affects performance
+directories. Setting ``pyramid.reload_assets`` to ``True`` affects performance
*dramatically*, slowing things down by an order of magnitude for each
template rendering. However, it's convenient to enable when moving files
-around in overridden asset directories. ``reload_assets`` makes the system
-*very slow* when templates are in use. Never set ``reload_assets`` to
-``True`` on a production system.
+around in overridden asset directories. ``pyramid.reload_assets`` makes the
+system *very slow* when templates are in use. Never set
+``pyramid.reload_assets`` to ``True`` on a production system.
.. index::
par: settings; adding custom
diff --git a/docs/narr/hooks.rst b/docs/narr/hooks.rst
index 985934736..4f493c854 100644
--- a/docs/narr/hooks.rst
+++ b/docs/narr/hooks.rst
@@ -61,8 +61,8 @@ Here's some sample code that implements a minimal NotFound view callable:
caused the not found view to be called. The value of
``request.exception.message`` will be a value explaining why the not found
error was raised. This message will be different when the
- ``debug_notfound`` environment setting is true than it is when it is
- false.
+ ``pyramid.debug_notfound`` environment setting is true than it is when it
+ is false.
.. warning:: When a NotFound view callable accepts an argument list as
described in :ref:`request_and_context_view_definitions`, the ``context``
@@ -128,8 +128,8 @@ Here's some sample code that implements a minimal forbidden view:
``request.exception.message`` will be a value explaining why the forbidden
was raised and ``request.exception.result`` will be extended information
about the forbidden exception. These messages will be different when the
- ``debug_authorization`` environment setting is true than it is when it is
- false.
+ ``pyramid.debug_authorization`` environment setting is true than it is when
+ it is false.
.. index::
single: request factory
@@ -537,7 +537,8 @@ Changing How Pyramid Treats View Responses
It is possible to control how Pyramid treats the result of calling a view
callable on a per-type basis by using a hook involving
-:meth:`pyramid.config.Configurator.add_response_adapter`.
+:meth:`pyramid.config.Configurator.add_response_adapter` or the
+:class:`~pyramid.response.response_adapter` decorator.
.. note:: This feature is new as of Pyramid 1.1.
@@ -624,6 +625,29 @@ startup time, as by their nature, instances of this class (and instances of
subclasses of the class) will natively provide IResponse. The adapter
registered for ``webob.Response`` simply returns the response object.
+Instead of using :meth:`pyramid.config.Configurator.add_response_adapter`,
+you can use the :class:`pyramid.response.response_adapter` decorator:
+
+.. code-block:: python
+ :linenos:
+
+ from pyramid.response import Response
+ from pyramid.response import response_adapter
+
+ @response_adapter(str)
+ def string_response_adapter(s):
+ response = Response(s)
+ return response
+
+The above example, when scanned, has the same effect as:
+
+.. code-block:: python
+
+ config.add_response_adapter(string_response_adapter, str)
+
+The :class:`~pyramid.response.response_adapter` decorator will have no effect
+until activated by a :term:`scan`.
+
.. index::
single: view mapper
diff --git a/docs/narr/i18n.rst b/docs/narr/i18n.rst
index 924fb047a..ba5490b31 100644
--- a/docs/narr/i18n.rst
+++ b/docs/narr/i18n.rst
@@ -623,7 +623,7 @@ You can obtain the locale name related to a request by using the
This returns the locale name negotiated by the currently active
:term:`locale negotiator` or the :term:`default locale name` if the
locale negotiator returns ``None``. You can change the default locale
-name by changing the ``default_locale_name`` setting; see
+name by changing the ``pyramid.default_locale_name`` setting; see
:ref:`default_locale_name_setting`.
Once :func:`~pyramid.i18n.get_locale_name` is first run, the locale
@@ -768,7 +768,7 @@ Internationalization" which explains how to add idiomatic I18N support to
Localization-Related Deployment Settings
----------------------------------------
-A :app:`Pyramid` application will have a ``default_locale_name``
+A :app:`Pyramid` application will have a ``pyramid.default_locale_name``
setting. This value represents the :term:`default locale name` used
when the :term:`locale negotiator` returns ``None``. Pass it to the
:mod:`~pyramid.config.Configurator` constructor at startup
@@ -778,9 +778,9 @@ time:
:linenos:
from pyramid.config import Configurator
- config = Configurator(settings={'default_locale_name':'de'})
+ config = Configurator(settings={'pyramid.default_locale_name':'de'})
-You may alternately supply a ``default_locale_name`` via an
+You may alternately supply a ``pyramid.default_locale_name`` via an
application's Paster ``.ini`` file:
.. code-block:: ini
@@ -788,10 +788,10 @@ application's Paster ``.ini`` file:
[app:main]
use = egg:MyProject#app
- reload_templates = true
- debug_authorization = false
- debug_notfound = false
- default_locale_name = de
+ pyramid.reload_templates = true
+ pyramid.debug_authorization = false
+ pyramid.debug_notfound = false
+ pyramid.default_locale_name = de
If this value is not supplied via the Configurator constructor or via
a Paste config file, it will default to ``en``.
@@ -804,7 +804,7 @@ If this setting is supplied within the :app:`Pyramid` application
from pyramid.threadlocal import get_current_registry
settings = get_current_registry().settings
- default_locale_name = settings['default_locale_name']
+ default_locale_name = settings['pyramid.default_locale_name']
.. index::
single: detecting langauges
diff --git a/docs/narr/project.rst b/docs/narr/project.rst
index 5f4878470..3b1b45eda 100644
--- a/docs/narr/project.rst
+++ b/docs/narr/project.rst
@@ -472,22 +472,22 @@ represented by this entry point (``main`` in our ``__init__.py`` module).
You can provide startup-time configuration parameters to your application by
adding more settings to this section.
-The ``reload_templates`` setting in the ``[app:MyProject]`` section is a
-:app:`Pyramid` -specific setting which is passed into the framework. If it
+The ``pyramid.reload_templates`` setting in the ``[app:MyProject]`` section is
+a :app:`Pyramid` -specific setting which is passed into the framework. If it
exists, and its value is ``true``, :term:`Chameleon` and :term:`Mako`
template changes will not require an application restart to be detected. See
:ref:`reload_templates_section` for more information.
-The ``debug_templates`` setting in the ``[app:MyProject]`` section is a
+The ``pyramid.debug_templates`` setting in the ``[app:MyProject]`` section is a
:app:`Pyramid` -specific setting which is passed into the framework. If it
exists, and its value is ``true``, :term:`Chameleon` template exceptions will
contain more detailed and helpful information about the error than when
this value is ``false``. See :ref:`debug_templates_section` for more
information.
-.. warning:: The ``reload_templates`` and ``debug_templates`` options should
- be turned off for production applications, as template rendering is slowed
- when either is turned on.
+.. warning:: The ``pyramid.reload_templates`` and ``pyramid.debug_templates``
+ options should be turned off for production applications, as template
+ rendering is slowed when either is turned on.
Various other settings may exist in this section having to do with debugging
or influencing runtime behavior of a :app:`Pyramid` application. See
@@ -795,14 +795,14 @@ file call to ``add_view``).
See :ref:`views_which_use_a_renderer` for more information about how views,
renderers, and templates relate and cooperate.
-.. note:: Because our ``development.ini`` has a ``reload_templates =
+.. note:: Because our ``development.ini`` has a ``pyramid.reload_templates =
true`` directive indicating that templates should be reloaded when
they change, you won't need to restart the application server to
see changes you make to templates. During development, this is
handy. If this directive had been ``false`` (or if the directive
did not exist), you would need to restart the application server
for each template change. For production applications, you should
- set your project's ``reload_templates`` to ``false`` to increase
+ set your project's ``pyramid.reload_templates`` to ``false`` to increase
the speed at which templates may be rendered.
.. index::
diff --git a/docs/narr/renderers.rst b/docs/narr/renderers.rst
index 801741c43..ed391f4fe 100644
--- a/docs/narr/renderers.rst
+++ b/docs/narr/renderers.rst
@@ -425,8 +425,9 @@ The above configuration will use the file named ``foo.mak`` in the
``templates`` directory of the ``mypackage`` package.
The ``Mako`` template renderer can take additional arguments beyond the
-standard ``reload_templates`` setting, see the :ref:`environment_chapter` for
-additional :ref:`mako_template_renderer_settings`.
+standard ``pyramid.reload_templates`` setting, see the
+:ref:`environment_chapter` for additional
+:ref:`mako_template_renderer_settings`.
.. index::
single: response headers (from a renderer)
diff --git a/docs/narr/security.rst b/docs/narr/security.rst
index 65f3d7cf0..ce304ed9f 100644
--- a/docs/narr/security.rst
+++ b/docs/narr/security.rst
@@ -517,7 +517,7 @@ which ACL permitted or denied the authorization based on
authentication information.
This behavior can also be turned on in the application ``.ini`` file
-by setting the ``debug_authorization`` key to ``true`` within the
+by setting the ``pyramid.debug_authorization`` key to ``true`` within the
application's configuration section, e.g.:
.. code-block:: ini
@@ -525,7 +525,7 @@ application's configuration section, e.g.:
[app:main]
use = egg:MyProject#app
- debug_authorization = true
+ pyramid.debug_authorization = true
With this debug flag turned on, the response sent to the browser will
also contain security debugging information in its body.
diff --git a/docs/narr/startup.rst b/docs/narr/startup.rst
index 8661c8f6a..c9ed01f83 100644
--- a/docs/narr/startup.rst
+++ b/docs/narr/startup.rst
@@ -92,10 +92,10 @@ Here's a high-level time-ordered overview of what happens when you press
In this case, the ``myproject.__init__:main`` function referred to by the
entry point URI ``egg:MyProject`` (see :ref:`MyProject_ini` for more
information about entry point URIs, and how they relate to callables),
- will receive the key/value pairs ``{'reload_templates':'true',
- 'debug_authorization':'false', 'debug_notfound':'false',
- 'debug_routematch':'false', 'debug_templates':'true',
- 'default_locale_name':'en'}``.
+ will receive the key/value pairs ``{'pyramid.reload_templates':'true',
+ 'pyramid.debug_authorization':'false', 'pyramid.debug_notfound':'false',
+ 'pyramid.debug_routematch':'false', 'pyramid.debug_templates':'true',
+ 'pyramid.default_locale_name':'en'}``.
#. The ``main`` function first constructs a
:class:`~pyramid.config.Configurator` instance, passing a root resource
@@ -109,14 +109,14 @@ Here's a high-level time-ordered overview of what happens when you press
The ``settings`` dictionary contains all the options in the
``[app:MyProject]`` section of our .ini file except the ``use`` option
- (which is internal to Paste) such as ``reload_templates``,
- ``debug_authorization``, etc.
-
-#. The ``main`` function then calls various methods on the an instance of the
- class :class:`~pyramid.config.Configurator` method. The intent of
- calling these methods is to populate an :term:`application registry`,
- which represents the :app:`Pyramid` configuration related to the
- application.
+ (which is internal to Paste) such as ``pyramid.reload_templates``,
+ ``pyramid.debug_authorization``, etc.
+
+#. The ``main`` function then calls various methods on the instance of the
+ class :class:`~pyramid.config.Configurator` created in the previous step.
+ The intent of calling these methods is to populate an
+ :term:`application registry`, which represents the :app:`Pyramid`
+ configuration related to the application.
#. The :meth:`~pyramid.config.Configurator.make_wsgi_app` method is called.
The result is a :term:`router` instance. The router is associated with
diff --git a/docs/narr/templates.rst b/docs/narr/templates.rst
index af7257466..0f46f6422 100644
--- a/docs/narr/templates.rst
+++ b/docs/narr/templates.rst
@@ -632,15 +632,15 @@ variable set to ``1``, For example:
$ PYRAMID_DEBUG_TEMPLATES=1 bin/paster serve myproject.ini
To use a setting in the application ``.ini`` file for the same
-purpose, set the ``debug_templates`` key to ``true`` within the
-application's configuration section, e.g.:
+purpose, set the ``pyramid.debug_templates`` key to ``true`` within
+the application's configuration section, e.g.:
.. code-block:: ini
:linenos:
[app:MyProject]
use = egg:MyProject#app
- debug_templates = true
+ pyramid.debug_templates = true
With template debugging off, a :exc:`NameError` exception resulting
from rendering a template with an undefined variable
@@ -677,7 +677,7 @@ displaying the arguments passed to the template itself.
.. note::
- Turning on ``debug_templates`` has the same effect as using the
+ Turning on ``pyramid.debug_templates`` has the same effect as using the
Chameleon environment variable ``CHAMELEON_DEBUG``. See `Chameleon
Environment Variables
<http://chameleon.repoze.org/docs/latest/config.html#environment-variables>`_
@@ -793,7 +793,7 @@ variable set to ``1``, For example:
$ PYRAMID_RELOAD_TEMPLATES=1 bin/paster serve myproject.ini
To use a setting in the application ``.ini`` file for the same
-purpose, set the ``reload_templates`` key to ``true`` within the
+purpose, set the ``pyramid.reload_templates`` key to ``true`` within the
application's configuration section, e.g.:
.. code-block:: ini
@@ -801,7 +801,7 @@ application's configuration section, e.g.:
[app:main]
use = egg:MyProject#app
- reload_templates = true
+ pyramid.reload_templates = true
.. index::
single: template system bindings
diff --git a/docs/narr/urldispatch.rst b/docs/narr/urldispatch.rst
index 0598cd4f2..61c9770c6 100644
--- a/docs/narr/urldispatch.rst
+++ b/docs/narr/urldispatch.rst
@@ -1005,7 +1005,7 @@ Debugging Route Matching
It's useful to be able to take a peek under the hood when requests that enter
your application arent matching your routes as you expect them to. To debug
route matching, use the ``PYRAMID_DEBUG_ROUTEMATCH`` environment variable or the
-``debug_routematch`` configuration file setting (set either to ``true``).
+``pyramid.debug_routematch`` configuration file setting (set either to ``true``).
Details of the route matching decision for a particular request to the
:app:`Pyramid` application will be printed to the ``stderr`` of the console
which you started the application from. For example:
diff --git a/docs/narr/viewconfig.rst b/docs/narr/viewconfig.rst
index d776887c8..a1b12ad2a 100644
--- a/docs/narr/viewconfig.rst
+++ b/docs/narr/viewconfig.rst
@@ -679,10 +679,10 @@ per :ref:`protecting_views`.
It's useful to be able to debug :exc:`NotFound` error responses when they
occur unexpectedly due to an application registry misconfiguration. To debug
these errors, use the ``PYRAMID_DEBUG_NOTFOUND`` environment variable or the
-``debug_notfound`` configuration file setting. Details of why a view was not
-found will be printed to ``stderr``, and the browser representation of the
-error will include the same information. See :ref:`environment_chapter` for
-more information about how, and where to set these values.
+``pyramid.debug_notfound`` configuration file setting. Details of why a view
+was not found will be printed to ``stderr``, and the browser representation of
+the error will include the same information. See :ref:`environment_chapter`
+for more information about how, and where to set these values.
.. index::
single: HTTP caching
@@ -729,10 +729,10 @@ headers you set within the view itself unless you use ``preserve_auto``.
You can also turn of the effect of ``http_cache`` entirely for the duration
of a Pyramid application lifetime. To do so, set the
``PYRAMID_PREVENT_HTTP_CACHE`` environment variable or the
-``prevent_http_cache`` configuration value setting to a true value. For more
-information, see :ref:`preventing_http_caching`.
+``pyramid.prevent_http_cache`` configuration value setting to a true value.
+For more information, see :ref:`preventing_http_caching`.
-Note that setting ``prevent_http_cache`` will have no effect on caching
+Note that setting ``pyramid.prevent_http_cache`` will have no effect on caching
headers that your application code itself sets. It will only prevent caching
headers that would have been set by the Pyramid HTTP caching machinery
invoked as the result of the ``http_cache`` argument to view configuration.
diff --git a/docs/tutorials/wiki/src/authorization/development.ini b/docs/tutorials/wiki/src/authorization/development.ini
index 1ba746d0e..07800514e 100644
--- a/docs/tutorials/wiki/src/authorization/development.ini
+++ b/docs/tutorials/wiki/src/authorization/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[pipeline:main]
diff --git a/docs/tutorials/wiki/src/authorization/production.ini b/docs/tutorials/wiki/src/authorization/production.ini
index 5c47ade9b..217bdd260 100644
--- a/docs/tutorials/wiki/src/authorization/production.ini
+++ b/docs/tutorials/wiki/src/authorization/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[filter:weberror]
diff --git a/docs/tutorials/wiki/src/authorization/tutorial/static/pylons.css b/docs/tutorials/wiki/src/authorization/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki/src/authorization/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki/src/authorization/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki/src/authorization/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki/src/authorization/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki/src/authorization/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki/src/authorization/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki/src/basiclayout/development.ini b/docs/tutorials/wiki/src/basiclayout/development.ini
index 555010bed..04e341f2e 100644
--- a/docs/tutorials/wiki/src/basiclayout/development.ini
+++ b/docs/tutorials/wiki/src/basiclayout/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[pipeline:main]
diff --git a/docs/tutorials/wiki/src/basiclayout/production.ini b/docs/tutorials/wiki/src/basiclayout/production.ini
index 5c47ade9b..217bdd260 100644
--- a/docs/tutorials/wiki/src/basiclayout/production.ini
+++ b/docs/tutorials/wiki/src/basiclayout/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[filter:weberror]
diff --git a/docs/tutorials/wiki/src/basiclayout/tutorial/static/pylons.css b/docs/tutorials/wiki/src/basiclayout/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki/src/basiclayout/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki/src/basiclayout/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki/src/basiclayout/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki/src/basiclayout/tutorial/templates/mytemplate.pt
index c2bc1fd65..f9f351c97 100644
--- a/docs/tutorials/wiki/src/basiclayout/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki/src/basiclayout/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki/src/models/development.ini b/docs/tutorials/wiki/src/models/development.ini
index 1ba746d0e..07800514e 100644
--- a/docs/tutorials/wiki/src/models/development.ini
+++ b/docs/tutorials/wiki/src/models/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[pipeline:main]
diff --git a/docs/tutorials/wiki/src/models/production.ini b/docs/tutorials/wiki/src/models/production.ini
index 5c47ade9b..217bdd260 100644
--- a/docs/tutorials/wiki/src/models/production.ini
+++ b/docs/tutorials/wiki/src/models/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[filter:weberror]
diff --git a/docs/tutorials/wiki/src/models/tutorial/static/pylons.css b/docs/tutorials/wiki/src/models/tutorial/static/pylons.css
index a9f49cc85..7e6ec739d 100644
--- a/docs/tutorials/wiki/src/models/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki/src/models/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki/src/models/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki/src/models/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki/src/models/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki/src/models/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki/src/tests/development.ini b/docs/tutorials/wiki/src/tests/development.ini
index 1ba746d0e..07800514e 100644
--- a/docs/tutorials/wiki/src/tests/development.ini
+++ b/docs/tutorials/wiki/src/tests/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[pipeline:main]
diff --git a/docs/tutorials/wiki/src/tests/production.ini b/docs/tutorials/wiki/src/tests/production.ini
index 5c47ade9b..217bdd260 100644
--- a/docs/tutorials/wiki/src/tests/production.ini
+++ b/docs/tutorials/wiki/src/tests/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[filter:weberror]
diff --git a/docs/tutorials/wiki/src/tests/tutorial/static/pylons.css b/docs/tutorials/wiki/src/tests/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki/src/tests/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki/src/tests/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki/src/tests/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki/src/tests/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki/src/tests/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki/src/tests/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki/src/views/development.ini b/docs/tutorials/wiki/src/views/development.ini
index 555010bed..04e341f2e 100644
--- a/docs/tutorials/wiki/src/views/development.ini
+++ b/docs/tutorials/wiki/src/views/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[pipeline:main]
diff --git a/docs/tutorials/wiki/src/views/production.ini b/docs/tutorials/wiki/src/views/production.ini
index 5c47ade9b..217bdd260 100644
--- a/docs/tutorials/wiki/src/views/production.ini
+++ b/docs/tutorials/wiki/src/views/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[filter:weberror]
diff --git a/docs/tutorials/wiki/src/views/tutorial/static/pylons.css b/docs/tutorials/wiki/src/views/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki/src/views/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki/src/views/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki/src/views/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki/src/views/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki/src/views/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki/src/views/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki2/basiclayout.rst b/docs/tutorials/wiki2/basiclayout.rst
index 6151e0e25..0fd64fde4 100644
--- a/docs/tutorials/wiki2/basiclayout.rst
+++ b/docs/tutorials/wiki2/basiclayout.rst
@@ -57,7 +57,7 @@ The next step is to construct a :term:`Configurator`:
``settings`` is passed to the Configurator as a keyword argument with the
dictionary values passed by PasteDeploy as the ``**settings`` argument. This
will be a dictionary of settings parsed from the ``.ini`` file, which
-contains deployment-related values such as ``reload_templates``,
+contains deployment-related values such as ``pyramid.reload_templates``,
``db_string``, etc.
We now can call :meth:`pyramid.config.Configurator.add_static_view` with the
diff --git a/docs/tutorials/wiki2/src/authorization/development.ini b/docs/tutorials/wiki2/src/authorization/development.ini
index 3b615f635..bd71cdba5 100644
--- a/docs/tutorials/wiki2/src/authorization/development.ini
+++ b/docs/tutorials/wiki2/src/authorization/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[pipeline:main]
diff --git a/docs/tutorials/wiki2/src/authorization/production.ini b/docs/tutorials/wiki2/src/authorization/production.ini
index 0fdc38811..ed8eadacc 100644
--- a/docs/tutorials/wiki2/src/authorization/production.ini
+++ b/docs/tutorials/wiki2/src/authorization/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[filter:weberror]
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/static/pylons.css b/docs/tutorials/wiki2/src/authorization/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki2/src/authorization/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki2/src/basiclayout/development.ini b/docs/tutorials/wiki2/src/basiclayout/development.ini
index 3b615f635..bd71cdba5 100644
--- a/docs/tutorials/wiki2/src/basiclayout/development.ini
+++ b/docs/tutorials/wiki2/src/basiclayout/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[pipeline:main]
diff --git a/docs/tutorials/wiki2/src/basiclayout/production.ini b/docs/tutorials/wiki2/src/basiclayout/production.ini
index 0fdc38811..ed8eadacc 100644
--- a/docs/tutorials/wiki2/src/basiclayout/production.ini
+++ b/docs/tutorials/wiki2/src/basiclayout/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[filter:weberror]
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/static/pylons.css b/docs/tutorials/wiki2/src/basiclayout/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki2/src/models/development.ini b/docs/tutorials/wiki2/src/models/development.ini
index 3b615f635..bd71cdba5 100644
--- a/docs/tutorials/wiki2/src/models/development.ini
+++ b/docs/tutorials/wiki2/src/models/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[pipeline:main]
diff --git a/docs/tutorials/wiki2/src/models/production.ini b/docs/tutorials/wiki2/src/models/production.ini
index 0fdc38811..ed8eadacc 100644
--- a/docs/tutorials/wiki2/src/models/production.ini
+++ b/docs/tutorials/wiki2/src/models/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[filter:weberror]
diff --git a/docs/tutorials/wiki2/src/models/tutorial/static/pylons.css b/docs/tutorials/wiki2/src/models/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki2/src/models/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki2/src/tests/development.ini b/docs/tutorials/wiki2/src/tests/development.ini
index 3b615f635..bd71cdba5 100644
--- a/docs/tutorials/wiki2/src/tests/development.ini
+++ b/docs/tutorials/wiki2/src/tests/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[pipeline:main]
diff --git a/docs/tutorials/wiki2/src/tests/production.ini b/docs/tutorials/wiki2/src/tests/production.ini
index 0fdc38811..ed8eadacc 100644
--- a/docs/tutorials/wiki2/src/tests/production.ini
+++ b/docs/tutorials/wiki2/src/tests/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[filter:weberror]
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/static/pylons.css b/docs/tutorials/wiki2/src/tests/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki2/src/tests/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki2/src/tests/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki2/src/tests/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/docs/tutorials/wiki2/src/views/development.ini b/docs/tutorials/wiki2/src/views/development.ini
index 3b615f635..bd71cdba5 100644
--- a/docs/tutorials/wiki2/src/views/development.ini
+++ b/docs/tutorials/wiki2/src/views/development.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[pipeline:main]
diff --git a/docs/tutorials/wiki2/src/views/production.ini b/docs/tutorials/wiki2/src/views/production.ini
index 0fdc38811..ed8eadacc 100644
--- a/docs/tutorials/wiki2/src/views/production.ini
+++ b/docs/tutorials/wiki2/src/views/production.ini
@@ -1,11 +1,11 @@
[app:tutorial]
use = egg:tutorial
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.db
[filter:weberror]
diff --git a/docs/tutorials/wiki2/src/views/tutorial/static/pylons.css b/docs/tutorials/wiki2/src/views/tutorial/static/pylons.css
index fd1914d8d..c54499ddd 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/static/pylons.css
+++ b/docs/tutorials/wiki2/src/views/tutorial/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
@@ -31,7 +31,7 @@ body h2,
body h3,
body h4,
body h5,
-body h6{font-family:"Neuton","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
+body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;}
#wrap{min-height:100%;}
#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;}
#header{background:#000000;top:0;font-size:14px;}
diff --git a/docs/tutorials/wiki2/src/views/tutorial/templates/mytemplate.pt b/docs/tutorials/wiki2/src/views/tutorial/templates/mytemplate.pt
index efe581b59..14b88d16a 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/templates/mytemplate.pt
+++ b/docs/tutorials/wiki2/src/views/tutorial/templates/mytemplate.pt
@@ -6,8 +6,9 @@
<meta name="keywords" content="python web application" />
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('tutorial:static/favicon.ico')}" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<link rel="stylesheet" href="${request.static_url('tutorial:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Neuton|Nobile:regular,i,b,bi&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('tutorial:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/pyramid/config.py b/pyramid/config.py
index cf6fb4182..159422c22 100644
--- a/pyramid/config.py
+++ b/pyramid/config.py
@@ -661,7 +661,7 @@ class Configurator(object):
""" Return a new Configurator instance with the same registry
as this configurator using the package supplied as the
``package`` argument to the new configurator. ``package`` may
- be an actual Python package object or a Python dotted name
+ be an actual Python package object or a :term:`dotted Python name`
representing a package."""
context = self._ctx
if context is None:
@@ -717,6 +717,11 @@ class Configurator(object):
policies, renderers, a debug logger, a locale negotiator, and various
other settings using the configurator's current registry, as per the
descriptions in the Configurator constructor."""
+ if settings:
+ includes = settings.pop('pyramid.include', '')
+ includes = [x.strip() for x in includes.splitlines()]
+ else:
+ includes = []
registry = self.registry
self._fix_registry()
self._set_settings(settings)
@@ -772,6 +777,8 @@ class Configurator(object):
if default_view_mapper is not None:
self.set_view_mapper(default_view_mapper)
self.commit()
+ for inc in includes:
+ self.include(inc)
def hook_zca(self):
""" Call :func:`zope.component.getSiteManager.sethook` with
@@ -901,9 +908,10 @@ class Configurator(object):
the server.
A request handler factory (passed as ``handler_factory``) must be a
- callable which accepts two arguments: ``handler`` and ``registry``.
- ``handler`` will be the request handler being wrapped. ``registry``
- will be the Pyramid :term:`application registry` represented by this
+ callable (or a :term:`dotted Python name` to a callable) which
+ accepts two arguments: ``handler`` and ``registry``. ``handler``
+ will be the request handler being wrapped. ``registry`` will be the
+ Pyramid :term:`application registry` represented by this
Configurator. A request handler factory must return a request
handler when it is called.
@@ -954,6 +962,7 @@ class Configurator(object):
.. note:: This feature is new as of Pyramid 1.1.1.
"""
+ handler_factory = self.maybe_dotted(handler_factory)
def register():
registry = self.registry
registry.registerUtility(handler_factory, IRequestHandlerFactory,
diff --git a/pyramid/interfaces.py b/pyramid/interfaces.py
index a06cb7e52..41e896adf 100644
--- a/pyramid/interfaces.py
+++ b/pyramid/interfaces.py
@@ -631,7 +631,7 @@ class IRoute(Interface):
'when this route matches (or ``None``)')
predicates = Attribute(
'A sequence of :term:`route predicate` objects used to '
- 'determine if a request matches this route or not or not after '
+ 'determine if a request matches this route or not after '
'basic pattern matching has been completed.')
pregenerator = Attribute('This attribute should either be ``None`` or '
'a callable object implementing the '
@@ -777,13 +777,13 @@ class ISession(Interface):
""" Pop a queue from the flash storage. The queue is removed from
flash storage after this message is called. The queue is returned;
it is a list of flash messages added by
- :meth:`pyramid.interfaces.ISesssion.flash`"""
+ :meth:`pyramid.interfaces.ISession.flash`"""
def peek_flash(queue=''):
""" Peek at a queue in the flash storage. The queue remains in
flash storage after this message is called. The queue is returned;
it is a list of flash messages added by
- :meth:`pyramid.interfaces.ISesssion.flash`
+ :meth:`pyramid.interfaces.ISession.flash`
"""
def new_csrf_token():
diff --git a/pyramid/request.py b/pyramid/request.py
index 8df204681..2a654d218 100644
--- a/pyramid/request.py
+++ b/pyramid/request.py
@@ -204,6 +204,7 @@ class Request(BaseRequest, DeprecatedRequestMethods):
response_callbacks = ()
finished_callbacks = ()
exception = None
+ exc_info = None
matchdict = None
matched_route = None
diff --git a/pyramid/response.py b/pyramid/response.py
index 68496e386..db53de0c3 100644
--- a/pyramid/response.py
+++ b/pyramid/response.py
@@ -1,3 +1,5 @@
+import venusian
+
from webob import Response as _Response
from zope.interface import implements
from pyramid.interfaces import IResponse
@@ -5,3 +7,60 @@ from pyramid.interfaces import IResponse
class Response(_Response):
implements(IResponse)
+
+class response_adapter(object):
+ """ Decorator activated via a :term:`scan` which treats the function
+ being decorated as a :term:`response adapter` for the set of types or
+ interfaces passed as ``*types_or_ifaces`` to the decorator constructor.
+
+ For example, if you scan the following response adapter:
+
+ .. code-block:: python
+
+ from pyramid.response import Response
+ from pyramid.response import response_adapter
+
+ @response_adapter(int)
+ def myadapter(i):
+ return Response(status=i)
+
+ You can then return an integer from your view callables, and it will be
+ converted into a response with the integer as the status code.
+
+ More than one type or interface can be passed as a constructor argument.
+ The decorated response adapter will be called for each type or interface.
+
+ .. code-block:: python
+
+ import json
+
+ from pyramid.response import Response
+ from pyramid.response import response_adapter
+
+ @response_adapter(dict, list)
+ def myadapter(ob):
+ return Response(json.dumps(ob))
+
+ This method will have no effect until a :term:`scan` is performed
+ agains the package or module which contains it, ala:
+
+ .. code-block:: python
+
+ from pyramid.config import Configurator
+ config = Configurator()
+ config.scan('somepackage_containing_adapters')
+
+ """
+ venusian = venusian # for unit testing
+
+ def __init__(self, *types_or_ifaces):
+ self.types_or_ifaces = types_or_ifaces
+
+ def register(self, scanner, name, wrapped):
+ config = scanner.config
+ for type_or_iface in self.types_or_ifaces:
+ config.add_response_adapter(wrapped, type_or_iface)
+
+ def __call__(self, wrapped):
+ self.venusian.attach(wrapped, self.register, category='pyramid')
+ return wrapped
diff --git a/pyramid/router.py b/pyramid/router.py
index e8c19fca0..aa9e4a1ba 100644
--- a/pyramid/router.py
+++ b/pyramid/router.py
@@ -1,3 +1,5 @@
+import sys
+
from zope.interface import implements
from zope.interface import providedBy
@@ -65,6 +67,7 @@ class Router(object):
has_listeners = registry.has_listeners
notify = registry.notify
logger = self.logger
+
try: # matches except Exception (exception view execution)
has_listeners and notify(NewRequest(request))
# find the root object
@@ -165,6 +168,7 @@ class Router(object):
# handle exceptions raised during root finding and view-exec
except Exception, why:
+ exc_info = sys.exc_info()
# clear old generated request.response, if any; it may
# have been mutated by the view, and its state is not
# sane (e.g. caching headers)
@@ -172,6 +176,7 @@ class Router(object):
del attrs['response']
attrs['exception'] = why
+ attrs['exc_info'] = exc_info
for_ = (IExceptionViewClassifier,
request_iface.combined,
@@ -205,22 +210,17 @@ class Router(object):
threadlocals = {'registry':registry, 'request':request}
manager.push(threadlocals)
- try: # matches finally: manager.pop()
-
- try: # matches finally: ... call request finished callbacks ...
-
- # create the request
+ try:
+ try:
request = self.request_factory(environ)
threadlocals['request'] = request
request.registry = registry
response = self.handle_request(request)
-
finally:
if request is not None and request.finished_callbacks:
request._process_finished_callbacks()
return response(request.environ, start_response)
-
finally:
manager.pop()
diff --git a/pyramid/scaffolds/alchemy/+package+/static/pylons.css b/pyramid/scaffolds/alchemy/+package+/static/pylons.css
index d952fb42e..c54499ddd 100644
--- a/pyramid/scaffolds/alchemy/+package+/static/pylons.css
+++ b/pyramid/scaffolds/alchemy/+package+/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
diff --git a/pyramid/scaffolds/alchemy/+package+/templates/model.pt_tmpl b/pyramid/scaffolds/alchemy/+package+/templates/model.pt_tmpl
index 263999c5e..83ddd768e 100644
--- a/pyramid/scaffolds/alchemy/+package+/templates/model.pt_tmpl
+++ b/pyramid/scaffolds/alchemy/+package+/templates/model.pt_tmpl
@@ -7,8 +7,8 @@
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('{{package}}:static/favicon.ico')}" />
<link rel="stylesheet" href="${request.static_url('{{package}}:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen">
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen">
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('{{package}}:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/pyramid/scaffolds/alchemy/+package+/templates/root.pt_tmpl b/pyramid/scaffolds/alchemy/+package+/templates/root.pt_tmpl
index 3bf3da34e..fc41ce20a 100644
--- a/pyramid/scaffolds/alchemy/+package+/templates/root.pt_tmpl
+++ b/pyramid/scaffolds/alchemy/+package+/templates/root.pt_tmpl
@@ -7,8 +7,8 @@
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('{{package}}:static/favicon.ico')}" />
<link rel="stylesheet" href="${request.static_url('{{package}}:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen">
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen">
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('{{package}}:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/pyramid/scaffolds/alchemy/development.ini_tmpl b/pyramid/scaffolds/alchemy/development.ini_tmpl
index accec1718..06c29069d 100644
--- a/pyramid/scaffolds/alchemy/development.ini_tmpl
+++ b/pyramid/scaffolds/alchemy/development.ini_tmpl
@@ -1,11 +1,13 @@
[app:{{project}}]
use = egg:{{project}}
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
+
sqlalchemy.url = sqlite:///%(here)s/{{project}}.db
[pipeline:main]
diff --git a/pyramid/scaffolds/alchemy/production.ini_tmpl b/pyramid/scaffolds/alchemy/production.ini_tmpl
index 0deb1dd5f..6025d9a14 100644
--- a/pyramid/scaffolds/alchemy/production.ini_tmpl
+++ b/pyramid/scaffolds/alchemy/production.ini_tmpl
@@ -1,11 +1,13 @@
[app:{{project}}]
use = egg:{{project}}
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
+
sqlalchemy.url = sqlite:///%(here)s/{{project}}.db
[filter:weberror]
diff --git a/pyramid/scaffolds/routesalchemy/+package+/static/pylons.css b/pyramid/scaffolds/routesalchemy/+package+/static/pylons.css
index d952fb42e..c54499ddd 100644
--- a/pyramid/scaffolds/routesalchemy/+package+/static/pylons.css
+++ b/pyramid/scaffolds/routesalchemy/+package+/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
diff --git a/pyramid/scaffolds/routesalchemy/+package+/templates/mytemplate.pt_tmpl b/pyramid/scaffolds/routesalchemy/+package+/templates/mytemplate.pt_tmpl
index b24c109d7..3cd9c66a4 100644
--- a/pyramid/scaffolds/routesalchemy/+package+/templates/mytemplate.pt_tmpl
+++ b/pyramid/scaffolds/routesalchemy/+package+/templates/mytemplate.pt_tmpl
@@ -7,8 +7,8 @@
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('{{package}}:static/favicon.ico')}" />
<link rel="stylesheet" href="${request.static_url('{{package}}:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen">
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen">
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('{{package}}:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/pyramid/scaffolds/routesalchemy/development.ini_tmpl b/pyramid/scaffolds/routesalchemy/development.ini_tmpl
index accec1718..06c29069d 100644
--- a/pyramid/scaffolds/routesalchemy/development.ini_tmpl
+++ b/pyramid/scaffolds/routesalchemy/development.ini_tmpl
@@ -1,11 +1,13 @@
[app:{{project}}]
use = egg:{{project}}
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
+
sqlalchemy.url = sqlite:///%(here)s/{{project}}.db
[pipeline:main]
diff --git a/pyramid/scaffolds/routesalchemy/production.ini_tmpl b/pyramid/scaffolds/routesalchemy/production.ini_tmpl
index 0deb1dd5f..6025d9a14 100644
--- a/pyramid/scaffolds/routesalchemy/production.ini_tmpl
+++ b/pyramid/scaffolds/routesalchemy/production.ini_tmpl
@@ -1,11 +1,13 @@
[app:{{project}}]
use = egg:{{project}}
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
+
sqlalchemy.url = sqlite:///%(here)s/{{project}}.db
[filter:weberror]
diff --git a/pyramid/scaffolds/starter/+package+/static/pylons.css b/pyramid/scaffolds/starter/+package+/static/pylons.css
index d952fb42e..c54499ddd 100644
--- a/pyramid/scaffolds/starter/+package+/static/pylons.css
+++ b/pyramid/scaffolds/starter/+package+/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
diff --git a/pyramid/scaffolds/starter/+package+/templates/mytemplate.pt_tmpl b/pyramid/scaffolds/starter/+package+/templates/mytemplate.pt_tmpl
index b24c109d7..3cd9c66a4 100644
--- a/pyramid/scaffolds/starter/+package+/templates/mytemplate.pt_tmpl
+++ b/pyramid/scaffolds/starter/+package+/templates/mytemplate.pt_tmpl
@@ -7,8 +7,8 @@
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('{{package}}:static/favicon.ico')}" />
<link rel="stylesheet" href="${request.static_url('{{package}}:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen">
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen">
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('{{package}}:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/pyramid/scaffolds/starter/development.ini_tmpl b/pyramid/scaffolds/starter/development.ini_tmpl
index 60e52da57..1239dca3f 100644
--- a/pyramid/scaffolds/starter/development.ini_tmpl
+++ b/pyramid/scaffolds/starter/development.ini_tmpl
@@ -1,11 +1,12 @@
[app:{{project}}]
use = egg:{{project}}
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
[pipeline:main]
pipeline =
diff --git a/pyramid/scaffolds/starter/production.ini_tmpl b/pyramid/scaffolds/starter/production.ini_tmpl
index dea0ef2c6..4ddb3f954 100644
--- a/pyramid/scaffolds/starter/production.ini_tmpl
+++ b/pyramid/scaffolds/starter/production.ini_tmpl
@@ -1,11 +1,12 @@
[app:{{project}}]
use = egg:{{project}}
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
[filter:weberror]
use = egg:WebError#error_catcher
diff --git a/pyramid/scaffolds/zodb/+package+/static/pylons.css b/pyramid/scaffolds/zodb/+package+/static/pylons.css
index d952fb42e..c54499ddd 100644
--- a/pyramid/scaffolds/zodb/+package+/static/pylons.css
+++ b/pyramid/scaffolds/zodb/+package+/static/pylons.css
@@ -23,7 +23,7 @@ h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;}
h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;}
h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;}
html,body{width:100%;height:100%;}
-body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "Nobile","Lucida Grande",Lucida,Verdana,sans-serif;}
+body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;}
a{color:#1b61d6;text-decoration:none;}
a:hover{color:#e88f00;text-decoration:underline;}
body h1,
diff --git a/pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt_tmpl b/pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt_tmpl
index b24c109d7..3cd9c66a4 100644
--- a/pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt_tmpl
+++ b/pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt_tmpl
@@ -7,8 +7,8 @@
<meta name="description" content="pyramid web application" />
<link rel="shortcut icon" href="${request.static_url('{{package}}:static/favicon.ico')}" />
<link rel="stylesheet" href="${request.static_url('{{package}}:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen">
- <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen">
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" />
+ <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="${request.static_url('{{package}}:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
diff --git a/pyramid/scaffolds/zodb/development.ini_tmpl b/pyramid/scaffolds/zodb/development.ini_tmpl
index ae9584690..730300a82 100644
--- a/pyramid/scaffolds/zodb/development.ini_tmpl
+++ b/pyramid/scaffolds/zodb/development.ini_tmpl
@@ -1,11 +1,13 @@
[app:{{project}}]
use = egg:{{project}}
-reload_templates = true
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = true
-default_locale_name = en
+
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = true
+pyramid.default_locale_name = en
+
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[pipeline:main]
diff --git a/pyramid/scaffolds/zodb/production.ini_tmpl b/pyramid/scaffolds/zodb/production.ini_tmpl
index ff52a0585..9fe8f4741 100644
--- a/pyramid/scaffolds/zodb/production.ini_tmpl
+++ b/pyramid/scaffolds/zodb/production.ini_tmpl
@@ -1,11 +1,13 @@
[app:{{project}}]
use = egg:{{project}}
-reload_templates = false
-debug_authorization = false
-debug_notfound = false
-debug_routematch = false
-debug_templates = false
-default_locale_name = en
+
+pyramid.reload_templates = false
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.debug_templates = false
+pyramid.default_locale_name = en
+
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
[filter:weberror]
diff --git a/pyramid/settings.py b/pyramid/settings.py
index 7ba53ea4c..7540cb6d6 100644
--- a/pyramid/settings.py
+++ b/pyramid/settings.py
@@ -20,36 +20,54 @@ class Settings(dict):
dict.__init__(self, d, **kw)
eget = _environ_.get
config_debug_all = self.get('debug_all', '')
+ config_debug_all = self.get('pyramid.debug_all', config_debug_all)
eff_debug_all = asbool(eget('PYRAMID_DEBUG_ALL', config_debug_all))
config_reload_all = self.get('reload_all', '')
- eff_reload_all = asbool(eget('PYRAMID_RELOAD_ALL',config_reload_all))
+ config_reload_all = self.get('pyramid.reload_all', config_reload_all)
+ eff_reload_all = asbool(eget('PYRAMID_RELOAD_ALL', config_reload_all))
config_debug_auth = self.get('debug_authorization', '')
+ config_debug_auth = self.get('pyramid.debug_authorization',
+ config_debug_auth)
eff_debug_auth = asbool(eget('PYRAMID_DEBUG_AUTHORIZATION',
config_debug_auth))
config_debug_notfound = self.get('debug_notfound', '')
+ config_debug_notfound = self.get('pyramid.debug_notfound',
+ config_debug_notfound)
eff_debug_notfound = asbool(eget('PYRAMID_DEBUG_NOTFOUND',
config_debug_notfound))
config_debug_routematch = self.get('debug_routematch', '')
+ config_debug_routematch = self.get('pyramid.debug_routematch',
+ config_debug_routematch)
eff_debug_routematch = asbool(eget('PYRAMID_DEBUG_ROUTEMATCH',
config_debug_routematch))
config_debug_templates = self.get('debug_templates', '')
+ config_debug_templates = self.get('pyramid.debug_templates',
+ config_debug_templates)
eff_debug_templates = asbool(eget('PYRAMID_DEBUG_TEMPLATES',
config_debug_templates))
config_reload_templates = self.get('reload_templates', '')
+ config_reload_templates = self.get('pyramid.reload_templates',
+ config_reload_templates)
eff_reload_templates = asbool(eget('PYRAMID_RELOAD_TEMPLATES',
config_reload_templates))
config_reload_assets = self.get('reload_assets', '')
- config_reload_resources = self.get('reload_resources', '')
+ config_reload_assets = self.get('pyramid.reload_assets',
+ config_reload_assets)
reload_assets = asbool(eget('PYRAMID_RELOAD_ASSETS',
config_reload_assets))
+ config_reload_resources = self.get('reload_resources', '')
+ config_reload_resources = self.get('pyramid.reload_resources',
+ config_reload_resources)
reload_resources = asbool(eget('PYRAMID_RELOAD_RESOURCES',
config_reload_resources))
# reload_resources is an older alias for reload_assets
eff_reload_assets = reload_assets or reload_resources
locale_name = self.get('default_locale_name', 'en')
+ locale_name = self.get('pyramid.default_locale_name', locale_name)
eff_locale_name = eget('PYRAMID_DEFAULT_LOCALE_NAME', locale_name)
-
config_prevent_http_cache = self.get('prevent_http_cache', '')
+ config_prevent_http_cache = self.get('pyramid.prevent_http_cache',
+ config_prevent_http_cache)
eff_prevent_http_cache = asbool(eget('PYRAMID_PREVENT_HTTP_CACHE',
config_prevent_http_cache))
@@ -63,6 +81,16 @@ class Settings(dict):
'reload_assets':eff_reload_all or eff_reload_assets,
'default_locale_name':eff_locale_name,
'prevent_http_cache':eff_prevent_http_cache,
+
+ 'pyramid.debug_authorization': eff_debug_all or eff_debug_auth,
+ 'pyramid.debug_notfound': eff_debug_all or eff_debug_notfound,
+ 'pyramid.debug_routematch': eff_debug_all or eff_debug_routematch,
+ 'pyramid.debug_templates': eff_debug_all or eff_debug_templates,
+ 'pyramid.reload_templates': eff_reload_all or eff_reload_templates,
+ 'pyramid.reload_resources':eff_reload_all or eff_reload_assets,
+ 'pyramid.reload_assets':eff_reload_all or eff_reload_assets,
+ 'pyramid.default_locale_name':eff_locale_name,
+ 'pyramid.prevent_http_cache':eff_prevent_http_cache,
}
self.update(update)
diff --git a/pyramid/tests/test_config.py b/pyramid/tests/test_config.py
index 57ec1c044..250c53b9a 100644
--- a/pyramid/tests/test_config.py
+++ b/pyramid/tests/test_config.py
@@ -569,6 +569,18 @@ class ConfiguratorTests(unittest.TestCase):
config.setup_registry(default_permission='view')
self.assertEqual(reg.getUtility(IDefaultPermission), 'view')
+ def test_setup_registry_includes(self):
+ from pyramid.registry import Registry
+ reg = Registry()
+ config = self._makeOne(reg)
+ settings = {
+ 'pyramid.include': """pyramid.tests.test_config.dummy_include
+pyramid.tests.test_config.dummy_include2""",
+ }
+ config.setup_registry(settings=settings)
+ self.assert_(reg.included)
+ self.assert_(reg.also_included)
+
def test_get_settings_nosettings(self):
from pyramid.registry import Registry
reg = Registry()
@@ -616,6 +628,18 @@ class ConfiguratorTests(unittest.TestCase):
self.assertEqual(f1, factory1)
self.assertEqual(f2, factory2)
+ def test_add_request_handlers_dottednames(self):
+ import pyramid.tests
+ from pyramid.interfaces import IRequestHandlerFactories
+ from pyramid.interfaces import IRequestHandlerFactory
+ config = self._makeOne()
+ config.add_request_handler('pyramid.tests', 'name1')
+ config.commit()
+ names = config.registry.queryUtility(IRequestHandlerFactories)
+ self.assertEqual(names, ['name1'])
+ f1 = config.registry.getUtility(IRequestHandlerFactory, name='name1')
+ self.assertEqual(f1, pyramid.tests)
+
def test_add_request_handlers_names_overlap(self):
from pyramid.interfaces import IRequestHandlerFactories
from pyramid.interfaces import IRequestHandlerFactory
@@ -5592,6 +5616,11 @@ def dummyfactory(request):
""" """
def dummy_include(config):
+ config.registry.included = True
+ config.action('discrim', None, config.package)
+
+def dummy_include2(config):
+ config.registry.also_included = True
config.action('discrim', None, config.package)
includeme = dummy_include
diff --git a/pyramid/tests/test_response.py b/pyramid/tests/test_response.py
index 6cb2fd6f4..39360c0af 100644
--- a/pyramid/tests/test_response.py
+++ b/pyramid/tests/test_response.py
@@ -1,4 +1,5 @@
import unittest
+from pyramid import testing
class TestResponse(unittest.TestCase):
def _getTargetClass(self):
@@ -15,3 +16,66 @@ class TestResponse(unittest.TestCase):
inst = self._getTargetClass()()
self.assertTrue(IResponse.providedBy(inst))
+class Dummy(object):
+ pass
+
+class DummyConfigurator(object):
+ def __init__(self):
+ self.adapters = []
+
+ def add_response_adapter(self, wrapped, type_or_iface):
+ self.adapters.append((wrapped, type_or_iface))
+
+class DummyVenusian(object):
+ def __init__(self):
+ self.attached = []
+
+ def attach(self, wrapped, fn, category=None):
+ self.attached.append((wrapped, fn, category))
+
+class TestResponseAdapter(unittest.TestCase):
+ def setUp(self):
+ registry = Dummy()
+ self.config = testing.setUp(registry=registry)
+ self.config.begin()
+
+ def tearDown(self):
+ self.config.end()
+
+ def _makeOne(self, *types_or_ifaces):
+ from pyramid.response import response_adapter
+ return response_adapter(*types_or_ifaces)
+
+ def test_register_single(self):
+ from zope.interface import Interface
+ class IFoo(Interface): pass
+ dec = self._makeOne(IFoo)
+ def foo(): pass
+ config = DummyConfigurator()
+ scanner = Dummy()
+ scanner.config = config
+ dec.register(scanner, None, foo)
+ self.assertEqual(config.adapters, [(foo, IFoo)])
+
+ def test_register_multi(self):
+ from zope.interface import Interface
+ class IFoo(Interface): pass
+ class IBar(Interface): pass
+ dec = self._makeOne(IFoo, IBar)
+ def foo(): pass
+ config = DummyConfigurator()
+ scanner = Dummy()
+ scanner.config = config
+ dec.register(scanner, None, foo)
+ self.assertEqual(config.adapters, [(foo, IFoo), (foo, IBar)])
+
+ def test___call__(self):
+ from zope.interface import Interface
+ class IFoo(Interface): pass
+ dec = self._makeOne(IFoo)
+ dummy_venusian = DummyVenusian()
+ dec.venusian = dummy_venusian
+ def foo(): pass
+ dec(foo)
+ self.assertEqual(dummy_venusian.attached,
+ [(foo, dec.register, 'pyramid')])
diff --git a/pyramid/tests/test_router.py b/pyramid/tests/test_router.py
index 4d44de5c0..e44465992 100644
--- a/pyramid/tests/test_router.py
+++ b/pyramid/tests/test_router.py
@@ -808,7 +808,8 @@ class TestRouter(unittest.TestCase):
# ``exception`` must be attached to request even if a suitable
# exception view cannot be found
self.assertEqual(request.exception.__class__, RuntimeError)
-
+ self.assertEqual(request.exc_info[0], RuntimeError)
+
def test_call_view_raises_exception_view(self):
from pyramid.interfaces import IViewClassifier
from pyramid.interfaces import IExceptionViewClassifier
diff --git a/pyramid/tests/test_settings.py b/pyramid/tests/test_settings.py
index 75d653133..5037959aa 100644
--- a/pyramid/tests/test_settings.py
+++ b/pyramid/tests/test_settings.py
@@ -28,167 +28,337 @@ class TestSettings(unittest.TestCase):
self.assertEqual(settings['reload_templates'], False)
self.assertEqual(settings['reload_resources'], False)
+ self.assertEqual(settings['pyramid.debug_authorization'], False)
+ self.assertEqual(settings['pyramid.debug_notfound'], False)
+ self.assertEqual(settings['pyramid.debug_routematch'], False)
+ self.assertEqual(settings['pyramid.reload_templates'], False)
+ self.assertEqual(settings['pyramid.reload_resources'], False)
+
def test_prevent_http_cache(self):
settings = self._makeOne({})
self.assertEqual(settings['prevent_http_cache'], False)
+ self.assertEqual(settings['pyramid.prevent_http_cache'], False)
result = self._makeOne({'prevent_http_cache':'false'})
self.assertEqual(result['prevent_http_cache'], False)
+ self.assertEqual(result['pyramid.prevent_http_cache'], False)
result = self._makeOne({'prevent_http_cache':'t'})
self.assertEqual(result['prevent_http_cache'], True)
+ self.assertEqual(result['pyramid.prevent_http_cache'], True)
result = self._makeOne({'prevent_http_cache':'1'})
self.assertEqual(result['prevent_http_cache'], True)
+ self.assertEqual(result['pyramid.prevent_http_cache'], True)
+ result = self._makeOne({'pyramid.prevent_http_cache':'t'})
+ self.assertEqual(result['prevent_http_cache'], True)
+ self.assertEqual(result['pyramid.prevent_http_cache'], True)
result = self._makeOne({}, {'PYRAMID_PREVENT_HTTP_CACHE':'1'})
self.assertEqual(result['prevent_http_cache'], True)
- result = self._makeOne({'prevent_http_cache':'false'},
- {'PYRAMID_PREVENT_HTTP_CACHE':'1'})
+ self.assertEqual(result['pyramid.prevent_http_cache'], True)
+ result = self._makeOne({'prevent_http_cache':'false',
+ 'pyramid.prevent_http_cache':'1'})
+ self.assertEqual(result['prevent_http_cache'], True)
+ self.assertEqual(result['pyramid.prevent_http_cache'], True)
+ result = self._makeOne({'prevent_http_cache':'false',
+ 'pyramid.prevent_http_cache':'f'},
+ {'PYRAMID_PREVENT_HTTP_CACHE':'1'})
self.assertEqual(result['prevent_http_cache'], True)
+ self.assertEqual(result['pyramid.prevent_http_cache'], True)
def test_reload_templates(self):
settings = self._makeOne({})
self.assertEqual(settings['reload_templates'], False)
+ self.assertEqual(settings['pyramid.reload_templates'], False)
result = self._makeOne({'reload_templates':'false'})
self.assertEqual(result['reload_templates'], False)
+ self.assertEqual(result['pyramid.reload_templates'], False)
result = self._makeOne({'reload_templates':'t'})
self.assertEqual(result['reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
result = self._makeOne({'reload_templates':'1'})
self.assertEqual(result['reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
+ result = self._makeOne({'pyramid.reload_templates':'1'})
+ self.assertEqual(result['reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
result = self._makeOne({}, {'PYRAMID_RELOAD_TEMPLATES':'1'})
self.assertEqual(result['reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
+ result = self._makeOne({'reload_templates':'false',
+ 'pyramid.reload_templates':'1'})
+ self.assertEqual(result['reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
result = self._makeOne({'reload_templates':'false'},
- {'PYRAMID_RELOAD_TEMPLATES':'1'})
+ {'PYRAMID_RELOAD_TEMPLATES':'1'})
self.assertEqual(result['reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
def test_reload_resources(self):
# alias for reload_assets
result = self._makeOne({})
self.assertEqual(result['reload_resources'], False)
self.assertEqual(result['reload_assets'], False)
+ self.assertEqual(result['pyramid.reload_resources'], False)
+ self.assertEqual(result['pyramid.reload_assets'], False)
result = self._makeOne({'reload_resources':'false'})
self.assertEqual(result['reload_resources'], False)
self.assertEqual(result['reload_assets'], False)
+ self.assertEqual(result['pyramid.reload_resources'], False)
+ self.assertEqual(result['pyramid.reload_assets'], False)
result = self._makeOne({'reload_resources':'t'})
self.assertEqual(result['reload_resources'], True)
self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
result = self._makeOne({'reload_resources':'1'})
self.assertEqual(result['reload_resources'], True)
self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ result = self._makeOne({'pyramid.reload_resources':'1'})
+ self.assertEqual(result['reload_resources'], True)
+ self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
result = self._makeOne({}, {'PYRAMID_RELOAD_RESOURCES':'1'})
self.assertEqual(result['reload_resources'], True)
self.assertEqual(result['reload_assets'], True)
- result = self._makeOne({'reload_resources':'false'},
- {'PYRAMID_RELOAD_RESOURCES':'1'})
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ result = self._makeOne({'reload_resources':'false',
+ 'pyramid.reload_resources':'1'})
self.assertEqual(result['reload_resources'], True)
self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ result = self._makeOne({'reload_resources':'false',
+ 'pyramid.reload_resources':'false'},
+ {'PYRAMID_RELOAD_RESOURCES':'1'})
+ self.assertEqual(result['reload_resources'], True)
+ self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
def test_reload_assets(self):
# alias for reload_resources
result = self._makeOne({})
self.assertEqual(result['reload_assets'], False)
self.assertEqual(result['reload_resources'], False)
+ self.assertEqual(result['pyramid.reload_assets'], False)
+ self.assertEqual(result['pyramid.reload_resources'], False)
result = self._makeOne({'reload_assets':'false'})
self.assertEqual(result['reload_resources'], False)
self.assertEqual(result['reload_assets'], False)
+ self.assertEqual(result['pyramid.reload_assets'], False)
+ self.assertEqual(result['pyramid.reload_resources'], False)
result = self._makeOne({'reload_assets':'t'})
self.assertEqual(result['reload_assets'], True)
self.assertEqual(result['reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
result = self._makeOne({'reload_assets':'1'})
self.assertEqual(result['reload_assets'], True)
self.assertEqual(result['reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ result = self._makeOne({'pyramid.reload_assets':'1'})
+ self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
result = self._makeOne({}, {'PYRAMID_RELOAD_ASSETS':'1'})
self.assertEqual(result['reload_assets'], True)
self.assertEqual(result['reload_resources'], True)
- result = self._makeOne({'reload_assets':'false'},
- {'PYRAMID_RELOAD_ASSETS':'1'})
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ result = self._makeOne({'reload_assets':'false',
+ 'pyramid.reload_assets':'1'})
self.assertEqual(result['reload_assets'], True)
self.assertEqual(result['reload_resources'], True)
-
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ result = self._makeOne({'reload_assets':'false',
+ 'pyramid.reload_assets':'false'},
+ {'PYRAMID_RELOAD_ASSETS':'1'})
+ self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
def test_reload_all(self):
result = self._makeOne({})
self.assertEqual(result['reload_templates'], False)
self.assertEqual(result['reload_resources'], False)
self.assertEqual(result['reload_assets'], False)
+ self.assertEqual(result['pyramid.reload_templates'], False)
+ self.assertEqual(result['pyramid.reload_resources'], False)
+ self.assertEqual(result['pyramid.reload_assets'], False)
result = self._makeOne({'reload_all':'false'})
self.assertEqual(result['reload_templates'], False)
self.assertEqual(result['reload_resources'], False)
self.assertEqual(result['reload_assets'], False)
+ self.assertEqual(result['pyramid.reload_templates'], False)
+ self.assertEqual(result['pyramid.reload_resources'], False)
+ self.assertEqual(result['pyramid.reload_assets'], False)
result = self._makeOne({'reload_all':'t'})
self.assertEqual(result['reload_templates'], True)
self.assertEqual(result['reload_resources'], True)
self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
result = self._makeOne({'reload_all':'1'})
self.assertEqual(result['reload_templates'], True)
self.assertEqual(result['reload_resources'], True)
self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ result = self._makeOne({'pyramid.reload_all':'1'})
+ self.assertEqual(result['reload_templates'], True)
+ self.assertEqual(result['reload_resources'], True)
+ self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
result = self._makeOne({}, {'PYRAMID_RELOAD_ALL':'1'})
self.assertEqual(result['reload_templates'], True)
self.assertEqual(result['reload_resources'], True)
self.assertEqual(result['reload_assets'], True)
- result = self._makeOne({'reload_all':'false'},
- {'PYRAMID_RELOAD_ALL':'1'})
+ self.assertEqual(result['pyramid.reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ result = self._makeOne({'reload_all':'false',
+ 'pyramid.reload_all':'1'})
+ self.assertEqual(result['reload_templates'], True)
+ self.assertEqual(result['reload_resources'], True)
+ self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
+ result = self._makeOne({'reload_all':'false',
+ 'pyramid.reload_all':'false'},
+ {'PYRAMID_RELOAD_ALL':'1'})
self.assertEqual(result['reload_templates'], True)
self.assertEqual(result['reload_resources'], True)
self.assertEqual(result['reload_assets'], True)
+ self.assertEqual(result['pyramid.reload_templates'], True)
+ self.assertEqual(result['pyramid.reload_resources'], True)
+ self.assertEqual(result['pyramid.reload_assets'], True)
def test_debug_authorization(self):
result = self._makeOne({})
self.assertEqual(result['debug_authorization'], False)
+ self.assertEqual(result['pyramid.debug_authorization'], False)
result = self._makeOne({'debug_authorization':'false'})
self.assertEqual(result['debug_authorization'], False)
+ self.assertEqual(result['pyramid.debug_authorization'], False)
result = self._makeOne({'debug_authorization':'t'})
self.assertEqual(result['debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
result = self._makeOne({'debug_authorization':'1'})
self.assertEqual(result['debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ result = self._makeOne({'pyramid.debug_authorization':'1'})
+ self.assertEqual(result['debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
result = self._makeOne({}, {'PYRAMID_DEBUG_AUTHORIZATION':'1'})
self.assertEqual(result['debug_authorization'], True)
- result = self._makeOne({'debug_authorization':'false'},
- {'PYRAMID_DEBUG_AUTHORIZATION':'1'})
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ result = self._makeOne({'debug_authorization':'false',
+ 'pyramid.debug_authorization':'1'})
+ self.assertEqual(result['debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ result = self._makeOne({'debug_authorization':'false',
+ 'pyramid.debug_authorization':'false'},
+ {'PYRAMID_DEBUG_AUTHORIZATION':'1'})
self.assertEqual(result['debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
def test_debug_notfound(self):
result = self._makeOne({})
self.assertEqual(result['debug_notfound'], False)
+ self.assertEqual(result['pyramid.debug_notfound'], False)
result = self._makeOne({'debug_notfound':'false'})
self.assertEqual(result['debug_notfound'], False)
+ self.assertEqual(result['pyramid.debug_notfound'], False)
result = self._makeOne({'debug_notfound':'t'})
self.assertEqual(result['debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
result = self._makeOne({'debug_notfound':'1'})
self.assertEqual(result['debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ result = self._makeOne({'pyramid.debug_notfound':'1'})
+ self.assertEqual(result['debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
result = self._makeOne({}, {'PYRAMID_DEBUG_NOTFOUND':'1'})
self.assertEqual(result['debug_notfound'], True)
- result = self._makeOne({'debug_notfound':'false'},
- {'PYRAMID_DEBUG_NOTFOUND':'1'})
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ result = self._makeOne({'debug_notfound':'false',
+ 'pyramid.debug_notfound':'1'})
+ self.assertEqual(result['debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ result = self._makeOne({'debug_notfound':'false',
+ 'pyramid.debug_notfound':'false'},
+ {'PYRAMID_DEBUG_NOTFOUND':'1'})
self.assertEqual(result['debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
def test_debug_routematch(self):
result = self._makeOne({})
self.assertEqual(result['debug_routematch'], False)
+ self.assertEqual(result['pyramid.debug_routematch'], False)
result = self._makeOne({'debug_routematch':'false'})
self.assertEqual(result['debug_routematch'], False)
+ self.assertEqual(result['pyramid.debug_routematch'], False)
result = self._makeOne({'debug_routematch':'t'})
self.assertEqual(result['debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
result = self._makeOne({'debug_routematch':'1'})
self.assertEqual(result['debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ result = self._makeOne({'pyramid.debug_routematch':'1'})
+ self.assertEqual(result['debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
result = self._makeOne({}, {'PYRAMID_DEBUG_ROUTEMATCH':'1'})
self.assertEqual(result['debug_routematch'], True)
- result = self._makeOne({'debug_routematch':'false'},
- {'PYRAMID_DEBUG_ROUTEMATCH':'1'})
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ result = self._makeOne({'debug_routematch':'false',
+ 'pyramid.debug_routematch':'1'})
+ self.assertEqual(result['debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ result = self._makeOne({'debug_routematch':'false',
+ 'pyramid.debug_routematch':'false'},
+ {'PYRAMID_DEBUG_ROUTEMATCH':'1'})
self.assertEqual(result['debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
def test_debug_templates(self):
result = self._makeOne({})
self.assertEqual(result['debug_templates'], False)
+ self.assertEqual(result['pyramid.debug_templates'], False)
result = self._makeOne({'debug_templates':'false'})
self.assertEqual(result['debug_templates'], False)
+ self.assertEqual(result['pyramid.debug_templates'], False)
result = self._makeOne({'debug_templates':'t'})
self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
result = self._makeOne({'debug_templates':'1'})
self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
+ result = self._makeOne({'pyramid.debug_templates':'1'})
+ self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
result = self._makeOne({}, {'PYRAMID_DEBUG_TEMPLATES':'1'})
self.assertEqual(result['debug_templates'], True)
- result = self._makeOne({'debug_templates':'false'},
- {'PYRAMID_DEBUG_TEMPLATES':'1'})
+ self.assertEqual(result['pyramid.debug_templates'], True)
+ result = self._makeOne({'debug_templates':'false',
+ 'pyramid.debug_templates':'1'})
self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
+ result = self._makeOne({'debug_templates':'false',
+ 'pyramid.debug_templates':'false'},
+ {'PYRAMID_DEBUG_TEMPLATES':'1'})
+ self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
def test_debug_all(self):
result = self._makeOne({})
@@ -196,43 +366,99 @@ class TestSettings(unittest.TestCase):
self.assertEqual(result['debug_routematch'], False)
self.assertEqual(result['debug_authorization'], False)
self.assertEqual(result['debug_templates'], False)
+ self.assertEqual(result['pyramid.debug_notfound'], False)
+ self.assertEqual(result['pyramid.debug_routematch'], False)
+ self.assertEqual(result['pyramid.debug_authorization'], False)
+ self.assertEqual(result['pyramid.debug_templates'], False)
result = self._makeOne({'debug_all':'false'})
self.assertEqual(result['debug_notfound'], False)
self.assertEqual(result['debug_routematch'], False)
self.assertEqual(result['debug_authorization'], False)
self.assertEqual(result['debug_templates'], False)
+ self.assertEqual(result['pyramid.debug_notfound'], False)
+ self.assertEqual(result['pyramid.debug_routematch'], False)
+ self.assertEqual(result['pyramid.debug_authorization'], False)
+ self.assertEqual(result['pyramid.debug_templates'], False)
result = self._makeOne({'debug_all':'t'})
self.assertEqual(result['debug_notfound'], True)
self.assertEqual(result['debug_routematch'], True)
self.assertEqual(result['debug_authorization'], True)
self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
result = self._makeOne({'debug_all':'1'})
self.assertEqual(result['debug_notfound'], True)
self.assertEqual(result['debug_routematch'], True)
self.assertEqual(result['debug_authorization'], True)
self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
+ result = self._makeOne({'pyramid.debug_all':'1'})
+ self.assertEqual(result['debug_notfound'], True)
+ self.assertEqual(result['debug_routematch'], True)
+ self.assertEqual(result['debug_authorization'], True)
+ self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
result = self._makeOne({}, {'PYRAMID_DEBUG_ALL':'1'})
self.assertEqual(result['debug_notfound'], True)
self.assertEqual(result['debug_routematch'], True)
self.assertEqual(result['debug_authorization'], True)
self.assertEqual(result['debug_templates'], True)
- result = self._makeOne({'debug_all':'false'},
- {'PYRAMID_DEBUG_ALL':'1'})
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
+ result = self._makeOne({'debug_all':'false',
+ 'pyramid.debug_all':'1'})
self.assertEqual(result['debug_notfound'], True)
self.assertEqual(result['debug_routematch'], True)
self.assertEqual(result['debug_authorization'], True)
self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
+ result = self._makeOne({'debug_all':'false',
+ 'pyramid.debug_all':'false'},
+ {'PYRAMID_DEBUG_ALL':'1'})
+ self.assertEqual(result['debug_notfound'], True)
+ self.assertEqual(result['debug_routematch'], True)
+ self.assertEqual(result['debug_authorization'], True)
+ self.assertEqual(result['debug_templates'], True)
+ self.assertEqual(result['pyramid.debug_notfound'], True)
+ self.assertEqual(result['pyramid.debug_routematch'], True)
+ self.assertEqual(result['pyramid.debug_authorization'], True)
+ self.assertEqual(result['pyramid.debug_templates'], True)
def test_default_locale_name(self):
result = self._makeOne({})
self.assertEqual(result['default_locale_name'], 'en')
+ self.assertEqual(result['pyramid.default_locale_name'], 'en')
result = self._makeOne({'default_locale_name':'abc'})
self.assertEqual(result['default_locale_name'], 'abc')
+ self.assertEqual(result['pyramid.default_locale_name'], 'abc')
+ result = self._makeOne({'pyramid.default_locale_name':'abc'})
+ self.assertEqual(result['default_locale_name'], 'abc')
+ self.assertEqual(result['pyramid.default_locale_name'], 'abc')
result = self._makeOne({}, {'PYRAMID_DEFAULT_LOCALE_NAME':'abc'})
self.assertEqual(result['default_locale_name'], 'abc')
- result = self._makeOne({'default_locale_name':'def'},
- {'PYRAMID_DEFAULT_LOCALE_NAME':'abc'})
+ self.assertEqual(result['pyramid.default_locale_name'], 'abc')
+ result = self._makeOne({'default_locale_name':'def',
+ 'pyramid.default_locale_name':'abc'})
+ self.assertEqual(result['default_locale_name'], 'abc')
+ self.assertEqual(result['pyramid.default_locale_name'], 'abc')
+ result = self._makeOne({'default_locale_name':'def',
+ 'pyramid.default_locale_name':'ghi'},
+ {'PYRAMID_DEFAULT_LOCALE_NAME':'abc'})
self.assertEqual(result['default_locale_name'], 'abc')
+ self.assertEqual(result['pyramid.default_locale_name'], 'abc')
def test_originals_kept(self):
result = self._makeOne({'a':'i am so a'})
diff --git a/pyramid/urldispatch.py b/pyramid/urldispatch.py
index 2cbbb8709..3530126eb 100644
--- a/pyramid/urldispatch.py
+++ b/pyramid/urldispatch.py
@@ -10,7 +10,6 @@ from pyramid.exceptions import URLDecodeError
from pyramid.traversal import traversal_path
from pyramid.traversal import quote_path_segment
-
_marker = object()
class Route(object):
diff --git a/setup.py b/setup.py
index 376f503f6..109be6951 100644
--- a/setup.py
+++ b/setup.py
@@ -53,7 +53,7 @@ if sys.version_info[:2] < (2, 6):
install_requires.append('simplejson')
setup(name='pyramid',
- version='1.1',
+ version='1.1.1dev',
description=('The Pyramid web application development framework, a '
'Pylons project'),
long_description=README + '\n\n' + CHANGES,