summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt6
-rw-r--r--HACKING.txt2
-rw-r--r--MANIFEST.in726
-rw-r--r--pyramid/scripts/prequest.py40
-rw-r--r--pyramid/tests/test_scripts/test_prequest.py43
-rw-r--r--pyramid/url.py2
6 files changed, 84 insertions, 735 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 2c8c6ee46..0156b24fd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,6 +4,12 @@ next release
Features
--------
+- ``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
be raised on the ``context`` when the property was not defined and the
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
diff --git a/MANIFEST.in b/MANIFEST.in
deleted file mode 100644
index 6ac6051c7..000000000
--- a/MANIFEST.in
+++ /dev/null
@@ -1,726 +0,0 @@
-.gitignore
-.gitmodules
-.travis.yml
-BFG_HISTORY.txt
-CHANGES.txt
-CONTRIBUTORS.txt
-COPYRIGHT.txt
-HACKING.txt
-HISTORY.txt
-LICENSE.txt
-MANIFEST.in
-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 82380b8ca..8628d5a5a 100644
--- a/pyramid/scripts/prequest.py
+++ b/pyramid/scripts/prequest.py
@@ -1,3 +1,4 @@
+import base64
import optparse
import sys
import textwrap
@@ -18,9 +19,22 @@ class PRequestCommand(object):
This command makes an artifical request to a web application that uses a
PasteDeploy (.ini) configuration file for the server and application.
- Use "prequest config.ini /path" to request "/path". Use "prequest
- --method=POST config.ini /path < data" to do a POST with the given
- request body.
+ Use "prequest config.ini /path" to request "/path".
+
+ Use "prequest --method=POST config.ini /path < data" to do a POST with
+ the given request body.
+
+ Use "prequest --method=PUT config.ini /path < data" to do a
+ PUT with the given request body.
+
+ 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 a
+ 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.
@@ -59,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)
@@ -92,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:
@@ -110,9 +136,9 @@ class PRequestCommand(object):
environ = {
'REQUEST_METHOD': request_method,
'SCRIPT_NAME': '', # may be empty if app is at the root
- 'PATH_INFO': path,
+ 'PATH_INFO': path,
'SERVER_NAME': 'localhost', # always mandatory
- 'SERVER_PORT': '80', # always mandatory
+ 'SERVER_PORT': '80', # always mandatory
'SERVER_PROTOCOL': 'HTTP/1.0',
'CONTENT_TYPE': 'text/plain',
'REMOTE_ADDR':'127.0.0.1',
diff --git a/pyramid/tests/test_scripts/test_prequest.py b/pyramid/tests/test_scripts/test_prequest.py
index 64a7c3045..37f1d3c0f 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', '/'])
@@ -96,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)
@@ -107,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, '/')
@@ -120,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, '/')
@@ -133,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, '/')
@@ -140,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()
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