Chris McDonough
2015-03-18 e3e87ac4fde343683b1475c024de11ab1edcbb74
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
5c7bdc 10      A ``WebOb`` request object.  See :ref:`webob_chapter` (narrative)
CM 11      and :ref:`request_module` (API documentation) for information
12      about request objects.
bc857e 13
e25a70 14    request factory
CM 15      An object which, provided a WSGI environment as a single
16      positional argument, returns a ``WebOb`` compatible request.
17
8c56ae 18    response
d868ff 19      An object returned by a :term:`view callable` that represents response
CM 20      data returned to the requesting user agent.  It must implements the
21      :class:`pyramid.interfaces.IResponse` interface.  A response object is
22      typically an instance of the :class:`pyramid.response.Response` class or
23      a subclass such as :class:`pyramid.httpexceptions.HTTPFound`.  See
24      :ref:`webob_chapter` for information about response objects.
878328 25
CM 26    Repoze
7e7fc9 27      "Repoze" is essentially a "brand" of software developed by `Agendaless
CM 28      Consulting <http://agendaless.com>`_ and a set of contributors.  The
29      term has no special intrinsic meaning.  The project's `website
30      <http://repoze.org>`_ has more information.  The software developed
31      "under the brand" is available in a `Subversion repository
32      <http://svn.repoze.org>`_.  Pyramid was originally known as
33      :mod:`repoze.bfg`.
878328 34
8c56ae 35    setuptools
878328 36      `Setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_
CM 37      builds on Python's ``distutils`` to provide easier building,
38      distribution, and installation of libraries and applications.
39
40    pkg_resources
798aad 41      A module which ships with :term:`setuptools` that provides an API for
CM 42      addressing "asset files" within a Python :term:`package`.  Asset files
43      are static files, template files, etc; basically anything
44      non-Python-source that lives in a Python package can be considered a
45      asset file.  See also `PkgResources
878328 46      <http://peak.telecommunity.com/DevCenter/PkgResources>`_
CM 47
3e2f12 48    asset
878328 49      Any file contained within a Python :term:`package` which is *not*
CM 50      a Python source code file.
51
3e2f12 52    asset specification
a5ffd6 53      A colon-delimited identifier for an :term:`asset`.  The colon
878328 54      separates a Python :term:`package` name from a package subpath.
3e2f12 55      For example, the asset specification
878328 56      ``my.package:static/baz.css`` identifies the file named
CM 57      ``baz.css`` in the ``static`` subdirectory of the ``my.package``
2e3f70 58      Python :term:`package`.  See :ref:`asset_specifications` for more
b33ae9 59      info.
878328 60
8c56ae 61    package
878328 62      A directory on disk which contains an ``__init__.py`` file, making
CM 63      it recognizable to Python as a location which can be ``import`` -ed.
cdac6d 64      A package exists to contain :term:`module` files.
878328 65
798aad 66    module
CM 67      A Python source file; a file on the filesystem that typically ends with
2e3f70 68      the extension ``.py`` or ``.pyc``.  Modules often live in a
798aad 69      :term:`package`.
CM 70
8c56ae 71    project
878328 72      (Setuptools/distutils terminology). A directory on disk which
CM 73      contains a ``setup.py`` file and one or more Python packages.  The
74      ``setup.py`` file contains code that allows the package(s) to be
75      installed, distributed, and tested.
76
8c56ae 77    distribution
878328 78      (Setuptools/distutils terminology).  A file representing an
CM 79      installable library or application.  Distributions are usually
80      files that have the suffix of ``.egg``, ``.tar.gz``, or ``.zip``.
81      Distributions are the target of Setuptools commands such as
82      ``easy_install``.
83
8c56ae 84    entry point
878328 85      A :term:`setuptools` indirection, defined within a setuptools
CM 86      :term:`distribution` setup.py.  It is usually a name which refers
87      to a function somewhere in a package which is held by the
88      distribution.
89
8c56ae 90    dotted Python name
878328 91      A reference to a Python object by name using a string, in the form
CM 92      ``path.to.modulename:attributename``.  Often used in Paste and
c9c3c4 93      setuptools configurations.  A variant is used in dotted names within
CM 94      configurator method arguments that name objects (such as the "add_view"
95      method's "view" and "context" attributes): the colon (``:``) is not
878328 96      used; in its place is a dot.
CM 97
8c56ae 98    view
878328 99      Common vernacular for a :term:`view callable`.
CM 100
8c56ae 101    view callable
878328 102      A "view callable" is a callable Python object which is associated
CM 103      with a :term:`view configuration`; it returns a :term:`response`
104      object .  A view callable accepts a single argument: ``request``,
105      which will be an instance of a :term:`request` object.  An
106      alternate calling convention allows a view to be defined as a
107      callable which accepts a pair of arguments: ``context`` and
197f0c 108      ``request``: this calling convention is useful for
CM 109      traversal-based applications in which a :term:`context` is always
110      very important.  A view callable is the primary mechanism by
111      which a developer writes user interface code within
fd5ae9 112      :app:`Pyramid`.  See :ref:`views_chapter` for more information
CM 113      about :app:`Pyramid` view callables.
878328 114
8c56ae 115    view configuration
f7f0dd 116      View configuration is the act of associating a :term:`view callable`
CM 117      with configuration information.  This configuration information helps
118      map a given :term:`request` to a particular view callable and it can
119      influence the response of a view callable.  :app:`Pyramid` views can be
c9c3c4 120      configured via :term:`imperative configuration`, or by a special
CM 121      ``@view_config`` decorator coupled with a :term:`scan`.  See
f7f0dd 122      :ref:`view_config_chapter` for more information about view
CM 123      configuration.
878328 124
8c56ae 125    view name
878328 126      The "URL name" of a view, e.g ``index.html``.  If a view is
CM 127      configured without a name, its name is considered to be the empty
128      string (which implies the :term:`default view`).
129
130    Default view
a5ffd6 131      The default view of a :term:`resource` is the view invoked when the
CM 132      :term:`view name` is the empty string (``''``).  This is the case when
133      :term:`traversal` exhausts the path elements in the PATH_INFO of a
780999 134      request before it returns a :term:`context` resource.
878328 135
8c56ae 136    virtualenv
878328 137      An isolated Python environment.  Allows you to control which
CM 138      packages are used on a particular project by cloning your main
139      Python.  `virtualenv <http://pypi.python.org/pypi/virtualenv>`_
140      was created by Ian Bicking.
141
3e2f12 142    resource
a5ffd6 143      An object representing a node in the :term:`resource tree` of an
CM 144      application.  If :mod:`traversal` is used, a resource is an element in
145      the resource tree traversed by the system.  When traversal is used, a
146      resource becomes the :term:`context` of a :term:`view`.  If :mod:`url
147      dispatch` is used, a single resource is generated for each request and
780999 148      is used as the context resource of a view.
a5ffd6 149
CM 150    resource tree
151      A nested set of dictionary-like objects, each of which is a
152      :term:`resource`.  The act of :term:`traversal` uses the resource tree
780999 153      to find a :term:`context` resource.
a5ffd6 154
CM 155    domain model
156      Persistent data related to your application.  For example, data stored
157      in a relational database.  In some applications, the :term:`resource
158      tree` acts as the domain model.
878328 159
8c56ae 160    traversal
3e2f12 161      The act of descending "up" a tree of resource objects from a root
780999 162      resource in order to find a :term:`context` resource.  The
CM 163      :app:`Pyramid` :term:`router` performs traversal of resource objects
164      when a :term:`root factory` is specified.  See the
165      :ref:`traversal_chapter` chapter for more information.  Traversal can be
166      performed *instead* of :term:`URL dispatch` or can be combined *with*
167      URL dispatch.  See :ref:`hybrid_chapter` for more information about
168      combining traversal and URL dispatch (advanced).
878328 169
8c56ae 170    router
878328 171      The :term:`WSGI` application created when you start a
fd5ae9 172      :app:`Pyramid` application.  The router intercepts requests,
878328 173      invokes traversal and/or URL dispatch, calls view functions, and
CM 174      returns responses to the WSGI server on behalf of your
fd5ae9 175      :app:`Pyramid` application.
878328 176
CM 177    URL dispatch
3e2f12 178      An alternative to :term:`traversal` as a mechanism for locating a
780999 179      :term:`context` resource for a :term:`view`.  When you use a
CM 180      :term:`route` in your :app:`Pyramid` application via a :term:`route
878328 181      configuration`, you are using URL dispatch. See the
CM 182      :ref:`urldispatch_chapter` for more information.
183
8c56ae 184    context
a42a1e 185      A resource in the resource tree that is found during :term:`traversal`
780999 186      or :term:`URL dispatch` based on URL data; if it's found via traversal,
3e2f12 187      it's usually a :term:`resource` object that is part of a resource tree;
a42a1e 188      if it's found via :term:`URL dispatch`, it's an object manufactured on
780999 189      behalf of the route's "factory".  A context resource becomes the subject
CM 190      of a :term:`view`, and often has security information attached to
191      it.  See the :ref:`traversal_chapter` chapter and the
3e2f12 192      :ref:`urldispatch_chapter` chapter for more information about how a URL
780999 193      is resolved to a context resource.
878328 194
8c56ae 195    application registry
878328 196      A registry of configuration information consulted by
fd5ae9 197      :app:`Pyramid` while servicing an application.  An application
3e2f12 198      registry maps resource types to views, as well as housing other
878328 199      application-specific component registrations.  Every
fd5ae9 200      :app:`Pyramid` application has one (and only one) application
878328 201      registry.
CM 202
8c56ae 203    template
878328 204      A file with replaceable parts that is capable of representing some
CM 205      text, XML, or HTML when rendered.
206
8c56ae 207    location
a5ffd6 208      The path to an object in a :term:`resource tree`.  See
CM 209      :ref:`location_aware` for more information about how to make a resource
210      object *location-aware*.
878328 211
8c56ae 212    permission
3e2f12 213      A string or unicode object that represents an action being taken against
780999 214      a :term:`context` resource.  A permission is associated with a view name
CM 215      and a resource type by the developer.  Resources are decorated with
216      security declarations (e.g. an :term:`ACL`), which reference these
2e3f70 217      tokens also.  Permissions are used by the active security policy to
780999 218      match the view permission against the resources's statements about which
2e3f70 219      permissions are granted to which principal in a context in order to
780999 220      answer the question "is this user allowed to do this".  Examples of
CM 221      permissions: ``read``, or ``view_blog_entries``.
878328 222
a62cc2 223    default permission
CM 224      A :term:`permission` which is registered as the default for an
225      entire application.  When a default permission is in effect,
226      every :term:`view configuration` registered with the system will
227      be effectively amended with a ``permission`` argument that will
228      require that the executing user possess the default permission in
229      order to successfully execute the associated :term:`view
230      callable` See also :ref:`setting_a_default_permission`.
231
878328 232    ACE
CM 233      An *access control entry*.  An access control entry is one element
234      in an :term:`ACL`.  An access control entry is a three-tuple that
235      describes three things: an *action* (one of either ``Allow`` or
236      ``Deny``), a :term:`principal` (a string describing a user or
237      group), and a :term:`permission`.  For example the ACE, ``(Allow,
238      'bob', 'read')`` is a member of an ACL that indicates that the
239      principal ``bob`` is allowed the permission ``read`` against the
780999 240      resource the ACL is attached to.
878328 241
CM 242    ACL
780999 243      An *access control list*.  An ACL is a sequence of :term:`ACE` tuples.
CM 244      An ACL is attached to a resource instance.  An example of an ACL is ``[
245      (Allow, 'bob', 'read'), (Deny, 'fred', 'write')]``.  If an ACL is
246      attached to a resource instance, and that resource is findable via the
247      context resource, it will be consulted any active security policy to
248      determine wither a particular request can be fulfilled given the
249      :term:`authentication` information in the request.
878328 250
8c56ae 251    authentication
c5f24b 252      The act of determining that the credentials a user presents
CM 253      during a particular request are "good".  Authentication in
fd5ae9 254      :app:`Pyramid` is performed via an :term:`authentication
878328 255      policy`.
CM 256
8c56ae 257    authorization
780999 258      The act of determining whether a user can perform a specific action.  In
CM 259      pyramid terms, this means determining whether, for a given resource, any
260      :term:`principal` (or principals) associated with the request have the
261      requisite :term:`permission` to allow the request to continue.
262      Authorization in :app:`Pyramid` is performed via its
263      :term:`authorization policy`.
878328 264
8c56ae 265    principal
878328 266      A *principal* is a string or unicode object representing a userid
CM 267      or a group id.  It is provided by an :term:`authentication
268      policy`.  For example, if a user had the user id "bob", and Bob
269      was part of two groups named "group foo" and "group bar", the
270      request might have information attached to it that would
719a93 271      indicate that Bob was represented by three principals: "bob",
878328 272      "group foo" and "group bar".
CM 273
8c56ae 274    authorization policy
fd5ae9 275      An authorization policy in :app:`Pyramid` terms is a bit of
878328 276      code which has an API which determines whether or not the
CM 277      principals associated with the request can perform an action
278      associated with a permission, based on the information found on the
780999 279      :term:`context` resource.
878328 280
8c56ae 281    authentication policy
fd5ae9 282      An authentication policy in :app:`Pyramid` terms is a bit of
878328 283      code which has an API which determines the current
CM 284      :term:`principal` (or principals) associated with a request.
285
286    WSGI
287      `Web Server Gateway Interface <http://wsgi.org/>`_.  This is a
288      Python standard for connecting web applications to web servers,
7138ca 289      similar to the concept of Java Servlets.  :app:`Pyramid` requires
878328 290      that your application be served as a WSGI application.
CM 291
8c56ae 292    middleware
878328 293      *Middleware* is a :term:`WSGI` concept.  It is a WSGI component
CM 294      that acts both as a server and an application.  Interesting uses
295      for middleware exist, such as caching, content-transport
296      encoding, and other functions.  See `WSGI.org <http://wsgi.org>`_
297      or `PyPI <http://python.org/pypi>`_ to find middleware for your
298      application.
299
8c56ae 300    pipeline
878328 301      The :term:`Paste` term for a single configuration of a WSGI
CM 302      server, a WSGI application, with a set of middleware in-between.
303
304    Zope
305      `The Z Object Publishing Framework <http://zope.org>`_, a
306      full-featured Python web framework.
307
308    Grok
309      `A web framework based on Zope 3 <http://grok.zope.org>`_.
310
311    Django
312      `A full-featured Python web framework <http://djangoproject.com>`_.
313
314    Pylons
7e7fc9 315      `A lightweight Python web framework <http://pylonshq.com>`_ and a
CM 316      predecessor of Pyramid.
878328 317
CM 318    ZODB
2279a5 319       `Zope Object Database <http://zodb.org>`_, a
878328 320       persistent Python object store.
CM 321
322    ZEO
323       `Zope Enterprise Objects
324       <http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/ZEO.stx>`_
325       allows multiple simultaneous processes to access a single
326       :term:`ZODB` database.
327
328    WebOb
e005c2 329      `WebOb <http://webob.org>`_ is a WSGI request/response
878328 330      library created by Ian Bicking.
CM 331
332    Paste
333      `Paste <http://pythonpaste.org>`_ is a WSGI development and
334      deployment system developed by Ian Bicking.
335
336    PasteDeploy
337      `PasteDeploy <http://pythonpaste.org>`_ is a library used by
fd5ae9 338      :app:`Pyramid` which makes it possible to configure
878328 339      :term:`WSGI` components together declaratively within an ``.ini``
CM 340      file.  It was developed by Ian Bicking as part of :term:`Paste`.
341
342    Chameleon
343      `chameleon <http://chameleon.repoze.org>`_ is an attribute
344      language template compiler which supports both the :term:`ZPT` and
345      :term:`Genshi` templating specifications.  It is written and
346      maintained by Malthe Borch.  It has several extensions, such as
347      the ability to use bracketed (Genshi-style) ``${name}`` syntax,
348      even within ZPT.  It is also much faster than the reference
fd5ae9 349      implementations of both ZPT and Genshi.  :app:`Pyramid` offers
878328 350      Chameleon templating out of the box in ZPT and text flavors.
CM 351
352    ZPT
353      The `Zope Page Template <http://wiki.zope.org/ZPT/FrontPage>`_
354      templating language.
355
356    METAL
357      `Macro Expansion for TAL <http://wiki.zope.org/ZPT/METAL>`_, a
358      part of :term:`ZPT` which makes it possible to share common look
2e3f70 359      and feel between templates.
878328 360
CM 361    Genshi
362      An `XML templating language <http://pypi.python.org/pypi/Genshi/>`_
363      by Christopher Lenz.
364
365    Jinja2
2e3f70 366      A `text templating language <http://jinja.pocoo.org/2/>`_ by Armin
878328 367      Ronacher.
CM 368
369    Routes
370      A `system by Ben Bangert <http://routes.groovie.org/>`_ which
371      parses URLs and compares them against a number of user defined
fd5ae9 372      mappings. The URL pattern matching syntax in :app:`Pyramid` is
878328 373      inspired by the Routes syntax (which was inspired by Ruby On
CM 374      Rails pattern syntax).
375
8c56ae 376    route
878328 377      A single pattern matched by the :term:`url dispatch` subsystem,
CM 378      which generally resolves to a :term:`root factory` (and then
379      ultimately a :term:`view`).  See also :term:`url dispatch`.
380
8c56ae 381    route configuration
c9c3c4 382      Route configuration is the act of associating request parameters with a
CM 383      particular :term:`route` using pattern matching and :term:`route
384      predicate` statements.  See :ref:`urldispatch_chapter` for more
385      information about route configuration.
878328 386
CM 387    Zope Component Architecture
388      The `Zope Component Architecture
389      <http://www.muthukadan.net/docs/zca.html>`_ (aka ZCA) is a system
390      which allows for application pluggability and complex dispatching
391      based on objects which implement an :term:`interface`.
fd5ae9 392      :app:`Pyramid` uses the ZCA "under the hood" to perform view
878328 393      dispatching and other application configuration tasks.
CM 394
8c56ae 395    reStructuredText
878328 396      A `plain text format <http://docutils.sourceforge.net/rst.html>`_
CM 397      that is the defacto standard for descriptive text shipped in
398      :term:`distribution` files, and Python docstrings.  This
399      documentation is authored in ReStructuredText format.
400
8c56ae 401    root
780999 402      The object at which :term:`traversal` begins when :app:`Pyramid`
CM 403      searches for a :term:`context` resource (for :term:`URL Dispatch`, the
2e3f70 404      root is *always* the context resource unless the ``traverse=`` argument
780999 405      is used in route configuration).
878328 406
8c56ae 407    subpath
878328 408      A list of element "left over" after the :term:`router` has
CM 409      performed a successful traversal to a view.  The subpath is a
410      sequence of strings, e.g. ``['left', 'over', 'names']``.  Within
edd915 411      Pyramid applications that use URL dispatch rather than traversal, you
878328 412      can use ``*subpath`` in the route pattern to influence the
CM 413      subpath.  See :ref:`star_subpath` for more information.
414
8c56ae 415    interface
878328 416      A `Zope interface <http://pypi.python.org/pypi/zope.interface>`_
fd5ae9 417      object.  In :app:`Pyramid`, an interface may be attached to a
3e2f12 418      :term:`resource` object or a :term:`request` object in order to
878328 419      identify that the object is "of a type".  Interfaces are used
fd5ae9 420      internally by :app:`Pyramid` to perform view lookups and other
878328 421      policy lookups.  The ability to make use of an interface is
CM 422      exposed to an application programmers during :term:`view
eecdbc 423      configuration` via the ``context`` argument, the ``request_type``
878328 424      argument and the ``containment`` argument.  Interfaces are also
CM 425      exposed to application developers when they make use of the
fd5ae9 426      :term:`event` system. Fundamentally, :app:`Pyramid`
eecdbc 427      programmers can think of an interface as something that they can
CM 428      attach to an object that stamps it with a "type" unrelated to its
429      underlying Python type.  Interfaces can also be used to describe
430      the behavior of an object (its methods and attributes), but
fd5ae9 431      unless they choose to, :app:`Pyramid` programmers do not need
eecdbc 432      to understand or use this feature of interfaces.
878328 433
8c56ae 434    event
878328 435      An object broadcast to zero or more :term:`subscriber` callables
fd5ae9 436      during normal :app:`Pyramid` system operations during the
878328 437      lifetime of an application.  Application code can subscribe to
CM 438      these events by using the subscriber functionality described in
439      :ref:`events_chapter`.
440
8c56ae 441    subscriber
878328 442      A callable which receives an :term:`event`.  A callable becomes a
c9c3c4 443      subscriber via :term:`imperative configuration` or via
CM 444      :term:`configuration decoration`.  See :ref:`events_chapter` for more
445      information.
878328 446
8c56ae 447    request type
878328 448      An attribute of a :term:`request` that allows for specialization
CM 449      of view invocation based on arbitrary categorization.  The every
fd5ae9 450      :term:`request` object that :app:`Pyramid` generates and
878328 451      manipulates has one or more :term:`interface` objects attached to
CM 452      it.  The default interface attached to a request object is
197f0c 453      ``pyramid.interfaces.IRequest``.
878328 454
CM 455    repoze.lemonade
456      Zope2 CMF-like `data structures and helper facilities
457      <http://docs.repoze.org/lemonade>`_ for CA-and-ZODB-based
fd5ae9 458      applications useful within :app:`Pyramid` applications.
878328 459
CM 460    repoze.catalog
461      An indexing and search facility (fielded and full-text) based on
462      `zope.index <http://pypi.python.org/pypi/zope.index>`_.  See `the
463      documentation <http://docs.repoze.org/catalog>`_ for more
3e4f42 464      information.
878328 465
CM 466    repoze.who
467      `Authentication middleware <http://docs.repoze.org/who>`_ for
fd5ae9 468      :term:`WSGI` applications.  It can be used by :app:`Pyramid` to
878328 469      provide authentication information.
CM 470
471    repoze.workflow
472      `Barebones workflow for Python apps
473      <http://docs.repoze.org/workflow>`_ .  It can be used by
fd5ae9 474      :app:`Pyramid` to form a workflow system.
878328 475
8c56ae 476    virtual root
3e2f12 477      A resource object representing the "virtual" root of a request; this
878328 478      is typically the physical root object (the object returned by the
CM 479      application root factory) unless :ref:`vhosting_chapter` is in
480      use.
481
8c56ae 482    lineage
780999 483      An ordered sequence of objects based on a ":term:`location` -aware"
CM 484      resource.  The lineage of any given :term:`resource` is composed of
485      itself, its parent, its parent's parent, and so on.  The order of the
486      sequence is resource-first, then the parent of the resource, then its
487      parent's parent, and so on.  The parent of a resource in a lineage is
488      available as its ``__parent__`` attribute.
878328 489
8c56ae 490    root factory
a42a1e 491      The "root factory" of a :app:`Pyramid` application is called
878328 492      on every request sent to the application.  The root factory
CM 493      returns the traversal root of an application.  It is
494      conventionally named ``get_root``.  An application may supply a
fd5ae9 495      root factory to :app:`Pyramid` during the construction of a
878328 496      :term:`Configurator`.  If a root factory is not supplied, the
CM 497      application uses a default root object.  Use of the default root
498      object is useful in application which use :term:`URL dispatch` for
499      all URL-to-view code mappings.
500
501    SQLAlchemy
7e7fc9 502      `SQLAlchemy <http://www.sqlalchemy.org/>`_ is an object
878328 503      relational mapper used in tutorials within this documentation.
CM 504
505    JSON
506      `JavaScript Object Notation <http://www.json.org/>`_ is a data
507      serialization format.
508
6a0602 509    jQuery
CM 510      A popular `Javascript library <http://jquery.org>`_.
511
8c56ae 512    renderer
1de5ec 513      A serializer that can be referred to via :term:`view
410457 514      configuration` which converts a non-:term:`Response` return
CM 515      values from a :term:`view` into a string (and ultimately a
516      response).  Using a renderer can make writing views that require
517      templating or other serialization less tedious.  See
878328 518      :ref:`views_which_use_a_renderer` for more information.
CM 519
410457 520    renderer factory
CM 521      A factory which creates a :term:`renderer`.  See
522      :ref:`adding_and_overriding_renderers` for more information.
523
878328 524    mod_wsgi
CM 525      `mod_wsgi <http://code.google.com/p/modwsgi/>`_ is an Apache
526      module developed by Graham Dumpleton.  It allows :term:`WSGI`
527      applications (such as applications developed using
fd5ae9 528      :app:`Pyramid`) to be served using the Apache web server.
878328 529
8c56ae 530    view predicate
878328 531      An argument to a :term:`view configuration` which evaluates to
CM 532      ``True`` or ``False`` for a given :term:`request`.  All predicates
533      attached to a view configuration must evaluate to true for the
534      associated view to be considered as a possible callable for a
535      given request.
536
8c56ae 537    route predicate
878328 538      An argument to a :term:`route configuration` which implies a value
CM 539      that evaluates to ``True`` or ``False`` for a given
540      :term:`request`.  All predicates attached to a :term:`route
541      configuration` must evaluate to ``True`` for the associated route
542      to "match" the current request.  If a route does not match the
543      current request, the next route (in definition order) is
544      attempted.
545
49eccc 546    routes mapper
CM 547      An object which compares path information from a request to an
548      ordered set of route patterns.  See :ref:`urldispatch_chapter`.
549
8c56ae 550    predicate
878328 551      A test which returns ``True`` or ``False``.  Two different types
fd5ae9 552      of predicates exist in :app:`Pyramid`: a :term:`view predicate`
878328 553      and a :term:`route predicate`.  View predicates are attached to
CM 554      :term:`view configuration` and route predicates are attached to
555      :term:`route configuration`.
556
8c56ae 557    decorator
878328 558      A wrapper around a Python function or class which accepts the
CM 559      function or class as its first argument and which returns an
fd5ae9 560      arbitrary object.  :app:`Pyramid` provides several decorators,
878328 561      used for configuration and return value modification purposes.  See
CM 562      also `PEP 318 <http://www.python.org/dev/peps/pep-0318/>`_.
563
8c56ae 564    configuration declaration
c9c3c4 565      An individual method call made to an instance of a :app:`Pyramid`
CM 566      :term:`Configurator` object which performs an arbitrary action, such as
567      registering a :term:`view configuration` (via the ``add_view`` method of
568      the configurator) or :term:`route configuration` (via the ``add_route``
569      method of the configurator).  A set of configuration declarations is
570      also implied by the :term:`configuration decoration` detected by a
571      :term:`scan` of code in a package.
878328 572
8c56ae 573    configuration decoration
878328 574      Metadata implying one or more :term:`configuration declaration`
CM 575      invocations.  Often set by configuration Python :term:`decorator`
197f0c 576      attributes, such as :class:`pyramid.view.view_config`, aka
CM 577      ``@view_config``.
878328 578
8c56ae 579    scan
fd5ae9 580      The term used by :app:`Pyramid` to define the process of
878328 581      importing and examining all code in a Python package or module for
CM 582      :term:`configuration decoration`.
583
8c56ae 584    configurator
878328 585      An object used to do :term:`configuration declaration` within an
CM 586      application.  The most common configurator is an instance of the
d7f259 587      ``pyramid.config.Configurator`` class.
878328 588
8c56ae 589    imperative configuration
878328 590      The configuration mode in which you use Python to call methods on
CM 591      a :term:`Configurator` in order to add each :term:`configuration
592      declaration` required by your application.
593
8c56ae 594    declarative configuration
4e1199 595      The configuration mode in which you use the combination of
3cf66a 596      :term:`configuration decoration` and a :term:`scan` to configure your
CM 597      Pyramid application.
878328 598
8c56ae 599    Not Found view
fd5ae9 600       An :term:`exception view` invoked by :app:`Pyramid` when the
99edc5 601       developer explicitly raises a ``pyramid.httpexceptions.HTTPNotFound``
239a93 602       exception from within :term:`view` code or :term:`root factory`
CM 603       code, or when the current request doesn't match any :term:`view
fd5ae9 604       configuration`.  :app:`Pyramid` provides a default
239a93 605       implementation of a not found view; it can be overridden.  See
878328 606       :ref:`changing_the_notfound_view`.
CM 607
8c56ae 608    Forbidden view
fd5ae9 609       An :term:`exception view` invoked by :app:`Pyramid` when the
878328 610       developer explicitly raises a
99edc5 611       ``pyramid.httpexceptions.HTTPForbidden`` exception from within
c5f24b 612       :term:`view` code or :term:`root factory` code, or when the
239a93 613       :term:`view configuration` and :term:`authorization policy`
CM 614       found for a request disallows a particular view invocation.
fd5ae9 615       :app:`Pyramid` provides a default implementation of a
878328 616       forbidden view; it can be overridden.  See
CM 617       :ref:`changing_the_forbidden_view`.
618
239a93 619    Exception view
CM 620       An exception view is a :term:`view callable` which may be
fd5ae9 621       invoked by :app:`Pyramid` when an exception is raised during
239a93 622       request processing.  See :ref:`exception_views` for more
CM 623       information.
624
1ffb8e 625    HTTP Exception
CM 626       The set of exception classes defined in :mod:`pyramid.httpexceptions`.
627       These can be used to generate responses with various status codes when
628       raised or returned from a :term:`view callable`.  See also
629       :ref:`http_exceptions`.
878328 630
CM 631    thread local
7e7fc9 632       A thread-local variable is one which is essentially a global variable
CM 633       in terms of how it is accessed and treated, however, each `thread
634       <http://en.wikipedia.org/wiki/Thread_(computer_science)>`_ used by the
635       application may have a different value for this same "global" variable.
636       :app:`Pyramid` uses a small number of thread local variables, as
637       described in :ref:`threadlocals_chapter`. See also the `threading.local
638       documentation
639       <http://docs.python.org/library/threading.html#threading.local>`_ for
640       more information.
e4e3aa 641
8c56ae 642    multidict
2a1c3f 643      An ordered dictionary that can have multiple values for each key. Adds
CM 644      the methods ``getall``, ``getone``, ``mixed``, ``add`` and
645      ``dict_of_lists`` to the normal dictionary interface.  See
646      :ref:`multidict_narr` and :class:`pyramid.interfaces.IMultiDict`.
e4e3aa 647
125e97 648    PyPI
CM 649      `The Python Package Index <http://pypi.python.org/pypi>`_, a
650      collection of software available for Python.
e0887e 651
CM 652    Agendaless Consulting
653      A consulting organization formed by Paul Everitt, Tres Seaver,
654      and Chris McDonough.  See also http://agendaless.com .
9ec2d6 655
CM 656    Jython
7e7fc9 657      A `Python implementation <http://www.jython.org/>`_ written for
9ec2d6 658      the Java Virtual Machine.
CM 659
660    Python
7e7fc9 661      The `programming language <http://python.org>`_ in which
fd5ae9 662      :app:`Pyramid` is written.
9ec2d6 663
CM 664    CPython
665      The C implementation of the Python language.  This is the
666      reference implementation that most people refer to as simply
667      "Python"; :term:`Jython`, Google's App Engine, and `PyPy
668      <http://codespeak.net/pypy/dist/pypy/doc/>`_ are examples of
669      non-C based Python implementations.
590fe7 670
CM 671    View Lookup
672      The act of finding and invoking the "best" :term:`view callable`
780999 673      given a :term:`request` and a :term:`context` resource.
590fe7 674
780999 675    Resource Location
CM 676      The act of locating a :term:`context` resource given a :term:`request`.
677      :term:`Traversal` and :term:`URL dispatch` are the resource location
678      subsystems used by :app:`Pyramid`.
590fe7 679
abf62d 680    Google App Engine
CM 681      `Google App Engine <http://code.google.com/appengine/>`_ (aka
682      "GAE") is a Python application hosting service offered by Google.
fd5ae9 683      :app:`Pyramid` runs on GAE.
abf62d 684
e6fa66 685    Venusian
CM 686      `Venusian <http://docs.repoze.org/venusian>`_ is a library which
687      allows framework authors to defer decorator actions.  Instead of
688      taking actions when a function (or class) decorator is executed
689      at import time, the action usually taken by the decorator is
fd5ae9 690      deferred until a separate "scan" phase.  :app:`Pyramid` relies
e6fa66 691      on Venusian to provide a basis for its :term:`scan` feature.
7534ba 692
CM 693    Translation String
197f0c 694      An instance of :class:`pyramid.i18n.TranslationString`, which
7534ba 695      is a class that behaves like a Unicode string, but has several
CM 696      extra attributes such as ``domain``, ``msgid``, and ``mapping``
697      for use during translation.  Translation strings are usually
698      created by hand within software, but are sometimes created on the
699      behalf of the system for automatic template translation.  For
700      more information, see :ref:`i18n_chapter`.
701
702    Translation Domain
703      A string representing the "context" in which a translation was
704      made.  For example the word "java" might be translated
705      differently if the translation domain is "programming-languages"
706      than would be if the translation domain was "coffee".  A
707      translation domain is represnted by a collection of ``.mo`` files
708      within one or more :term:`translation directory` directories.
709
710    Translator
711      A callable which receives a :term:`translation string` and
712      returns a translated Unicode object for the purposes of
713      internationalization.  A :term:`localizer` supplies a
fd5ae9 714      translator to a :app:`Pyramid` application accessible via its
7534ba 715      ``translate`` method.
CM 716
717    Translation Directory
718      A translation directory is a :term:`gettext` translation
719      directory.  It contains language folders, which themselves
720      contain ``LC_MESSAGES`` folders, which contain ``.mo`` files.
721      Each ``.mo`` file represents a set of translations for a language
722      in a :term:`translation domain`.  The name of the ``.mo`` file
723      (minus the .mo extension) is the translation domain name.
724
725    Localizer
197f0c 726      An instance of the class :class:`pyramid.i18n.Localizer` which
7534ba 727      provides translation and pluralization services to an
CM 728      application.  It is retrieved via the
197f0c 729      :func:`pyramid.i18n.get_localizer` function.
7534ba 730
CM 731    Locale Name
732      A string like ``en``, ``en_US``, ``de``, or ``de_AT`` which
733      uniquely identifies a particular locale.
734
b5dc7f 735    Default Locale Name
CM 736      The :term:`locale name` used by an application when no explicit
737      locale name is set.  See :ref:`localization_deployment_settings`.
738
7534ba 739    Locale Negotiator
CM 740      An object supplying a policy determining which :term:`locale
741      name` best represents a given :term:`request`.  It is used by the
197f0c 742      :func:`pyramid.i18n.get_locale_name`, and
CM 743      :func:`pyramid.i18n.negotiate_locale_name` functions, and
744      indirectly by :func:`pyramid.i18n.get_localizer`.  The
745      :func:`pyramid.i18n.default_locale_negotiator` function
7534ba 746      is an example of a locale negotiator.
CM 747
748    Gettext
749      The GNU `gettext <http://www.gnu.org/software/gettext/>`_
fd5ae9 750      library, used by the :app:`Pyramid` translation machinery.
7534ba 751
CM 752    Babel
753      A `collection of tools <http://babel.edgewall.org/>`_ for
fd5ae9 754      internationalizing Python applications.  :app:`Pyramid` does
7534ba 755      not depend on Babel to operate, but if Babel is installed,
CM 756      additional locale functionality becomes available to your
757      application.
758
5119ae 759    Lingua
c2db17 760      A package by Wichert Akkerman which provides :term:`Babel` message
5119ae 761      extractors for Python source files and Chameleon ZPT template files.
CM 762
7534ba 763    Message Identifier
CM 764      A string used as a translation lookup key during localization.
765      The ``msgid`` argument to a :term:`translation string` is a
766      message identifier.  Message identifiers are also present in a
767      :term:`message catalog`.
768
769    Message Catalog
770      A :term:`gettext` ``.mo`` file containing translations.
771
df3beb 772    Internationalization
CM 773      The act of creating software with a user interface that can
774      potentially be displayed in more than one language or cultural
775      context.  Often shortened to "i18n" (because the word
776      "internationalization" is I, 18 letters, then N).  See also:
777      :term:`Localization`.
7534ba 778
df3beb 779    Localization
CM 780      The process of displaying the user interface of an
781      internationalized application in a particular language or
782      cultural context.  Often shortened to "l10" (because the word
783      "localization" is L, 10 letters, then N).  See also:
784      :term:`Internationalization`.
250c02 785
CM 786    renderer globals
787       Values injected as names into a renderer based on application
788       policy.  See :ref:`adding_renderer_globals` for more
789       information.
81d3b5 790
CM 791    response callback
792       A user-defined callback executed by the :term:`router` at a
793       point after a :term:`response` object is successfully created.
794       See :ref:`using_response_callbacks`.
795
796    finished callback
797       A user-defined callback executed by the :term:`router`
798       unconditionally at the very end of request processing .  See
799       :ref:`using_finished_callbacks`.
70f1cd 800
CM 801    pregenerator
802       A pregenerator is a function associated by a developer with a
197f0c 803       :term:`route`.  It is called by :func:`pyramid.url.route_url`
70f1cd 804       in order to adjust the set of arguments passed to it by the user
CM 805       for special purposes.  It will influence the URL returned by
806       ``route_url``.  See
197f0c 807       :class:`pyramid.interfaces.IRoutePregenerator` for more
70f1cd 808       information.
04ebd5 809
CM 810    session
811       A namespace that is valid for some period of continual activity
812       that can be used to represent a user's interaction with a web
813       application.
814
815    session factory
816       A callable, which, when called with a single argument named
817       ``request`` (a :term:`request` object), returns a
818       :term:`session` object.
819
7698bd 820    Mako
BB 821      `Mako <http://www.makotemplates.org/>`_ is a template language language
822      which refines the familiar ideas of componentized layout and inheritance
823      using Python with Python scoping and calling semantics.
2f980d 824
CM 825    View handler
826      A view handler ties together
d7f259 827      :meth:`pyramid.config.Configurator.add_route` and
2323d4 828      :meth:`pyramid.config.Configurator.add_view` to make it more convenient
CM 829      to register a collection of views as a single class when using
830      :term:`url dispatch`.  View handlers ship as part of the
831      :term:`pyramid_handlers` add-on package.
a1365e 832
CM 833    Deployment settings
834      Deployment settings are settings passed to the :term:`Configurator` as a
835      ``settings`` argument.  These are later accessible via a
836      ``request.registry.settings`` dictionary.  Deployment settings can be
837      used as global application values.
838
6ee49a 839    WebTest
CM 840      `WebTest <http://pythonpaste.org/webtest/>`_ is a package which can help
841      you write functional tests for your WSGI application.
842
53901d 843    WebError
CM 844      WSGI middleware which can display debuggable traceback information in
845      the browser when an exception is raised by a Pyramid application.  See
846      http://pypi.python.org/pypi/WebError .
847
80aa77 848    view mapper
CM 849     A view mapper is a class which implements the
850     :class:`pyramid.interfaces.IViewMapperFactory` interface, which performs
851     view argument and return value mapping.  This is a plug point for
852     extension builders, not normally used by "civilians".
6ee49a 853
5653d1 854    matchdict
CM 855     The dictionary attached to the :term:`request` object as
856     ``request.matchdict`` when a :term:`URL dispatch` route has been matched.
857     Its keys are names as identified within the route pattern; its values are
858     the values matched by each pattern name.
c9c3c4 859
CM 860    pyramid_zcml
861      An add-on package to :app:`Pyramid` which allows applications to be
862      configured via ZCML.  It is available on :term:`PyPI`.  If you use
863      ``pyramid_zcml``, you can use ZCML as an alternative to
864      :term:`imperative configuration`.
865
866    ZCML
867      `Zope Configuration Markup Language
868      <http://www.muthukadan.net/docs/zca.html#zcml>`_, an XML dialect
2e3f70 869      used by Zope and :term:`pyramid_zcml` for configuration tasks.
c9c3c4 870
CM 871    ZCML directive
872      A ZCML "tag" such as ``<view>`` or ``<route>``.
873
874    ZCML declaration
875      The concrete use of a :term:`ZCML directive` within a ZCML file.
876
78fe62 877    pyramid_handlers
CM 878      An add-on package which allows :app:`Pyramid` users to create classes
879      that are analogues of Pylons 1 "controllers".  See
7e7fc9 880      http://docs.pylonsproject.org/projects/pyramid_handlers/dev/ .
78fe62 881
2323d4 882    pyramid_jinja2
CM 883      :term:`Jinja2` templating system bindings for Pyramid, documented at
884      http://docs.pylonsproject.org/projects/pyramid_jinja2/dev/ .  This
758464 885      package also includes a scaffold named
2323d4 886      ``pyramid_jinja2_starter``, which creates an application package based
CM 887      on the Jinja2 templating system.
888
0eb82e 889    Akhet
CM 890      Akhet is a Pyramid-based development environment which provides a
891      Pylons-esque scaffold which sports support for :term:`view handler`
892      application development, :term:`SQLAlchemy` support, :term:`Mako`
893      templating by default, and other Pylons-like features.  See
894      http://docs.pylonsproject.org/projects/akhet/dev/index.html for more
2323d4 895      information.
CM 896
4cf41f 897    Pyramid Cookbook
7e7fc9 898      An additional documentation resource for Pyramid which presents topical,
CM 899      practical usages of Pyramid available via
900      http://docs.pylonsproject.org/ .
4cf41f 901
ff3ba5 902    distutils
CM 903      The standard system for packaging and distributing Python packages.  See
904      http://docs.python.org/distutils/index.html for more information.
905      :term:`setuptools` is actually an *extension* of the Distutils.
906
df15ed 907    exception response
CM 908      A :term:`response` that is generated as the result of a raised exception
909      being caught by an :term:`exception view`.
2323d4 910
f98925 911    PyPy
CM 912      PyPy is an "alternative implementation of the Python
913      language":http://pypy.org/
914