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