summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/narr/myproject/setup.py1
-rw-r--r--docs/narr/testing.rst12
-rw-r--r--docs/quick_tour.rst20
-rw-r--r--docs/quick_tour/logging/setup.py1
-rw-r--r--docs/quick_tour/package/setup.py1
-rw-r--r--docs/quick_tour/sessions/setup.py1
-rw-r--r--docs/quick_tour/sqla_demo/development.ini2
-rw-r--r--docs/quick_tour/sqla_demo/production.ini2
-rw-r--r--docs/quick_tour/sqla_demo/setup.py6
-rw-r--r--docs/quick_tour/sqla_demo/sqla_demo/models/__init__.py4
-rw-r--r--docs/tutorials/wiki/authorization.rst8
-rw-r--r--docs/tutorials/wiki/basiclayout.rst12
-rw-r--r--docs/tutorials/wiki/definingviews.rst2
-rw-r--r--docs/tutorials/wiki/installation.rst4
-rw-r--r--docs/tutorials/wiki/src/authorization/development.ini2
-rw-r--r--docs/tutorials/wiki/src/authorization/production.ini2
-rw-r--r--docs/tutorials/wiki/src/authorization/setup.py4
-rw-r--r--docs/tutorials/wiki/src/authorization/tutorial/__init__.py3
-rw-r--r--docs/tutorials/wiki/src/basiclayout/README.txt2
-rw-r--r--docs/tutorials/wiki/src/basiclayout/development.ini2
-rw-r--r--docs/tutorials/wiki/src/basiclayout/production.ini2
-rw-r--r--docs/tutorials/wiki/src/basiclayout/setup.py4
-rw-r--r--docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py3
-rw-r--r--docs/tutorials/wiki/src/installation/README.txt2
-rw-r--r--docs/tutorials/wiki/src/installation/development.ini2
-rw-r--r--docs/tutorials/wiki/src/installation/production.ini2
-rw-r--r--docs/tutorials/wiki/src/installation/setup.py4
-rw-r--r--docs/tutorials/wiki/src/installation/tutorial/__init__.py3
-rw-r--r--docs/tutorials/wiki/src/models/README.txt2
-rw-r--r--docs/tutorials/wiki/src/models/development.ini2
-rw-r--r--docs/tutorials/wiki/src/models/production.ini2
-rw-r--r--docs/tutorials/wiki/src/models/setup.py4
-rw-r--r--docs/tutorials/wiki/src/models/tutorial/__init__.py3
-rw-r--r--docs/tutorials/wiki/src/tests/development.ini2
-rw-r--r--docs/tutorials/wiki/src/tests/production.ini2
-rw-r--r--docs/tutorials/wiki/src/tests/setup.py4
-rw-r--r--docs/tutorials/wiki/src/tests/tutorial/__init__.py3
-rw-r--r--docs/tutorials/wiki/src/views/development.ini2
-rw-r--r--docs/tutorials/wiki/src/views/production.ini2
-rw-r--r--docs/tutorials/wiki/src/views/setup.py4
-rw-r--r--docs/tutorials/wiki/src/views/tutorial/__init__.py3
-rw-r--r--docs/tutorials/wiki2/authentication.rst4
-rw-r--r--docs/tutorials/wiki2/definingmodels.rst2
-rw-r--r--docs/tutorials/wiki2/installation.rst4
-rw-r--r--docs/tutorials/wiki2/src/authentication/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/authentication/development.ini2
-rw-r--r--docs/tutorials/wiki2/src/authentication/production.ini2
-rw-r--r--docs/tutorials/wiki2/src/authentication/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/authentication/tutorial/models/__init__.py3
-rw-r--r--docs/tutorials/wiki2/src/authorization/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/authorization/development.ini2
-rw-r--r--docs/tutorials/wiki2/src/authorization/production.ini2
-rw-r--r--docs/tutorials/wiki2/src/authorization/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/authorization/tutorial/models/__init__.py3
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/development.ini2
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/production.ini2
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/basiclayout/tutorial/models/__init__.py3
-rw-r--r--docs/tutorials/wiki2/src/installation/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/installation/development.ini2
-rw-r--r--docs/tutorials/wiki2/src/installation/production.ini2
-rw-r--r--docs/tutorials/wiki2/src/installation/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/installation/tutorial/models/__init__.py3
-rw-r--r--docs/tutorials/wiki2/src/models/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/models/development.ini2
-rw-r--r--docs/tutorials/wiki2/src/models/production.ini2
-rw-r--r--docs/tutorials/wiki2/src/models/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/__init__.py2
-rw-r--r--docs/tutorials/wiki2/src/models/tutorial/models/__init__.py3
-rw-r--r--docs/tutorials/wiki2/src/tests/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/tests/development.ini2
-rw-r--r--docs/tutorials/wiki2/src/tests/production.ini2
-rw-r--r--docs/tutorials/wiki2/src/tests/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/tests/tutorial/models/__init__.py3
-rw-r--r--docs/tutorials/wiki2/src/views/README.txt2
-rw-r--r--docs/tutorials/wiki2/src/views/development.ini2
-rw-r--r--docs/tutorials/wiki2/src/views/production.ini2
-rw-r--r--docs/tutorials/wiki2/src/views/setup.py6
-rw-r--r--docs/tutorials/wiki2/src/views/tutorial/models/__init__.py3
80 files changed, 194 insertions, 71 deletions
diff --git a/docs/narr/myproject/setup.py b/docs/narr/myproject/setup.py
index 00e377349..153a659ba 100644
--- a/docs/narr/myproject/setup.py
+++ b/docs/narr/myproject/setup.py
@@ -9,6 +9,7 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
+ 'plaster_pastedeploy',
'pyramid',
'pyramid_jinja2',
'pyramid_debugtoolbar',
diff --git a/docs/narr/testing.rst b/docs/narr/testing.rst
index 406383bbd..f124ac562 100644
--- a/docs/narr/testing.rst
+++ b/docs/narr/testing.rst
@@ -376,18 +376,16 @@ following the ``requires`` block in the file ``myproject/setup.py``.
.. literalinclude:: myproject/setup.py
:language: python
- :linenos:
- :lines: 11-22
- :lineno-start: 11
- :emphasize-lines: 8-
+ :lines: 11-23
+ :lineno-match:
+ :emphasize-lines: 9-
Remember to change the dependency.
.. literalinclude:: myproject/setup.py
:language: python
- :linenos:
- :lines: 40-44
- :lineno-start: 40
+ :lines: 42-46
+ :lineno-match:
:emphasize-lines: 2-4
As always, whenever you change your dependencies, make sure to run the correct
diff --git a/docs/quick_tour.rst b/docs/quick_tour.rst
index f3a0a27b8..5679b0dc8 100644
--- a/docs/quick_tour.rst
+++ b/docs/quick_tour.rst
@@ -647,8 +647,8 @@ add-on ``pyramid_debugtoolbar`` in its ``setup.py``:
.. literalinclude:: quick_tour/package/setup.py
:language: python
:lineno-match:
- :lines: 11-16
- :emphasize-lines: 4
+ :lines: 11-17
+ :emphasize-lines: 5
It was installed when you previously ran:
@@ -657,14 +657,7 @@ It was installed when you previously ran:
$ $VENV/bin/pip install -e ".[testing]"
The ``pyramid_debugtoolbar`` package is a Pyramid add-on, which means we need
-to include its configuration into our web application. The cookiecutter already took care of this for us in its ``__init__.py``:
-
-.. literalinclude:: quick_tour/package/hello_world/__init__.py
- :language: python
- :lineno-match:
- :lines: 8
-
-And it uses the ``pyramid.includes`` facility in our ``development.ini``:
+to include its configuration into our web application. The cookiecutter already took care of this for us in its ``development.ini`` using the ``pyramid.includes`` facility:
.. literalinclude:: quick_tour/package/development.ini
:language: ini
@@ -692,18 +685,17 @@ before its release.
Our ``pyramid-cookiecutter-starter`` cookiecutter generated a ``tests.py`` module with
one unit test and one functional test in it. It also configured ``setup.py`` with test requirements:
``py.test`` as the test runner, ``WebTest`` for running view tests, and the
-``pytest-cov`` tool which yells at us for code that isn't tested. The
-highlighted lines show this:
+``pytest-cov`` tool which yells at us for code that isn't tested:
.. literalinclude:: quick_tour/package/setup.py
:language: python
:lineno-match:
- :lines: 18-22
+ :lines: 19-23
.. literalinclude:: quick_tour/package/setup.py
:language: python
:lineno-match:
- :lines: 42-44
+ :lines: 43-45
We already installed the test requirements when we ran the command ``$VENV/bin/pip install -e ".[testing]"``. We can now run all our tests:
diff --git a/docs/quick_tour/logging/setup.py b/docs/quick_tour/logging/setup.py
index e32aecacd..44d90b990 100644
--- a/docs/quick_tour/logging/setup.py
+++ b/docs/quick_tour/logging/setup.py
@@ -9,6 +9,7 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
+ 'plaster_pastedeploy',
'pyramid',
'pyramid_jinja2',
'pyramid_debugtoolbar',
diff --git a/docs/quick_tour/package/setup.py b/docs/quick_tour/package/setup.py
index e32aecacd..44d90b990 100644
--- a/docs/quick_tour/package/setup.py
+++ b/docs/quick_tour/package/setup.py
@@ -9,6 +9,7 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
+ 'plaster_pastedeploy',
'pyramid',
'pyramid_jinja2',
'pyramid_debugtoolbar',
diff --git a/docs/quick_tour/sessions/setup.py b/docs/quick_tour/sessions/setup.py
index e32aecacd..44d90b990 100644
--- a/docs/quick_tour/sessions/setup.py
+++ b/docs/quick_tour/sessions/setup.py
@@ -9,6 +9,7 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
+ 'plaster_pastedeploy',
'pyramid',
'pyramid_jinja2',
'pyramid_debugtoolbar',
diff --git a/docs/quick_tour/sqla_demo/development.ini b/docs/quick_tour/sqla_demo/development.ini
index 8d45a0975..a986c0063 100644
--- a/docs/quick_tour/sqla_demo/development.ini
+++ b/docs/quick_tour/sqla_demo/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
sqlalchemy.url = sqlite:///%(here)s/sqla_demo.sqlite
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/quick_tour/sqla_demo/production.ini b/docs/quick_tour/sqla_demo/production.ini
index a85c354d3..9abb54231 100644
--- a/docs/quick_tour/sqla_demo/production.ini
+++ b/docs/quick_tour/sqla_demo/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/sqla_demo.sqlite
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/quick_tour/sqla_demo/setup.py b/docs/quick_tour/sqla_demo/setup.py
index 75c1403fb..855a15d58 100644
--- a/docs/quick_tour/sqla_demo/setup.py
+++ b/docs/quick_tour/sqla_demo/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
- 'pyramid_jinja2',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_debugtoolbar',
+ 'pyramid_jinja2',
+ 'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
diff --git a/docs/quick_tour/sqla_demo/sqla_demo/models/__init__.py b/docs/quick_tour/sqla_demo/sqla_demo/models/__init__.py
index e6eb98fbd..31aab9d26 100644
--- a/docs/quick_tour/sqla_demo/sqla_demo/models/__init__.py
+++ b/docs/quick_tour/sqla_demo/sqla_demo/models/__init__.py
@@ -58,9 +58,13 @@ def includeme(config):
"""
settings = config.get_settings()
settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
+
# use pyramid_tm to hook the transaction lifecycle to the request
config.include('pyramid_tm')
+ # use pyramid_retry to retry a request when transient exceptions occur
+ config.include('pyramid_retry')
+
session_factory = get_session_factory(get_engine(settings))
config.registry['dbsession_factory'] = session_factory
diff --git a/docs/tutorials/wiki/authorization.rst b/docs/tutorials/wiki/authorization.rst
index 0ba734f83..c9ba9feb3 100644
--- a/docs/tutorials/wiki/authorization.rst
+++ b/docs/tutorials/wiki/authorization.rst
@@ -49,7 +49,7 @@ Open ``setup.py`` and edit it to look like the following:
.. literalinclude:: src/authorization/setup.py
:linenos:
- :emphasize-lines: 21
+ :emphasize-lines: 23
:language: python
Only the highlighted line needs to be added.
@@ -155,9 +155,9 @@ statements:
Now add those policies to the configuration:
.. literalinclude:: src/authorization/tutorial/__init__.py
- :lines: 18-23
+ :lines: 18-25
:lineno-match:
- :emphasize-lines: 1-3,5-6
+ :emphasize-lines: 1-3,7-8
:language: python
Only the highlighted lines need to be added.
@@ -327,7 +327,7 @@ Our ``tutorial/__init__.py`` will look like this when we're done:
.. literalinclude:: src/authorization/tutorial/__init__.py
:linenos:
- :emphasize-lines: 4-5,8,18-20,22-23
+ :emphasize-lines: 4-5,8,18-20,24-25
:language: python
Only the highlighted lines need to be added or edited.
diff --git a/docs/tutorials/wiki/basiclayout.rst b/docs/tutorials/wiki/basiclayout.rst
index d00eab956..f713d1057 100644
--- a/docs/tutorials/wiki/basiclayout.rst
+++ b/docs/tutorials/wiki/basiclayout.rst
@@ -41,14 +41,18 @@ Open ``tutorial/__init__.py``. It should already contain the following:
factory and the settings keywords parsed by :term:`PasteDeploy`. The root
factory is named ``root_factory``.
-#. *Line 15*. Include support for the :term:`Chameleon` template rendering
+#. *Lines 15 and 16*. Get the settings and use an explicit transaction transaction manager for apps so that they do not implicitly create new transactions when touching the manager outside of the ``pyramid_tm`` lifecycle.
+
+#. *Line 17*. Include support for the :term:`Chameleon` template rendering
bindings, allowing us to use the ``.pt`` templates.
-#. *Line 16*. Include support for ``pyramid_tm``, allowing Pyramid requests to join the active transaction as provided by the `transaction <https://pypi.python.org/pypi/transaction>`_ package.
+#. *Line 18*. Include support for ``pyramid_tm``, allowing Pyramid requests to join the active transaction as provided by the `transaction <https://pypi.python.org/pypi/transaction>`_ package.
+
+#. *Line 19*. Include support for ``pyramid_retry`` to retry a request when transient exceptions occur.
-#. *Line 17*. Include support for ``pyramid_zodbconn``, providing integration between :term:`ZODB` and a Pyramid application.
+#. *Line 20*. Include support for ``pyramid_zodbconn``, providing integration between :term:`ZODB` and a Pyramid application.
-#. *Line 18*. Register a "static view", which answers requests whose URL
+#. *Line 21*. Register a "static view", which answers requests whose URL
paths start with ``/static``, using the
:meth:`pyramid.config.Configurator.add_static_view` method. This
statement registers a view that will serve up static assets, such as CSS
diff --git a/docs/tutorials/wiki/definingviews.rst b/docs/tutorials/wiki/definingviews.rst
index 442d5ed18..f4ca9b8d7 100644
--- a/docs/tutorials/wiki/definingviews.rst
+++ b/docs/tutorials/wiki/definingviews.rst
@@ -47,7 +47,7 @@ Open ``setup.py`` and edit it to look like the following:
.. literalinclude:: src/views/setup.py
:linenos:
- :emphasize-lines: 20
+ :emphasize-lines: 22
:language: python
Only the highlighted line needs to be added.
diff --git a/docs/tutorials/wiki/installation.rst b/docs/tutorials/wiki/installation.rst
index 3e7434bd7..e9a93f9fe 100644
--- a/docs/tutorials/wiki/installation.rst
+++ b/docs/tutorials/wiki/installation.rst
@@ -180,12 +180,12 @@ Testing requirements are defined in our project's ``setup.py`` file, in the ``te
.. literalinclude:: src/installation/setup.py
:language: python
:lineno-match:
- :lines: 22-26
+ :lines: 24-28
.. literalinclude:: src/installation/setup.py
:language: python
:lineno-match:
- :lines: 46-48
+ :lines: 48-50
.. _running_tests:
diff --git a/docs/tutorials/wiki/src/authorization/development.ini b/docs/tutorials/wiki/src/authorization/development.ini
index 74e7457d6..9d45c3611 100644
--- a/docs/tutorials/wiki/src/authorization/development.ini
+++ b/docs/tutorials/wiki/src/authorization/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki/src/authorization/production.ini b/docs/tutorials/wiki/src/authorization/production.ini
index 60b6fe253..92a36813f 100644
--- a/docs/tutorials/wiki/src/authorization/production.ini
+++ b/docs/tutorials/wiki/src/authorization/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki/src/authorization/setup.py b/docs/tutorials/wiki/src/authorization/setup.py
index 4a9f041e3..3f0b1317c 100644
--- a/docs/tutorials/wiki/src/authorization/setup.py
+++ b/docs/tutorials/wiki/src/authorization/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_chameleon',
'pyramid_debugtoolbar',
+ 'pyramid_retry',
'pyramid_tm',
'pyramid_zodbconn',
'transaction',
diff --git a/docs/tutorials/wiki/src/authorization/tutorial/__init__.py b/docs/tutorials/wiki/src/authorization/tutorial/__init__.py
index 8af2ee5c0..e584eff2b 100644
--- a/docs/tutorials/wiki/src/authorization/tutorial/__init__.py
+++ b/docs/tutorials/wiki/src/authorization/tutorial/__init__.py
@@ -19,10 +19,13 @@ def main(global_config, **settings):
'sosecret', callback=groupfinder, hashalg='sha512')
authz_policy = ACLAuthorizationPolicy()
config = Configurator(root_factory=root_factory, settings=settings)
+ settings = config.get_settings()
+ settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
config.set_authentication_policy(authn_policy)
config.set_authorization_policy(authz_policy)
config.include('pyramid_chameleon')
config.include('pyramid_tm')
+ config.include('pyramid_retry')
config.include('pyramid_zodbconn')
config.add_static_view('static', 'static', cache_max_age=3600)
config.scan()
diff --git a/docs/tutorials/wiki/src/basiclayout/README.txt b/docs/tutorials/wiki/src/basiclayout/README.txt
index 5ec53bf9d..8a56d14af 100644
--- a/docs/tutorials/wiki/src/basiclayout/README.txt
+++ b/docs/tutorials/wiki/src/basiclayout/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki/src/basiclayout/development.ini b/docs/tutorials/wiki/src/basiclayout/development.ini
index 74e7457d6..9d45c3611 100644
--- a/docs/tutorials/wiki/src/basiclayout/development.ini
+++ b/docs/tutorials/wiki/src/basiclayout/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki/src/basiclayout/production.ini b/docs/tutorials/wiki/src/basiclayout/production.ini
index 60b6fe253..92a36813f 100644
--- a/docs/tutorials/wiki/src/basiclayout/production.ini
+++ b/docs/tutorials/wiki/src/basiclayout/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki/src/basiclayout/setup.py b/docs/tutorials/wiki/src/basiclayout/setup.py
index 5d1e9c7b5..d743c984f 100644
--- a/docs/tutorials/wiki/src/basiclayout/setup.py
+++ b/docs/tutorials/wiki/src/basiclayout/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_chameleon',
'pyramid_debugtoolbar',
+ 'pyramid_retry',
'pyramid_tm',
'pyramid_zodbconn',
'transaction',
diff --git a/docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py b/docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py
index 728f7ac02..eb703e086 100644
--- a/docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py
+++ b/docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py
@@ -12,8 +12,11 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(root_factory=root_factory, settings=settings)
+ settings = config.get_settings()
+ settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
config.include('pyramid_chameleon')
config.include('pyramid_tm')
+ config.include('pyramid_retry')
config.include('pyramid_zodbconn')
config.add_static_view('static', 'static', cache_max_age=3600)
config.scan()
diff --git a/docs/tutorials/wiki/src/installation/README.txt b/docs/tutorials/wiki/src/installation/README.txt
index 5ec53bf9d..8a56d14af 100644
--- a/docs/tutorials/wiki/src/installation/README.txt
+++ b/docs/tutorials/wiki/src/installation/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki/src/installation/development.ini b/docs/tutorials/wiki/src/installation/development.ini
index 74e7457d6..9d45c3611 100644
--- a/docs/tutorials/wiki/src/installation/development.ini
+++ b/docs/tutorials/wiki/src/installation/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki/src/installation/production.ini b/docs/tutorials/wiki/src/installation/production.ini
index 60b6fe253..92a36813f 100644
--- a/docs/tutorials/wiki/src/installation/production.ini
+++ b/docs/tutorials/wiki/src/installation/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki/src/installation/setup.py b/docs/tutorials/wiki/src/installation/setup.py
index 5d1e9c7b5..d743c984f 100644
--- a/docs/tutorials/wiki/src/installation/setup.py
+++ b/docs/tutorials/wiki/src/installation/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_chameleon',
'pyramid_debugtoolbar',
+ 'pyramid_retry',
'pyramid_tm',
'pyramid_zodbconn',
'transaction',
diff --git a/docs/tutorials/wiki/src/installation/tutorial/__init__.py b/docs/tutorials/wiki/src/installation/tutorial/__init__.py
index 728f7ac02..eb703e086 100644
--- a/docs/tutorials/wiki/src/installation/tutorial/__init__.py
+++ b/docs/tutorials/wiki/src/installation/tutorial/__init__.py
@@ -12,8 +12,11 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(root_factory=root_factory, settings=settings)
+ settings = config.get_settings()
+ settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
config.include('pyramid_chameleon')
config.include('pyramid_tm')
+ config.include('pyramid_retry')
config.include('pyramid_zodbconn')
config.add_static_view('static', 'static', cache_max_age=3600)
config.scan()
diff --git a/docs/tutorials/wiki/src/models/README.txt b/docs/tutorials/wiki/src/models/README.txt
index 5ec53bf9d..8a56d14af 100644
--- a/docs/tutorials/wiki/src/models/README.txt
+++ b/docs/tutorials/wiki/src/models/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki/src/models/development.ini b/docs/tutorials/wiki/src/models/development.ini
index 74e7457d6..9d45c3611 100644
--- a/docs/tutorials/wiki/src/models/development.ini
+++ b/docs/tutorials/wiki/src/models/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki/src/models/production.ini b/docs/tutorials/wiki/src/models/production.ini
index 60b6fe253..92a36813f 100644
--- a/docs/tutorials/wiki/src/models/production.ini
+++ b/docs/tutorials/wiki/src/models/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki/src/models/setup.py b/docs/tutorials/wiki/src/models/setup.py
index 5d1e9c7b5..d743c984f 100644
--- a/docs/tutorials/wiki/src/models/setup.py
+++ b/docs/tutorials/wiki/src/models/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_chameleon',
'pyramid_debugtoolbar',
+ 'pyramid_retry',
'pyramid_tm',
'pyramid_zodbconn',
'transaction',
diff --git a/docs/tutorials/wiki/src/models/tutorial/__init__.py b/docs/tutorials/wiki/src/models/tutorial/__init__.py
index 728f7ac02..eb703e086 100644
--- a/docs/tutorials/wiki/src/models/tutorial/__init__.py
+++ b/docs/tutorials/wiki/src/models/tutorial/__init__.py
@@ -12,8 +12,11 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(root_factory=root_factory, settings=settings)
+ settings = config.get_settings()
+ settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
config.include('pyramid_chameleon')
config.include('pyramid_tm')
+ config.include('pyramid_retry')
config.include('pyramid_zodbconn')
config.add_static_view('static', 'static', cache_max_age=3600)
config.scan()
diff --git a/docs/tutorials/wiki/src/tests/development.ini b/docs/tutorials/wiki/src/tests/development.ini
index 74e7457d6..9d45c3611 100644
--- a/docs/tutorials/wiki/src/tests/development.ini
+++ b/docs/tutorials/wiki/src/tests/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki/src/tests/production.ini b/docs/tutorials/wiki/src/tests/production.ini
index 60b6fe253..92a36813f 100644
--- a/docs/tutorials/wiki/src/tests/production.ini
+++ b/docs/tutorials/wiki/src/tests/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki/src/tests/setup.py b/docs/tutorials/wiki/src/tests/setup.py
index 4a9f041e3..3f0b1317c 100644
--- a/docs/tutorials/wiki/src/tests/setup.py
+++ b/docs/tutorials/wiki/src/tests/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_chameleon',
'pyramid_debugtoolbar',
+ 'pyramid_retry',
'pyramid_tm',
'pyramid_zodbconn',
'transaction',
diff --git a/docs/tutorials/wiki/src/tests/tutorial/__init__.py b/docs/tutorials/wiki/src/tests/tutorial/__init__.py
index 8af2ee5c0..e584eff2b 100644
--- a/docs/tutorials/wiki/src/tests/tutorial/__init__.py
+++ b/docs/tutorials/wiki/src/tests/tutorial/__init__.py
@@ -19,10 +19,13 @@ def main(global_config, **settings):
'sosecret', callback=groupfinder, hashalg='sha512')
authz_policy = ACLAuthorizationPolicy()
config = Configurator(root_factory=root_factory, settings=settings)
+ settings = config.get_settings()
+ settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
config.set_authentication_policy(authn_policy)
config.set_authorization_policy(authz_policy)
config.include('pyramid_chameleon')
config.include('pyramid_tm')
+ config.include('pyramid_retry')
config.include('pyramid_zodbconn')
config.add_static_view('static', 'static', cache_max_age=3600)
config.scan()
diff --git a/docs/tutorials/wiki/src/views/development.ini b/docs/tutorials/wiki/src/views/development.ini
index 74e7457d6..9d45c3611 100644
--- a/docs/tutorials/wiki/src/views/development.ini
+++ b/docs/tutorials/wiki/src/views/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki/src/views/production.ini b/docs/tutorials/wiki/src/views/production.ini
index 60b6fe253..92a36813f 100644
--- a/docs/tutorials/wiki/src/views/production.ini
+++ b/docs/tutorials/wiki/src/views/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
zodbconn.uri = file://%(here)s/Data.fs?connection_cache_size=20000
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki/src/views/setup.py b/docs/tutorials/wiki/src/views/setup.py
index 598ad8146..bd3d15af1 100644
--- a/docs/tutorials/wiki/src/views/setup.py
+++ b/docs/tutorials/wiki/src/views/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_chameleon',
'pyramid_debugtoolbar',
+ 'pyramid_retry',
'pyramid_tm',
'pyramid_zodbconn',
'transaction',
diff --git a/docs/tutorials/wiki/src/views/tutorial/__init__.py b/docs/tutorials/wiki/src/views/tutorial/__init__.py
index 728f7ac02..eb703e086 100644
--- a/docs/tutorials/wiki/src/views/tutorial/__init__.py
+++ b/docs/tutorials/wiki/src/views/tutorial/__init__.py
@@ -12,8 +12,11 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(root_factory=root_factory, settings=settings)
+ settings = config.get_settings()
+ settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
config.include('pyramid_chameleon')
config.include('pyramid_tm')
+ config.include('pyramid_retry')
config.include('pyramid_zodbconn')
config.add_static_view('static', 'static', cache_max_age=3600)
config.scan()
diff --git a/docs/tutorials/wiki2/authentication.rst b/docs/tutorials/wiki2/authentication.rst
index ff59ce70b..85977d1be 100644
--- a/docs/tutorials/wiki2/authentication.rst
+++ b/docs/tutorials/wiki2/authentication.rst
@@ -92,7 +92,7 @@ Our authentication policy is expecting a new setting, ``auth.secret``. Open
the file ``development.ini`` and add the highlighted line below:
.. literalinclude:: src/authentication/development.ini
- :lines: 17-19
+ :lines: 19-21
:emphasize-lines: 3
:lineno-match:
:language: ini
@@ -101,7 +101,7 @@ Finally, best practices tell us to use a different secret for production, so
open ``production.ini`` and add a different secret:
.. literalinclude:: src/authentication/production.ini
- :lines: 15-17
+ :lines: 17-19
:emphasize-lines: 3
:lineno-match:
:language: ini
diff --git a/docs/tutorials/wiki2/definingmodels.rst b/docs/tutorials/wiki2/definingmodels.rst
index 801b56eb4..5cebb943c 100644
--- a/docs/tutorials/wiki2/definingmodels.rst
+++ b/docs/tutorials/wiki2/definingmodels.rst
@@ -153,7 +153,7 @@ the following:
.. literalinclude:: src/models/tutorial/models/__init__.py
:linenos:
:language: py
- :emphasize-lines: 10,11
+ :emphasize-lines: 8,9
Here we align our imports with the names of the models, ``Page`` and ``User``.
diff --git a/docs/tutorials/wiki2/installation.rst b/docs/tutorials/wiki2/installation.rst
index 56197900c..0d49fc12b 100644
--- a/docs/tutorials/wiki2/installation.rst
+++ b/docs/tutorials/wiki2/installation.rst
@@ -190,12 +190,12 @@ Testing requirements are defined in our project's ``setup.py`` file, in the ``te
.. literalinclude:: src/installation/setup.py
:language: python
:lineno-match:
- :lines: 22-26
+ :lines: 24-28
.. literalinclude:: src/installation/setup.py
:language: python
:lineno-match:
- :lines: 46-48
+ :lines: 48-50
.. _sql_running_tests:
diff --git a/docs/tutorials/wiki2/src/authentication/README.txt b/docs/tutorials/wiki2/src/authentication/README.txt
index 81102a869..7b33da610 100644
--- a/docs/tutorials/wiki2/src/authentication/README.txt
+++ b/docs/tutorials/wiki2/src/authentication/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki2/src/authentication/development.ini b/docs/tutorials/wiki2/src/authentication/development.ini
index 0786c1f66..00d0dd2bf 100644
--- a/docs/tutorials/wiki2/src/authentication/development.ini
+++ b/docs/tutorials/wiki2/src/authentication/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
auth.secret = seekrit
# By default, the toolbar only appears for clients from IP addresses
diff --git a/docs/tutorials/wiki2/src/authentication/production.ini b/docs/tutorials/wiki2/src/authentication/production.ini
index 05d60feec..e55e9fecc 100644
--- a/docs/tutorials/wiki2/src/authentication/production.ini
+++ b/docs/tutorials/wiki2/src/authentication/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
auth.secret = real-seekrit
###
diff --git a/docs/tutorials/wiki2/src/authentication/setup.py b/docs/tutorials/wiki2/src/authentication/setup.py
index cc1aa421c..abc24876d 100644
--- a/docs/tutorials/wiki2/src/authentication/setup.py
+++ b/docs/tutorials/wiki2/src/authentication/setup.py
@@ -11,9 +11,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
requires = [
'bcrypt',
'docutils',
- 'pyramid',
- 'pyramid_jinja2',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_debugtoolbar',
+ 'pyramid_jinja2',
+ 'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
diff --git a/docs/tutorials/wiki2/src/authentication/tutorial/models/__init__.py b/docs/tutorials/wiki2/src/authentication/tutorial/models/__init__.py
index cd8347ccd..3c9ba8e54 100644
--- a/docs/tutorials/wiki2/src/authentication/tutorial/models/__init__.py
+++ b/docs/tutorials/wiki2/src/authentication/tutorial/models/__init__.py
@@ -63,6 +63,9 @@ def includeme(config):
# use pyramid_tm to hook the transaction lifecycle to the request
config.include('pyramid_tm')
+ # use pyramid_retry to retry a request when transient exceptions occur
+ config.include('pyramid_retry')
+
session_factory = get_session_factory(get_engine(settings))
config.registry['dbsession_factory'] = session_factory
diff --git a/docs/tutorials/wiki2/src/authorization/README.txt b/docs/tutorials/wiki2/src/authorization/README.txt
index 81102a869..7b33da610 100644
--- a/docs/tutorials/wiki2/src/authorization/README.txt
+++ b/docs/tutorials/wiki2/src/authorization/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki2/src/authorization/development.ini b/docs/tutorials/wiki2/src/authorization/development.ini
index 0786c1f66..00d0dd2bf 100644
--- a/docs/tutorials/wiki2/src/authorization/development.ini
+++ b/docs/tutorials/wiki2/src/authorization/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
auth.secret = seekrit
# By default, the toolbar only appears for clients from IP addresses
diff --git a/docs/tutorials/wiki2/src/authorization/production.ini b/docs/tutorials/wiki2/src/authorization/production.ini
index 05d60feec..e55e9fecc 100644
--- a/docs/tutorials/wiki2/src/authorization/production.ini
+++ b/docs/tutorials/wiki2/src/authorization/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
auth.secret = real-seekrit
###
diff --git a/docs/tutorials/wiki2/src/authorization/setup.py b/docs/tutorials/wiki2/src/authorization/setup.py
index cc1aa421c..abc24876d 100644
--- a/docs/tutorials/wiki2/src/authorization/setup.py
+++ b/docs/tutorials/wiki2/src/authorization/setup.py
@@ -11,9 +11,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
requires = [
'bcrypt',
'docutils',
- 'pyramid',
- 'pyramid_jinja2',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_debugtoolbar',
+ 'pyramid_jinja2',
+ 'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
diff --git a/docs/tutorials/wiki2/src/authorization/tutorial/models/__init__.py b/docs/tutorials/wiki2/src/authorization/tutorial/models/__init__.py
index cd8347ccd..3c9ba8e54 100644
--- a/docs/tutorials/wiki2/src/authorization/tutorial/models/__init__.py
+++ b/docs/tutorials/wiki2/src/authorization/tutorial/models/__init__.py
@@ -63,6 +63,9 @@ def includeme(config):
# use pyramid_tm to hook the transaction lifecycle to the request
config.include('pyramid_tm')
+ # use pyramid_retry to retry a request when transient exceptions occur
+ config.include('pyramid_retry')
+
session_factory = get_session_factory(get_engine(settings))
config.registry['dbsession_factory'] = session_factory
diff --git a/docs/tutorials/wiki2/src/basiclayout/README.txt b/docs/tutorials/wiki2/src/basiclayout/README.txt
index 81102a869..7b33da610 100644
--- a/docs/tutorials/wiki2/src/basiclayout/README.txt
+++ b/docs/tutorials/wiki2/src/basiclayout/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki2/src/basiclayout/development.ini b/docs/tutorials/wiki2/src/basiclayout/development.ini
index be80882a5..73ef3d863 100644
--- a/docs/tutorials/wiki2/src/basiclayout/development.ini
+++ b/docs/tutorials/wiki2/src/basiclayout/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki2/src/basiclayout/production.ini b/docs/tutorials/wiki2/src/basiclayout/production.ini
index c01ad9a7e..8dea38631 100644
--- a/docs/tutorials/wiki2/src/basiclayout/production.ini
+++ b/docs/tutorials/wiki2/src/basiclayout/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki2/src/basiclayout/setup.py b/docs/tutorials/wiki2/src/basiclayout/setup.py
index d3992a8f2..9fc5519a5 100644
--- a/docs/tutorials/wiki2/src/basiclayout/setup.py
+++ b/docs/tutorials/wiki2/src/basiclayout/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
- 'pyramid_jinja2',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_debugtoolbar',
+ 'pyramid_jinja2',
+ 'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
diff --git a/docs/tutorials/wiki2/src/basiclayout/tutorial/models/__init__.py b/docs/tutorials/wiki2/src/basiclayout/tutorial/models/__init__.py
index ae575691c..d8a273e9e 100644
--- a/docs/tutorials/wiki2/src/basiclayout/tutorial/models/__init__.py
+++ b/docs/tutorials/wiki2/src/basiclayout/tutorial/models/__init__.py
@@ -62,6 +62,9 @@ def includeme(config):
# use pyramid_tm to hook the transaction lifecycle to the request
config.include('pyramid_tm')
+ # use pyramid_retry to retry a request when transient exceptions occur
+ config.include('pyramid_retry')
+
session_factory = get_session_factory(get_engine(settings))
config.registry['dbsession_factory'] = session_factory
diff --git a/docs/tutorials/wiki2/src/installation/README.txt b/docs/tutorials/wiki2/src/installation/README.txt
index 81102a869..7b33da610 100644
--- a/docs/tutorials/wiki2/src/installation/README.txt
+++ b/docs/tutorials/wiki2/src/installation/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki2/src/installation/development.ini b/docs/tutorials/wiki2/src/installation/development.ini
index be80882a5..73ef3d863 100644
--- a/docs/tutorials/wiki2/src/installation/development.ini
+++ b/docs/tutorials/wiki2/src/installation/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki2/src/installation/production.ini b/docs/tutorials/wiki2/src/installation/production.ini
index c01ad9a7e..8dea38631 100644
--- a/docs/tutorials/wiki2/src/installation/production.ini
+++ b/docs/tutorials/wiki2/src/installation/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki2/src/installation/setup.py b/docs/tutorials/wiki2/src/installation/setup.py
index d3992a8f2..9fc5519a5 100644
--- a/docs/tutorials/wiki2/src/installation/setup.py
+++ b/docs/tutorials/wiki2/src/installation/setup.py
@@ -9,9 +9,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
CHANGES = f.read()
requires = [
- 'pyramid',
- 'pyramid_jinja2',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_debugtoolbar',
+ 'pyramid_jinja2',
+ 'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
diff --git a/docs/tutorials/wiki2/src/installation/tutorial/models/__init__.py b/docs/tutorials/wiki2/src/installation/tutorial/models/__init__.py
index ae575691c..d8a273e9e 100644
--- a/docs/tutorials/wiki2/src/installation/tutorial/models/__init__.py
+++ b/docs/tutorials/wiki2/src/installation/tutorial/models/__init__.py
@@ -62,6 +62,9 @@ def includeme(config):
# use pyramid_tm to hook the transaction lifecycle to the request
config.include('pyramid_tm')
+ # use pyramid_retry to retry a request when transient exceptions occur
+ config.include('pyramid_retry')
+
session_factory = get_session_factory(get_engine(settings))
config.registry['dbsession_factory'] = session_factory
diff --git a/docs/tutorials/wiki2/src/models/README.txt b/docs/tutorials/wiki2/src/models/README.txt
index 81102a869..7b33da610 100644
--- a/docs/tutorials/wiki2/src/models/README.txt
+++ b/docs/tutorials/wiki2/src/models/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki2/src/models/development.ini b/docs/tutorials/wiki2/src/models/development.ini
index be80882a5..73ef3d863 100644
--- a/docs/tutorials/wiki2/src/models/development.ini
+++ b/docs/tutorials/wiki2/src/models/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki2/src/models/production.ini b/docs/tutorials/wiki2/src/models/production.ini
index c01ad9a7e..8dea38631 100644
--- a/docs/tutorials/wiki2/src/models/production.ini
+++ b/docs/tutorials/wiki2/src/models/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki2/src/models/setup.py b/docs/tutorials/wiki2/src/models/setup.py
index faf76aa27..c688c6866 100644
--- a/docs/tutorials/wiki2/src/models/setup.py
+++ b/docs/tutorials/wiki2/src/models/setup.py
@@ -10,9 +10,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
requires = [
'bcrypt',
- 'pyramid',
- 'pyramid_jinja2',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_debugtoolbar',
+ 'pyramid_jinja2',
+ 'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
diff --git a/docs/tutorials/wiki2/src/models/tutorial/__init__.py b/docs/tutorials/wiki2/src/models/tutorial/__init__.py
index 7654fc808..4dab44823 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/__init__.py
+++ b/docs/tutorials/wiki2/src/models/tutorial/__init__.py
@@ -5,8 +5,6 @@ def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(settings=settings)
- settings = config.get_settings()
- settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
config.include('pyramid_jinja2')
config.include('.models')
config.include('.routes')
diff --git a/docs/tutorials/wiki2/src/models/tutorial/models/__init__.py b/docs/tutorials/wiki2/src/models/tutorial/models/__init__.py
index cd8347ccd..3c9ba8e54 100644
--- a/docs/tutorials/wiki2/src/models/tutorial/models/__init__.py
+++ b/docs/tutorials/wiki2/src/models/tutorial/models/__init__.py
@@ -63,6 +63,9 @@ def includeme(config):
# use pyramid_tm to hook the transaction lifecycle to the request
config.include('pyramid_tm')
+ # use pyramid_retry to retry a request when transient exceptions occur
+ config.include('pyramid_retry')
+
session_factory = get_session_factory(get_engine(settings))
config.registry['dbsession_factory'] = session_factory
diff --git a/docs/tutorials/wiki2/src/tests/README.txt b/docs/tutorials/wiki2/src/tests/README.txt
index 81102a869..7b33da610 100644
--- a/docs/tutorials/wiki2/src/tests/README.txt
+++ b/docs/tutorials/wiki2/src/tests/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki2/src/tests/development.ini b/docs/tutorials/wiki2/src/tests/development.ini
index 0786c1f66..00d0dd2bf 100644
--- a/docs/tutorials/wiki2/src/tests/development.ini
+++ b/docs/tutorials/wiki2/src/tests/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
auth.secret = seekrit
# By default, the toolbar only appears for clients from IP addresses
diff --git a/docs/tutorials/wiki2/src/tests/production.ini b/docs/tutorials/wiki2/src/tests/production.ini
index 05d60feec..e55e9fecc 100644
--- a/docs/tutorials/wiki2/src/tests/production.ini
+++ b/docs/tutorials/wiki2/src/tests/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
auth.secret = real-seekrit
###
diff --git a/docs/tutorials/wiki2/src/tests/setup.py b/docs/tutorials/wiki2/src/tests/setup.py
index cc1aa421c..abc24876d 100644
--- a/docs/tutorials/wiki2/src/tests/setup.py
+++ b/docs/tutorials/wiki2/src/tests/setup.py
@@ -11,9 +11,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
requires = [
'bcrypt',
'docutils',
- 'pyramid',
- 'pyramid_jinja2',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_debugtoolbar',
+ 'pyramid_jinja2',
+ 'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
diff --git a/docs/tutorials/wiki2/src/tests/tutorial/models/__init__.py b/docs/tutorials/wiki2/src/tests/tutorial/models/__init__.py
index cd8347ccd..3c9ba8e54 100644
--- a/docs/tutorials/wiki2/src/tests/tutorial/models/__init__.py
+++ b/docs/tutorials/wiki2/src/tests/tutorial/models/__init__.py
@@ -63,6 +63,9 @@ def includeme(config):
# use pyramid_tm to hook the transaction lifecycle to the request
config.include('pyramid_tm')
+ # use pyramid_retry to retry a request when transient exceptions occur
+ config.include('pyramid_retry')
+
session_factory = get_session_factory(get_engine(settings))
config.registry['dbsession_factory'] = session_factory
diff --git a/docs/tutorials/wiki2/src/views/README.txt b/docs/tutorials/wiki2/src/views/README.txt
index 81102a869..7b33da610 100644
--- a/docs/tutorials/wiki2/src/views/README.txt
+++ b/docs/tutorials/wiki2/src/views/README.txt
@@ -14,7 +14,7 @@ Getting Started
- Upgrade packaging tools.
- env/bin/pip install --upgrade pip setuptools wheel
+ env/bin/pip install --upgrade pip setuptools
- Install the project in editable mode with its testing requirements.
diff --git a/docs/tutorials/wiki2/src/views/development.ini b/docs/tutorials/wiki2/src/views/development.ini
index be80882a5..73ef3d863 100644
--- a/docs/tutorials/wiki2/src/views/development.ini
+++ b/docs/tutorials/wiki2/src/views/development.ini
@@ -16,6 +16,8 @@ pyramid.includes =
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1
diff --git a/docs/tutorials/wiki2/src/views/production.ini b/docs/tutorials/wiki2/src/views/production.ini
index c01ad9a7e..8dea38631 100644
--- a/docs/tutorials/wiki2/src/views/production.ini
+++ b/docs/tutorials/wiki2/src/views/production.ini
@@ -14,6 +14,8 @@ pyramid.default_locale_name = en
sqlalchemy.url = sqlite:///%(here)s/tutorial.sqlite
+retry.attempts = 3
+
###
# wsgi server configuration
###
diff --git a/docs/tutorials/wiki2/src/views/setup.py b/docs/tutorials/wiki2/src/views/setup.py
index cc1aa421c..abc24876d 100644
--- a/docs/tutorials/wiki2/src/views/setup.py
+++ b/docs/tutorials/wiki2/src/views/setup.py
@@ -11,9 +11,11 @@ with open(os.path.join(here, 'CHANGES.txt')) as f:
requires = [
'bcrypt',
'docutils',
- 'pyramid',
- 'pyramid_jinja2',
+ 'plaster_pastedeploy',
+ 'pyramid >= 1.9a',
'pyramid_debugtoolbar',
+ 'pyramid_jinja2',
+ 'pyramid_retry',
'pyramid_tm',
'SQLAlchemy',
'transaction',
diff --git a/docs/tutorials/wiki2/src/views/tutorial/models/__init__.py b/docs/tutorials/wiki2/src/views/tutorial/models/__init__.py
index cd8347ccd..3c9ba8e54 100644
--- a/docs/tutorials/wiki2/src/views/tutorial/models/__init__.py
+++ b/docs/tutorials/wiki2/src/views/tutorial/models/__init__.py
@@ -63,6 +63,9 @@ def includeme(config):
# use pyramid_tm to hook the transaction lifecycle to the request
config.include('pyramid_tm')
+ # use pyramid_retry to retry a request when transient exceptions occur
+ config.include('pyramid_retry')
+
session_factory = get_session_factory(get_engine(settings))
config.registry['dbsession_factory'] = session_factory