Merge pull request #3331 from stevepiercy/exclude-local-linkcheck
Fix broken links from linkcheck, exclude localhost from check
| | |
| | | epub_tocdepth = 3 |
| | | |
| | | # For a list of all settings, visit http://sphinx-doc.org/config.html |
| | | |
| | | # -- Options for linkcheck builder ------------------------------------------- |
| | | |
| | | # List of items to ignore when running linkcheck |
| | | linkcheck_ignore = [ |
| | | r'http://localhost:\d+', |
| | | r'http://localhost', |
| | | ] |
| | |
| | | ---------------- |
| | | |
| | | The print version of this book was produced using the `Sphinx |
| | | <http://www.sphinx-doc.org/en/stable/>`_ documentation generation system and |
| | | the `LaTeX <http://www.latex-project.org/>`_ typesetting system. |
| | | <http://www.sphinx-doc.org/en/master/>`_ documentation generation system and |
| | | the `LaTeX <https://www.latex-project.org/>`_ typesetting system. |
| | | |
| | | Contacting The Publisher |
| | | ------------------------ |
| | |
| | | externally. And while it's not really the job of this document to defend it, |
| | | Zope has been around for over 10 years and has an incredibly large, active |
| | | community. If you don't believe this, |
| | | http://pypi-ranking.info/author is an eye-opening reality |
| | | https://pypi.org/search/?q=zope is an eye-opening reality |
| | | check. |
| | | |
| | | Love Simplicity |
| | |
| | | You can use :term:`distribute` under Python 3 instead. |
| | | |
| | | distribute |
| | | `Distribute <https://pythonhosted.org/distribute/>`_ is a fork of |
| | | `Distribute <https://pypi.org/project/distribute/>`_ is a fork of |
| | | :term:`setuptools` which runs on both Python 2 and Python 3. |
| | | |
| | | pkg_resources |
| | |
| | | the box in ZPT and text flavors. |
| | | |
| | | ZPT |
| | | The `Zope Page Template <http://docs.zope.org/zope2/zope2book/ZPT.html>`_ |
| | | The `Zope Page Template <https://zope.readthedocs.io/en/latest/zope2book/ZPT.html>`_ |
| | | templating language. |
| | | |
| | | METAL |
| | | `Macro Expansion for TAL |
| | | <http://docs.zope.org/zope2/zope2book/AppendixC.html#metal-overview>`_, a |
| | | <https://zope.readthedocs.io/en/latest/zope2book/AppendixC.html#metal-overview>`_, a |
| | | part of :term:`ZPT` which makes it possible to share common look and feel |
| | | between templates. |
| | | |
| | |
| | | provides a scaffold with an example of how to use internationalization with |
| | | Jinja2 in Pyramid. See the documentation sections `Internalization (i18n) |
| | | <https://docs.pylonsproject.org/projects/pyramid-jinja2/en/latest/#internalization-i18n>`_ |
| | | and `Paster Template I18N |
| | | <https://docs.pylonsproject.org/projects/pyramid-jinja2/en/latest/#paster-template-i18n>`_. |
| | | and `pcreate template i18n |
| | | <https://docs.pylonsproject.org/projects/pyramid-jinja2/en/latest/#pcreate-template-i18n>`_. |
| | | |
| | | |
| | | .. index:: |
| | |
| | | Tested |
| | | ~~~~~~ |
| | | |
| | | Untested code is broken by design. The :app:`Pyramid` community has a strong testing culture and our framework reflects that. Every release of :app:`Pyramid` has 100% statement coverage (as measured by `coverage <http://coverage.readthedocs.io/en/latest/>`_) and 95% decision/condition coverage. (as measured by `instrumental <http://instrumental.readthedocs.io/en/latest/intro.html>`_) It is automatically tested using `Travis <https://travis-ci.org/Pylons/pyramid>`_ and `Jenkins <http://jenkins.pylonsproject.org/job/pyramid/>`_ on supported versions of Python after each commit to its GitHub repository. `Official Pyramid add-ons <https://trypyramid.com/resources-extending-pyramid.html>`_ are held to a similar testing standard. |
| | | Untested code is broken by design. The :app:`Pyramid` community has a strong testing culture and our framework reflects that. Every release of :app:`Pyramid` has 100% statement coverage (as measured by `coverage <https://coverage.readthedocs.io/en/latest/>`_) and 95% decision/condition coverage. (as measured by `instrumental <https://instrumental.readthedocs.io/en/latest/intro.html>`_) It is automatically tested using `Travis <https://travis-ci.org/Pylons/pyramid>`_ and `Jenkins <http://jenkins.pylonsproject.org/job/pyramid/>`_ on supported versions of Python after each commit to its GitHub repository. `Official Pyramid add-ons <https://trypyramid.com/resources-extending-pyramid.html>`_ are held to a similar testing standard. |
| | | |
| | | We still find bugs in :app:`Pyramid`, but we've noticed we find a lot fewer of them while working on projects with a solid testing regime. |
| | | |
| | | Documented |
| | | ~~~~~~~~~~ |
| | | |
| | | The :app:`Pyramid` documentation is comprehensive. We strive to keep our narrative documentation both complete and friendly to newcomers. We also maintain the :ref:`Pyramid Community Cookbook <cookbook:pyramid-cookbook>` of recipes demonstrating common scenarios you might face. Contributions in the form of improvements to our documentation are always appreciated. And we always welcome improvements to our `official tutorials <html_tutorials>`_ as well as new contributions to our `community maintained tutorials <tutorials:pyramid-tutorials>`_. |
| | | The :app:`Pyramid` documentation is comprehensive. We strive to keep our narrative documentation both complete and friendly to newcomers. We also maintain the :ref:`Pyramid Community Cookbook <cookbook:pyramid-cookbook>` of recipes demonstrating common scenarios you might face. Contributions in the form of improvements to our documentation are always appreciated. And we always welcome improvements to our :ref:`official tutorials <html_tutorials>` as well as new contributions to our :ref:`community maintained tutorials <tutorials:pyramid-tutorials>`. |
| | | |
| | | Supported |
| | | ~~~~~~~~~ |
| | |
| | | |
| | | The :term:`WSGI` design is modular. Waitress logs error conditions, debugging |
| | | output, etc., but not web traffic. For web traffic logging, Paste provides the |
| | | `TransLogger <http://pythonpaste.org/modules/translogger.html>`_ |
| | | `TransLogger <https://web.archive.org/web/20160707041338/http://pythonpaste.org:80/modules/translogger.html>`_ |
| | | :term:`middleware`. TransLogger produces logs in the `Apache Combined Log |
| | | Format <http://httpd.apache.org/docs/2.2/logs.html#combined>`_. But |
| | | TransLogger does not write to files; the Python logging system must be |
| | |
| | | distribute their reusable code. You can read more about ``setup.py`` files |
| | | and their usage in the `Python Packaging User Guide |
| | | <https://packaging.python.org/>`_ and `Setuptools documentation |
| | | <http://pythonhosted.org/setuptools/>`_. |
| | | <https://setuptools.readthedocs.io/en/latest/>`_. |
| | | |
| | | Our generated ``setup.py`` looks like this: |
| | | |
| | |
| | | By default ``hupper`` will poll the filesystem for changes to all Python |
| | | code. This can be pretty inefficient in larger projects. To be nicer to your |
| | | hard drive, you should install the |
| | | `watchdog <http://pythonhosted.org/watchdog/>`_ package in development. |
| | | `watchdog <https://pythonhosted.org/watchdog/>`_ package in development. |
| | | ``hupper`` will automatically use ``watchdog`` to more efficiently poll the |
| | | filesystem. |
| | | |
| | |
| | | To create a scaffold template, create a Python :term:`distribution` to house |
| | | the scaffold which includes a ``setup.py`` that relies on the ``setuptools`` |
| | | package. See `Packaging and Distributing Projects |
| | | <https://packaging.python.org/tutorials/distributing-packages/>`_ for more information |
| | | <https://packaging.python.org/tutorials/packaging-projects/>`_ for more information |
| | | about how to do this. For example, we'll pretend the distribution you create |
| | | is named ``CoolExtension``, and it has a package directory within it named |
| | | ``coolextension``. |
| | |
| | | |
| | | The ``-Wd`` argument tells Python to print deprecation warnings to the console. |
| | | See `the Python -W flag documentation |
| | | <https://docs.python.org/2/using/cmdline.html#cmdoption-W>`_ for more |
| | | <https://docs.python.org/2/using/cmdline.html#cmdoption-w>`_ for more |
| | | information. |
| | | |
| | | As your tests run, deprecation warnings will be printed to the console |
| | |
| | | See `the PYTHONWARNINGS environment variable documentation |
| | | <https://docs.python.org/2/using/cmdline.html#envvar-PYTHONWARNINGS>`_ or `the |
| | | Python -W flag documentation |
| | | <https://docs.python.org/2/using/cmdline.html#cmdoption-W>`_ for more |
| | | <https://docs.python.org/2/using/cmdline.html#cmdoption-w>`_ for more |
| | | information. |
| | | |
| | | Upgrading to the very latest Pyramid release |
| | |
| | | ``http://example.com/``). |
| | | |
| | | If you use a "pure Python" environment, this functionality can be provided by |
| | | `rutter <http://rutter.readthedocs.io/en/latest/>`_, forming a "composite" |
| | | `rutter <https://rutter.readthedocs.io/en/latest/>`_, forming a "composite" |
| | | WSGI application. Alternatively, you can use :term:`mod_wsgi` to serve your |
| | | application, which handles this virtual hosting translation for you "under the |
| | | hood". |
| | |
| | | always part of a :term:`view`. For a general overview of how to handle form |
| | | submission data using the :term:`WebOb` API, see :ref:`webob_chapter` and |
| | | `"Query and POST variables" within the WebOb documentation |
| | | <http://docs.webob.org/en/latest/reference.html#query-post-variables>`_. |
| | | <https://docs.pylonsproject.org/projects/webob/en/latest/reference.html#query-post-variables>`_. |
| | | :app:`Pyramid` defers to WebOb for its request and response implementations, |
| | | and handling form submission data is a property of the request implementation. |
| | | Understanding WebOb's request API is the key to understanding how to process |
| | |
| | | |
| | | WebOb is a project separate from :app:`Pyramid` with a separate set of authors |
| | | and a fully separate `set of documentation |
| | | <http://docs.webob.org/en/latest/index.html>`_. :app:`Pyramid` adds some |
| | | <https://docs.pylonsproject.org/projects/webob/en/latest/index.html>`_. :app:`Pyramid` adds some |
| | | functionality to the standard WebOb request, which is documented in the |
| | | :ref:`request_module` API documentation. |
| | | |
| | |
| | | WSGI requests and responses. However, we won't cover that use case in this |
| | | document, as users of :app:`Pyramid` don't typically need to use the |
| | | WSGI-related features of WebOb directly. The `reference documentation |
| | | <http://docs.webob.org/en/latest/reference.html>`_ shows many examples of |
| | | <https://docs.pylonsproject.org/projects/webob/en/latest/reference.html>`_ shows many examples of |
| | | creating requests and using response objects in this manner, however. |
| | | |
| | | .. index:: |
| | |
| | | ``request_method`` set to ``OPTIONS``, and set the desired response header |
| | | before returning. You can find examples of response headers `Access control |
| | | CORS, Preflighted requests |
| | | <https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests>`_. |
| | | <https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Preflighted_requests>`_. |
| | | |
| | | .. index:: |
| | | single: cleaning up after request |
| | |
| | | |
| | | - :class:`pyramid.request.Request` API documentation |
| | | |
| | | - `WebOb documentation <http://docs.webob.org/en/latest/index.html>`_. All |
| | | - `WebOb documentation <https://docs.pylonsproject.org/projects/webob/en/latest/index.html>`_. All |
| | | methods and attributes of a ``webob.Request`` documented within the WebOb |
| | | documentation will work with request objects created by :app:`Pyramid`. |
| | | |
| | |
| | | More details about the response object API are available in the |
| | | :mod:`pyramid.response` documentation. More details about exception responses |
| | | are in the :mod:`pyramid.httpexceptions` API documentation. The `WebOb |
| | | documentation <http://docs.webob.org/en/latest/index.html>`_ is also useful. |
| | | documentation <https://docs.pylonsproject.org/projects/webob/en/latest/index.html>`_ is also useful. |
| | |
| | | |
| | | Once you have a standard Python environment setup, getting started with Pyramid |
| | | is a breeze. Unfortunately "standard" is not so simple in Python. For this |
| | | Quick Tour, it means `Python <https://www.python.org/downloads/>`_, `venv |
| | | <https://packaging.python.org/en/latest/projects/#venv>`_ (or `virtualenv for |
| | | Python 2.7 <https://packaging.python.org/en/latest/projects/#virtualenv>`_), |
| | | `pip <https://packaging.python.org/en/latest/projects/#pip>`_, and `setuptools |
| | | <https://packaging.python.org/en/latest/projects/#easy-install>`_. |
| | | Quick Tour, it means `Python <https://www.python.org/downloads/>`_, :mod:`python:venv` (or `virtualenv for |
| | | Python 2.7 <https://virtualenv.pypa.io/en/stable/>`_), |
| | | `pip <https://pypi.org/project/pip/>`_, and `setuptools |
| | | <https://pypi.org/project/setuptools/>`_. |
| | | |
| | | To save a little bit of typing and to be certain that we use the modules, |
| | | scripts, and packages installed in our virtual environment, we'll set an |
| | |
| | | ``request.route_url``? |
| | | |
| | | .. seealso:: :ref:`class_as_view`, `Weird Stuff You Can Do With |
| | | URL Dispatch <http://www.plope.com/weird_pyramid_urldispatch>`_ |
| | | URL Dispatch <https://web.archive.org/web/20170131192830/http://www.plope.com/weird_pyramid_urldispatch>`_ |
| | |
| | | |
| | | .. seealso:: :ref:`Python Packages <python:tut-packages>` and `Working in |
| | | "Development Mode" |
| | | <https://packaging.python.org/tutorials/distributing-packages/#working-in-development-mode>`_. |
| | | <https://packaging.python.org/tutorials/installing-packages/#installing-from-a-local-src-tree>`_. |
| | |
| | | convenient than changing to your browser constantly and clicking reload. |
| | | |
| | | We'll also leave discussion of `pytest-cov |
| | | <http://pytest-cov.readthedocs.io/en/latest/>`_ for another section. |
| | | <https://pytest-cov.readthedocs.io/en/latest/>`_ for another section. |
| | | |
| | | |
| | | Objectives |