From 1a48c8b7952d35b217c3adf3f6be11026fefd03b Mon Sep 17 00:00:00 2001 From: Laurence Rowe Date: Wed, 24 Apr 2013 14:38:32 -0700 Subject: Laurence Rowe contributor agreement. --- CONTRIBUTORS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 97eb54f7b..7cd7123c5 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -198,3 +198,5 @@ Contributors - Georges Dubus, 2013/03/21 - Jason McKellar, 2013/03/28 + +- Laurence Rowe, 2013/04/24 -- cgit v1.2.3 From f3bffdfc35a5ecbb45b5f63bdb08bdc41553b63d Mon Sep 17 00:00:00 2001 From: Laurence Rowe Date: Wed, 24 Apr 2013 14:38:41 -0700 Subject: Consider superclass views after predicate mismatch The merged fix for #786 only worked for views registered to an interface. --- pyramid/router.py | 2 +- pyramid/tests/test_router.py | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/pyramid/router.py b/pyramid/router.py index 63c12a1af..f780f6711 100644 --- a/pyramid/router.py +++ b/pyramid/router.py @@ -165,7 +165,7 @@ class Router(object): except PredicateMismatch: # look for other views that meet the predicate # criteria - for iface in context_iface.flattened(): + for iface in context_iface.__sro__[1:]: view_callable = adapters.lookup( (IViewClassifier, request.request_iface, iface), IView, name=view_name, default=None) diff --git a/pyramid/tests/test_router.py b/pyramid/tests/test_router.py index 432959147..b836d7d72 100644 --- a/pyramid/tests/test_router.py +++ b/pyramid/tests/test_router.py @@ -1180,11 +1180,9 @@ class TestRouter(unittest.TestCase): from pyramid.interfaces import IViewClassifier from pyramid.interfaces import IRequest, IResponse from pyramid.response import Response - from zope.interface import Interface, implementer - class IContext(Interface): + class BaseContext: pass - @implementer(IContext) - class DummyContext: + class DummyContext(BaseContext): pass context = DummyContext() self._registerTraverserFactory(context) @@ -1193,7 +1191,7 @@ class TestRouter(unittest.TestCase): DummyContext) good_view = DummyView('abc') self._registerView(self.config.derive_view(good_view), - '', IViewClassifier, IRequest, IContext) + '', IViewClassifier, IRequest, BaseContext) router = self._makeOne() def make_response(s): return Response(s) -- cgit v1.2.3 From 27be34831a376e7041983531e0a17af76c06b482 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Tue, 2 Jul 2013 00:28:31 -0400 Subject: Allow 'prequest' to send basic auth headers. Also, allow passing PROPFIND / OPTIONS as methods. --- pyramid/scripts/prequest.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/pyramid/scripts/prequest.py b/pyramid/scripts/prequest.py index 3d8921b15..874fd1bca 100644 --- a/pyramid/scripts/prequest.py +++ b/pyramid/scripts/prequest.py @@ -1,3 +1,4 @@ +import base64 import optparse import sys import textwrap @@ -29,6 +30,12 @@ class PRequestCommand(object): Use "prequest --method=PATCH config.ini /path < data" to do a PATCH with the given request body. + Use "prequest --method=OPTIONS config.ini /path" to do an + OPTIONS request. + + Use "prequest --method=PROPFIND config.ini /path" to do an + PROPFIND request. + If the path is relative (doesn't begin with "/") it is interpreted as relative to "/". The path passed to this script should be URL-quoted. The path can be succeeded with a query string (e.g. `/path?a=1&=b2'). @@ -66,9 +73,17 @@ class PRequestCommand(object): parser.add_option( '-m', '--method', dest='method', - choices=['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE'], + choices=['GET', 'HEAD', 'POST', 'PUT', 'PATCH','DELETE', + 'PROPFIND', 'OPTIONS'], type='choice', - help='Request method type', + help='Request method type (GET, POST, PUT, PATCH, DELETE, ' + 'PROPFIND, OPTIONS)', + ) + parser.add_option( + '-l', '--login', + dest='login', + type='string', + help='HTTP basic auth username:password pair', ) get_app = staticmethod(get_app) @@ -99,6 +114,10 @@ class PRequestCommand(object): path = url_unquote(path) headers = {} + if self.options.login: + enc = base64.b64encode(self.options.login.encode('ascii')) + headers['Authorization'] = 'Basic ' + enc.decode('ascii') + if self.options.headers: for item in self.options.headers: if ':' not in item: -- cgit v1.2.3 From 3cdae905ea6805384d830ca1107731f4a747372a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Araujo?= Date: Thu, 11 Jul 2013 15:09:05 -0400 Subject: reST fix --- pyramid/url.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyramid/url.py b/pyramid/url.py index 84b58ac45..83f0d1eab 100644 --- a/pyramid/url.py +++ b/pyramid/url.py @@ -387,7 +387,7 @@ class URLMethodsMixin(object): resulting url of a resource that has a path of ``/baz/bar`` will be ``http://foo/baz/bar``. If you want to generate completely relative URLs with no leading scheme, host, port, or initial path, you can - pass ``app_url=''`. Passing ``app_url=''` when the resource path is + pass ``app_url=''``. Passing ``app_url=''`` when the resource path is ``/baz/bar`` will return ``/baz/bar``. .. versionadded:: 1.3 -- cgit v1.2.3 From f1f49bfacc5fd1fef1b4be23cdd26ccb4be6e0f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Araujo?= Date: Thu, 11 Jul 2013 16:44:24 -0400 Subject: Minor markup update to clarify object type --- pyramid/config/routes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyramid/config/routes.py b/pyramid/config/routes.py index f495794b4..c86e4a2dd 100644 --- a/pyramid/config/routes.py +++ b/pyramid/config/routes.py @@ -90,10 +90,10 @@ class RoutesConfiguratorMixin(object): ``traverse`` argument provided to ``add_route`` is ``/{article}``, when a request comes in that causes the route to match in such a way that the ``article`` match value is - '1' (when the request URI is ``/articles/1/edit``), the + ``'1'`` (when the request URI is ``/articles/1/edit``), the traversal path will be generated as ``/1``. This means that the root object's ``__getitem__`` will be called with the - name ``1`` during the traversal phase. If the ``1`` object + name ``'1'`` during the traversal phase. If the ``'1'`` object exists, it will become the :term:`context` of the request. :ref:`traversal_chapter` has more information about traversal. -- cgit v1.2.3 From 4ff3cc2e7b7ce256749e292ca7a86ae146db8513 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Thu, 11 Jul 2013 20:54:28 -0400 Subject: Typo firx from merwok. --- MANIFEST.in | 725 ++++++++++++++++++++++++++++++++++++++++++++ pyramid/scripts/prequest.py | 2 +- 2 files changed, 726 insertions(+), 1 deletion(-) create mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..bc89253ce --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,725 @@ +.gitignore +.gitmodules +.travis.yml +BFG_HISTORY.txt +CHANGES.txt +CONTRIBUTORS.txt +COPYRIGHT.txt +HACKING.txt +HISTORY.txt +LICENSE.txt +README.rst +RELEASING.txt +TODO.txt +docs/.gitignore +docs/Makefile +docs/_static/latex-note.png +docs/_static/latex-warning.png +docs/_themes +docs/api/authentication.rst +docs/api/authorization.rst +docs/api/compat.rst +docs/api/config.rst +docs/api/decorator.rst +docs/api/events.rst +docs/api/exceptions.rst +docs/api/httpexceptions.rst +docs/api/i18n.rst +docs/api/interfaces.rst +docs/api/location.rst +docs/api/paster.rst +docs/api/path.rst +docs/api/registry.rst +docs/api/renderers.rst +docs/api/request.rst +docs/api/response.rst +docs/api/scaffolds.rst +docs/api/scripting.rst +docs/api/security.rst +docs/api/session.rst +docs/api/settings.rst +docs/api/static.rst +docs/api/testing.rst +docs/api/threadlocal.rst +docs/api/traversal.rst +docs/api/tweens.rst +docs/api/url.rst +docs/api/view.rst +docs/api/wsgi.rst +docs/authorintro.rst +docs/changes.rst +docs/conf.py +docs/conventions.rst +docs/convert_images.sh +docs/copyright.rst +docs/coversizing.py +docs/designdefense.rst +docs/foreword.rst +docs/glossary.rst +docs/index.rst +docs/latexindex.rst +docs/make_book +docs/make_epub +docs/make_pdf +docs/narr/MyProject/CHANGES.txt +docs/narr/MyProject/MANIFEST.in +docs/narr/MyProject/README.txt +docs/narr/MyProject/development.ini +docs/narr/MyProject/myproject/__init__.py +docs/narr/MyProject/myproject/static/favicon.ico +docs/narr/MyProject/myproject/static/footerbg.png +docs/narr/MyProject/myproject/static/headerbg.png +docs/narr/MyProject/myproject/static/ie6.css +docs/narr/MyProject/myproject/static/middlebg.png +docs/narr/MyProject/myproject/static/pylons.css +docs/narr/MyProject/myproject/static/pyramid-small.png +docs/narr/MyProject/myproject/static/pyramid.png +docs/narr/MyProject/myproject/static/transparent.gif +docs/narr/MyProject/myproject/templates/mytemplate.pt +docs/narr/MyProject/myproject/tests.py +docs/narr/MyProject/myproject/views.py +docs/narr/MyProject/production.ini +docs/narr/MyProject/setup.cfg +docs/narr/MyProject/setup.py +docs/narr/advconfig.rst +docs/narr/assets.rst +docs/narr/commandline.rst +docs/narr/configuration.rst +docs/narr/environment.rst +docs/narr/events.rst +docs/narr/extconfig.rst +docs/narr/extending.rst +docs/narr/firstapp.rst +docs/narr/hellotraversal.py +docs/narr/hellotraversal.rst +docs/narr/helloworld.py +docs/narr/hooks.rst +docs/narr/hybrid.rst +docs/narr/i18n.rst +docs/narr/install.rst +docs/narr/introduction.rst +docs/narr/introspector.rst +docs/narr/logging.rst +docs/narr/muchadoabouttraversal.rst +docs/narr/paste.rst +docs/narr/project-debug.png +docs/narr/project.png +docs/narr/project.rst +docs/narr/renderers.rst +docs/narr/resources.rst +docs/narr/resourcetreetraverser.png +docs/narr/router.png +docs/narr/router.rst +docs/narr/scaffolding.rst +docs/narr/security.rst +docs/narr/sessions.rst +docs/narr/startup.rst +docs/narr/subrequest.rst +docs/narr/tb_introspector.png +docs/narr/templates.rst +docs/narr/testing.rst +docs/narr/threadlocals.rst +docs/narr/traversal.rst +docs/narr/upgrading.rst +docs/narr/urldispatch.rst +docs/narr/vhosting.rst +docs/narr/viewconfig.rst +docs/narr/views.rst +docs/narr/webob.rst +docs/narr/zca.rst +docs/python-3.png +docs/remake +docs/tutorials/.gitignore +docs/tutorials/bfg/index.rst +docs/tutorials/modwsgi/index.rst +docs/tutorials/wiki/NOTE-relocatable.txt +docs/tutorials/wiki/authorization.rst +docs/tutorials/wiki/background.rst +docs/tutorials/wiki/basiclayout.rst +docs/tutorials/wiki/definingmodels.rst +docs/tutorials/wiki/definingviews.rst +docs/tutorials/wiki/design.rst +docs/tutorials/wiki/distributing.rst +docs/tutorials/wiki/index.rst +docs/tutorials/wiki/installation.rst +docs/tutorials/wiki/src/authorization/CHANGES.txt +docs/tutorials/wiki/src/authorization/MANIFEST.in +docs/tutorials/wiki/src/authorization/README.txt +docs/tutorials/wiki/src/authorization/development.ini +docs/tutorials/wiki/src/authorization/production.ini +docs/tutorials/wiki/src/authorization/setup.cfg +docs/tutorials/wiki/src/authorization/setup.py +docs/tutorials/wiki/src/authorization/tutorial/__init__.py +docs/tutorials/wiki/src/authorization/tutorial/models.py +docs/tutorials/wiki/src/authorization/tutorial/security.py +docs/tutorials/wiki/src/authorization/tutorial/static/favicon.ico +docs/tutorials/wiki/src/authorization/tutorial/static/footerbg.png +docs/tutorials/wiki/src/authorization/tutorial/static/headerbg.png +docs/tutorials/wiki/src/authorization/tutorial/static/ie6.css +docs/tutorials/wiki/src/authorization/tutorial/static/middlebg.png +docs/tutorials/wiki/src/authorization/tutorial/static/pylons.css +docs/tutorials/wiki/src/authorization/tutorial/static/pyramid-small.png +docs/tutorials/wiki/src/authorization/tutorial/static/pyramid.png +docs/tutorials/wiki/src/authorization/tutorial/static/transparent.gif +docs/tutorials/wiki/src/authorization/tutorial/templates/edit.pt +docs/tutorials/wiki/src/authorization/tutorial/templates/login.pt +docs/tutorials/wiki/src/authorization/tutorial/templates/mytemplate.pt +docs/tutorials/wiki/src/authorization/tutorial/templates/view.pt +docs/tutorials/wiki/src/authorization/tutorial/tests.py +docs/tutorials/wiki/src/authorization/tutorial/views.py +docs/tutorials/wiki/src/basiclayout/CHANGES.txt +docs/tutorials/wiki/src/basiclayout/MANIFEST.in +docs/tutorials/wiki/src/basiclayout/README.txt +docs/tutorials/wiki/src/basiclayout/development.ini +docs/tutorials/wiki/src/basiclayout/production.ini +docs/tutorials/wiki/src/basiclayout/setup.cfg +docs/tutorials/wiki/src/basiclayout/setup.py +docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py +docs/tutorials/wiki/src/basiclayout/tutorial/models.py +docs/tutorials/wiki/src/basiclayout/tutorial/static/favicon.ico +docs/tutorials/wiki/src/basiclayout/tutorial/static/footerbg.png +docs/tutorials/wiki/src/basiclayout/tutorial/static/headerbg.png +docs/tutorials/wiki/src/basiclayout/tutorial/static/ie6.css +docs/tutorials/wiki/src/basiclayout/tutorial/static/middlebg.png +docs/tutorials/wiki/src/basiclayout/tutorial/static/pylons.css +docs/tutorials/wiki/src/basiclayout/tutorial/static/pyramid-small.png +docs/tutorials/wiki/src/basiclayout/tutorial/static/pyramid.png +docs/tutorials/wiki/src/basiclayout/tutorial/static/transparent.gif +docs/tutorials/wiki/src/basiclayout/tutorial/templates/mytemplate.pt +docs/tutorials/wiki/src/basiclayout/tutorial/tests.py +docs/tutorials/wiki/src/basiclayout/tutorial/views.py +docs/tutorials/wiki/src/models/CHANGES.txt +docs/tutorials/wiki/src/models/MANIFEST.in +docs/tutorials/wiki/src/models/README.txt +docs/tutorials/wiki/src/models/development.ini +docs/tutorials/wiki/src/models/production.ini +docs/tutorials/wiki/src/models/setup.cfg +docs/tutorials/wiki/src/models/setup.py +docs/tutorials/wiki/src/models/tutorial/__init__.py +docs/tutorials/wiki/src/models/tutorial/models.py +docs/tutorials/wiki/src/models/tutorial/static/favicon.ico +docs/tutorials/wiki/src/models/tutorial/static/footerbg.png +docs/tutorials/wiki/src/models/tutorial/static/headerbg.png +docs/tutorials/wiki/src/models/tutorial/static/ie6.css +docs/tutorials/wiki/src/models/tutorial/static/middlebg.png +docs/tutorials/wiki/src/models/tutorial/static/pylons.css +docs/tutorials/wiki/src/models/tutorial/static/pyramid-small.png +docs/tutorials/wiki/src/models/tutorial/static/pyramid.png +docs/tutorials/wiki/src/models/tutorial/static/transparent.gif +docs/tutorials/wiki/src/models/tutorial/templates/mytemplate.pt +docs/tutorials/wiki/src/models/tutorial/tests.py +docs/tutorials/wiki/src/models/tutorial/views.py +docs/tutorials/wiki/src/tests/CHANGES.txt +docs/tutorials/wiki/src/tests/MANIFEST.in +docs/tutorials/wiki/src/tests/README.txt +docs/tutorials/wiki/src/tests/development.ini +docs/tutorials/wiki/src/tests/production.ini +docs/tutorials/wiki/src/tests/setup.cfg +docs/tutorials/wiki/src/tests/setup.py +docs/tutorials/wiki/src/tests/tutorial/__init__.py +docs/tutorials/wiki/src/tests/tutorial/models.py +docs/tutorials/wiki/src/tests/tutorial/security.py +docs/tutorials/wiki/src/tests/tutorial/static/favicon.ico +docs/tutorials/wiki/src/tests/tutorial/static/footerbg.png +docs/tutorials/wiki/src/tests/tutorial/static/headerbg.png +docs/tutorials/wiki/src/tests/tutorial/static/ie6.css +docs/tutorials/wiki/src/tests/tutorial/static/middlebg.png +docs/tutorials/wiki/src/tests/tutorial/static/pylons.css +docs/tutorials/wiki/src/tests/tutorial/static/pyramid-small.png +docs/tutorials/wiki/src/tests/tutorial/static/pyramid.png +docs/tutorials/wiki/src/tests/tutorial/static/transparent.gif +docs/tutorials/wiki/src/tests/tutorial/templates/edit.pt +docs/tutorials/wiki/src/tests/tutorial/templates/login.pt +docs/tutorials/wiki/src/tests/tutorial/templates/mytemplate.pt +docs/tutorials/wiki/src/tests/tutorial/templates/view.pt +docs/tutorials/wiki/src/tests/tutorial/tests.py +docs/tutorials/wiki/src/tests/tutorial/views.py +docs/tutorials/wiki/src/views/CHANGES.txt +docs/tutorials/wiki/src/views/MANIFEST.in +docs/tutorials/wiki/src/views/README.txt +docs/tutorials/wiki/src/views/development.ini +docs/tutorials/wiki/src/views/production.ini +docs/tutorials/wiki/src/views/setup.cfg +docs/tutorials/wiki/src/views/setup.py +docs/tutorials/wiki/src/views/tutorial/__init__.py +docs/tutorials/wiki/src/views/tutorial/models.py +docs/tutorials/wiki/src/views/tutorial/static/favicon.ico +docs/tutorials/wiki/src/views/tutorial/static/footerbg.png +docs/tutorials/wiki/src/views/tutorial/static/headerbg.png +docs/tutorials/wiki/src/views/tutorial/static/ie6.css +docs/tutorials/wiki/src/views/tutorial/static/middlebg.png +docs/tutorials/wiki/src/views/tutorial/static/pylons.css +docs/tutorials/wiki/src/views/tutorial/static/pyramid-small.png +docs/tutorials/wiki/src/views/tutorial/static/pyramid.png +docs/tutorials/wiki/src/views/tutorial/static/transparent.gif +docs/tutorials/wiki/src/views/tutorial/templates/edit.pt +docs/tutorials/wiki/src/views/tutorial/templates/mytemplate.pt +docs/tutorials/wiki/src/views/tutorial/templates/view.pt +docs/tutorials/wiki/src/views/tutorial/tests.py +docs/tutorials/wiki/src/views/tutorial/views.py +docs/tutorials/wiki/tests.rst +docs/tutorials/wiki2/authorization.rst +docs/tutorials/wiki2/background.rst +docs/tutorials/wiki2/basiclayout.rst +docs/tutorials/wiki2/definingmodels.rst +docs/tutorials/wiki2/definingviews.rst +docs/tutorials/wiki2/design.rst +docs/tutorials/wiki2/distributing.rst +docs/tutorials/wiki2/index.rst +docs/tutorials/wiki2/installation.rst +docs/tutorials/wiki2/src/authorization/CHANGES.txt +docs/tutorials/wiki2/src/authorization/MANIFEST.in +docs/tutorials/wiki2/src/authorization/README.txt +docs/tutorials/wiki2/src/authorization/development.ini +docs/tutorials/wiki2/src/authorization/production.ini +docs/tutorials/wiki2/src/authorization/setup.cfg +docs/tutorials/wiki2/src/authorization/setup.py +docs/tutorials/wiki2/src/authorization/tutorial/__init__.py +docs/tutorials/wiki2/src/authorization/tutorial/models.py +docs/tutorials/wiki2/src/authorization/tutorial/scripts/__init__.py +docs/tutorials/wiki2/src/authorization/tutorial/scripts/initializedb.py +docs/tutorials/wiki2/src/authorization/tutorial/security.py +docs/tutorials/wiki2/src/authorization/tutorial/static/favicon.ico +docs/tutorials/wiki2/src/authorization/tutorial/static/footerbg.png +docs/tutorials/wiki2/src/authorization/tutorial/static/headerbg.png +docs/tutorials/wiki2/src/authorization/tutorial/static/ie6.css +docs/tutorials/wiki2/src/authorization/tutorial/static/middlebg.png +docs/tutorials/wiki2/src/authorization/tutorial/static/pylons.css +docs/tutorials/wiki2/src/authorization/tutorial/static/pyramid-small.png +docs/tutorials/wiki2/src/authorization/tutorial/static/pyramid.png +docs/tutorials/wiki2/src/authorization/tutorial/static/transparent.gif +docs/tutorials/wiki2/src/authorization/tutorial/templates/edit.pt +docs/tutorials/wiki2/src/authorization/tutorial/templates/login.pt +docs/tutorials/wiki2/src/authorization/tutorial/templates/mytemplate.pt +docs/tutorials/wiki2/src/authorization/tutorial/templates/view.pt +docs/tutorials/wiki2/src/authorization/tutorial/tests.py +docs/tutorials/wiki2/src/authorization/tutorial/views.py +docs/tutorials/wiki2/src/basiclayout/CHANGES.txt +docs/tutorials/wiki2/src/basiclayout/MANIFEST.in +docs/tutorials/wiki2/src/basiclayout/README.txt +docs/tutorials/wiki2/src/basiclayout/development.ini +docs/tutorials/wiki2/src/basiclayout/production.ini +docs/tutorials/wiki2/src/basiclayout/setup.cfg +docs/tutorials/wiki2/src/basiclayout/setup.py +docs/tutorials/wiki2/src/basiclayout/tutorial/__init__.py +docs/tutorials/wiki2/src/basiclayout/tutorial/models.py +docs/tutorials/wiki2/src/basiclayout/tutorial/scripts/__init__.py +docs/tutorials/wiki2/src/basiclayout/tutorial/scripts/initializedb.py +docs/tutorials/wiki2/src/basiclayout/tutorial/static/favicon.ico +docs/tutorials/wiki2/src/basiclayout/tutorial/static/footerbg.png +docs/tutorials/wiki2/src/basiclayout/tutorial/static/headerbg.png +docs/tutorials/wiki2/src/basiclayout/tutorial/static/ie6.css +docs/tutorials/wiki2/src/basiclayout/tutorial/static/middlebg.png +docs/tutorials/wiki2/src/basiclayout/tutorial/static/pylons.css +docs/tutorials/wiki2/src/basiclayout/tutorial/static/pyramid-small.png +docs/tutorials/wiki2/src/basiclayout/tutorial/static/pyramid.png +docs/tutorials/wiki2/src/basiclayout/tutorial/static/transparent.gif +docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.pt +docs/tutorials/wiki2/src/basiclayout/tutorial/tests.py +docs/tutorials/wiki2/src/basiclayout/tutorial/views.py +docs/tutorials/wiki2/src/models/CHANGES.txt +docs/tutorials/wiki2/src/models/MANIFEST.in +docs/tutorials/wiki2/src/models/README.txt +docs/tutorials/wiki2/src/models/development.ini +docs/tutorials/wiki2/src/models/production.ini +docs/tutorials/wiki2/src/models/setup.cfg +docs/tutorials/wiki2/src/models/setup.py +docs/tutorials/wiki2/src/models/tutorial/__init__.py +docs/tutorials/wiki2/src/models/tutorial/models.py +docs/tutorials/wiki2/src/models/tutorial/scripts/__init__.py +docs/tutorials/wiki2/src/models/tutorial/scripts/initializedb.py +docs/tutorials/wiki2/src/models/tutorial/static/favicon.ico +docs/tutorials/wiki2/src/models/tutorial/static/footerbg.png +docs/tutorials/wiki2/src/models/tutorial/static/headerbg.png +docs/tutorials/wiki2/src/models/tutorial/static/ie6.css +docs/tutorials/wiki2/src/models/tutorial/static/middlebg.png +docs/tutorials/wiki2/src/models/tutorial/static/pylons.css +docs/tutorials/wiki2/src/models/tutorial/static/pyramid-small.png +docs/tutorials/wiki2/src/models/tutorial/static/pyramid.png +docs/tutorials/wiki2/src/models/tutorial/static/transparent.gif +docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.pt +docs/tutorials/wiki2/src/models/tutorial/tests.py +docs/tutorials/wiki2/src/models/tutorial/views.py +docs/tutorials/wiki2/src/tests/CHANGES.txt +docs/tutorials/wiki2/src/tests/MANIFEST.in +docs/tutorials/wiki2/src/tests/README.txt +docs/tutorials/wiki2/src/tests/development.ini +docs/tutorials/wiki2/src/tests/production.ini +docs/tutorials/wiki2/src/tests/setup.cfg +docs/tutorials/wiki2/src/tests/setup.py +docs/tutorials/wiki2/src/tests/tutorial/__init__.py +docs/tutorials/wiki2/src/tests/tutorial/models.py +docs/tutorials/wiki2/src/tests/tutorial/scripts/__init__.py +docs/tutorials/wiki2/src/tests/tutorial/scripts/initializedb.py +docs/tutorials/wiki2/src/tests/tutorial/security.py +docs/tutorials/wiki2/src/tests/tutorial/static/favicon.ico +docs/tutorials/wiki2/src/tests/tutorial/static/footerbg.png +docs/tutorials/wiki2/src/tests/tutorial/static/headerbg.png +docs/tutorials/wiki2/src/tests/tutorial/static/ie6.css +docs/tutorials/wiki2/src/tests/tutorial/static/middlebg.png +docs/tutorials/wiki2/src/tests/tutorial/static/pylons.css +docs/tutorials/wiki2/src/tests/tutorial/static/pyramid-small.png +docs/tutorials/wiki2/src/tests/tutorial/static/pyramid.png +docs/tutorials/wiki2/src/tests/tutorial/static/transparent.gif +docs/tutorials/wiki2/src/tests/tutorial/templates/edit.pt +docs/tutorials/wiki2/src/tests/tutorial/templates/login.pt +docs/tutorials/wiki2/src/tests/tutorial/templates/mytemplate.pt +docs/tutorials/wiki2/src/tests/tutorial/templates/view.pt +docs/tutorials/wiki2/src/tests/tutorial/tests.py +docs/tutorials/wiki2/src/tests/tutorial/views.py +docs/tutorials/wiki2/src/views/CHANGES.txt +docs/tutorials/wiki2/src/views/MANIFEST.in +docs/tutorials/wiki2/src/views/README.txt +docs/tutorials/wiki2/src/views/development.ini +docs/tutorials/wiki2/src/views/production.ini +docs/tutorials/wiki2/src/views/setup.cfg +docs/tutorials/wiki2/src/views/setup.py +docs/tutorials/wiki2/src/views/tutorial/__init__.py +docs/tutorials/wiki2/src/views/tutorial/models.py +docs/tutorials/wiki2/src/views/tutorial/scripts/__init__.py +docs/tutorials/wiki2/src/views/tutorial/scripts/initializedb.py +docs/tutorials/wiki2/src/views/tutorial/static/favicon.ico +docs/tutorials/wiki2/src/views/tutorial/static/footerbg.png +docs/tutorials/wiki2/src/views/tutorial/static/headerbg.png +docs/tutorials/wiki2/src/views/tutorial/static/ie6.css +docs/tutorials/wiki2/src/views/tutorial/static/middlebg.png +docs/tutorials/wiki2/src/views/tutorial/static/pylons.css +docs/tutorials/wiki2/src/views/tutorial/static/pyramid-small.png +docs/tutorials/wiki2/src/views/tutorial/static/pyramid.png +docs/tutorials/wiki2/src/views/tutorial/static/transparent.gif +docs/tutorials/wiki2/src/views/tutorial/templates/edit.pt +docs/tutorials/wiki2/src/views/tutorial/templates/mytemplate.pt +docs/tutorials/wiki2/src/views/tutorial/templates/view.pt +docs/tutorials/wiki2/src/views/tutorial/tests.py +docs/tutorials/wiki2/src/views/tutorial/views.py +docs/tutorials/wiki2/tests.rst +docs/whatsnew-1.0.rst +docs/whatsnew-1.1.rst +docs/whatsnew-1.2.rst +docs/whatsnew-1.3.rst +docs/whatsnew-1.4.rst +pyramid/__init__.py +pyramid/asset.py +pyramid/authentication.py +pyramid/authorization.py +pyramid/chameleon_text.py +pyramid/chameleon_zpt.py +pyramid/compat.py +pyramid/config/__init__.py +pyramid/config/adapters.py +pyramid/config/assets.py +pyramid/config/factories.py +pyramid/config/i18n.py +pyramid/config/predicates.py +pyramid/config/rendering.py +pyramid/config/routes.py +pyramid/config/security.py +pyramid/config/settings.py +pyramid/config/testing.py +pyramid/config/tweens.py +pyramid/config/util.py +pyramid/config/views.py +pyramid/config/zca.py +pyramid/decorator.py +pyramid/encode.py +pyramid/events.py +pyramid/exceptions.py +pyramid/fixers/__init__.py +pyramid/fixers/fix_bfg_imports.py +pyramid/httpexceptions.py +pyramid/i18n.py +pyramid/interfaces.py +pyramid/location.py +pyramid/mako_templating.py +pyramid/paster.py +pyramid/path.py +pyramid/registry.py +pyramid/renderers.py +pyramid/request.py +pyramid/resource.py +pyramid/response.py +pyramid/router.py +pyramid/scaffolds/__init__.py +pyramid/scaffolds/alchemy/+package+/__init__.py +pyramid/scaffolds/alchemy/+package+/models.py +pyramid/scaffolds/alchemy/+package+/scripts/__init__.py +pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py +pyramid/scaffolds/alchemy/+package+/static/favicon.ico +pyramid/scaffolds/alchemy/+package+/static/footerbg.png +pyramid/scaffolds/alchemy/+package+/static/headerbg.png +pyramid/scaffolds/alchemy/+package+/static/ie6.css +pyramid/scaffolds/alchemy/+package+/static/middlebg.png +pyramid/scaffolds/alchemy/+package+/static/pylons.css +pyramid/scaffolds/alchemy/+package+/static/pyramid-small.png +pyramid/scaffolds/alchemy/+package+/static/pyramid.png +pyramid/scaffolds/alchemy/+package+/static/transparent.gif +pyramid/scaffolds/alchemy/+package+/templates/mytemplate.pt_tmpl +pyramid/scaffolds/alchemy/+package+/tests.py_tmpl +pyramid/scaffolds/alchemy/+package+/views.py_tmpl +pyramid/scaffolds/alchemy/CHANGES.txt_tmpl +pyramid/scaffolds/alchemy/MANIFEST.in_tmpl +pyramid/scaffolds/alchemy/README.txt_tmpl +pyramid/scaffolds/alchemy/development.ini_tmpl +pyramid/scaffolds/alchemy/production.ini_tmpl +pyramid/scaffolds/alchemy/setup.cfg_tmpl +pyramid/scaffolds/alchemy/setup.py_tmpl +pyramid/scaffolds/copydir.py +pyramid/scaffolds/starter/+package+/__init__.py +pyramid/scaffolds/starter/+package+/static/favicon.ico +pyramid/scaffolds/starter/+package+/static/footerbg.png +pyramid/scaffolds/starter/+package+/static/headerbg.png +pyramid/scaffolds/starter/+package+/static/ie6.css +pyramid/scaffolds/starter/+package+/static/middlebg.png +pyramid/scaffolds/starter/+package+/static/pylons.css +pyramid/scaffolds/starter/+package+/static/pyramid-small.png +pyramid/scaffolds/starter/+package+/static/pyramid.png +pyramid/scaffolds/starter/+package+/static/transparent.gif +pyramid/scaffolds/starter/+package+/templates/mytemplate.pt_tmpl +pyramid/scaffolds/starter/+package+/tests.py_tmpl +pyramid/scaffolds/starter/+package+/views.py_tmpl +pyramid/scaffolds/starter/CHANGES.txt_tmpl +pyramid/scaffolds/starter/MANIFEST.in_tmpl +pyramid/scaffolds/starter/README.txt_tmpl +pyramid/scaffolds/starter/development.ini_tmpl +pyramid/scaffolds/starter/production.ini_tmpl +pyramid/scaffolds/starter/setup.cfg_tmpl +pyramid/scaffolds/starter/setup.py_tmpl +pyramid/scaffolds/template.py +pyramid/scaffolds/tests.py +pyramid/scaffolds/zodb/+package+/__init__.py +pyramid/scaffolds/zodb/+package+/models.py +pyramid/scaffolds/zodb/+package+/static/favicon.ico +pyramid/scaffolds/zodb/+package+/static/footerbg.png +pyramid/scaffolds/zodb/+package+/static/headerbg.png +pyramid/scaffolds/zodb/+package+/static/ie6.css +pyramid/scaffolds/zodb/+package+/static/middlebg.png +pyramid/scaffolds/zodb/+package+/static/pylons.css +pyramid/scaffolds/zodb/+package+/static/pyramid-small.png +pyramid/scaffolds/zodb/+package+/static/pyramid.png +pyramid/scaffolds/zodb/+package+/static/transparent.gif +pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt +pyramid/scaffolds/zodb/+package+/tests.py_tmpl +pyramid/scaffolds/zodb/+package+/views.py_tmpl +pyramid/scaffolds/zodb/CHANGES.txt_tmpl +pyramid/scaffolds/zodb/MANIFEST.in_tmpl +pyramid/scaffolds/zodb/README.txt_tmpl +pyramid/scaffolds/zodb/development.ini_tmpl +pyramid/scaffolds/zodb/production.ini_tmpl +pyramid/scaffolds/zodb/setup.cfg_tmpl +pyramid/scaffolds/zodb/setup.py_tmpl +pyramid/scripting.py +pyramid/scripts/__init__.py +pyramid/scripts/common.py +pyramid/scripts/pcreate.py +pyramid/scripts/prequest.py +pyramid/scripts/proutes.py +pyramid/scripts/pserve.py +pyramid/scripts/pshell.py +pyramid/scripts/ptweens.py +pyramid/scripts/pviews.py +pyramid/security.py +pyramid/session.py +pyramid/settings.py +pyramid/static.py +pyramid/testing.py +pyramid/tests/__init__.py +pyramid/tests/fixtures/components.mak +pyramid/tests/fixtures/dummy.ini +pyramid/tests/fixtures/hello .world.mako +pyramid/tests/fixtures/hello_inherit_pkg.mak +pyramid/tests/fixtures/hellocompo.mak +pyramid/tests/fixtures/helloinherit.mak +pyramid/tests/fixtures/helloworld.mak +pyramid/tests/fixtures/helloworld.mako +pyramid/tests/fixtures/layout.mak +pyramid/tests/fixtures/minimal.pt +pyramid/tests/fixtures/minimal.txt +pyramid/tests/fixtures/nonminimal.mak +pyramid/tests/fixtures/nonminimal.txt +pyramid/tests/fixtures/pp.pt +pyramid/tests/fixtures/static/.hiddenfile +pyramid/tests/fixtures/static/arcs.svg.tgz +pyramid/tests/fixtures/static/index.html +pyramid/tests/fixtures/static/subdir/index.html +pyramid/tests/fixtures/withmacro.pt +pyramid/tests/pkgs/__init__.py +pyramid/tests/pkgs/ccbugapp/__init__.py +pyramid/tests/pkgs/conflictapp/__init__.py +pyramid/tests/pkgs/conflictapp/included.py +pyramid/tests/pkgs/defpermbugapp/__init__.py +pyramid/tests/pkgs/eventonly/__init__.py +pyramid/tests/pkgs/exceptionviewapp/__init__.py +pyramid/tests/pkgs/exceptionviewapp/models.py +pyramid/tests/pkgs/exceptionviewapp/views.py +pyramid/tests/pkgs/fixtureapp/__init__.py +pyramid/tests/pkgs/fixtureapp/models.py +pyramid/tests/pkgs/fixtureapp/subpackage/__init__.py +pyramid/tests/pkgs/fixtureapp/subpackage/templates/bar.pt +pyramid/tests/pkgs/fixtureapp/templates/fixture.pt +pyramid/tests/pkgs/fixtureapp/views.py +pyramid/tests/pkgs/forbiddenapp/__init__.py +pyramid/tests/pkgs/forbiddenview/__init__.py +pyramid/tests/pkgs/hybridapp/__init__.py +pyramid/tests/pkgs/hybridapp/views.py +pyramid/tests/pkgs/includeapp1/__init__.py +pyramid/tests/pkgs/includeapp1/root.py +pyramid/tests/pkgs/includeapp1/three.py +pyramid/tests/pkgs/includeapp1/two.py +pyramid/tests/pkgs/localeapp/__init__.py +pyramid/tests/pkgs/localeapp/locale/GARBAGE +pyramid/tests/pkgs/localeapp/locale/be/LC_MESSAGES +pyramid/tests/pkgs/localeapp/locale/de/LC_MESSAGES/deformsite.mo +pyramid/tests/pkgs/localeapp/locale/de/LC_MESSAGES/deformsite.po +pyramid/tests/pkgs/localeapp/locale/de_DE/LC_MESSAGES/deformsite.mo +pyramid/tests/pkgs/localeapp/locale/de_DE/LC_MESSAGES/deformsite.po +pyramid/tests/pkgs/localeapp/locale/en/LC_MESSAGES/deformsite.mo +pyramid/tests/pkgs/localeapp/locale/en/LC_MESSAGES/deformsite.po +pyramid/tests/pkgs/localeapp/locale2/GARBAGE +pyramid/tests/pkgs/localeapp/locale2/be/LC_MESSAGES +pyramid/tests/pkgs/localeapp/locale2/de/LC_MESSAGES/deformsite.mo +pyramid/tests/pkgs/localeapp/locale2/de/LC_MESSAGES/deformsite.po +pyramid/tests/pkgs/localeapp/locale2/en/LC_MESSAGES/deformsite.mo +pyramid/tests/pkgs/localeapp/locale2/en/LC_MESSAGES/deformsite.po +pyramid/tests/pkgs/localeapp/locale3/GARBAGE +pyramid/tests/pkgs/localeapp/locale3/be/LC_MESSAGES +pyramid/tests/pkgs/localeapp/locale3/de/LC_MESSAGES/deformsite.mo +pyramid/tests/pkgs/localeapp/locale3/de/LC_MESSAGES/deformsite.po +pyramid/tests/pkgs/localeapp/locale3/en/LC_MESSAGES/deformsite.mo +pyramid/tests/pkgs/localeapp/locale3/en/LC_MESSAGES/deformsite.po +pyramid/tests/pkgs/notfoundview/__init__.py +pyramid/tests/pkgs/permbugapp/__init__.py +pyramid/tests/pkgs/rendererscanapp/__init__.py +pyramid/tests/pkgs/rendererscanapp/one.pt +pyramid/tests/pkgs/rendererscanapp/two/__init__.py +pyramid/tests/pkgs/rendererscanapp/two/two.pt +pyramid/tests/pkgs/restbugapp/__init__.py +pyramid/tests/pkgs/restbugapp/views.py +pyramid/tests/pkgs/static_abspath/__init__.py +pyramid/tests/pkgs/static_assetspec/__init__.py +pyramid/tests/pkgs/static_routeprefix/__init__.py +pyramid/tests/pkgs/staticpermapp/__init__.py +pyramid/tests/pkgs/subrequestapp/__init__.py +pyramid/tests/pkgs/viewdecoratorapp/__init__.py +pyramid/tests/pkgs/viewdecoratorapp/views/__init__.py +pyramid/tests/pkgs/viewdecoratorapp/views/templates/foo.pt +pyramid/tests/pkgs/viewdecoratorapp/views/views.py +pyramid/tests/pkgs/wsgiapp2app/__init__.py +pyramid/tests/test_asset.py +pyramid/tests/test_authentication.py +pyramid/tests/test_authorization.py +pyramid/tests/test_chameleon_text.py +pyramid/tests/test_chameleon_zpt.py +pyramid/tests/test_config/__init__.py +pyramid/tests/test_config/files/assets/dummy.txt +pyramid/tests/test_config/files/minimal.pt +pyramid/tests/test_config/path/scanerror/__init__.py +pyramid/tests/test_config/path/scanerror/will_raise_error.py +pyramid/tests/test_config/pkgs/__init__.py +pyramid/tests/test_config/pkgs/asset/__init__.py +pyramid/tests/test_config/pkgs/asset/models.py +pyramid/tests/test_config/pkgs/asset/subpackage/__init__.py +pyramid/tests/test_config/pkgs/asset/subpackage/templates/bar.pt +pyramid/tests/test_config/pkgs/asset/templates/fixture.pt +pyramid/tests/test_config/pkgs/asset/views.py +pyramid/tests/test_config/pkgs/scanextrakw/__init__.py +pyramid/tests/test_config/pkgs/scannable/__init__.py +pyramid/tests/test_config/pkgs/scannable/another.py +pyramid/tests/test_config/pkgs/scannable/pod/notinit.py +pyramid/tests/test_config/pkgs/scannable/subpackage/__init__.py +pyramid/tests/test_config/pkgs/scannable/subpackage/notinit.py +pyramid/tests/test_config/pkgs/scannable/subpackage/subsubpackage/__init__.py +pyramid/tests/test_config/pkgs/selfscan/__init__.py +pyramid/tests/test_config/pkgs/selfscan/another.py +pyramid/tests/test_config/test_adapters.py +pyramid/tests/test_config/test_assets.py +pyramid/tests/test_config/test_factories.py +pyramid/tests/test_config/test_i18n.py +pyramid/tests/test_config/test_init.py +pyramid/tests/test_config/test_predicates.py +pyramid/tests/test_config/test_rendering.py +pyramid/tests/test_config/test_routes.py +pyramid/tests/test_config/test_security.py +pyramid/tests/test_config/test_settings.py +pyramid/tests/test_config/test_testing.py +pyramid/tests/test_config/test_tweens.py +pyramid/tests/test_config/test_util.py +pyramid/tests/test_config/test_views.py +pyramid/tests/test_decorator.py +pyramid/tests/test_docs.py +pyramid/tests/test_encode.py +pyramid/tests/test_events.py +pyramid/tests/test_exceptions.py +pyramid/tests/test_httpexceptions.py +pyramid/tests/test_i18n.py +pyramid/tests/test_integration.py +pyramid/tests/test_location.py +pyramid/tests/test_mako_templating.py +pyramid/tests/test_paster.py +pyramid/tests/test_path.py +pyramid/tests/test_registry.py +pyramid/tests/test_renderers.py +pyramid/tests/test_request.py +pyramid/tests/test_response.py +pyramid/tests/test_router.py +pyramid/tests/test_scaffolds/__init__.py +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/.badfile +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/__init__.py_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/resources.py +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/favicon.ico +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/ie6.css +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/middlebg.png +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pylons.css +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid-small.png +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/templates/mytemplate.pt_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/test_no_content.py_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/tests.py_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/+package+/views.py_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/CHANGES.txt_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/MANIFEST.in_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/README.txt_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/development.ini_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/production.ini_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/setup.cfg_tmpl +pyramid/tests/test_scaffolds/fixture_scaffold/setup.py_tmpl +pyramid/tests/test_scaffolds/test_copydir.py +pyramid/tests/test_scaffolds/test_init.py +pyramid/tests/test_scaffolds/test_template.py +pyramid/tests/test_scripting.py +pyramid/tests/test_scripts/__init__.py +pyramid/tests/test_scripts/dummy.py +pyramid/tests/test_scripts/test_common.py +pyramid/tests/test_scripts/test_pcreate.py +pyramid/tests/test_scripts/test_prequest.py +pyramid/tests/test_scripts/test_proutes.py +pyramid/tests/test_scripts/test_pserve.py +pyramid/tests/test_scripts/test_pshell.py +pyramid/tests/test_scripts/test_ptweens.py +pyramid/tests/test_scripts/test_pviews.py +pyramid/tests/test_security.py +pyramid/tests/test_session.py +pyramid/tests/test_settings.py +pyramid/tests/test_static.py +pyramid/tests/test_testing.py +pyramid/tests/test_threadlocal.py +pyramid/tests/test_traversal.py +pyramid/tests/test_url.py +pyramid/tests/test_urldispatch.py +pyramid/tests/test_util.py +pyramid/tests/test_view.py +pyramid/tests/test_wsgi.py +pyramid/threadlocal.py +pyramid/traversal.py +pyramid/tweens.py +pyramid/url.py +pyramid/urldispatch.py +pyramid/util.py +pyramid/view.py +pyramid/wsgi.py +rtd.txt +setup.cfg +setup.py +tox.ini diff --git a/pyramid/scripts/prequest.py b/pyramid/scripts/prequest.py index 874fd1bca..8628d5a5a 100644 --- a/pyramid/scripts/prequest.py +++ b/pyramid/scripts/prequest.py @@ -33,7 +33,7 @@ class PRequestCommand(object): Use "prequest --method=OPTIONS config.ini /path" to do an OPTIONS request. - Use "prequest --method=PROPFIND config.ini /path" to do an + Use "prequest --method=PROPFIND config.ini /path" to do a PROPFIND request. If the path is relative (doesn't begin with "/") it is interpreted as -- cgit v1.2.3 From eed8f8df0130a49113f9c9afdf57c6cd25830b5f Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Thu, 11 Jul 2013 20:58:27 -0400 Subject: Get this out of the way after removing the pre-commit hook. --- MANIFEST.in | 725 ------------------------------------------------------------ 1 file changed, 725 deletions(-) delete mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index bc89253ce..000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,725 +0,0 @@ -.gitignore -.gitmodules -.travis.yml -BFG_HISTORY.txt -CHANGES.txt -CONTRIBUTORS.txt -COPYRIGHT.txt -HACKING.txt -HISTORY.txt -LICENSE.txt -README.rst -RELEASING.txt -TODO.txt -docs/.gitignore -docs/Makefile -docs/_static/latex-note.png -docs/_static/latex-warning.png -docs/_themes -docs/api/authentication.rst -docs/api/authorization.rst -docs/api/compat.rst -docs/api/config.rst -docs/api/decorator.rst -docs/api/events.rst -docs/api/exceptions.rst -docs/api/httpexceptions.rst -docs/api/i18n.rst -docs/api/interfaces.rst -docs/api/location.rst -docs/api/paster.rst -docs/api/path.rst -docs/api/registry.rst -docs/api/renderers.rst -docs/api/request.rst -docs/api/response.rst -docs/api/scaffolds.rst -docs/api/scripting.rst -docs/api/security.rst -docs/api/session.rst -docs/api/settings.rst -docs/api/static.rst -docs/api/testing.rst -docs/api/threadlocal.rst -docs/api/traversal.rst -docs/api/tweens.rst -docs/api/url.rst -docs/api/view.rst -docs/api/wsgi.rst -docs/authorintro.rst -docs/changes.rst -docs/conf.py -docs/conventions.rst -docs/convert_images.sh -docs/copyright.rst -docs/coversizing.py -docs/designdefense.rst -docs/foreword.rst -docs/glossary.rst -docs/index.rst -docs/latexindex.rst -docs/make_book -docs/make_epub -docs/make_pdf -docs/narr/MyProject/CHANGES.txt -docs/narr/MyProject/MANIFEST.in -docs/narr/MyProject/README.txt -docs/narr/MyProject/development.ini -docs/narr/MyProject/myproject/__init__.py -docs/narr/MyProject/myproject/static/favicon.ico -docs/narr/MyProject/myproject/static/footerbg.png -docs/narr/MyProject/myproject/static/headerbg.png -docs/narr/MyProject/myproject/static/ie6.css -docs/narr/MyProject/myproject/static/middlebg.png -docs/narr/MyProject/myproject/static/pylons.css -docs/narr/MyProject/myproject/static/pyramid-small.png -docs/narr/MyProject/myproject/static/pyramid.png -docs/narr/MyProject/myproject/static/transparent.gif -docs/narr/MyProject/myproject/templates/mytemplate.pt -docs/narr/MyProject/myproject/tests.py -docs/narr/MyProject/myproject/views.py -docs/narr/MyProject/production.ini -docs/narr/MyProject/setup.cfg -docs/narr/MyProject/setup.py -docs/narr/advconfig.rst -docs/narr/assets.rst -docs/narr/commandline.rst -docs/narr/configuration.rst -docs/narr/environment.rst -docs/narr/events.rst -docs/narr/extconfig.rst -docs/narr/extending.rst -docs/narr/firstapp.rst -docs/narr/hellotraversal.py -docs/narr/hellotraversal.rst -docs/narr/helloworld.py -docs/narr/hooks.rst -docs/narr/hybrid.rst -docs/narr/i18n.rst -docs/narr/install.rst -docs/narr/introduction.rst -docs/narr/introspector.rst -docs/narr/logging.rst -docs/narr/muchadoabouttraversal.rst -docs/narr/paste.rst -docs/narr/project-debug.png -docs/narr/project.png -docs/narr/project.rst -docs/narr/renderers.rst -docs/narr/resources.rst -docs/narr/resourcetreetraverser.png -docs/narr/router.png -docs/narr/router.rst -docs/narr/scaffolding.rst -docs/narr/security.rst -docs/narr/sessions.rst -docs/narr/startup.rst -docs/narr/subrequest.rst -docs/narr/tb_introspector.png -docs/narr/templates.rst -docs/narr/testing.rst -docs/narr/threadlocals.rst -docs/narr/traversal.rst -docs/narr/upgrading.rst -docs/narr/urldispatch.rst -docs/narr/vhosting.rst -docs/narr/viewconfig.rst -docs/narr/views.rst -docs/narr/webob.rst -docs/narr/zca.rst -docs/python-3.png -docs/remake -docs/tutorials/.gitignore -docs/tutorials/bfg/index.rst -docs/tutorials/modwsgi/index.rst -docs/tutorials/wiki/NOTE-relocatable.txt -docs/tutorials/wiki/authorization.rst -docs/tutorials/wiki/background.rst -docs/tutorials/wiki/basiclayout.rst -docs/tutorials/wiki/definingmodels.rst -docs/tutorials/wiki/definingviews.rst -docs/tutorials/wiki/design.rst -docs/tutorials/wiki/distributing.rst -docs/tutorials/wiki/index.rst -docs/tutorials/wiki/installation.rst -docs/tutorials/wiki/src/authorization/CHANGES.txt -docs/tutorials/wiki/src/authorization/MANIFEST.in -docs/tutorials/wiki/src/authorization/README.txt -docs/tutorials/wiki/src/authorization/development.ini -docs/tutorials/wiki/src/authorization/production.ini -docs/tutorials/wiki/src/authorization/setup.cfg -docs/tutorials/wiki/src/authorization/setup.py -docs/tutorials/wiki/src/authorization/tutorial/__init__.py -docs/tutorials/wiki/src/authorization/tutorial/models.py -docs/tutorials/wiki/src/authorization/tutorial/security.py -docs/tutorials/wiki/src/authorization/tutorial/static/favicon.ico -docs/tutorials/wiki/src/authorization/tutorial/static/footerbg.png -docs/tutorials/wiki/src/authorization/tutorial/static/headerbg.png -docs/tutorials/wiki/src/authorization/tutorial/static/ie6.css -docs/tutorials/wiki/src/authorization/tutorial/static/middlebg.png -docs/tutorials/wiki/src/authorization/tutorial/static/pylons.css -docs/tutorials/wiki/src/authorization/tutorial/static/pyramid-small.png -docs/tutorials/wiki/src/authorization/tutorial/static/pyramid.png -docs/tutorials/wiki/src/authorization/tutorial/static/transparent.gif -docs/tutorials/wiki/src/authorization/tutorial/templates/edit.pt -docs/tutorials/wiki/src/authorization/tutorial/templates/login.pt -docs/tutorials/wiki/src/authorization/tutorial/templates/mytemplate.pt -docs/tutorials/wiki/src/authorization/tutorial/templates/view.pt -docs/tutorials/wiki/src/authorization/tutorial/tests.py -docs/tutorials/wiki/src/authorization/tutorial/views.py -docs/tutorials/wiki/src/basiclayout/CHANGES.txt -docs/tutorials/wiki/src/basiclayout/MANIFEST.in -docs/tutorials/wiki/src/basiclayout/README.txt -docs/tutorials/wiki/src/basiclayout/development.ini -docs/tutorials/wiki/src/basiclayout/production.ini -docs/tutorials/wiki/src/basiclayout/setup.cfg -docs/tutorials/wiki/src/basiclayout/setup.py -docs/tutorials/wiki/src/basiclayout/tutorial/__init__.py -docs/tutorials/wiki/src/basiclayout/tutorial/models.py -docs/tutorials/wiki/src/basiclayout/tutorial/static/favicon.ico -docs/tutorials/wiki/src/basiclayout/tutorial/static/footerbg.png -docs/tutorials/wiki/src/basiclayout/tutorial/static/headerbg.png -docs/tutorials/wiki/src/basiclayout/tutorial/static/ie6.css -docs/tutorials/wiki/src/basiclayout/tutorial/static/middlebg.png -docs/tutorials/wiki/src/basiclayout/tutorial/static/pylons.css -docs/tutorials/wiki/src/basiclayout/tutorial/static/pyramid-small.png -docs/tutorials/wiki/src/basiclayout/tutorial/static/pyramid.png -docs/tutorials/wiki/src/basiclayout/tutorial/static/transparent.gif -docs/tutorials/wiki/src/basiclayout/tutorial/templates/mytemplate.pt -docs/tutorials/wiki/src/basiclayout/tutorial/tests.py -docs/tutorials/wiki/src/basiclayout/tutorial/views.py -docs/tutorials/wiki/src/models/CHANGES.txt -docs/tutorials/wiki/src/models/MANIFEST.in -docs/tutorials/wiki/src/models/README.txt -docs/tutorials/wiki/src/models/development.ini -docs/tutorials/wiki/src/models/production.ini -docs/tutorials/wiki/src/models/setup.cfg -docs/tutorials/wiki/src/models/setup.py -docs/tutorials/wiki/src/models/tutorial/__init__.py -docs/tutorials/wiki/src/models/tutorial/models.py -docs/tutorials/wiki/src/models/tutorial/static/favicon.ico -docs/tutorials/wiki/src/models/tutorial/static/footerbg.png -docs/tutorials/wiki/src/models/tutorial/static/headerbg.png -docs/tutorials/wiki/src/models/tutorial/static/ie6.css -docs/tutorials/wiki/src/models/tutorial/static/middlebg.png -docs/tutorials/wiki/src/models/tutorial/static/pylons.css -docs/tutorials/wiki/src/models/tutorial/static/pyramid-small.png -docs/tutorials/wiki/src/models/tutorial/static/pyramid.png -docs/tutorials/wiki/src/models/tutorial/static/transparent.gif -docs/tutorials/wiki/src/models/tutorial/templates/mytemplate.pt -docs/tutorials/wiki/src/models/tutorial/tests.py -docs/tutorials/wiki/src/models/tutorial/views.py -docs/tutorials/wiki/src/tests/CHANGES.txt -docs/tutorials/wiki/src/tests/MANIFEST.in -docs/tutorials/wiki/src/tests/README.txt -docs/tutorials/wiki/src/tests/development.ini -docs/tutorials/wiki/src/tests/production.ini -docs/tutorials/wiki/src/tests/setup.cfg -docs/tutorials/wiki/src/tests/setup.py -docs/tutorials/wiki/src/tests/tutorial/__init__.py -docs/tutorials/wiki/src/tests/tutorial/models.py -docs/tutorials/wiki/src/tests/tutorial/security.py -docs/tutorials/wiki/src/tests/tutorial/static/favicon.ico -docs/tutorials/wiki/src/tests/tutorial/static/footerbg.png -docs/tutorials/wiki/src/tests/tutorial/static/headerbg.png -docs/tutorials/wiki/src/tests/tutorial/static/ie6.css -docs/tutorials/wiki/src/tests/tutorial/static/middlebg.png -docs/tutorials/wiki/src/tests/tutorial/static/pylons.css -docs/tutorials/wiki/src/tests/tutorial/static/pyramid-small.png -docs/tutorials/wiki/src/tests/tutorial/static/pyramid.png -docs/tutorials/wiki/src/tests/tutorial/static/transparent.gif -docs/tutorials/wiki/src/tests/tutorial/templates/edit.pt -docs/tutorials/wiki/src/tests/tutorial/templates/login.pt -docs/tutorials/wiki/src/tests/tutorial/templates/mytemplate.pt -docs/tutorials/wiki/src/tests/tutorial/templates/view.pt -docs/tutorials/wiki/src/tests/tutorial/tests.py -docs/tutorials/wiki/src/tests/tutorial/views.py -docs/tutorials/wiki/src/views/CHANGES.txt -docs/tutorials/wiki/src/views/MANIFEST.in -docs/tutorials/wiki/src/views/README.txt -docs/tutorials/wiki/src/views/development.ini -docs/tutorials/wiki/src/views/production.ini -docs/tutorials/wiki/src/views/setup.cfg -docs/tutorials/wiki/src/views/setup.py -docs/tutorials/wiki/src/views/tutorial/__init__.py -docs/tutorials/wiki/src/views/tutorial/models.py -docs/tutorials/wiki/src/views/tutorial/static/favicon.ico -docs/tutorials/wiki/src/views/tutorial/static/footerbg.png -docs/tutorials/wiki/src/views/tutorial/static/headerbg.png -docs/tutorials/wiki/src/views/tutorial/static/ie6.css -docs/tutorials/wiki/src/views/tutorial/static/middlebg.png -docs/tutorials/wiki/src/views/tutorial/static/pylons.css -docs/tutorials/wiki/src/views/tutorial/static/pyramid-small.png -docs/tutorials/wiki/src/views/tutorial/static/pyramid.png -docs/tutorials/wiki/src/views/tutorial/static/transparent.gif -docs/tutorials/wiki/src/views/tutorial/templates/edit.pt -docs/tutorials/wiki/src/views/tutorial/templates/mytemplate.pt -docs/tutorials/wiki/src/views/tutorial/templates/view.pt -docs/tutorials/wiki/src/views/tutorial/tests.py -docs/tutorials/wiki/src/views/tutorial/views.py -docs/tutorials/wiki/tests.rst -docs/tutorials/wiki2/authorization.rst -docs/tutorials/wiki2/background.rst -docs/tutorials/wiki2/basiclayout.rst -docs/tutorials/wiki2/definingmodels.rst -docs/tutorials/wiki2/definingviews.rst -docs/tutorials/wiki2/design.rst -docs/tutorials/wiki2/distributing.rst -docs/tutorials/wiki2/index.rst -docs/tutorials/wiki2/installation.rst -docs/tutorials/wiki2/src/authorization/CHANGES.txt -docs/tutorials/wiki2/src/authorization/MANIFEST.in -docs/tutorials/wiki2/src/authorization/README.txt -docs/tutorials/wiki2/src/authorization/development.ini -docs/tutorials/wiki2/src/authorization/production.ini -docs/tutorials/wiki2/src/authorization/setup.cfg -docs/tutorials/wiki2/src/authorization/setup.py -docs/tutorials/wiki2/src/authorization/tutorial/__init__.py -docs/tutorials/wiki2/src/authorization/tutorial/models.py -docs/tutorials/wiki2/src/authorization/tutorial/scripts/__init__.py -docs/tutorials/wiki2/src/authorization/tutorial/scripts/initializedb.py -docs/tutorials/wiki2/src/authorization/tutorial/security.py -docs/tutorials/wiki2/src/authorization/tutorial/static/favicon.ico -docs/tutorials/wiki2/src/authorization/tutorial/static/footerbg.png -docs/tutorials/wiki2/src/authorization/tutorial/static/headerbg.png -docs/tutorials/wiki2/src/authorization/tutorial/static/ie6.css -docs/tutorials/wiki2/src/authorization/tutorial/static/middlebg.png -docs/tutorials/wiki2/src/authorization/tutorial/static/pylons.css -docs/tutorials/wiki2/src/authorization/tutorial/static/pyramid-small.png -docs/tutorials/wiki2/src/authorization/tutorial/static/pyramid.png -docs/tutorials/wiki2/src/authorization/tutorial/static/transparent.gif -docs/tutorials/wiki2/src/authorization/tutorial/templates/edit.pt -docs/tutorials/wiki2/src/authorization/tutorial/templates/login.pt -docs/tutorials/wiki2/src/authorization/tutorial/templates/mytemplate.pt -docs/tutorials/wiki2/src/authorization/tutorial/templates/view.pt -docs/tutorials/wiki2/src/authorization/tutorial/tests.py -docs/tutorials/wiki2/src/authorization/tutorial/views.py -docs/tutorials/wiki2/src/basiclayout/CHANGES.txt -docs/tutorials/wiki2/src/basiclayout/MANIFEST.in -docs/tutorials/wiki2/src/basiclayout/README.txt -docs/tutorials/wiki2/src/basiclayout/development.ini -docs/tutorials/wiki2/src/basiclayout/production.ini -docs/tutorials/wiki2/src/basiclayout/setup.cfg -docs/tutorials/wiki2/src/basiclayout/setup.py -docs/tutorials/wiki2/src/basiclayout/tutorial/__init__.py -docs/tutorials/wiki2/src/basiclayout/tutorial/models.py -docs/tutorials/wiki2/src/basiclayout/tutorial/scripts/__init__.py -docs/tutorials/wiki2/src/basiclayout/tutorial/scripts/initializedb.py -docs/tutorials/wiki2/src/basiclayout/tutorial/static/favicon.ico -docs/tutorials/wiki2/src/basiclayout/tutorial/static/footerbg.png -docs/tutorials/wiki2/src/basiclayout/tutorial/static/headerbg.png -docs/tutorials/wiki2/src/basiclayout/tutorial/static/ie6.css -docs/tutorials/wiki2/src/basiclayout/tutorial/static/middlebg.png -docs/tutorials/wiki2/src/basiclayout/tutorial/static/pylons.css -docs/tutorials/wiki2/src/basiclayout/tutorial/static/pyramid-small.png -docs/tutorials/wiki2/src/basiclayout/tutorial/static/pyramid.png -docs/tutorials/wiki2/src/basiclayout/tutorial/static/transparent.gif -docs/tutorials/wiki2/src/basiclayout/tutorial/templates/mytemplate.pt -docs/tutorials/wiki2/src/basiclayout/tutorial/tests.py -docs/tutorials/wiki2/src/basiclayout/tutorial/views.py -docs/tutorials/wiki2/src/models/CHANGES.txt -docs/tutorials/wiki2/src/models/MANIFEST.in -docs/tutorials/wiki2/src/models/README.txt -docs/tutorials/wiki2/src/models/development.ini -docs/tutorials/wiki2/src/models/production.ini -docs/tutorials/wiki2/src/models/setup.cfg -docs/tutorials/wiki2/src/models/setup.py -docs/tutorials/wiki2/src/models/tutorial/__init__.py -docs/tutorials/wiki2/src/models/tutorial/models.py -docs/tutorials/wiki2/src/models/tutorial/scripts/__init__.py -docs/tutorials/wiki2/src/models/tutorial/scripts/initializedb.py -docs/tutorials/wiki2/src/models/tutorial/static/favicon.ico -docs/tutorials/wiki2/src/models/tutorial/static/footerbg.png -docs/tutorials/wiki2/src/models/tutorial/static/headerbg.png -docs/tutorials/wiki2/src/models/tutorial/static/ie6.css -docs/tutorials/wiki2/src/models/tutorial/static/middlebg.png -docs/tutorials/wiki2/src/models/tutorial/static/pylons.css -docs/tutorials/wiki2/src/models/tutorial/static/pyramid-small.png -docs/tutorials/wiki2/src/models/tutorial/static/pyramid.png -docs/tutorials/wiki2/src/models/tutorial/static/transparent.gif -docs/tutorials/wiki2/src/models/tutorial/templates/mytemplate.pt -docs/tutorials/wiki2/src/models/tutorial/tests.py -docs/tutorials/wiki2/src/models/tutorial/views.py -docs/tutorials/wiki2/src/tests/CHANGES.txt -docs/tutorials/wiki2/src/tests/MANIFEST.in -docs/tutorials/wiki2/src/tests/README.txt -docs/tutorials/wiki2/src/tests/development.ini -docs/tutorials/wiki2/src/tests/production.ini -docs/tutorials/wiki2/src/tests/setup.cfg -docs/tutorials/wiki2/src/tests/setup.py -docs/tutorials/wiki2/src/tests/tutorial/__init__.py -docs/tutorials/wiki2/src/tests/tutorial/models.py -docs/tutorials/wiki2/src/tests/tutorial/scripts/__init__.py -docs/tutorials/wiki2/src/tests/tutorial/scripts/initializedb.py -docs/tutorials/wiki2/src/tests/tutorial/security.py -docs/tutorials/wiki2/src/tests/tutorial/static/favicon.ico -docs/tutorials/wiki2/src/tests/tutorial/static/footerbg.png -docs/tutorials/wiki2/src/tests/tutorial/static/headerbg.png -docs/tutorials/wiki2/src/tests/tutorial/static/ie6.css -docs/tutorials/wiki2/src/tests/tutorial/static/middlebg.png -docs/tutorials/wiki2/src/tests/tutorial/static/pylons.css -docs/tutorials/wiki2/src/tests/tutorial/static/pyramid-small.png -docs/tutorials/wiki2/src/tests/tutorial/static/pyramid.png -docs/tutorials/wiki2/src/tests/tutorial/static/transparent.gif -docs/tutorials/wiki2/src/tests/tutorial/templates/edit.pt -docs/tutorials/wiki2/src/tests/tutorial/templates/login.pt -docs/tutorials/wiki2/src/tests/tutorial/templates/mytemplate.pt -docs/tutorials/wiki2/src/tests/tutorial/templates/view.pt -docs/tutorials/wiki2/src/tests/tutorial/tests.py -docs/tutorials/wiki2/src/tests/tutorial/views.py -docs/tutorials/wiki2/src/views/CHANGES.txt -docs/tutorials/wiki2/src/views/MANIFEST.in -docs/tutorials/wiki2/src/views/README.txt -docs/tutorials/wiki2/src/views/development.ini -docs/tutorials/wiki2/src/views/production.ini -docs/tutorials/wiki2/src/views/setup.cfg -docs/tutorials/wiki2/src/views/setup.py -docs/tutorials/wiki2/src/views/tutorial/__init__.py -docs/tutorials/wiki2/src/views/tutorial/models.py -docs/tutorials/wiki2/src/views/tutorial/scripts/__init__.py -docs/tutorials/wiki2/src/views/tutorial/scripts/initializedb.py -docs/tutorials/wiki2/src/views/tutorial/static/favicon.ico -docs/tutorials/wiki2/src/views/tutorial/static/footerbg.png -docs/tutorials/wiki2/src/views/tutorial/static/headerbg.png -docs/tutorials/wiki2/src/views/tutorial/static/ie6.css -docs/tutorials/wiki2/src/views/tutorial/static/middlebg.png -docs/tutorials/wiki2/src/views/tutorial/static/pylons.css -docs/tutorials/wiki2/src/views/tutorial/static/pyramid-small.png -docs/tutorials/wiki2/src/views/tutorial/static/pyramid.png -docs/tutorials/wiki2/src/views/tutorial/static/transparent.gif -docs/tutorials/wiki2/src/views/tutorial/templates/edit.pt -docs/tutorials/wiki2/src/views/tutorial/templates/mytemplate.pt -docs/tutorials/wiki2/src/views/tutorial/templates/view.pt -docs/tutorials/wiki2/src/views/tutorial/tests.py -docs/tutorials/wiki2/src/views/tutorial/views.py -docs/tutorials/wiki2/tests.rst -docs/whatsnew-1.0.rst -docs/whatsnew-1.1.rst -docs/whatsnew-1.2.rst -docs/whatsnew-1.3.rst -docs/whatsnew-1.4.rst -pyramid/__init__.py -pyramid/asset.py -pyramid/authentication.py -pyramid/authorization.py -pyramid/chameleon_text.py -pyramid/chameleon_zpt.py -pyramid/compat.py -pyramid/config/__init__.py -pyramid/config/adapters.py -pyramid/config/assets.py -pyramid/config/factories.py -pyramid/config/i18n.py -pyramid/config/predicates.py -pyramid/config/rendering.py -pyramid/config/routes.py -pyramid/config/security.py -pyramid/config/settings.py -pyramid/config/testing.py -pyramid/config/tweens.py -pyramid/config/util.py -pyramid/config/views.py -pyramid/config/zca.py -pyramid/decorator.py -pyramid/encode.py -pyramid/events.py -pyramid/exceptions.py -pyramid/fixers/__init__.py -pyramid/fixers/fix_bfg_imports.py -pyramid/httpexceptions.py -pyramid/i18n.py -pyramid/interfaces.py -pyramid/location.py -pyramid/mako_templating.py -pyramid/paster.py -pyramid/path.py -pyramid/registry.py -pyramid/renderers.py -pyramid/request.py -pyramid/resource.py -pyramid/response.py -pyramid/router.py -pyramid/scaffolds/__init__.py -pyramid/scaffolds/alchemy/+package+/__init__.py -pyramid/scaffolds/alchemy/+package+/models.py -pyramid/scaffolds/alchemy/+package+/scripts/__init__.py -pyramid/scaffolds/alchemy/+package+/scripts/initializedb.py -pyramid/scaffolds/alchemy/+package+/static/favicon.ico -pyramid/scaffolds/alchemy/+package+/static/footerbg.png -pyramid/scaffolds/alchemy/+package+/static/headerbg.png -pyramid/scaffolds/alchemy/+package+/static/ie6.css -pyramid/scaffolds/alchemy/+package+/static/middlebg.png -pyramid/scaffolds/alchemy/+package+/static/pylons.css -pyramid/scaffolds/alchemy/+package+/static/pyramid-small.png -pyramid/scaffolds/alchemy/+package+/static/pyramid.png -pyramid/scaffolds/alchemy/+package+/static/transparent.gif -pyramid/scaffolds/alchemy/+package+/templates/mytemplate.pt_tmpl -pyramid/scaffolds/alchemy/+package+/tests.py_tmpl -pyramid/scaffolds/alchemy/+package+/views.py_tmpl -pyramid/scaffolds/alchemy/CHANGES.txt_tmpl -pyramid/scaffolds/alchemy/MANIFEST.in_tmpl -pyramid/scaffolds/alchemy/README.txt_tmpl -pyramid/scaffolds/alchemy/development.ini_tmpl -pyramid/scaffolds/alchemy/production.ini_tmpl -pyramid/scaffolds/alchemy/setup.cfg_tmpl -pyramid/scaffolds/alchemy/setup.py_tmpl -pyramid/scaffolds/copydir.py -pyramid/scaffolds/starter/+package+/__init__.py -pyramid/scaffolds/starter/+package+/static/favicon.ico -pyramid/scaffolds/starter/+package+/static/footerbg.png -pyramid/scaffolds/starter/+package+/static/headerbg.png -pyramid/scaffolds/starter/+package+/static/ie6.css -pyramid/scaffolds/starter/+package+/static/middlebg.png -pyramid/scaffolds/starter/+package+/static/pylons.css -pyramid/scaffolds/starter/+package+/static/pyramid-small.png -pyramid/scaffolds/starter/+package+/static/pyramid.png -pyramid/scaffolds/starter/+package+/static/transparent.gif -pyramid/scaffolds/starter/+package+/templates/mytemplate.pt_tmpl -pyramid/scaffolds/starter/+package+/tests.py_tmpl -pyramid/scaffolds/starter/+package+/views.py_tmpl -pyramid/scaffolds/starter/CHANGES.txt_tmpl -pyramid/scaffolds/starter/MANIFEST.in_tmpl -pyramid/scaffolds/starter/README.txt_tmpl -pyramid/scaffolds/starter/development.ini_tmpl -pyramid/scaffolds/starter/production.ini_tmpl -pyramid/scaffolds/starter/setup.cfg_tmpl -pyramid/scaffolds/starter/setup.py_tmpl -pyramid/scaffolds/template.py -pyramid/scaffolds/tests.py -pyramid/scaffolds/zodb/+package+/__init__.py -pyramid/scaffolds/zodb/+package+/models.py -pyramid/scaffolds/zodb/+package+/static/favicon.ico -pyramid/scaffolds/zodb/+package+/static/footerbg.png -pyramid/scaffolds/zodb/+package+/static/headerbg.png -pyramid/scaffolds/zodb/+package+/static/ie6.css -pyramid/scaffolds/zodb/+package+/static/middlebg.png -pyramid/scaffolds/zodb/+package+/static/pylons.css -pyramid/scaffolds/zodb/+package+/static/pyramid-small.png -pyramid/scaffolds/zodb/+package+/static/pyramid.png -pyramid/scaffolds/zodb/+package+/static/transparent.gif -pyramid/scaffolds/zodb/+package+/templates/mytemplate.pt -pyramid/scaffolds/zodb/+package+/tests.py_tmpl -pyramid/scaffolds/zodb/+package+/views.py_tmpl -pyramid/scaffolds/zodb/CHANGES.txt_tmpl -pyramid/scaffolds/zodb/MANIFEST.in_tmpl -pyramid/scaffolds/zodb/README.txt_tmpl -pyramid/scaffolds/zodb/development.ini_tmpl -pyramid/scaffolds/zodb/production.ini_tmpl -pyramid/scaffolds/zodb/setup.cfg_tmpl -pyramid/scaffolds/zodb/setup.py_tmpl -pyramid/scripting.py -pyramid/scripts/__init__.py -pyramid/scripts/common.py -pyramid/scripts/pcreate.py -pyramid/scripts/prequest.py -pyramid/scripts/proutes.py -pyramid/scripts/pserve.py -pyramid/scripts/pshell.py -pyramid/scripts/ptweens.py -pyramid/scripts/pviews.py -pyramid/security.py -pyramid/session.py -pyramid/settings.py -pyramid/static.py -pyramid/testing.py -pyramid/tests/__init__.py -pyramid/tests/fixtures/components.mak -pyramid/tests/fixtures/dummy.ini -pyramid/tests/fixtures/hello .world.mako -pyramid/tests/fixtures/hello_inherit_pkg.mak -pyramid/tests/fixtures/hellocompo.mak -pyramid/tests/fixtures/helloinherit.mak -pyramid/tests/fixtures/helloworld.mak -pyramid/tests/fixtures/helloworld.mako -pyramid/tests/fixtures/layout.mak -pyramid/tests/fixtures/minimal.pt -pyramid/tests/fixtures/minimal.txt -pyramid/tests/fixtures/nonminimal.mak -pyramid/tests/fixtures/nonminimal.txt -pyramid/tests/fixtures/pp.pt -pyramid/tests/fixtures/static/.hiddenfile -pyramid/tests/fixtures/static/arcs.svg.tgz -pyramid/tests/fixtures/static/index.html -pyramid/tests/fixtures/static/subdir/index.html -pyramid/tests/fixtures/withmacro.pt -pyramid/tests/pkgs/__init__.py -pyramid/tests/pkgs/ccbugapp/__init__.py -pyramid/tests/pkgs/conflictapp/__init__.py -pyramid/tests/pkgs/conflictapp/included.py -pyramid/tests/pkgs/defpermbugapp/__init__.py -pyramid/tests/pkgs/eventonly/__init__.py -pyramid/tests/pkgs/exceptionviewapp/__init__.py -pyramid/tests/pkgs/exceptionviewapp/models.py -pyramid/tests/pkgs/exceptionviewapp/views.py -pyramid/tests/pkgs/fixtureapp/__init__.py -pyramid/tests/pkgs/fixtureapp/models.py -pyramid/tests/pkgs/fixtureapp/subpackage/__init__.py -pyramid/tests/pkgs/fixtureapp/subpackage/templates/bar.pt -pyramid/tests/pkgs/fixtureapp/templates/fixture.pt -pyramid/tests/pkgs/fixtureapp/views.py -pyramid/tests/pkgs/forbiddenapp/__init__.py -pyramid/tests/pkgs/forbiddenview/__init__.py -pyramid/tests/pkgs/hybridapp/__init__.py -pyramid/tests/pkgs/hybridapp/views.py -pyramid/tests/pkgs/includeapp1/__init__.py -pyramid/tests/pkgs/includeapp1/root.py -pyramid/tests/pkgs/includeapp1/three.py -pyramid/tests/pkgs/includeapp1/two.py -pyramid/tests/pkgs/localeapp/__init__.py -pyramid/tests/pkgs/localeapp/locale/GARBAGE -pyramid/tests/pkgs/localeapp/locale/be/LC_MESSAGES -pyramid/tests/pkgs/localeapp/locale/de/LC_MESSAGES/deformsite.mo -pyramid/tests/pkgs/localeapp/locale/de/LC_MESSAGES/deformsite.po -pyramid/tests/pkgs/localeapp/locale/de_DE/LC_MESSAGES/deformsite.mo -pyramid/tests/pkgs/localeapp/locale/de_DE/LC_MESSAGES/deformsite.po -pyramid/tests/pkgs/localeapp/locale/en/LC_MESSAGES/deformsite.mo -pyramid/tests/pkgs/localeapp/locale/en/LC_MESSAGES/deformsite.po -pyramid/tests/pkgs/localeapp/locale2/GARBAGE -pyramid/tests/pkgs/localeapp/locale2/be/LC_MESSAGES -pyramid/tests/pkgs/localeapp/locale2/de/LC_MESSAGES/deformsite.mo -pyramid/tests/pkgs/localeapp/locale2/de/LC_MESSAGES/deformsite.po -pyramid/tests/pkgs/localeapp/locale2/en/LC_MESSAGES/deformsite.mo -pyramid/tests/pkgs/localeapp/locale2/en/LC_MESSAGES/deformsite.po -pyramid/tests/pkgs/localeapp/locale3/GARBAGE -pyramid/tests/pkgs/localeapp/locale3/be/LC_MESSAGES -pyramid/tests/pkgs/localeapp/locale3/de/LC_MESSAGES/deformsite.mo -pyramid/tests/pkgs/localeapp/locale3/de/LC_MESSAGES/deformsite.po -pyramid/tests/pkgs/localeapp/locale3/en/LC_MESSAGES/deformsite.mo -pyramid/tests/pkgs/localeapp/locale3/en/LC_MESSAGES/deformsite.po -pyramid/tests/pkgs/notfoundview/__init__.py -pyramid/tests/pkgs/permbugapp/__init__.py -pyramid/tests/pkgs/rendererscanapp/__init__.py -pyramid/tests/pkgs/rendererscanapp/one.pt -pyramid/tests/pkgs/rendererscanapp/two/__init__.py -pyramid/tests/pkgs/rendererscanapp/two/two.pt -pyramid/tests/pkgs/restbugapp/__init__.py -pyramid/tests/pkgs/restbugapp/views.py -pyramid/tests/pkgs/static_abspath/__init__.py -pyramid/tests/pkgs/static_assetspec/__init__.py -pyramid/tests/pkgs/static_routeprefix/__init__.py -pyramid/tests/pkgs/staticpermapp/__init__.py -pyramid/tests/pkgs/subrequestapp/__init__.py -pyramid/tests/pkgs/viewdecoratorapp/__init__.py -pyramid/tests/pkgs/viewdecoratorapp/views/__init__.py -pyramid/tests/pkgs/viewdecoratorapp/views/templates/foo.pt -pyramid/tests/pkgs/viewdecoratorapp/views/views.py -pyramid/tests/pkgs/wsgiapp2app/__init__.py -pyramid/tests/test_asset.py -pyramid/tests/test_authentication.py -pyramid/tests/test_authorization.py -pyramid/tests/test_chameleon_text.py -pyramid/tests/test_chameleon_zpt.py -pyramid/tests/test_config/__init__.py -pyramid/tests/test_config/files/assets/dummy.txt -pyramid/tests/test_config/files/minimal.pt -pyramid/tests/test_config/path/scanerror/__init__.py -pyramid/tests/test_config/path/scanerror/will_raise_error.py -pyramid/tests/test_config/pkgs/__init__.py -pyramid/tests/test_config/pkgs/asset/__init__.py -pyramid/tests/test_config/pkgs/asset/models.py -pyramid/tests/test_config/pkgs/asset/subpackage/__init__.py -pyramid/tests/test_config/pkgs/asset/subpackage/templates/bar.pt -pyramid/tests/test_config/pkgs/asset/templates/fixture.pt -pyramid/tests/test_config/pkgs/asset/views.py -pyramid/tests/test_config/pkgs/scanextrakw/__init__.py -pyramid/tests/test_config/pkgs/scannable/__init__.py -pyramid/tests/test_config/pkgs/scannable/another.py -pyramid/tests/test_config/pkgs/scannable/pod/notinit.py -pyramid/tests/test_config/pkgs/scannable/subpackage/__init__.py -pyramid/tests/test_config/pkgs/scannable/subpackage/notinit.py -pyramid/tests/test_config/pkgs/scannable/subpackage/subsubpackage/__init__.py -pyramid/tests/test_config/pkgs/selfscan/__init__.py -pyramid/tests/test_config/pkgs/selfscan/another.py -pyramid/tests/test_config/test_adapters.py -pyramid/tests/test_config/test_assets.py -pyramid/tests/test_config/test_factories.py -pyramid/tests/test_config/test_i18n.py -pyramid/tests/test_config/test_init.py -pyramid/tests/test_config/test_predicates.py -pyramid/tests/test_config/test_rendering.py -pyramid/tests/test_config/test_routes.py -pyramid/tests/test_config/test_security.py -pyramid/tests/test_config/test_settings.py -pyramid/tests/test_config/test_testing.py -pyramid/tests/test_config/test_tweens.py -pyramid/tests/test_config/test_util.py -pyramid/tests/test_config/test_views.py -pyramid/tests/test_decorator.py -pyramid/tests/test_docs.py -pyramid/tests/test_encode.py -pyramid/tests/test_events.py -pyramid/tests/test_exceptions.py -pyramid/tests/test_httpexceptions.py -pyramid/tests/test_i18n.py -pyramid/tests/test_integration.py -pyramid/tests/test_location.py -pyramid/tests/test_mako_templating.py -pyramid/tests/test_paster.py -pyramid/tests/test_path.py -pyramid/tests/test_registry.py -pyramid/tests/test_renderers.py -pyramid/tests/test_request.py -pyramid/tests/test_response.py -pyramid/tests/test_router.py -pyramid/tests/test_scaffolds/__init__.py -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/.badfile -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/__init__.py_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/resources.py -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/favicon.ico -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/ie6.css -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/middlebg.png -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pylons.css -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid-small.png -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/templates/mytemplate.pt_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/test_no_content.py_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/tests.py_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/+package+/views.py_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/CHANGES.txt_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/MANIFEST.in_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/README.txt_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/development.ini_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/production.ini_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/setup.cfg_tmpl -pyramid/tests/test_scaffolds/fixture_scaffold/setup.py_tmpl -pyramid/tests/test_scaffolds/test_copydir.py -pyramid/tests/test_scaffolds/test_init.py -pyramid/tests/test_scaffolds/test_template.py -pyramid/tests/test_scripting.py -pyramid/tests/test_scripts/__init__.py -pyramid/tests/test_scripts/dummy.py -pyramid/tests/test_scripts/test_common.py -pyramid/tests/test_scripts/test_pcreate.py -pyramid/tests/test_scripts/test_prequest.py -pyramid/tests/test_scripts/test_proutes.py -pyramid/tests/test_scripts/test_pserve.py -pyramid/tests/test_scripts/test_pshell.py -pyramid/tests/test_scripts/test_ptweens.py -pyramid/tests/test_scripts/test_pviews.py -pyramid/tests/test_security.py -pyramid/tests/test_session.py -pyramid/tests/test_settings.py -pyramid/tests/test_static.py -pyramid/tests/test_testing.py -pyramid/tests/test_threadlocal.py -pyramid/tests/test_traversal.py -pyramid/tests/test_url.py -pyramid/tests/test_urldispatch.py -pyramid/tests/test_util.py -pyramid/tests/test_view.py -pyramid/tests/test_wsgi.py -pyramid/threadlocal.py -pyramid/traversal.py -pyramid/tweens.py -pyramid/url.py -pyramid/urldispatch.py -pyramid/util.py -pyramid/view.py -pyramid/wsgi.py -rtd.txt -setup.cfg -setup.py -tox.ini -- cgit v1.2.3 From d3ee791327d09411f6fb98a769904961070fba1a Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Thu, 11 Jul 2013 21:04:43 -0400 Subject: Coverage for new '--login' option. --- pyramid/tests/test_scripts/test_prequest.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pyramid/tests/test_scripts/test_prequest.py b/pyramid/tests/test_scripts/test_prequest.py index 64a7c3045..7630d8f3c 100644 --- a/pyramid/tests/test_scripts/test_prequest.py +++ b/pyramid/tests/test_scripts/test_prequest.py @@ -68,6 +68,19 @@ class TestPRequestCommand(unittest.TestCase): self.assertEqual(self._app_name, None) self.assertEqual(self._out, ['abc']) + def test_command_w_basic_auth(self): + command = self._makeOne( + ['', '--login=user:password', + '--header=name:value','development.ini', '/']) + command.run() + self.assertEqual(self._environ['HTTP_NAME'], 'value') + self.assertEqual(self._environ['HTTP_AUTHORIZATION'], + 'Basic dXNlcjpwYXNzd29yZA==') + self.assertEqual(self._path_info, '/') + self.assertEqual(self._spec, 'development.ini') + self.assertEqual(self._app_name, None) + self.assertEqual(self._out, ['abc']) + def test_command_has_content_type_header_var(self): command = self._makeOne( ['', '--header=content-type:app/foo','development.ini', '/']) -- cgit v1.2.3 From acc5ecb5423ef0b33ab45e6e378428f2188c2148 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Thu, 11 Jul 2013 21:08:19 -0400 Subject: Coverage for new OPTIONS and PROPFIND methods. --- pyramid/tests/test_scripts/test_prequest.py | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pyramid/tests/test_scripts/test_prequest.py b/pyramid/tests/test_scripts/test_prequest.py index 7630d8f3c..37f1d3c0f 100644 --- a/pyramid/tests/test_scripts/test_prequest.py +++ b/pyramid/tests/test_scripts/test_prequest.py @@ -109,6 +109,7 @@ class TestPRequestCommand(unittest.TestCase): def test_command_method_get(self): command = self._makeOne(['', '--method=GET', 'development.ini', '/']) command.run() + self.assertEqual(self._environ['REQUEST_METHOD'], 'GET') self.assertEqual(self._path_info, '/') self.assertEqual(self._spec, 'development.ini') self.assertEqual(self._app_name, None) @@ -120,6 +121,7 @@ class TestPRequestCommand(unittest.TestCase): stdin = NativeIO() command.stdin = stdin command.run() + self.assertEqual(self._environ['REQUEST_METHOD'], 'POST') self.assertEqual(self._environ['CONTENT_LENGTH'], '-1') self.assertEqual(self._environ['wsgi.input'], stdin) self.assertEqual(self._path_info, '/') @@ -133,6 +135,7 @@ class TestPRequestCommand(unittest.TestCase): stdin = NativeIO() command.stdin = stdin command.run() + self.assertEqual(self._environ['REQUEST_METHOD'], 'PUT') self.assertEqual(self._environ['CONTENT_LENGTH'], '-1') self.assertEqual(self._environ['wsgi.input'], stdin) self.assertEqual(self._path_info, '/') @@ -146,6 +149,7 @@ class TestPRequestCommand(unittest.TestCase): stdin = NativeIO() command.stdin = stdin command.run() + self.assertEqual(self._environ['REQUEST_METHOD'], 'PATCH') self.assertEqual(self._environ['CONTENT_LENGTH'], '-1') self.assertEqual(self._environ['wsgi.input'], stdin) self.assertEqual(self._path_info, '/') @@ -153,6 +157,32 @@ class TestPRequestCommand(unittest.TestCase): self.assertEqual(self._app_name, None) self.assertEqual(self._out, ['abc']) + def test_command_method_propfind(self): + from pyramid.compat import NativeIO + command = self._makeOne(['', '--method=PROPFIND', 'development.ini', + '/']) + stdin = NativeIO() + command.stdin = stdin + command.run() + self.assertEqual(self._environ['REQUEST_METHOD'], 'PROPFIND') + self.assertEqual(self._path_info, '/') + self.assertEqual(self._spec, 'development.ini') + self.assertEqual(self._app_name, None) + self.assertEqual(self._out, ['abc']) + + def test_command_method_options(self): + from pyramid.compat import NativeIO + command = self._makeOne(['', '--method=OPTIONS', 'development.ini', + '/']) + stdin = NativeIO() + command.stdin = stdin + command.run() + self.assertEqual(self._environ['REQUEST_METHOD'], 'OPTIONS') + self.assertEqual(self._path_info, '/') + self.assertEqual(self._spec, 'development.ini') + self.assertEqual(self._app_name, None) + self.assertEqual(self._out, ['abc']) + def test_command_with_query_string(self): command = self._makeOne(['', 'development.ini', '/abc?a=1&b=2&c']) command.run() -- cgit v1.2.3 From a1786313496754fcc3db48ef66bc764b846452cb Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Fri, 12 Jul 2013 10:33:26 -0600 Subject: add an entry to changes about code merged from feature.prequest_login branch --- CHANGES.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index ba8aae559..0156b24fd 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -4,8 +4,11 @@ next release Features -------- -- ``scripts/prequest.py``: add support for submitting ``PUT`` and ``PATCH`` - requests. See https://github.com/Pylons/pyramid/pull/1033. +- ``scripts/prequest.py``: add support for submitting ``PUT`` and ``PATCH`` + requests. See https://github.com/Pylons/pyramid/pull/1033. add support for + submitting ``OPTIONS`` and ``PROPFIND`` requests, and allow users to specify + basic authentication credentials in the request via a ``--login`` argument to + the script. See https://github.com/Pylons/pyramid/pull/1039. - ``ACLAuthorizationPolicy`` supports ``__acl__`` as a callable. This removes the ambiguity between the potential ``AttributeError`` that would -- cgit v1.2.3 From 2d045be54b8671a062b886c613b3f4e3e88ff7c9 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Fri, 12 Jul 2013 21:05:46 -0600 Subject: Make abstraction consistent. --- HACKING.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HACKING.txt b/HACKING.txt index 26e85ee80..5b5dcc458 100644 --- a/HACKING.txt +++ b/HACKING.txt @@ -126,7 +126,7 @@ documentation in this package which references that API or behavior must change to reflect the bug fix, ideally in the same commit that fixes the bug or adds the feature. -To build and review docs (where ``$yourvenv`` refers to the virtualenv you're +To build and review docs (where ``$VENV`` refers to the virtualenv you're using to develop Pyramid): 1. Run ``$VENV/bin/python setup.py dev docs``. This will cause Sphinx -- cgit v1.2.3 From 0baa6c4270d5bcfc710434834de83a388d1c0466 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Sat, 13 Jul 2013 16:11:24 -0600 Subject: New tutorial: Using PyCharm with Pyramid --- docs/index.rst | 1 + docs/tutorials/pycharm/images/create_new_project.png | Bin 0 -> 118472 bytes docs/tutorials/pycharm/images/create_setup.png | Bin 0 -> 123209 bytes .../pycharm/images/create_virtual_environment.png | Bin 0 -> 42991 bytes .../pycharm/images/edit_run_debug_configurations.png | Bin 0 -> 106932 bytes docs/tutorials/pycharm/images/install_package.png | Bin 0 -> 69633 bytes .../pycharm/images/install_package_pyramid.png | Bin 0 -> 125125 bytes .../pycharm/images/install_package_setuptools.png | Bin 0 -> 107886 bytes .../tutorials/pycharm/images/python_interpreters_1.png | Bin 0 -> 130060 bytes .../tutorials/pycharm/images/python_interpreters_2.png | Bin 0 -> 130852 bytes docs/tutorials/pycharm/images/run_configuration.png | Bin 0 -> 57129 bytes docs/tutorials/pycharm/images/start_up_screen.png | Bin 0 -> 70500 bytes 12 files changed, 1 insertion(+) create mode 100644 docs/tutorials/pycharm/images/create_new_project.png create mode 100644 docs/tutorials/pycharm/images/create_setup.png create mode 100644 docs/tutorials/pycharm/images/create_virtual_environment.png create mode 100644 docs/tutorials/pycharm/images/edit_run_debug_configurations.png create mode 100644 docs/tutorials/pycharm/images/install_package.png create mode 100644 docs/tutorials/pycharm/images/install_package_pyramid.png create mode 100644 docs/tutorials/pycharm/images/install_package_setuptools.png create mode 100644 docs/tutorials/pycharm/images/python_interpreters_1.png create mode 100644 docs/tutorials/pycharm/images/python_interpreters_2.png create mode 100644 docs/tutorials/pycharm/images/run_configuration.png create mode 100644 docs/tutorials/pycharm/images/start_up_screen.png diff --git a/docs/index.rst b/docs/index.rst index bc711f8ff..93b550d60 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -108,6 +108,7 @@ platforms. tutorials/wiki/index.rst tutorials/bfg/index.rst tutorials/modwsgi/index.rst + tutorials/pycharm/index.rst API Documentation ================== diff --git a/docs/tutorials/pycharm/images/create_new_project.png b/docs/tutorials/pycharm/images/create_new_project.png new file mode 100644 index 000000000..f15068b65 Binary files /dev/null and b/docs/tutorials/pycharm/images/create_new_project.png differ diff --git a/docs/tutorials/pycharm/images/create_setup.png b/docs/tutorials/pycharm/images/create_setup.png new file mode 100644 index 000000000..de4cb364b Binary files /dev/null and b/docs/tutorials/pycharm/images/create_setup.png differ diff --git a/docs/tutorials/pycharm/images/create_virtual_environment.png b/docs/tutorials/pycharm/images/create_virtual_environment.png new file mode 100644 index 000000000..0bd3c9263 Binary files /dev/null and b/docs/tutorials/pycharm/images/create_virtual_environment.png differ diff --git a/docs/tutorials/pycharm/images/edit_run_debug_configurations.png b/docs/tutorials/pycharm/images/edit_run_debug_configurations.png new file mode 100644 index 000000000..7708fa9dc Binary files /dev/null and b/docs/tutorials/pycharm/images/edit_run_debug_configurations.png differ diff --git a/docs/tutorials/pycharm/images/install_package.png b/docs/tutorials/pycharm/images/install_package.png new file mode 100644 index 000000000..944a05f6a Binary files /dev/null and b/docs/tutorials/pycharm/images/install_package.png differ diff --git a/docs/tutorials/pycharm/images/install_package_pyramid.png b/docs/tutorials/pycharm/images/install_package_pyramid.png new file mode 100644 index 000000000..05a209b6c Binary files /dev/null and b/docs/tutorials/pycharm/images/install_package_pyramid.png differ diff --git a/docs/tutorials/pycharm/images/install_package_setuptools.png b/docs/tutorials/pycharm/images/install_package_setuptools.png new file mode 100644 index 000000000..8932a3f40 Binary files /dev/null and b/docs/tutorials/pycharm/images/install_package_setuptools.png differ diff --git a/docs/tutorials/pycharm/images/python_interpreters_1.png b/docs/tutorials/pycharm/images/python_interpreters_1.png new file mode 100644 index 000000000..6b1455001 Binary files /dev/null and b/docs/tutorials/pycharm/images/python_interpreters_1.png differ diff --git a/docs/tutorials/pycharm/images/python_interpreters_2.png b/docs/tutorials/pycharm/images/python_interpreters_2.png new file mode 100644 index 000000000..61c3de2b1 Binary files /dev/null and b/docs/tutorials/pycharm/images/python_interpreters_2.png differ diff --git a/docs/tutorials/pycharm/images/run_configuration.png b/docs/tutorials/pycharm/images/run_configuration.png new file mode 100644 index 000000000..4612b2b3c Binary files /dev/null and b/docs/tutorials/pycharm/images/run_configuration.png differ diff --git a/docs/tutorials/pycharm/images/start_up_screen.png b/docs/tutorials/pycharm/images/start_up_screen.png new file mode 100644 index 000000000..c65e01eeb Binary files /dev/null and b/docs/tutorials/pycharm/images/start_up_screen.png differ -- cgit v1.2.3 From 904981635bcaa54b9cd94538ac5c3db07cfe3ee7 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Sat, 13 Jul 2013 16:11:24 -0600 Subject: New tutorial: Using PyCharm with Pyramid --- docs/index.rst | 1 + .../pycharm/images/create_new_project.png | Bin 0 -> 118472 bytes docs/tutorials/pycharm/images/create_setup.png | Bin 0 -> 123209 bytes .../pycharm/images/create_virtual_environment.png | Bin 0 -> 42991 bytes .../images/edit_run_debug_configurations.png | Bin 0 -> 106932 bytes docs/tutorials/pycharm/images/install_package.png | Bin 0 -> 69633 bytes .../pycharm/images/install_package_pyramid.png | Bin 0 -> 125125 bytes .../pycharm/images/install_package_setuptools.png | Bin 0 -> 107886 bytes .../pycharm/images/python_interpreters_1.png | Bin 0 -> 130060 bytes .../pycharm/images/python_interpreters_2.png | Bin 0 -> 130852 bytes .../tutorials/pycharm/images/run_configuration.png | Bin 0 -> 57129 bytes docs/tutorials/pycharm/images/start_up_screen.png | Bin 0 -> 70500 bytes docs/tutorials/pycharm/index.rst | 356 +++++++++++++++++++++ 13 files changed, 357 insertions(+) create mode 100644 docs/tutorials/pycharm/images/create_new_project.png create mode 100644 docs/tutorials/pycharm/images/create_setup.png create mode 100644 docs/tutorials/pycharm/images/create_virtual_environment.png create mode 100644 docs/tutorials/pycharm/images/edit_run_debug_configurations.png create mode 100644 docs/tutorials/pycharm/images/install_package.png create mode 100644 docs/tutorials/pycharm/images/install_package_pyramid.png create mode 100644 docs/tutorials/pycharm/images/install_package_setuptools.png create mode 100644 docs/tutorials/pycharm/images/python_interpreters_1.png create mode 100644 docs/tutorials/pycharm/images/python_interpreters_2.png create mode 100644 docs/tutorials/pycharm/images/run_configuration.png create mode 100644 docs/tutorials/pycharm/images/start_up_screen.png create mode 100644 docs/tutorials/pycharm/index.rst diff --git a/docs/index.rst b/docs/index.rst index bc711f8ff..93b550d60 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -108,6 +108,7 @@ platforms. tutorials/wiki/index.rst tutorials/bfg/index.rst tutorials/modwsgi/index.rst + tutorials/pycharm/index.rst API Documentation ================== diff --git a/docs/tutorials/pycharm/images/create_new_project.png b/docs/tutorials/pycharm/images/create_new_project.png new file mode 100644 index 000000000..f15068b65 Binary files /dev/null and b/docs/tutorials/pycharm/images/create_new_project.png differ diff --git a/docs/tutorials/pycharm/images/create_setup.png b/docs/tutorials/pycharm/images/create_setup.png new file mode 100644 index 000000000..de4cb364b Binary files /dev/null and b/docs/tutorials/pycharm/images/create_setup.png differ diff --git a/docs/tutorials/pycharm/images/create_virtual_environment.png b/docs/tutorials/pycharm/images/create_virtual_environment.png new file mode 100644 index 000000000..0bd3c9263 Binary files /dev/null and b/docs/tutorials/pycharm/images/create_virtual_environment.png differ diff --git a/docs/tutorials/pycharm/images/edit_run_debug_configurations.png b/docs/tutorials/pycharm/images/edit_run_debug_configurations.png new file mode 100644 index 000000000..7708fa9dc Binary files /dev/null and b/docs/tutorials/pycharm/images/edit_run_debug_configurations.png differ diff --git a/docs/tutorials/pycharm/images/install_package.png b/docs/tutorials/pycharm/images/install_package.png new file mode 100644 index 000000000..944a05f6a Binary files /dev/null and b/docs/tutorials/pycharm/images/install_package.png differ diff --git a/docs/tutorials/pycharm/images/install_package_pyramid.png b/docs/tutorials/pycharm/images/install_package_pyramid.png new file mode 100644 index 000000000..05a209b6c Binary files /dev/null and b/docs/tutorials/pycharm/images/install_package_pyramid.png differ diff --git a/docs/tutorials/pycharm/images/install_package_setuptools.png b/docs/tutorials/pycharm/images/install_package_setuptools.png new file mode 100644 index 000000000..8932a3f40 Binary files /dev/null and b/docs/tutorials/pycharm/images/install_package_setuptools.png differ diff --git a/docs/tutorials/pycharm/images/python_interpreters_1.png b/docs/tutorials/pycharm/images/python_interpreters_1.png new file mode 100644 index 000000000..6b1455001 Binary files /dev/null and b/docs/tutorials/pycharm/images/python_interpreters_1.png differ diff --git a/docs/tutorials/pycharm/images/python_interpreters_2.png b/docs/tutorials/pycharm/images/python_interpreters_2.png new file mode 100644 index 000000000..61c3de2b1 Binary files /dev/null and b/docs/tutorials/pycharm/images/python_interpreters_2.png differ diff --git a/docs/tutorials/pycharm/images/run_configuration.png b/docs/tutorials/pycharm/images/run_configuration.png new file mode 100644 index 000000000..4612b2b3c Binary files /dev/null and b/docs/tutorials/pycharm/images/run_configuration.png differ diff --git a/docs/tutorials/pycharm/images/start_up_screen.png b/docs/tutorials/pycharm/images/start_up_screen.png new file mode 100644 index 000000000..c65e01eeb Binary files /dev/null and b/docs/tutorials/pycharm/images/start_up_screen.png differ diff --git a/docs/tutorials/pycharm/index.rst b/docs/tutorials/pycharm/index.rst new file mode 100644 index 000000000..1b7c07f98 --- /dev/null +++ b/docs/tutorials/pycharm/index.rst @@ -0,0 +1,356 @@ +************************** +Using PyCharm with Pyramid +************************** + +This tutorial is a very brief overview of how to use PyCharm with Pyramid. +`PyCharm `_ is an Integrated Development +Environment (IDE) for Python programmers. It has numerous features including +code completion, project management, version control system (git, Subversion, +etc.), debugger, and more. + +This tutorial is a continual evolving document. Both PyCharm and Pyramid are +under active development, and changes to either may necessitate changes to +this document. In addition, there may be errors or omissions in this +document, and corrections and improvements through a pull request are most +welcome. + +To get started with Pyramid in PyCharm, we need to install prerequisite +software. + +* Python +* PyCharm and certain Python packages +* Pyramid and its requirements + +Install Python +============== + +You can download installers for Mac OS X and Windows, or source tarballs for +Linux, Unix, or Mac OS X from `python.org Download +`_. Follow the instructions in the README files. + +Install PyCharm +=============== + +PyCharm is a commercial application that requires a license. Several license +types are available depending on your usage. + +Pyramid is an open source project, and on an annual basis fulfills the terms of +the Open Source License with JetBrains for the use of PyCharm to develop for +Pyramid under the Pylons Project. If you contribute to Pyramid or the Pylons +Project, and would like to use our 1-year license, please contact the license +maintainer `stevepiercy` in the `#pyramid` channel on `irc.freenode.net`. + +Alternatively you can download a 30-day trial of PyCharm or `purchase a license +`_ for development or training +purposes under any other license. + +`Download PyCharm `_ and +follow the installation instructions on that web page. + +Configure PyCharm +================= + +Create a New Project +-------------------- + +Launch the PyCharm application. + +From the Start Up screen, click Create New Project. + +.. image:: images/start_up_screen.png + +If the Start Up screen does not appear, you probably have an existing project +open. Close the existing project and the Start Up screen will appear. + +.. image:: images/create_new_project.png + +In the Create New Project dialog window do the following. + +* Enter a Project name. The Location should automatically populate as you + type. You can change the path as you wish. It is common practice to use the + path `~/projects/` to contain projects. This location shall be referred to + as your "project directory" throughout the rest of this document. +* Project type should be Empty project. +* For Interpreter, click the ellipsis button to create a new virtual + environment. + +A new window appears, "Python Interpreters". + +Create or Select a Python Interpreter +------------------------------------- + +.. image:: images/python_interpreters_1.png + +* Either click the `+` button to add a new Python interpreter for Python + 2.7 (the Python 2.7 installer uses the path + `/Library/Frameworks/Python.framework/Versions/2.7/bin`), or use an existing + Python interpreter for Python 2.7. PyCharm will take a few seconds to add a + new interpreter. + +.. image:: images/python_interpreters_2.png + +Create a Virtual Environment +---------------------------- + +* Click the button with the Python logo and a green "V". A new window appears, + "Create Virtual Environment". + +.. image:: images/create_virtual_environment.png + +* Enter a Virtual Environment name. +* The Location should automatically populate as you type. You can change the + path as you wish. +* The Base interpreter should be already selected, but if not, select + `/Library/Frameworks/Python.framework/Versions/2.7/bin` or other Python 2.7 + interpreter. +* Leave the box unchecked for "Inherit global site packages". +* Click "OK". PyCharm will set up libraries and packages, and return you to + the Python Interpreters window. + +Install setuptools and pyramid Packages +--------------------------------------- + +If you already have setuptools installed, you can skip this step. + +In the Python Interpreters window with the just-created virtual environment +selected in the top pane, in the lower pane select the Packages tab, and click +the Install button. The Available Packages window appears. + +.. image:: images/install_package.png + +In the Available Packages window, in the search bar, enter "setuptools". +Select the plain old "setuptools" package, and click the Install Package button +and wait for the status message to disappear. PyCharm will install the package +and any dependencies. + +.. image:: images/install_package_setuptools.png + +Repeat the previous step, except use "pyramid" for searching and selecting. + +.. image:: images/install_package_pyramid.png + +When PyCharm finishes installing the packages, close the Available Packages +window. + +In the Python Interpreters window, click the OK button. + +In the Create New Project window, click the OK button. + +If PyCharm displays a warning, click the Yes button. PyCharm opens the new +project. + +Clone the Pyramid repository +============================ + +By cloning the Pyramid repository, you can contribute changes to the code or +documentation. We recommend that you fork the Pyramid repository to your own +GitHub account, then clone your forked repository, so that you can commit your +changes to your GitHub repository and submit pull requests to the Pyramid +project. + +In PyCharm, select *VCS > Enable Version Control Integration...*, then select +Git as your VCS and click the OK button. + +See `Cloning a Repository from GitHub +`_ in the PyCharm documentation for more information on using GitHub and git +in PyCharm. + +We will refer to the cloned repository of Pyramid on your computer as your +"local Pyramid repository". + +Install development and documentation requirements +================================================== + +In order to contribute bug fixes, features, and documentation changes to +Pyramid, you must install development and documentation requirements into your +virtual environment. Pyramid uses Sphinx and reStructuredText for +documentation. + +* In PyCharm, select *Run > Edit Configurations...*. The Run/Debug + Configurations window appears. + + .. image:: images/edit_run_debug_configurations.png + +* Click the "+" button, then select Python to add a new Python run + configuration. +* Name the configuration "setup dev". +* Either manually enter the path to the `setup.py` script or click the ellipsis + button to navigate to the `pyramid/setup.py` path and select it. +* For Script parameters enter `dev`. +* Click the "Apply" button to save the run configuration. + +While we're here, let's duplicate this run configuration for installing the +documentation requirements. + +* Click the "Copy Configuration" button. Its icon looks like two dog-eared + pages, with a blue page on top of a grey page. +* Name the configuration "setup docs". +* Leave the path as is. +* For Script parameters enter `docs`. +* Click the "Apply" button to save the run configuration. +* Click the "OK" button to return to the project window. + +In the PyCharm toolbar, you will see a Python icon and your run configurations. + +.. image:: images/run_configuration.png + +First select "setup dev", and click the "run" button (the green triangle). It +may take some time to install the requirements. Second select "setup docs", +and click the "run" button again. + +As of this writing, PyCharm does not yet have a command line interface to a +shell. So there are some things that require you to go into a shell to enter +commands. This next step requires doing just so. + +* In your shell, navigate to your project directory, e.g., `cd + ~/projects/pycharm_pyramid/`. +* Enter the command `source bin/activate` to activate your virtual environment. +* Navigate into your local Pyramid repository, e.g., `cd pyramid`. +* Issue the command `git submodule update --init --recursive`. +* Navigate to the `docs` directory in your local Pyramid repository with the + command `cd docs`. +* Issue the command `make clean html` to generate the HTML documentation from + reStructuredText files. +* The HTML files are in `_build/html`. Open up `index.html` in a web browser + to see the result. +* Whenever you want to edit existing docs and see the effect of your changes, + simply run `make html` from within the `docs` directory. + +Unfortunately, the author was unable to figure out how to generate docs in +PyCharm using either a "Python docs" or "Python" run configuration. If anyone +knows, please submit a pull request. + +You will now be ready to hack in and contribute to Pyramid. + +Template Languages +================== + +To configure the template languages Mako and Jinja, see the PyCharm +documentation `Templates +`_. + +To configure the template language Chameleon, see `Creating and Registering +File Types +`_. Specifically for Chameleon, we want to associate XML to the `*.pt` +extension. + +* Open *PyCharm > Preferences...*, then the File Types dialog box. +* From the Recognized File Types list, select "XML files". +* In the Registered Patterns area, click the "+" button, and the Add Wildcard + window opens. Enter `*.pt` in the Add Wildcard window, and click the OK + button. Click OK again to save the settings. + +Creating a Pyramid Project +========================== + +The information for this section is derived from `Creating a Pyramid Project +`_ +and adapted for use in PyCharm. + +Creating a Pyramid Project Using Scaffolds +------------------------------------------ + +Within PyCharm, you can start a project using a scaffold by doing the +following. + +* Select *Run > Edit Configurations...*. +* Click the "+" button, then select Python to add a new Python run + configuration. +* Name the configuration "pcreate". +* Either manually enter the path to the `pcreate` script or click the ellipsis + button to navigate to the `$VENV/bin/pcreate` path and select it. +* For Script parameters enter `-s starter MyProject`. "starter" is the name of + one of the scaffolds included with Pyramid, but you can use any scaffold. + "MyProject" is the name of your project. +* Select the directory into which you want to place `MyProject`. A common + practice is `~/projects/`. +* Click the OK button to save the run configuration. +* Select *Run > Run 'pcreate'* to run the run configuration. Your project will + be created. +* Select *File > Open directory*, select the directory where you created your + project `MyProject`, and click the Choose button. You will be prompted to + open the project, and you may find it convenient to select "Open in current + window", and check "Add to currently open projects". +* Finally set the Project Interpreter to your virtual environment or verify it + as such. Select *PyCharm > Preferences... > Project Interpreter*, and verify + that the project is using the same virtual environment as the parent project. +* If a yellow bar warns you to install requirements, then click link to do so. + +Installing your Newly Created Project for Development +----------------------------------------------------- + +We will create another run configuration, just like before. + +* In PyCharm, select the `setup.py` script in the `MyProject` folder. This + should populate some fields with the proper values. +* Select *Run > Edit Configurations...*. +* Click the "+" button, then select Python to add a new Python run + configuration. +* Name the configuration "MyProject setup develop". +* Either manually enter the path to the `setup.py` script in the `MyProject` + folder or click the ellipsis button to navigate to the path and select it. +* For Script parameters enter `develop`. +* For Project, select "MyProject". +* For Working directory, enter or select the path to `MyProject`. +* Click the "Apply" button to save the run configuration. +* Finally run the run configuration "MyProject setup develop". Your project + will be installed. + +Running The Tests For Your Application +-------------------------------------- + +We will create yet another run configuration. [If you know of an easier method +while in PyCharm, please submit a pull request.] + +* Select *Run > Edit Configurations...*. +* Select the previous run configuration "MyProject setup develop", and click + the Copy Configuration button. +* Name the configuration "MyProject setup test". +* The path to the `setup.py` script in the `MyProject` folder should already be + entered. +* For Script parameters enter `test -q`. +* For Project "MyProject" should be selected. +* For Working directory, the path to `MyProject` should be selected. +* Click the "Apply" button to save the run configuration. +* Finally run the run configuration "MyProject setup test". Your project will + run its unit tests. + +Running The Project Application +------------------------------- + +When will creation of run configurations end? Not today! + +* Select *Run > Edit Configurations...*. +* Select the previous run configuration "MyProject setup develop", and click + the Copy Configuration button. +* Name the configuration "MyProject pserve". +* Either manually enter the path to the `pserve` script or click the ellipsis + button to navigate to the `$VENV/bin/pserve` path and select it. +* For Script parameters enter `development.ini`. +* For Project "MyProject" should be selected. +* For Working directory, the path to `MyProject` should be selected. +* Click the "Apply" button to save the run configuration. +* Finally run the run configuration "MyProject pserve". Your project will run. + Click the link in the Python console or visit the URL http://0.0.0.0:6543/ in + a web browser. + +You can also reload any changes to your project's `.py` or `.ini` files +automatically by using the Script parameters `development.ini --reload`. + +Debugging +========= + +See the PyCharm documentation `Running and Debugging +`_ for +details on how to debug your Pyramid app in PyCharm. + +First, you cannot simultaneously run and debug your app. Terminate your app if +it is running before you debug it. + +To debug your app, open a file in your app that you want to debug and click on +the gutter (the space between line numbers and the code) to set a breakpoint. +Then select "MyProject pserve" in the PyCharm toolbar, then click the debug +icon (which looks like a green ladybug). Your app will run up to the first +breakpoint. -- cgit v1.2.3 From ffdb7b6892be1952f9ac45091c80aa0500cb6507 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Sat, 13 Jul 2013 18:32:07 -0600 Subject: New tutorial: Using PyCharm with Pyramid --- docs/tutorials/pycharm/index.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/tutorials/pycharm/index.rst b/docs/tutorials/pycharm/index.rst index 1b7c07f98..f2e3b7bcb 100644 --- a/docs/tutorials/pycharm/index.rst +++ b/docs/tutorials/pycharm/index.rst @@ -151,10 +151,9 @@ project. In PyCharm, select *VCS > Enable Version Control Integration...*, then select Git as your VCS and click the OK button. -See `Cloning a Repository from GitHub -`_ in the PyCharm documentation for more information on using GitHub and git -in PyCharm. +See `Cloning a Repository from GitHub `_ +in the PyCharm documentation for more information on using GitHub and git in +PyCharm. We will refer to the cloned repository of Pyramid on your computer as your "local Pyramid repository". -- cgit v1.2.3 From 6b97003b5cfc8e318eb0cb789569d3604b3821f3 Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Sun, 14 Jul 2013 22:22:15 -0500 Subject: update changlog --- CHANGES.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 0156b24fd..2221f9945 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -101,7 +101,8 @@ Bug Fixes predicate mismatch error when trying to use GET or DELETE methods. Now the views are found and no predicate mismatch is raised. - See https://github.com/Pylons/pyramid/pull/786 + See https://github.com/Pylons/pyramid/pull/786 and + https://github.com/Pylons/pyramid/pull/1004 - Spaces and dots may now be in mako renderer template paths. This was broken when support for the new makodef syntax was added in 1.4a1. -- cgit v1.2.3 From 84b9027389615084eaf402f8f2aae2ec7199bd67 Mon Sep 17 00:00:00 2001 From: Laurence Rowe Date: Sun, 14 Jul 2013 21:33:24 -0700 Subject: Avoid re-executing the same view when looking up context base views. This is a tweak of #1004. Really we should be using subscribers here instead of adapters, but zope.interface doesn't yet suppport named subscribers. --- pyramid/router.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pyramid/router.py b/pyramid/router.py index 3d2a2ff3e..1a991648b 100644 --- a/pyramid/router.py +++ b/pyramid/router.py @@ -165,9 +165,13 @@ class Router(object): # look for other views that meet the predicate # criteria for iface in context_iface.__sro__[1:]: + previous_view_callable = view_callable view_callable = adapters.lookup( (IViewClassifier, request.request_iface, iface), IView, name=view_name, default=None) + # intermediate bases may lookup same view_callable + if view_callable is previous_view_callable: + continue if view_callable is not None: try: response = view_callable(context, request) -- cgit v1.2.3 From 75fc4ac60ed4217cfaed4145656b7cefdc05cb04 Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Mon, 15 Jul 2013 21:44:01 -0500 Subject: update changelog --- CHANGES.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 2221f9945..0dff0f047 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -102,7 +102,8 @@ Bug Fixes methods. Now the views are found and no predicate mismatch is raised. See https://github.com/Pylons/pyramid/pull/786 and - https://github.com/Pylons/pyramid/pull/1004 + https://github.com/Pylons/pyramid/pull/1004 and + https://github.com/Pylons/pyramid/pull/1046 - Spaces and dots may now be in mako renderer template paths. This was broken when support for the new makodef syntax was added in 1.4a1. -- cgit v1.2.3