Michael Merickel
2017-06-18 75c30dfe18b26ca04efae2acbe35052fa0d93ed6
commit | author | age
c4d7f0 1 .. _glossary:
PE 2
74e3c4 3 Glossary
878328 4 ========
c4d7f0 5
PE 6 .. glossary::
878328 7    :sorted:
c4d7f0 8
8c56ae 9    request
050868 10      An object that represents an HTTP request, usually an instance of the
CM 11      :class:`pyramid.request.Request` class.  See :ref:`webob_chapter`
12      (narrative) and :ref:`request_module` (API documentation) for
13      information about request objects.
bc857e 14
e25a70 15    request factory
050868 16      An object which, provided a :term:`WSGI` environment as a single
CM 17      positional argument, returns a Pyramid-compatible request.
e25a70 18
e8a666 19    response factory
ff01cd 20      An object which, provided a :term:`request` as a single positional
da5f5f 21      argument, returns a Pyramid-compatible response. See
MM 22      :class:`pyramid.interfaces.IResponseFactory`.
e8a666 23
8c56ae 24    response
d868ff 25      An object returned by a :term:`view callable` that represents response
0e5cd0 26      data returned to the requesting user agent.  It must implement the
d868ff 27      :class:`pyramid.interfaces.IResponse` interface.  A response object is
CM 28      typically an instance of the :class:`pyramid.response.Response` class or
29      a subclass such as :class:`pyramid.httpexceptions.HTTPFound`.  See
30      :ref:`webob_chapter` for information about response objects.
878328 31
1f901a 32    response adapter
CM 33      A callable which accepts an arbitrary object and "converts" it to a
34      :class:`pyramid.response.Response` object.  See :ref:`using_iresponse`
35      for more information.
36
878328 37    Repoze
7e7fc9 38      "Repoze" is essentially a "brand" of software developed by `Agendaless
1cb30e 39      Consulting <https://agendaless.com>`_ and a set of contributors.  The
7e7fc9 40      term has no special intrinsic meaning.  The project's `website
CM 41      <http://repoze.org>`_ has more information.  The software developed
42      "under the brand" is available in a `Subversion repository
43      <http://svn.repoze.org>`_.  Pyramid was originally known as
44      :mod:`repoze.bfg`.
878328 45
8c56ae 46    setuptools
878328 47      `Setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_
CM 48      builds on Python's ``distutils`` to provide easier building,
eab66f 49      distribution, and installation of libraries and applications.  As of
CM 50      this writing, setuptools runs under Python 2, but not under Python 3.
51      You can use :term:`distribute` under Python 3 instead.
52
53    distribute
1cb30e 54      `Distribute <https://pythonhosted.org/distribute/>`_ is a fork of
eab66f 55      :term:`setuptools` which runs on both Python 2 and Python 3.
878328 56
CM 57    pkg_resources
eab66f 58      A module which ships with :term:`setuptools` and :term:`distribute` that
CM 59      provides an API for addressing "asset files" within a Python
60      :term:`package`.  Asset files are static files, template files, etc;
61      basically anything non-Python-source that lives in a Python package can
2033ee 62      be considered a asset file.
SP 63      
64      .. seealso::
65          
66          See also `PkgResources
67          <http://peak.telecommunity.com/DevCenter/PkgResources>`_.
878328 68
3e2f12 69    asset
878328 70      Any file contained within a Python :term:`package` which is *not*
CM 71      a Python source code file.
72
3e2f12 73    asset specification
a5ffd6 74      A colon-delimited identifier for an :term:`asset`.  The colon
878328 75      separates a Python :term:`package` name from a package subpath.
3e2f12 76      For example, the asset specification
878328 77      ``my.package:static/baz.css`` identifies the file named
CM 78      ``baz.css`` in the ``static`` subdirectory of the ``my.package``
2e3f70 79      Python :term:`package`.  See :ref:`asset_specifications` for more
b33ae9 80      info.
878328 81
8c56ae 82    package
878328 83      A directory on disk which contains an ``__init__.py`` file, making
CM 84      it recognizable to Python as a location which can be ``import`` -ed.
cdac6d 85      A package exists to contain :term:`module` files.
878328 86
798aad 87    module
CM 88      A Python source file; a file on the filesystem that typically ends with
2e3f70 89      the extension ``.py`` or ``.pyc``.  Modules often live in a
798aad 90      :term:`package`.
CM 91
8c56ae 92    project
878328 93      (Setuptools/distutils terminology). A directory on disk which
CM 94      contains a ``setup.py`` file and one or more Python packages.  The
95      ``setup.py`` file contains code that allows the package(s) to be
96      installed, distributed, and tested.
97
8c56ae 98    distribution
878328 99      (Setuptools/distutils terminology).  A file representing an
CM 100      installable library or application.  Distributions are usually
101      files that have the suffix of ``.egg``, ``.tar.gz``, or ``.zip``.
eab66f 102      Distributions are the target of Setuptools-related commands such as
878328 103      ``easy_install``.
CM 104
8c56ae 105    entry point
878328 106      A :term:`setuptools` indirection, defined within a setuptools
CM 107      :term:`distribution` setup.py.  It is usually a name which refers
108      to a function somewhere in a package which is held by the
109      distribution.
110
8c56ae 111    dotted Python name
878328 112      A reference to a Python object by name using a string, in the form
f8869c 113      ``path.to.modulename:attributename``.  Often used in Pyramid and
c9c3c4 114      setuptools configurations.  A variant is used in dotted names within
CM 115      configurator method arguments that name objects (such as the "add_view"
116      method's "view" and "context" attributes): the colon (``:``) is not
878328 117      used; in its place is a dot.
CM 118
8c56ae 119    view
878328 120      Common vernacular for a :term:`view callable`.
CM 121
8c56ae 122    view callable
878328 123      A "view callable" is a callable Python object which is associated
CM 124      with a :term:`view configuration`; it returns a :term:`response`
125      object .  A view callable accepts a single argument: ``request``,
126      which will be an instance of a :term:`request` object.  An
127      alternate calling convention allows a view to be defined as a
128      callable which accepts a pair of arguments: ``context`` and
197f0c 129      ``request``: this calling convention is useful for
CM 130      traversal-based applications in which a :term:`context` is always
131      very important.  A view callable is the primary mechanism by
132      which a developer writes user interface code within
fd5ae9 133      :app:`Pyramid`.  See :ref:`views_chapter` for more information
CM 134      about :app:`Pyramid` view callables.
878328 135
8c56ae 136    view configuration
f7f0dd 137      View configuration is the act of associating a :term:`view callable`
CM 138      with configuration information.  This configuration information helps
139      map a given :term:`request` to a particular view callable and it can
140      influence the response of a view callable.  :app:`Pyramid` views can be
c9c3c4 141      configured via :term:`imperative configuration`, or by a special
CM 142      ``@view_config`` decorator coupled with a :term:`scan`.  See
f7f0dd 143      :ref:`view_config_chapter` for more information about view
CM 144      configuration.
878328 145
8c56ae 146    view name
878328 147      The "URL name" of a view, e.g ``index.html``.  If a view is
CM 148      configured without a name, its name is considered to be the empty
149      string (which implies the :term:`default view`).
150
151    Default view
a5ffd6 152      The default view of a :term:`resource` is the view invoked when the
CM 153      :term:`view name` is the empty string (``''``).  This is the case when
154      :term:`traversal` exhausts the path elements in the PATH_INFO of a
780999 155      request before it returns a :term:`context` resource.
878328 156
8c56ae 157    virtualenv
d67566 158      The `virtualenv tool <https://virtualenv.pypa.io/en/latest/>`_ that allows
SP 159      one to create virtual environments. In Python 3.3 and greater,
160      :term:`venv` is the preferred tool.
878328 161
f73f0e 162      Note: whenever you encounter commands prefixed with ``$VENV`` (Unix)
TL 163      or ``%VENV`` (Windows), know that that is the environment variable whose
164      value is the root of the virtual environment in question.
165
3e2f12 166    resource
a5ffd6 167      An object representing a node in the :term:`resource tree` of an
125ea4 168      application.  If :term:`traversal` is used, a resource is an element in
a5ffd6 169      the resource tree traversed by the system.  When traversal is used, a
125ea4 170      resource becomes the :term:`context` of a :term:`view`.  If :term:`url
a5ffd6 171      dispatch` is used, a single resource is generated for each request and
780999 172      is used as the context resource of a view.
a5ffd6 173
CM 174    resource tree
175      A nested set of dictionary-like objects, each of which is a
176      :term:`resource`.  The act of :term:`traversal` uses the resource tree
780999 177      to find a :term:`context` resource.
a5ffd6 178
CM 179    domain model
180      Persistent data related to your application.  For example, data stored
181      in a relational database.  In some applications, the :term:`resource
182      tree` acts as the domain model.
878328 183
8c56ae 184    traversal
3e2f12 185      The act of descending "up" a tree of resource objects from a root
780999 186      resource in order to find a :term:`context` resource.  The
CM 187      :app:`Pyramid` :term:`router` performs traversal of resource objects
188      when a :term:`root factory` is specified.  See the
189      :ref:`traversal_chapter` chapter for more information.  Traversal can be
190      performed *instead* of :term:`URL dispatch` or can be combined *with*
191      URL dispatch.  See :ref:`hybrid_chapter` for more information about
192      combining traversal and URL dispatch (advanced).
878328 193
8c56ae 194    router
878328 195      The :term:`WSGI` application created when you start a
fd5ae9 196      :app:`Pyramid` application.  The router intercepts requests,
878328 197      invokes traversal and/or URL dispatch, calls view functions, and
CM 198      returns responses to the WSGI server on behalf of your
fd5ae9 199      :app:`Pyramid` application.
878328 200
CM 201    URL dispatch
3e2f12 202      An alternative to :term:`traversal` as a mechanism for locating a
780999 203      :term:`context` resource for a :term:`view`.  When you use a
CM 204      :term:`route` in your :app:`Pyramid` application via a :term:`route
878328 205      configuration`, you are using URL dispatch. See the
CM 206      :ref:`urldispatch_chapter` for more information.
207
8c56ae 208    context
a42a1e 209      A resource in the resource tree that is found during :term:`traversal`
780999 210      or :term:`URL dispatch` based on URL data; if it's found via traversal,
3e2f12 211      it's usually a :term:`resource` object that is part of a resource tree;
a42a1e 212      if it's found via :term:`URL dispatch`, it's an object manufactured on
780999 213      behalf of the route's "factory".  A context resource becomes the subject
CM 214      of a :term:`view`, and often has security information attached to
215      it.  See the :ref:`traversal_chapter` chapter and the
3e2f12 216      :ref:`urldispatch_chapter` chapter for more information about how a URL
780999 217      is resolved to a context resource.
878328 218
8c56ae 219    application registry
878328 220      A registry of configuration information consulted by
fd5ae9 221      :app:`Pyramid` while servicing an application.  An application
3e2f12 222      registry maps resource types to views, as well as housing other
878328 223      application-specific component registrations.  Every
fd5ae9 224      :app:`Pyramid` application has one (and only one) application
878328 225      registry.
CM 226
8c56ae 227    template
878328 228      A file with replaceable parts that is capable of representing some
CM 229      text, XML, or HTML when rendered.
230
8c56ae 231    location
a5ffd6 232      The path to an object in a :term:`resource tree`.  See
CM 233      :ref:`location_aware` for more information about how to make a resource
234      object *location-aware*.
878328 235
8c56ae 236    permission
1cb110 237      A string or Unicode object that represents an action being taken against
780999 238      a :term:`context` resource.  A permission is associated with a view name
CM 239      and a resource type by the developer.  Resources are decorated with
240      security declarations (e.g. an :term:`ACL`), which reference these
2e3f70 241      tokens also.  Permissions are used by the active security policy to
780999 242      match the view permission against the resources's statements about which
2e3f70 243      permissions are granted to which principal in a context in order to
780999 244      answer the question "is this user allowed to do this".  Examples of
CM 245      permissions: ``read``, or ``view_blog_entries``.
878328 246
a62cc2 247    default permission
CM 248      A :term:`permission` which is registered as the default for an
249      entire application.  When a default permission is in effect,
250      every :term:`view configuration` registered with the system will
251      be effectively amended with a ``permission`` argument that will
252      require that the executing user possess the default permission in
253      order to successfully execute the associated :term:`view
2033ee 254      callable`.
SP 255
256      .. seealso::
257         
258         See also :ref:`setting_a_default_permission`.
a62cc2 259
878328 260    ACE
CM 261      An *access control entry*.  An access control entry is one element
262      in an :term:`ACL`.  An access control entry is a three-tuple that
263      describes three things: an *action* (one of either ``Allow`` or
264      ``Deny``), a :term:`principal` (a string describing a user or
265      group), and a :term:`permission`.  For example the ACE, ``(Allow,
266      'bob', 'read')`` is a member of an ACL that indicates that the
267      principal ``bob`` is allowed the permission ``read`` against the
780999 268      resource the ACL is attached to.
878328 269
CM 270    ACL
780999 271      An *access control list*.  An ACL is a sequence of :term:`ACE` tuples.
CM 272      An ACL is attached to a resource instance.  An example of an ACL is ``[
273      (Allow, 'bob', 'read'), (Deny, 'fred', 'write')]``.  If an ACL is
274      attached to a resource instance, and that resource is findable via the
275      context resource, it will be consulted any active security policy to
b7057f 276      determine whether a particular request can be fulfilled given the
780999 277      :term:`authentication` information in the request.
878328 278
8c56ae 279    authentication
c5f24b 280      The act of determining that the credentials a user presents
CM 281      during a particular request are "good".  Authentication in
fd5ae9 282      :app:`Pyramid` is performed via an :term:`authentication
878328 283      policy`.
CM 284
8c56ae 285    authorization
780999 286      The act of determining whether a user can perform a specific action.  In
CM 287      pyramid terms, this means determining whether, for a given resource, any
288      :term:`principal` (or principals) associated with the request have the
289      requisite :term:`permission` to allow the request to continue.
290      Authorization in :app:`Pyramid` is performed via its
291      :term:`authorization policy`.
878328 292
8c56ae 293    principal
1cb110 294      A *principal* is a string or Unicode object representing an entity,
SP 295      typically a user or group. Principals are provided by an
296      :term:`authentication policy`. For example, if a user has the
297      :term:`userid` `bob`, and is a member of two groups named `group foo` and
298      `group bar`, then the request might have information attached to it
299      indicating that Bob was represented by three principals: `bob`, `group
300      foo` and `group bar`.
5cf183 301
KOP 302    userid
1cb110 303      A *userid* is a string or Unicode object used to identify and authenticate
SP 304      a real-world user or client. A userid is supplied to an
305      :term:`authentication policy` in order to discover the user's
306      :term:`principals <principal>`. In the authentication policies which
307      :app:`Pyramid` provides, the default behavior returns the user's userid as
308      a principal, but this is not strictly necessary in custom policies that
309      define their principals differently.
878328 310
8c56ae 311    authorization policy
fd5ae9 312      An authorization policy in :app:`Pyramid` terms is a bit of
878328 313      code which has an API which determines whether or not the
CM 314      principals associated with the request can perform an action
315      associated with a permission, based on the information found on the
780999 316      :term:`context` resource.
878328 317
8c56ae 318    authentication policy
fd5ae9 319      An authentication policy in :app:`Pyramid` terms is a bit of
878328 320      code which has an API which determines the current
CM 321      :term:`principal` (or principals) associated with a request.
322
323    WSGI
1cb30e 324      `Web Server Gateway Interface <http://wsgi.readthedocs.org/en/latest/>`_.
SP 325      This is a Python standard for connecting web applications to web servers,
326      similar to the concept of Java Servlets.  :app:`Pyramid` requires that
327      your application be served as a WSGI application.
878328 328
8c56ae 329    middleware
878328 330      *Middleware* is a :term:`WSGI` concept.  It is a WSGI component
CM 331      that acts both as a server and an application.  Interesting uses
332      for middleware exist, such as caching, content-transport
1cb30e 333      encoding, and other functions.  See `WSGI.org
SP 334      <http://wsgi.readthedocs.org/en/latest/>`_ or `PyPI
335      <https://pypi.python.org/pypi>`_ to find middleware for your application.
878328 336
8c56ae 337    pipeline
f8869c 338      The :term:`PasteDeploy` term for a single configuration of a WSGI
37607c 339      server, a WSGI application, with a set of :term:`middleware` in-between.
878328 340
CM 341    Zope
342      `The Z Object Publishing Framework <http://zope.org>`_, a
343      full-featured Python web framework.
344
345    Grok
346      `A web framework based on Zope 3 <http://grok.zope.org>`_.
347
348    Django
1cb30e 349      `A full-featured Python web framework <https://www.djangoproject.com/>`_.
878328 350
CM 351    Pylons
44b651 352      `A lightweight Python web framework <http://docs.pylonsproject.org/projects/pylons-webframework/en/latest/>`_
TL 353      and a predecessor of Pyramid.
878328 354
CM 355    ZODB
1cb30e 356       `Zope Object Database <http://www.zodb.org/en/latest/>`_, a persistent
SP 357       Python object store.
878328 358
CM 359    WebOb
e005c2 360      `WebOb <http://webob.org>`_ is a WSGI request/response
878328 361      library created by Ian Bicking.
CM 362
363    PasteDeploy
6ad5fb 364      `PasteDeploy <http://pythonpaste.org/deploy/>`_ is a library used by
fd5ae9 365      :app:`Pyramid` which makes it possible to configure
878328 366      :term:`WSGI` components together declaratively within an ``.ini``
f8869c 367      file.  It was developed by Ian Bicking.
878328 368
f454b8 369    plaster
MM 370      `plaster <http://docs.pylonsproject.org/projects/plaster/en/latest/>`_ is
371      a library used by :app:`Pyramid` which acts as an abstraction between
372      command-line scripts and the file format used to load the :term:`WSGI`
373      components and application settings. By default :app:`Pyramid` ships
374      with the ``plaster_pastedeploy`` library installed which provides
375      integrated support for loading a :term:`PasteDeploy` INI file.
376
878328 377    Chameleon
8d212a 378      `chameleon <https://chameleon.readthedocs.org/en/latest/>`_ is an
SP 379      attribute language template compiler which supports the :term:`ZPT`
380      templating specification. It is written and maintained by Malthe Borch. It
381      has several extensions, such as the ability to use bracketed (Mako-style)
382      ``${name}`` syntax. It is also much faster than the reference
383      implementation of ZPT. :app:`Pyramid` offers Chameleon templating out of
384      the box in ZPT and text flavors.
878328 385
CM 386    ZPT
1cb30e 387      The `Zope Page Template <http://docs.zope.org/zope2/zope2book/ZPT.html>`_
878328 388      templating language.
CM 389
390    METAL
1cb30e 391      `Macro Expansion for TAL
SP 392      <http://docs.zope.org/zope2/zope2book/AppendixC.html#metal-overview>`_, a
393      part of :term:`ZPT` which makes it possible to share common look and feel
394      between templates.
878328 395
CM 396    Genshi
1cb30e 397      An `XML templating language <https://pypi.python.org/pypi/Genshi/>`_
878328 398      by Christopher Lenz.
CM 399
400    Jinja2
1cb30e 401      A `text templating language <http://jinja.pocoo.org/>`_ by Armin Ronacher.
878328 402
CM 403    Routes
1cb30e 404      A `system by Ben Bangert <http://routes.readthedocs.org/en/latest/>`_
SP 405      which parses URLs and compares them against a number of user defined
406      mappings. The URL pattern matching syntax in :app:`Pyramid` is inspired by
407      the Routes syntax (which was inspired by Ruby On Rails pattern syntax).
878328 408
8c56ae 409    route
878328 410      A single pattern matched by the :term:`url dispatch` subsystem,
CM 411      which generally resolves to a :term:`root factory` (and then
2033ee 412      ultimately a :term:`view`).
SP 413
414      .. seealso::
415
416         See also :term:`url dispatch`.
878328 417
8c56ae 418    route configuration
c9c3c4 419      Route configuration is the act of associating request parameters with a
CM 420      particular :term:`route` using pattern matching and :term:`route
421      predicate` statements.  See :ref:`urldispatch_chapter` for more
422      information about route configuration.
878328 423
CM 424    Zope Component Architecture
425      The `Zope Component Architecture
1cb30e 426      <http://muthukadan.net/docs/zca.html>`_ (aka ZCA) is a system
878328 427      which allows for application pluggability and complex dispatching
CM 428      based on objects which implement an :term:`interface`.
fd5ae9 429      :app:`Pyramid` uses the ZCA "under the hood" to perform view
878328 430      dispatching and other application configuration tasks.
CM 431
8c56ae 432    reStructuredText
44c64f 433      A `plain text markup format <http://docutils.sourceforge.net/rst.html>`_
TL 434      that is the defacto standard for documenting Python projects.
435      The Pyramid documentation is written in reStructuredText.
878328 436
8c56ae 437    root
780999 438      The object at which :term:`traversal` begins when :app:`Pyramid`
CM 439      searches for a :term:`context` resource (for :term:`URL Dispatch`, the
2e3f70 440      root is *always* the context resource unless the ``traverse=`` argument
780999 441      is used in route configuration).
878328 442
8c56ae 443    subpath
878328 444      A list of element "left over" after the :term:`router` has
CM 445      performed a successful traversal to a view.  The subpath is a
446      sequence of strings, e.g. ``['left', 'over', 'names']``.  Within
edd915 447      Pyramid applications that use URL dispatch rather than traversal, you
878328 448      can use ``*subpath`` in the route pattern to influence the
CM 449      subpath.  See :ref:`star_subpath` for more information.
450
8c56ae 451    interface
1cb30e 452      A `Zope interface <https://pypi.python.org/pypi/zope.interface>`_
fd5ae9 453      object.  In :app:`Pyramid`, an interface may be attached to a
3e2f12 454      :term:`resource` object or a :term:`request` object in order to
878328 455      identify that the object is "of a type".  Interfaces are used
fd5ae9 456      internally by :app:`Pyramid` to perform view lookups and other
878328 457      policy lookups.  The ability to make use of an interface is
CM 458      exposed to an application programmers during :term:`view
eecdbc 459      configuration` via the ``context`` argument, the ``request_type``
878328 460      argument and the ``containment`` argument.  Interfaces are also
CM 461      exposed to application developers when they make use of the
fd5ae9 462      :term:`event` system. Fundamentally, :app:`Pyramid`
eecdbc 463      programmers can think of an interface as something that they can
CM 464      attach to an object that stamps it with a "type" unrelated to its
465      underlying Python type.  Interfaces can also be used to describe
466      the behavior of an object (its methods and attributes), but
fd5ae9 467      unless they choose to, :app:`Pyramid` programmers do not need
eecdbc 468      to understand or use this feature of interfaces.
878328 469
8c56ae 470    event
878328 471      An object broadcast to zero or more :term:`subscriber` callables
fd5ae9 472      during normal :app:`Pyramid` system operations during the
878328 473      lifetime of an application.  Application code can subscribe to
CM 474      these events by using the subscriber functionality described in
475      :ref:`events_chapter`.
476
8c56ae 477    subscriber
878328 478      A callable which receives an :term:`event`.  A callable becomes a
c9c3c4 479      subscriber via :term:`imperative configuration` or via
CM 480      :term:`configuration decoration`.  See :ref:`events_chapter` for more
481      information.
878328 482
8c56ae 483    request type
878328 484      An attribute of a :term:`request` that allows for specialization
CM 485      of view invocation based on arbitrary categorization.  The every
fd5ae9 486      :term:`request` object that :app:`Pyramid` generates and
878328 487      manipulates has one or more :term:`interface` objects attached to
CM 488      it.  The default interface attached to a request object is
050868 489      :class:`pyramid.interfaces.IRequest`.
878328 490
CM 491    repoze.lemonade
492      Zope2 CMF-like `data structures and helper facilities
493      <http://docs.repoze.org/lemonade>`_ for CA-and-ZODB-based
fd5ae9 494      applications useful within :app:`Pyramid` applications.
878328 495
CM 496    repoze.catalog
497      An indexing and search facility (fielded and full-text) based on
1cb30e 498      `zope.index <https://pypi.python.org/pypi/zope.index>`_.  See `the
878328 499      documentation <http://docs.repoze.org/catalog>`_ for more
3e4f42 500      information.
878328 501
CM 502    repoze.who
1cb30e 503      `Authentication middleware <http://repozewho.readthedocs.org/en/latest/>`_
SP 504      for :term:`WSGI` applications.  It can be used by :app:`Pyramid` to
878328 505      provide authentication information.
CM 506
507    repoze.workflow
508      `Barebones workflow for Python apps
509      <http://docs.repoze.org/workflow>`_ .  It can be used by
fd5ae9 510      :app:`Pyramid` to form a workflow system.
878328 511
8c56ae 512    virtual root
c25a8f 513      A resource object representing the "virtual" root of a request; this is
CM 514      typically the :term:`physical root` object unless :ref:`vhosting_chapter`
515      is in use.
516
517    physical root
043ccd 518      The object returned by the application :term:`root factory`.
TL 519      Unlike the :term:`virtual root` of a request, it is not impacted by
c25a8f 520      :ref:`vhosting_chapter`: it will always be the actual object returned by
CM 521      the root factory, never a subobject.
522
523    physical path
524      The path required by a traversal which resolve a :term:`resource` starting
525      from the :term:`physical root`.  For example, the physical path of the
526      ``abc`` subobject of the physical root object is ``/abc``.  Physical paths
527      can also be specified as tuples where the first element is the empty
528      string (representing the root), and every other element is a Unicode
529      object, e.g. ``('', 'abc')``.  Physical paths are also sometimes called
530      "traversal paths".
878328 531
8c56ae 532    lineage
780999 533      An ordered sequence of objects based on a ":term:`location` -aware"
CM 534      resource.  The lineage of any given :term:`resource` is composed of
535      itself, its parent, its parent's parent, and so on.  The order of the
536      sequence is resource-first, then the parent of the resource, then its
537      parent's parent, and so on.  The parent of a resource in a lineage is
538      available as its ``__parent__`` attribute.
878328 539
8c56ae 540    root factory
96188a 541      The "root factory" of a :app:`Pyramid` application is called on every
CM 542      request sent to the application.  The root factory returns the traversal
543      root of an application.  It is conventionally named ``get_root``.  An
544      application may supply a root factory to :app:`Pyramid` during the
545      construction of a :term:`Configurator`.  If a root factory is not
546      supplied, the application creates a default root object using the
547      :term:`default root factory`.  
548
549    default root factory
550      If an application does not register a :term:`root factory` at Pyramid
551      configuration time, a *default* root factory is used to created the
552      default root object.  Use of the default root object is useful in
553      application which use :term:`URL dispatch` for all URL-to-view code
554      mappings, and does not (knowingly) use traversal otherwise.
878328 555
CM 556    SQLAlchemy
7e7fc9 557      `SQLAlchemy <http://www.sqlalchemy.org/>`_ is an object
878328 558      relational mapper used in tutorials within this documentation.
CM 559
560    JSON
561      `JavaScript Object Notation <http://www.json.org/>`_ is a data
562      serialization format.
563
6a0602 564    jQuery
1cb30e 565      A popular `Javascript library <https://jquery.org>`_.
6a0602 566
8c56ae 567    renderer
94bad2 568      A serializer which converts non-:term:`Response` return values from a
SP 569      :term:`view` into a string, and ultimately into a response, usually
570      through :term:`view configuration`. Using a renderer can make writing
571      views that require templating or other serialization, like JSON, less
572      tedious. See :ref:`views_which_use_a_renderer` for more information.
878328 573
410457 574    renderer factory
CM 575      A factory which creates a :term:`renderer`.  See
576      :ref:`adding_and_overriding_renderers` for more information.
577
878328 578    mod_wsgi
ce8894 579      `mod_wsgi <https://modwsgi.readthedocs.io>`_ is an Apache
1cb30e 580      module developed by Graham Dumpleton.  It allows :term:`WSGI` applications
SP 581      (such as applications developed using :app:`Pyramid`) to be served using
582      the Apache web server.
878328 583
8c56ae 584    view predicate
878328 585      An argument to a :term:`view configuration` which evaluates to
CM 586      ``True`` or ``False`` for a given :term:`request`.  All predicates
587      attached to a view configuration must evaluate to true for the
588      associated view to be considered as a possible callable for a
589      given request.
590
8c56ae 591    route predicate
878328 592      An argument to a :term:`route configuration` which implies a value
CM 593      that evaluates to ``True`` or ``False`` for a given
594      :term:`request`.  All predicates attached to a :term:`route
595      configuration` must evaluate to ``True`` for the associated route
596      to "match" the current request.  If a route does not match the
597      current request, the next route (in definition order) is
598      attempted.
599
49eccc 600    routes mapper
CM 601      An object which compares path information from a request to an
602      ordered set of route patterns.  See :ref:`urldispatch_chapter`.
603
8c56ae 604    predicate
878328 605      A test which returns ``True`` or ``False``.  Two different types
fd5ae9 606      of predicates exist in :app:`Pyramid`: a :term:`view predicate`
878328 607      and a :term:`route predicate`.  View predicates are attached to
CM 608      :term:`view configuration` and route predicates are attached to
609      :term:`route configuration`.
610
8c56ae 611    decorator
878328 612      A wrapper around a Python function or class which accepts the
CM 613      function or class as its first argument and which returns an
fd5ae9 614      arbitrary object.  :app:`Pyramid` provides several decorators,
2033ee 615      used for configuration and return value modification purposes.
SP 616
617      .. seealso::
618      
1cb30e 619         See also `PEP 318 <https://www.python.org/dev/peps/pep-0318/>`_.
878328 620
8c56ae 621    configuration declaration
c4503b 622      An individual method call made to a :term:`configuration directive`,
CM 623      such as registering a :term:`view configuration` (via the
050868 624      :meth:`~pyramid.config.Configurator.add_view` method of the
CM 625      configurator) or :term:`route configuration` (via the
626      :meth:`~pyramid.config.Configurator.add_route` method of the
627      configurator).  A set of configuration declarations is also implied by
628      the :term:`configuration decoration` detected by a :term:`scan` of code
629      in a package.
878328 630
8c56ae 631    configuration decoration
878328 632      Metadata implying one or more :term:`configuration declaration`
CM 633      invocations.  Often set by configuration Python :term:`decorator`
197f0c 634      attributes, such as :class:`pyramid.view.view_config`, aka
CM 635      ``@view_config``.
878328 636
8c56ae 637    scan
fd5ae9 638      The term used by :app:`Pyramid` to define the process of
878328 639      importing and examining all code in a Python package or module for
CM 640      :term:`configuration decoration`.
641
8c56ae 642    configurator
878328 643      An object used to do :term:`configuration declaration` within an
CM 644      application.  The most common configurator is an instance of the
050868 645      :class:`pyramid.config.Configurator` class.
878328 646
8c56ae 647    imperative configuration
878328 648      The configuration mode in which you use Python to call methods on
CM 649      a :term:`Configurator` in order to add each :term:`configuration
650      declaration` required by your application.
651
8c56ae 652    declarative configuration
4e1199 653      The configuration mode in which you use the combination of
3cf66a 654      :term:`configuration decoration` and a :term:`scan` to configure your
CM 655      Pyramid application.
878328 656
2f4bde 657    Not Found View
050868 658       An :term:`exception view` invoked by :app:`Pyramid` when the developer
CM 659       explicitly raises a :class:`pyramid.httpexceptions.HTTPNotFound`
660       exception from within :term:`view` code or :term:`root factory` code,
661       or when the current request doesn't match any :term:`view
662       configuration`.  :app:`Pyramid` provides a default implementation of a
2f4bde 663       Not Found View; it can be overridden.  See
878328 664       :ref:`changing_the_notfound_view`.
CM 665
8c56ae 666    Forbidden view
050868 667       An :term:`exception view` invoked by :app:`Pyramid` when the developer
CM 668       explicitly raises a :class:`pyramid.httpexceptions.HTTPForbidden`
669       exception from within :term:`view` code or :term:`root factory` code,
670       or when the :term:`view configuration` and :term:`authorization policy`
239a93 671       found for a request disallows a particular view invocation.
050868 672       :app:`Pyramid` provides a default implementation of a forbidden view;
CM 673       it can be overridden.  See :ref:`changing_the_forbidden_view`.
878328 674
239a93 675    Exception view
CM 676       An exception view is a :term:`view callable` which may be
fd5ae9 677       invoked by :app:`Pyramid` when an exception is raised during
239a93 678       request processing.  See :ref:`exception_views` for more
CM 679       information.
680
1ffb8e 681    HTTP Exception
CM 682       The set of exception classes defined in :mod:`pyramid.httpexceptions`.
683       These can be used to generate responses with various status codes when
2033ee 684       raised or returned from a :term:`view callable`.
SP 685
686       .. seealso::
687
688           See also :ref:`http_exceptions`.
878328 689
CM 690    thread local
7e7fc9 691       A thread-local variable is one which is essentially a global variable
CM 692       in terms of how it is accessed and treated, however, each `thread
1cb30e 693       <https://en.wikipedia.org/wiki/Thread_(computer_science)>`_ used by the
7e7fc9 694       application may have a different value for this same "global" variable.
CM 695       :app:`Pyramid` uses a small number of thread local variables, as
eb71e9 696       described in :ref:`threadlocals_chapter`.
2033ee 697
SP 698       .. seealso::
699
700           See also the :class:`stdlib documentation <threading.local>`
701           for more information.
e4e3aa 702
8c56ae 703    multidict
2a1c3f 704      An ordered dictionary that can have multiple values for each key. Adds
CM 705      the methods ``getall``, ``getone``, ``mixed``, ``add`` and
706      ``dict_of_lists`` to the normal dictionary interface.  See
707      :ref:`multidict_narr` and :class:`pyramid.interfaces.IMultiDict`.
e4e3aa 708
125e97 709    PyPI
1cb30e 710      `The Python Package Index <https://pypi.python.org/pypi>`_, a collection
SP 711      of software available for Python.
e0887e 712
CM 713    Agendaless Consulting
714      A consulting organization formed by Paul Everitt, Tres Seaver,
2033ee 715      and Chris McDonough.
SP 716
717      .. seealso::
718
1cb30e 719          See also `Agendaless Consulting <https://agendaless.com>`_.
9ec2d6 720
CM 721    Jython
7e7fc9 722      A `Python implementation <http://www.jython.org/>`_ written for
9ec2d6 723      the Java Virtual Machine.
CM 724
725    Python
1cb30e 726      The `programming language <https://www.python.org>`_ in which
fd5ae9 727      :app:`Pyramid` is written.
9ec2d6 728
CM 729    CPython
730      The C implementation of the Python language.  This is the
731      reference implementation that most people refer to as simply
732      "Python"; :term:`Jython`, Google's App Engine, and `PyPy
cff857 733      <http://doc.pypy.org/en/latest/>`_ are examples of
9ec2d6 734      non-C based Python implementations.
590fe7 735
CM 736    View Lookup
294929 737      The act of finding and invoking the "best" :term:`view callable`,
780999 738      given a :term:`request` and a :term:`context` resource.
590fe7 739
780999 740    Resource Location
CM 741      The act of locating a :term:`context` resource given a :term:`request`.
742      :term:`Traversal` and :term:`URL dispatch` are the resource location
743      subsystems used by :app:`Pyramid`.
590fe7 744
abf62d 745    Google App Engine
1cb30e 746      `Google App Engine <https://cloud.google.com/appengine/>`_ (aka
abf62d 747      "GAE") is a Python application hosting service offered by Google.
fd5ae9 748      :app:`Pyramid` runs on GAE.
abf62d 749
e6fa66 750    Venusian
452005 751      :ref:`Venusian` is a library which
e6fa66 752      allows framework authors to defer decorator actions.  Instead of
CM 753      taking actions when a function (or class) decorator is executed
f20a01 754      at :term:`import time`, the action usually taken by the decorator is
fd5ae9 755      deferred until a separate "scan" phase.  :app:`Pyramid` relies
e6fa66 756      on Venusian to provide a basis for its :term:`scan` feature.
7534ba 757
CM 758    Translation String
197f0c 759      An instance of :class:`pyramid.i18n.TranslationString`, which
7534ba 760      is a class that behaves like a Unicode string, but has several
CM 761      extra attributes such as ``domain``, ``msgid``, and ``mapping``
762      for use during translation.  Translation strings are usually
763      created by hand within software, but are sometimes created on the
764      behalf of the system for automatic template translation.  For
765      more information, see :ref:`i18n_chapter`.
766
767    Translation Domain
768      A string representing the "context" in which a translation was
769      made.  For example the word "java" might be translated
770      differently if the translation domain is "programming-languages"
771      than would be if the translation domain was "coffee".  A
2a079b 772      translation domain is represented by a collection of ``.mo`` files
7534ba 773      within one or more :term:`translation directory` directories.
CM 774
2a079b 775    Translation Context
SP 776      A string representing the "context" in which a translation was
777      made within a given :term:`translation domain`. See the gettext
778      documentation, `11.2.5 Using contexts for solving ambiguities
779      <https://www.gnu.org/software/gettext/manual/gettext.html#Contexts>`_
780      for more information.
781
7534ba 782    Translator
050868 783      A callable which receives a :term:`translation string` and returns a
CM 784      translated Unicode object for the purposes of internationalization.  A
785      :term:`localizer` supplies a translator to a :app:`Pyramid` application
786      accessible via its :class:`~pyramid.i18n.Localizer.translate` method.
7534ba 787
CM 788    Translation Directory
789      A translation directory is a :term:`gettext` translation
790      directory.  It contains language folders, which themselves
791      contain ``LC_MESSAGES`` folders, which contain ``.mo`` files.
792      Each ``.mo`` file represents a set of translations for a language
793      in a :term:`translation domain`.  The name of the ``.mo`` file
794      (minus the .mo extension) is the translation domain name.
795
796    Localizer
197f0c 797      An instance of the class :class:`pyramid.i18n.Localizer` which
7534ba 798      provides translation and pluralization services to an
CM 799      application.  It is retrieved via the
197f0c 800      :func:`pyramid.i18n.get_localizer` function.
7534ba 801
CM 802    Locale Name
803      A string like ``en``, ``en_US``, ``de``, or ``de_AT`` which
804      uniquely identifies a particular locale.
805
b5dc7f 806    Default Locale Name
CM 807      The :term:`locale name` used by an application when no explicit
808      locale name is set.  See :ref:`localization_deployment_settings`.
809
7534ba 810    Locale Negotiator
CM 811      An object supplying a policy determining which :term:`locale
812      name` best represents a given :term:`request`.  It is used by the
197f0c 813      :func:`pyramid.i18n.get_locale_name`, and
CM 814      :func:`pyramid.i18n.negotiate_locale_name` functions, and
815      indirectly by :func:`pyramid.i18n.get_localizer`.  The
816      :func:`pyramid.i18n.default_locale_negotiator` function
7534ba 817      is an example of a locale negotiator.
CM 818
819    Gettext
820      The GNU `gettext <http://www.gnu.org/software/gettext/>`_
fd5ae9 821      library, used by the :app:`Pyramid` translation machinery.
7534ba 822
CM 823    Babel
8d212a 824      A `collection of tools <http://babel.pocoo.org/en/latest/>`_ for
SP 825      internationalizing Python applications. :app:`Pyramid` does not depend on
826      Babel to operate, but if Babel is installed, additional locale
827      functionality becomes available to your application.
7534ba 828
5119ae 829    Lingua
98a99d 830      A package by Wichert Akkerman which provides the ``pot-create``
WA 831      command to extract translateable messages from Python sources
832      and Chameleon ZPT template files.
5119ae 833
7534ba 834    Message Identifier
CM 835      A string used as a translation lookup key during localization.
836      The ``msgid`` argument to a :term:`translation string` is a
837      message identifier.  Message identifiers are also present in a
838      :term:`message catalog`.
839
840    Message Catalog
841      A :term:`gettext` ``.mo`` file containing translations.
842
df3beb 843    Internationalization
CM 844      The act of creating software with a user interface that can
845      potentially be displayed in more than one language or cultural
846      context.  Often shortened to "i18n" (because the word
2033ee 847      "internationalization" is I, 18 letters, then N).
SP 848
849      .. seealso::
850
851          See also :term:`Localization`.
7534ba 852
df3beb 853    Localization
CM 854      The process of displaying the user interface of an
855      internationalized application in a particular language or
856      cultural context.  Often shortened to "l10" (because the word
2033ee 857      "localization" is L, 10 letters, then N).
SP 858
859      .. seealso::
860      
861          See also :term:`Internationalization`.
250c02 862
CM 863    renderer globals
c6601f 864       Values injected as names into a renderer by a
CM 865       :class:`pyramid.event.BeforeRender` event.
81d3b5 866
CM 867    response callback
868       A user-defined callback executed by the :term:`router` at a
869       point after a :term:`response` object is successfully created.
2033ee 870
SP 871       .. seealso::
872
873           See also :ref:`using_response_callbacks`.
81d3b5 874
CM 875    finished callback
876       A user-defined callback executed by the :term:`router`
877       unconditionally at the very end of request processing .  See
878       :ref:`using_finished_callbacks`.
70f1cd 879
CM 880    pregenerator
881       A pregenerator is a function associated by a developer with a
050868 882       :term:`route`.  It is called by
CM 883       :meth:`~pyramid.request.Request.route_url` in order to adjust the set
884       of arguments passed to it by the user for special purposes.  It will
885       influence the URL returned by
886       :meth:`~pyramid.request.Request.route_url`.  See
887       :class:`pyramid.interfaces.IRoutePregenerator` for more information.
04ebd5 888
CM 889    session
890       A namespace that is valid for some period of continual activity
891       that can be used to represent a user's interaction with a web
892       application.
893
894    session factory
643a83 895       A callable, which, when called with a single argument named ``request``
CM 896       (a :term:`request` object), returns a :term:`session` object.  See
897       :ref:`using_the_default_session_factory`,
898       :ref:`using_alternate_session_factories` and
899       :meth:`pyramid.config.Configurator.set_session_factory` for more
900       information.
04ebd5 901
2ded2f 902    CSRF storage policy
MW 903       A utility that implements :class:`pyramid.interfaces.ICSRFStoragePolicy`
904       which is responsible for allocating CSRF tokens to a user and verifying
905       that a provided token is acceptable.
906
7698bd 907    Mako
043ccd 908      `Mako <http://www.makotemplates.org/>`_ is a template language
7698bd 909      which refines the familiar ideas of componentized layout and inheritance
BB 910      using Python with Python scoping and calling semantics.
2f980d 911
CM 912    View handler
913      A view handler ties together
d7f259 914      :meth:`pyramid.config.Configurator.add_route` and
2323d4 915      :meth:`pyramid.config.Configurator.add_view` to make it more convenient
CM 916      to register a collection of views as a single class when using
917      :term:`url dispatch`.  View handlers ship as part of the
918      :term:`pyramid_handlers` add-on package.
a1365e 919
CM 920    Deployment settings
921      Deployment settings are settings passed to the :term:`Configurator` as a
922      ``settings`` argument.  These are later accessible via a
050868 923      ``request.registry.settings`` dictionary in views or as
CM 924      ``config.registry.settings`` in configuration code.  Deployment settings
925      can be used as global application values.
a1365e 926
6ee49a 927    WebTest
1cb30e 928      `WebTest <http://webtest.pythonpaste.org/en/latest/>`_ is a package which can help
6ee49a 929      you write functional tests for your WSGI application.
CM 930
80aa77 931    view mapper
CM 932     A view mapper is a class which implements the
933     :class:`pyramid.interfaces.IViewMapperFactory` interface, which performs
934     view argument and return value mapping.  This is a plug point for
935     extension builders, not normally used by "civilians".
6ee49a 936
5653d1 937    matchdict
CM 938     The dictionary attached to the :term:`request` object as
939     ``request.matchdict`` when a :term:`URL dispatch` route has been matched.
940     Its keys are names as identified within the route pattern; its values are
941     the values matched by each pattern name.
c9c3c4 942
CM 943    pyramid_zcml
944      An add-on package to :app:`Pyramid` which allows applications to be
55ce9d 945      configured via :term:`ZCML`.  It is available on :term:`PyPI`.  If you
050868 946      use :mod:`pyramid_zcml`, you can use ZCML as an alternative to
55ce9d 947      :term:`imperative configuration` or :term:`configuration decoration`.
c9c3c4 948
CM 949    ZCML
950      `Zope Configuration Markup Language
1cb30e 951      <http://muthukadan.net/docs/zca.html#zcml>`_, an XML dialect
2e3f70 952      used by Zope and :term:`pyramid_zcml` for configuration tasks.
c9c3c4 953
78fe62 954    pyramid_handlers
CM 955      An add-on package which allows :app:`Pyramid` users to create classes
956      that are analogues of Pylons 1 "controllers".  See
1cb30e 957      http://docs.pylonsproject.org/projects/pyramid_handlers/en/latest/.
78fe62 958
2323d4 959    pyramid_jinja2
CM 960      :term:`Jinja2` templating system bindings for Pyramid, documented at
1cb30e 961      http://docs.pylonsproject.org/projects/pyramid_jinja2/en/latest/.  This
SP 962      package also includes a scaffold named ``pyramid_jinja2_starter``, which
963      creates an application package based on the Jinja2 templating system.
2323d4 964
0eb82e 965    Akhet
94c28e 966      `Akhet <http://docs.pylonsproject.org/projects/akhet/en/latest/>`_ is a 
MO 967      Pyramid library and demo application with a Pylons-like feel.
968      It's most known for its former application scaffold, which helped 
7096d9 969      users transition from Pylons and those preferring a more Pylons-like API.
94c28e 970      The scaffold has been retired but the demo plays a similar role. 
2323d4 971
34515f 972    Pyramid Community Cookbook
6860b2 973      Additional, community-based documentation for Pyramid which presents
SP 974      topical, practical uses of Pyramid:
975      :ref:`Pyramid Community Cookbook <cookbook:pyramid-cookbook>`
4cf41f 976
ff3ba5 977    distutils
CM 978      The standard system for packaging and distributing Python packages.  See
1cb30e 979      https://docs.python.org/2/distutils/index.html for more information.
ff3ba5 980      :term:`setuptools` is actually an *extension* of the Distutils.
CM 981
df15ed 982    exception response
CM 983      A :term:`response` that is generated as the result of a raised exception
984      being caught by an :term:`exception view`.
2323d4 985
f98925 986    PyPy
CM 987      PyPy is an "alternative implementation of the Python
f65e19 988      language": http://pypy.org/
f98925 989
dc7122 990    tween
CM 991      A bit of code that sits between the Pyramid router's main request
992      handling function and the upstream WSGI component that uses
05f610 993      :app:`Pyramid` as its 'app'.  The word "tween" is a contraction of
CM 994      "between".  A tween may be used by Pyramid framework extensions, to
995      provide, for example, Pyramid-specific view timing support, bookkeeping
996      code that examines exceptions before they are returned to the upstream
997      WSGI application, or a variety of other features.  Tweens behave a bit
37607c 998      like :term:`WSGI` :term:`middleware` but they have the benefit of running in a
dc7122 999      context in which they have access to the Pyramid :term:`application
05f610 1000      registry` as well as the Pyramid rendering machinery.  See
CM 1001      :ref:`registering_tweens`.
dc7122 1002
391402 1003    pyramid_debugtoolbar
4b43ba 1004      A Pyramid add-on which displays a helpful debug toolbar "on top of" HTML
391402 1005      pages rendered by your application, displaying request, routing, and
050868 1006      database information.  :mod:`pyramid_debugtoolbar` is configured into
CM 1007      the ``development.ini`` of all applications which use a Pyramid
af33f7 1008      :term:`cookiecutter`.  For more information, see
4b43ba 1009      http://docs.pylonsproject.org/projects/pyramid_debugtoolbar/en/latest/.
391402 1010
CM 1011    scaffold
989544 1012      A project template that generates some of the major parts of a Pyramid
SP 1013      application and helps users to quickly get started writing larger
1014      applications.  Scaffolds are usually used via the ``pcreate`` command.
391402 1015
e7b12f 1016      .. deprecated:: 1.8
SP 1017
1018      .. seealso:: See also :term:`cookiecutter`.
1019
bfdbcf 1020    pyramid_exclog
CM 1021      A package which logs Pyramid application exception (error) information
1022      to a standard Python logger.  This add-on is most useful when
1023      used in production applications, because the logger can be configured to
1024      log to a file, to UNIX syslog, to the Windows Event Log, or even to
1025      email. See its `documentation
1cb30e 1026      <http://docs.pylonsproject.org/projects/pyramid_exclog/en/latest/>`_.
d36b56 1027
5edd54 1028    console script
CM 1029      A script written to the ``bin`` (on UNIX, or ``Scripts`` on Windows)
d67566 1030      directory of a Python installation or :term:`virtual environment` as the
SP 1031      result of running ``pip install`` or ``pip install -e .``.
5edd54 1032
c4503b 1033    introspector
CM 1034      An object with the methods described by
1035      :class:`pyramid.interfaces.IIntrospector` that is available in both
1036      configuration code (for registration) and at runtime (for querying) that
1037      allows a developer to introspect configuration statements and
1038      relationships between those statements.
1039
1040    conflict resolution
1041      Pyramid attempts to resolve ambiguous configuration statements made by
1042      application developers via automatic conflict resolution.  Automatic
1043      conflict resolution is described in
1044      :ref:`automatic_conflict_resolution`.  If Pyramid cannot resolve
1045      ambiguous configuration statements, it is possible to manually resolve
1046      them as described in :ref:`manually_resolving_conflicts`.
1047
1048    configuration directive
1049      A method of the :term:`Configurator` which causes a configuration action
1050      to occur.  The method :meth:`pyramid.config.Configurator.add_view` is a
1051      configuration directive, and application developers can add their own
1052      directives as necessary (see :ref:`add_directive`).
1053
1054    action
1055      Represents a pending configuration statement generated by a call to a
1056      :term:`configuration directive`.  The set of pending configuration
1057      actions are processed when :meth:`pyramid.config.Configurator.commit` is
1058      called.
1059
1060    discriminator
1061      The unique identifier of an :term:`action`.
1062
1063    introspectable
1064       An object which implements the attributes and methods described in
1065       :class:`pyramid.interfaces.IIntrospectable`.  Introspectables are used
1066       by the :term:`introspector` to display configuration information about
1067       a running Pyramid application.  An introspectable is associated with a
1068       :term:`action` by virtue of the
1069       :meth:`pyramid.config.Configurator.action` method.
56df90 1070
CM 1071    asset descriptor
1072       An instance representing an :term:`asset specification` provided by the
1073       :meth:`pyramid.path.AssetResolver.resolve` method.  It supports the
1074       methods and attributes documented in
1075       :class:`pyramid.interfaces.IAssetDescriptor`.
c3a36b 1076
CM 1077    Waitress
a36d33 1078       A :term:`WSGI` server that runs on UNIX and Windows under Python 2.7+
SP 1079       and Python 3.3+.  Projects generated via Pyramid cookiecutters use
c3a36b 1080       Waitress as a WGSI server.  See
CM 1081       http://docs.pylonsproject.org/projects/waitress/en/latest/ for detailed
1082       information.
1083
1084    Green Unicorn
1085       Aka ``gunicorn``, a fast :term:`WSGI` server that runs on UNIX under
ab2fed 1086       Python 2.6+ or Python 3.1+.  See http://gunicorn.org/ for detailed 
CM 1087       information.
0196b2 1088
CM 1089    predicate factory
1090       A callable which is used by a third party during the registration of a
95f766 1091       route, view, or subscriber predicates to extend the configuration
0196b2 1092       system.  See :ref:`registering_thirdparty_predicates` for more
CM 1093       information.
95f766 1094
d559af 1095    add-on
PE 1096       A Python :term:`distribution` that uses Pyramid's extensibility
1097       to plug into a Pyramid application and provide extra,
c6601f 1098       configurable services.
ab2fed 1099
CM 1100    pyramid_redis_sessions
1101       A package by Eric Rasmussen which allows you to store Pyramid session 
1102       data in a Redis database.  See 
1103       https://pypi.python.org/pypi/pyramid_redis_sessions for more information.
1104
3a4119 1105    cache busting
MM 1106       A technique used when serving a cacheable static asset in order to force
1107       a client to query the new version of the asset. See :ref:`cache_busting`
1108       for more information.
b4147b 1109
MM 1110    view deriver
1111       A view deriver is a composable component of the view pipeline which is
1112       used to create a :term:`view callable`. A view deriver is a callable
1113       implementing the :class:`pyramid.interfaces.IViewDeriver` interface.
890ea8 1114       Examples of built-in derivers including view mapper, the permission
7fc181 1115       checker, and applying a renderer to a dictionary returned from the view.
6b35eb 1116
MM 1117    truthy string
1118       A string represeting a value of ``True``. Acceptable values are
1119       ``t``, ``true``, ``y``, ``yes``, ``on`` and ``1``.
1120
1121    falsey string
1122       A string represeting a value of ``False``. Acceptable values are
1123       ``f``, ``false``, ``n``, ``no``, ``off`` and ``0``.
231a53 1124
a7dd05 1125    pip
b61a8b 1126       The :term:`Python Packaging Authority`'s recommended tool for installing
SP 1127       Python packages.
ec1bbf 1128
SP 1129    pyvenv
b61a8b 1130       The :term:`Python Packaging Authority` formerly recommended using the
SP 1131       ``pyvenv`` command for `creating virtual environments on Python 3.4 and
1132       3.5
d60369 1133       <https://packaging.python.org/en/latest/installing/#creating-virtual-environments>`_,
b61a8b 1134       but it was deprecated in 3.6 in favor of ``python3 -m venv`` on UNIX or
83d7d9 1135       ``python -m venv`` on Windows, which is backward compatible on Python
SP 1136       3.3 and greater.
d60369 1137
d67566 1138    virtual environment
SP 1139       An isolated Python environment that allows packages to be installed for
1140       use by a particular application, rather than being installed system wide.
1141
d60369 1142    venv
b61a8b 1143       The :term:`Python Packaging Authority`'s recommended tool for creating
SP 1144       virtual environments on Python 3.3 and greater.
d67566 1145
SP 1146       Note: whenever you encounter commands prefixed with ``$VENV`` (Unix)
1147       or ``%VENV`` (Windows), know that that is the environment variable whose
1148       value is the root of the virtual environment in question.
b61a8b 1149
SP 1150    Python Packaging Authority
1151       The `Python Packaging Authority (PyPA) <https://www.pypa.io/en/latest/>`_
1152       is a working group that maintains many of the relevant projects in Python
e7b12f 1153       packaging.
SP 1154
1155    cookiecutter
1156       A command-line utility that creates projects from :ref:`cookiecutters <cookiecutter:readme>` (project templates), e.g., creating a Python package project from a Python package project template.
1157
1158       Pyramid cookiecutters include:
1159
1160       * `pyramid-cookiecutter-alchemy <https://github.com/Pylons/pyramid-cookiecutter-alchemy>`_
1161       * `pyramid-cookiecutter-starter <https://github.com/Pylons/pyramid-cookiecutter-starter>`_
1162       * `pyramid-cookiecutter-zodb <https://github.com/Pylons/pyramid-cookiecutter-zodb>`_
1163
1164       .. versionadded:: 1.8
1165
1166       .. seealso:: See also :term:`scaffold`.
1167
1168    coverage
1169       A measurement of code coverage, usually expressed as a percentage of which lines of code have been executed over which lines are executable, typically run during test execution.
0a0916 1170
0bee84 1171    execution policy
MM 1172       A policy which wraps the :term:`router` by creating the request object
1173       and sending it through the request pipeline.
1174       See :class:`pyramid.config.Configurator.set_execution_policy`.
f20a01 1175
C 1176    singleton
1177       A singleton is a class which will only ever have one instance.
1178       As there is only one, it is shared by all other code.
1179       This makes it an example of :term:`global state`.
1180
1181       Using a singleton is `considered a poor design choice. <https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil>`_
1182       As :term:`mutable` global state, it can be changed by any other code,
1183       and so the values it represents cannot be reasoned about or tested properly.
1184
1185    global state
1186       A set of values that are available to the entirety of a program.
1187
1188    mutable
1189       In Python, a value is mutable if it can be changed *in place*.
1190       The Python ``list`` and ``dict`` types are mutable.
1191       When a value is added to or removed from an instance of either, the original object remains.
1192       The opposite of mutable is :term:`immutable`.
1193
1194    immutable
1195       In Python, a value is immutable if it cannot be changed.
1196       The Python ``str``, ``int``, and ``tuple`` data types are all ``immutable``.
1197
1198    import time
1199       In Python, the moment when a module is referred to in an ``import`` statement.
1200       At this moment, all statements in that module at the module scope (at the left margin) are executed.
1201       It is a bad design decision to put statements in a Python module that have :term:`side effect`\ s at import time.
1202
1203    side effect
1204       A statement or function has a side effect when it changes a value outside its own scope.
1205       Put another way, if one can observe the change made by a function from outside that function, it has a side effect.