summaryrefslogtreecommitdiff
path: root/docs/glossary.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/glossary.rst')
-rw-r--r--docs/glossary.rst1120
1 files changed, 601 insertions, 519 deletions
diff --git a/docs/glossary.rst b/docs/glossary.rst
index b2a211113..f9cd79929 100644
--- a/docs/glossary.rst
+++ b/docs/glossary.rst
@@ -1,526 +1,608 @@
.. _glossary:
-============================
Glossary
-============================
+========
.. glossary::
+ :sorted:
- Request
- A ``WebOb`` request object. See :ref:`webob_chapter` for
- information about request objects.
- Response
- An object that has three attributes: ``app_iter`` (representing an
- iterable body), ``headerlist`` (representing the http headers sent
- to the user agent), and ``status`` (representing the http status
- string sent to the user agent). This is the interface defined for
- ``WebOb`` response objects. See :ref:`webob_chapter` for
- information about response objects.
- Repoze
- "Repoze" is essentially a "brand" of software developed by
- `Agendaless Consulting <http://agendaless.com>`_ and a set of
- contributors. The term has no special intrinsic meaning. The
- project's `website <http://repoze.org>`_ has more information.
- The software developed "under the brand" is available in a
- `Subversion repository <http://svn.repoze.org>`_.
- Setuptools
- `Setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_
- builds on Python's ``distutils`` to provide easier building,
- distribution, and installation of libraries and applications.
- pkg_resources
- A module which ships with :term:`setuptools` that provides an API
- for addressing "resource files" within Python packages. Resource
- files are static files, template files, etc; basically anything
- non-Python-source that lives in a Python package can be considered
- a resource file. See also `PkgResources
- <http://peak.telecommunity.com/DevCenter/PkgResources>`_
- Resource
- Any file contained within a Python :term:`package` which is *not*
- a Python source code file.
- Resource Specification
- A colon-delimited identifier for a :term:`resource`. The colon
- separates a Python :term:`package` name from a package subpath.
- For example, the resource specification
- ``my.package:static/baz.css`` identifies the file named
- ``baz.css`` in the ``static`` subdirectory of the ``my.package``
- Python :term:`package`.
- Package
- A directory on disk which contains an ``__init__.py`` file, making
- it recognizable to Python as a location which can be ``import`` -ed.
- Project
- (Setuptools/distutils terminology). A directory on disk which
- contains a ``setup.py`` file and one or more Python packages. The
- ``setup.py`` file contains code that allows the package(s) to be
- installed, distributed, and tested.
- Distribution
- (Setuptools/distutils terminology). A file representing an
- installable library or application. Distributions are usually
- files that have the suffix of ``.egg``, ``.tar.gz``, or ``.zip``.
- Distributions are the target of Setuptools commands such as
- ``easy_install``.
- Entry Point
- A :term:`setuptools` indirection, defined within a setuptools
- :term:`distribution` setup.py. It is usually a name which refers
- to a function somewhere in a package which is held by the
- distribution.
- Dotted Python name
- A reference to a Python object by name using a string, in the form
- ``path.to.modulename:attributename``. Often used in Paste and
- setuptools configurations. A variant is used in dotted names
- within :term:`ZCML` attributes that name objects (such as the ZCML
- "view" directive's "view" attribute): the colon (``:``) is not
- used; in its place is a dot.
- View
- Common vernacular for a :term:`view callable`.
- View Callable
- A "view callable" is a callable Python object which is associated
- with a :term:`view configuration`; it returns a :term:`response`
- object . A view callable accepts a single argument: ``request``,
- which will be an instance of a :term:`request` object. An
- alternate calling convention allows a view to be defined as a
- callable which accepts a pair of arguments: ``context`` and
- ``request``: this calling convention is useful for traversal-based
- applications in which a :term:`context` is always very important. A
- view callable is the primary mechanism by which a developer writes
- user interface code within :mod:`repoze.bfg`. See
- :ref:`views_chapter` for more information about :mod:`repoze.bfg`
- view callables.
- View Configuration
- View configuration is the act of associating a :term:`view
- callable` with configuration information. This configuration
- information helps map a given :term:`request` to a particular view
- callable and it can influence the response of a view callable.
- :mod:`repoze.bfg` views can be configured via :term:`imperative
- configuration`, :term:`ZCML` or by a special ``@bfg_view``
- decorator coupled with a :term:`scan`. See :ref:`views_chapter`
- for more information about view configuration.
- View name
- The "URL name" of a view, e.g ``index.html``. If a view is
- configured without a name, its name is considered to be the empty
- string (which implies the :term:`default view`).
- Default view
- The default view of a model is the view invoked when the
- :term:`view name` is the empty string (``''``). This is the case
- when :term:`traversal` exhausts the path elements in the PATH_INFO
- of a request before it returns a :term:`context`.
- Virtualenv
- An isolated Python environment. Allows you to control which
- packages are used on a particular project by cloning your main
- Python. `virtualenv <http://pypi.python.org/pypi/virtualenv>`_
- was created by Ian Bicking.
- Model
- An object representing data in the system. If :mod:`traversal` is
- used, a model is a node in the object graph traversed by the
- system. When traversal is used, a model instance becomes the
- :term:`context` of a :term:`view`. If :mod:`url dispatch` is
- used, a single :term:`context` is generated for each request and
- is used as the context of a view: this object is also technically
- a "model" in :mod:`repoze.bfg` terms, although this terminology
- can be a bit confusing: see :ref:`model_traversal_confusion`.
- Traversal
- The act of descending "down" a graph of model objects from a root
- model in order to find a :term:`context`. The :mod:`repoze.bfg`
- :term:`router` performs traversal of model objects when a
- :term:`root factory` is specified. See the
- :ref:`traversal_chapter` chapter for more information. Traversal
- can be performed *instead* of :term:`URL dispatch` or can be
- combined *with* URL dispatch. See :ref:`hybrid_chapter` for more
- information about combining traversal and URL dispatch (advanced).
- Router
- The :term:`WSGI` application created when you start a
- :mod:`repoze.bfg` application. The router intercepts requests,
- invokes traversal and/or URL dispatch, calls view functions, and
- returns responses to the WSGI server on behalf of your
- :mod:`repoze.bfg` application.
- URL dispatch
- An alternative to graph traversal as a mechanism for locating a
- :term:`context` for a :term:`view`. When you use a :term:`route`
- in your :mod:`repoze.bfg` application via a :term:`route
- configuration`, you are using URL dispatch. See the
- :ref:`urldispatch_chapter` for more information.
- Context
- An object in the system that is found during :term:`traversal` or
- :term:`URL dispatch` based on URL data; if it's found via
- traversal, it's usually a :term:`model` object that is part of an
- object graph; if it's found via :term:`URL dispatch`, it's a
- object manufactured on behalf of the route's "factory". A context
- becomes the subject of a :term:`view`, and typically has security
- information attached to it. See the :ref:`traversal_chapter`
- chapter and the :ref:`urldispatch_chapter` chapter for more
- information about how a URL is resolved to a context.
- Application registry
- A registry of configuration information consulted by
- :mod:`repoze.bfg` while servicing an appliation. An application
- registry maps model types to views, as well as housing other
- application-specific component registrations. Every
- :mod:`repoze.bfg` application has one (and only one) application
- registry.
- Template
- A file with replaceable parts that is capable of representing some
- text, XML, or HTML when rendered.
- Location
- The path to an object in an object graph. See :ref:`location_aware`
- for more information about how to make a model object *location-aware*.
- Principal
- A user id or group id.
- Permission
- A string or unicode object that represents an action being taken
- against a context. A permission is associated with a view name
- and a model type by the developer. Models are decorated with
- security declarations (e.g. an :term:`ACL`), which reference these
- tokens also. Permissions are used by the active to security
- policy to match the view permission against the model's statements
- about which permissions are granted to which principal in a
- context in order to to answer the question "is this user allowed
- to do this". Examples of permissions: ``read``, or
- ``view_blog_entries``.
- ACE
- An *access control entry*. An access control entry is one element
- in an :term:`ACL`. An access control entry is a three-tuple that
- describes three things: an *action* (one of either ``Allow`` or
- ``Deny``), a :term:`principal` (a string describing a user or
- group), and a :term:`permission`. For example the ACE, ``(Allow,
- 'bob', 'read')`` is a member of an ACL that indicates that the
- principal ``bob`` is allowed the permission ``read`` against the
- context the ACL is attached to.
- ACL
- An *access control list*. An ACL is a sequence of :term:`ACE`
- tuples. An ACL is attached to a model instance. An example of an
- ACL is ``[ (Allow, 'bob', 'read'), (Deny, 'fred', 'write')]``. If
- an ACL is attached to a model instance, and that model instance is
- findable via the context, it will be consulted any active security
- policy to determine wither a particular request can be fulfilled
- given the :term:`authentication` information in the request.
- Authentication
- The act of determining that the credentials a user presents during
- a particular request are "good". :mod:`repoze.bfg` uses the
- :term:`authentication` data supplied by the upstream component as
- one input during :term:`authorization`. Authentication in
- :mod:`repoze.bfg` is performed via an :term:`authentication
- policy`.
- Authorization
- The act of determining whether a user can perform a specific
- action. In bfg terms, this means determining whether, for a given
- context, any :term:`principal` (or principals) associated with the
- request have the requisite :term:`permission` to allow the request
- to continue. Authorization in :mod:`repoze.bfg` is performed via
- its :term:`authorization policy`.
- Principal
- A *principal* is a string or unicode object representing a user or
- a user's membership in a group. It is provided by an
- :term:`authentication policy`. For example, if a user had the
- user id "bob", and Bob was part of two groups named "group foo"
- and "group bar", the request might have information attached to it
- that would indictate that Bob was represented by three principals:
- "bob", "group foo" and "group bar".
- Authorization Policy
- An authorization policy in :mod:`repoze.bfg` terms is a bit of
- code which has an API which determines whether or not the
- principals associated with the request can perform an action
- associated with a permission, based on the information found on the
- :term:`context`.
- Authentication Policy
- An authentication policy in :mod:`repoze.bfg` terms is a bit of
- code which has an API which determines the current
- :term:`principal` (or principals) associated with a request.
- WSGI
- `Web Server Gateway Interface <http://wsgi.org/>`_. This is a
- Python standard for connecting web applications to web servers,
- similar to the concept of Java Servlets. ``repoze.bfg`` requires
- that your application be served as a WSGI application.
- Middleware
- *Middleware* is a :term:`WSGI` concept. It is a WSGI component
- that acts both as a server and an application. Interesting uses
- for middleware exist, such as caching, content-transport
- encoding, and other functions. See `WSGI.org <http://wsgi.org>`_
- or `PyPI <http://python.org/pypi>`_ to find middleware for your
- application.
- Pipeline
- The :term:`Paste` term for a single configuration of a WSGI
- server, a WSGI application, with a set of middleware in-between.
- mod_wsgi
- An `Apache module <http://code.google.com/p/modwsgi/>`_ for hosting
- Python WSGI applications.
- Zope
- `The Z Object Publishing Framework <http://zope.org>`_, a
- full-featured Python web framework.
- Grok
- `A web framework based on Zope 3 <http://grok.zope.org>`_.
- Django
- `A full-featured Python web framework <http://djangoproject.com>`_.
- Pylons
- `A lightweight Python web framework <http://pylonshq.com>`_.
- ZODB
- `Zope Object Database <http://wiki.zope.org/ZODB/FrontPage>`_, a
- persistent Python object store.
- ZEO
- `Zope Enterprise Objects
- <http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/ZEO.stx>`_
- allows multiple simultaneous processes to access a single
- :term:`ZODB` database.
- WebOb
- `WebOb <http://pythonpaste.org/webob/>`_ is a WSGI request/response
- library created by Ian Bicking.
- Paste
- `Paste <http://pythonpaste.org>`_ is a WSGI development and
- deployment system developed by Ian Bicking.
- PasteDeploy
- `PasteDeploy <http://pythonpaste.org>`_ is a library used by
- :mod:`repoze.bfg` which makes it possible to configure
- :term:`WSGI` components together declaratively within an ``.ini``
- file. It was developed by Ian Bicking as part of :term:`Paste`.
- Chameleon
- `chameleon <http://chameleon.repoze.org>`_ is an attribute
- language template compiler which supports both the :term:`ZPT` and
- :term:`Genshi` templating specifications. It is written and
- maintained by Malthe Borch. It has several extensions, such as
- the ability to use bracketed (Genshi-style) ``${name}`` syntax,
- even within ZPT. It is also much faster than the reference
- implementations of both ZPT and Genshi. :mod:`repoze.bfg` offers
- Chameleon templating out of the box in ZPT and text flavors.
- ZPT
- The `Zope Page Template <http://wiki.zope.org/ZPT/FrontPage>`_
- templating language.
- METAL
- `Macro Expansion for TAL <http://wiki.zope.org/ZPT/METAL>`_, a
- part of :term:`ZPT` which makes it possible to share common look
- and feel between templates.
- Genshi
- An `XML templating language <http://pypi.python.org/pypi/Genshi/>`_
- by Christopher Lenz.
- Jinja2
- A `text templating language <http://jinja.pocoo.org/2/>`_ by Armin
- Ronacher.
- Routes
- A `system by Ben Bangert <http://routes.groovie.org/>`_ which
- parses URLs and compares them against a number of user defined
- mappings. The URL pattern matching syntax in :mod:`repoze.bfg` is
- inspired by the Routes syntax (which was inspired by Ruby On
- Rails pattern syntax).
- Route
- A single pattern matched by the :term:`url dispatch` subsystem,
- which generally resolves to a :term:`root factory` (and then
- ultimately a :term:`view`). See also :term:`url dispatch`.
- Route Configuration
- Route configuration is the act of using :term:`imperative
- configuration` or a :term:`ZCML` ``<route>`` statement to
- associate request parameters with a particular :term:`route` using
- pattern matching and :term:`route predicate` statements. See
- :ref:`urldispatch_chapter` for more information about route
- configuration.
- ZCML
- `Zope Configuration Markup Language
- <http://www.muthukadan.net/docs/zca.html#zcml>`_, an XML dialect
- used by Zope and :mod:`repoze.bfg` for configuration tasks. ZCML
- is capable of performing different types of :term:`configuration
- declaration`, but its primary purpose in :mod:`repoze.bfg` is to
- perform :term:`view configuration` and :term:`route configuration`
- within the ``configure.zcml`` file in a :mod:`repoze.bfg`
- application. You can use ZCML as an alternative to
- :term:`imperative configuration`.
- ZCML Directive
- A ZCML "tag" such as ``<view>`` or ``<route>``.
- ZCML Declaration
- The concrete use of a :term:`ZCML directive` within a ZCML file.
- Zope Component Architecture
- The `Zope Component Architecture
- <http://www.muthukadan.net/docs/zca.html>`_ (aka ZCA) is a system
- which allows for application pluggability and complex dispatching
- based on objects which implement an :term:`interface`.
- :mod:`repoze.bfg` uses the ZCA "under the hood" to perform view
- dispatching and other application configuration tasks.
- ReStructuredText
- A `plain text format <http://docutils.sourceforge.net/rst.html>`_
- that is the defacto standard for descriptive text shipped in
- :term:`distribution` files, and Python docstrings. This
- documentation is authored in ReStructuredText format.
- Root
- The object at which :term:`traversal` begins when
- :mod:`repoze.bfg` searches for a :term:`context` (for :term:`URL
- Dispatch`, the root is *always* the context).
- Subpath
- A list of element "left over" after the :term:`router` has
- performed a successful traversal to a view. The subpath is a
- sequence of strings, e.g. ``['left', 'over', 'names']``. Within
- BFG applications that use URL dispatch rather than traversal, you
- can use ``*subpath`` in the route pattern to influence the
- subpath. See :ref:`star_subpath` for more information.
- Interface
- A `Zope interface <http://pypi.python.org/pypi/zope.interface>`_
- object. In :mod:`repoze.bfg`, an interface may be attached to a
- :term:`model` object or a :term:`request` object in order to
- identify that the object is "of a type". Interfaces are used
- internally by :mod:`repoze.bfg` to perform view lookups and other
- policy lookups. The ability to make use of an interface is
- exposed to an application programmers during :term:`view
- configuration` via the ``for`` argument, the ``request_type``
- argument and the ``containment`` argument. Interfaces are also
- exposed to application developers when they make use of the
- :term:`event` system. Fundamentally, :mod:`repoze.bfg` programmers
- can think of an interface as something that they can attach to an
- object that stamps it with a "type" unrelated to its underlying
- Python type. Interfaces can also be used to describe the behavior
- of an object (its methods and attributes), but unless they choose
- to, :mod:`repoze.bfg` programmers do not need to understand or use
- this feature of interfaces.
- Event
- An object broadcast to zero or more :term:`subscriber` callables
- during normal :mod:`repoze.bfg` system operations during the
- lifetime of an application. Application code can subscribe to
- these events by using the subscriber functionality described in
- :ref:`events_chapter`.
- Subscriber
- A callable which receives an :term:`event`. A callable becomes a
- subscriber via :term:`imperative configuration` or the
- ``<subscriber>`` ZCML directive. See :ref:`events_chapter` for
- more information.
- Request type
- An attribute of a :term:`request` that allows for specialization
- of view invocation based on arbitrary categorization. The every
- :term:`request` object that :mod:`repoze.bfg` generates and
- manipulates has one or more :term:`interface` objects attached to
- it. The default interface attached to a request object is
- ``repoze.bfg.interfaces.IRequest``.
- repoze.lemonade
- Zope2 CMF-like `data structures and helper facilities
- <http://docs.repoze.org/lemonade>`_ for CA-and-ZODB-based
- applications useful within bfg applications.
- repoze.catalog
- An indexing and search facility (fielded and full-text) based on
- `zope.index <http://pypi.python.org/pypi/zope.index>`_. See `the
- documentation <http://docs.repoze.org/catalog>`_ for more
- information.
- repoze.who
- `Authentication middleware <http://docs.repoze.org/who>`_ for
- :term:`WSGI` applications. It can be used by :mod:`repoze.bfg` to
- provide authentication information.
- repoze.workflow
- `Barebones workflow for Python apps
- <http://docs.repoze.org/workflow>`_ . It can be used by
- :mod:`repoze.bfg` to form a workflow system.
- Virtual root
- A model object representing the "virtual" root of a request; this
- is typically the physical root object (the object returned by the
- application root factory) unless :ref:`vhosting_chapter` is in
- use.
- Lineage
- An ordered sequence of objects based on a ":term:`location`
- -aware" context. The lineage of any given :term:`context` is
- composed of itself, its parent, its parent's parent, and so on.
- The order of the sequence is context-first, then the parent of the
- context, then its parent's parent, and so on. The parent of an
- object in a lineage is available as its ``__parent__`` attribute.
- Root Factory
- The "root factory" of an :mod:`repoze.bfg` application is called
- on every request sent to the application. The root factory
- returns the traversal root of an application. It is
- conventionally named ``get_root``. An application may supply a
- root factory to :mod:`repoze.bfg` during the construction of a
- :term:`Configurator`. If a root factory is not supplied, the
- application uses a default root object. Use of the default root
- object is useful in application which use :term:`URL dispatch` for
- all URL-to-view code mappings.
- SQLAlchemy
- `SQLAlchemy' <http://www.sqlalchemy.org/>`_ is an object
- relational mapper used in tutorials within this documentation.
- JSON
- `JavaScript Object Notation <http://www.json.org/>`_ is a data
- serialization format.
- Renderer
- A registered serializer that can be configured via :term:`view
- configuration` which converts a non-:term:`Response` return values
- from a :term:`view` into a string (and ultimately a response).
- Using a renderer can make writing views that require templating or
- other serialization less tedious. See
- :ref:`views_which_use_a_renderer` for more information.
- mod_wsgi
- `mod_wsgi <http://code.google.com/p/modwsgi/>`_ is an Apache
- module developed by Graham Dumpleton. It allows :term:`WSGI`
- applications (such as applications developed using
- :mod:`repoze.bfg`) to be served using the Apache web server.
- View Predicate
- An argument to a :term:`view configuration` which evaluates to
- ``True`` or ``False`` for a given :term:`request`. All predicates
- attached to a view configuration must evaluate to true for the
- associated view to be considered as a possible callable for a
- given request.
- Route Predicate
- An argument to a :term:`route configuration` which implies a value
- that evaluates to ``True`` or ``False`` for a given
- :term:`request`. All predicates attached to a :term:`route
- configuration` must evaluate to ``True`` for the associated route
- to "match" the current request. If a route does not match the
- current request, the next route (in definition order) is
- attempted.
- Predicate
- A test which returns ``True`` or ``False``. Two different types
- of predicates exist in :mod:`repoze.bfg`: a :term:`view predicate`
- and a :term:`route predicate`. View predicates are attached to
- :term:`view configuration` and route predicates are attached to
- :term:`route configuration`.
- Decorator
- A wrapper around a Python function or class which accepts the
- function or class as its first argument and which returns an
- arbitrary object. :mod:`repoze.bfg` provides several decorators,
- used for configuration and return value modification purposes. See
- also `PEP 318 <http://www.python.org/dev/peps/pep-0318/>`_.
- Configuration Declaration
- An individual method call made to an instance of a
- :mod:`repoze.bfg` :term:`Configurator` object which performs an
- arbitrary action, such as registering a :term:`view configuration`
- (via the ``view`` method of the configurator) or :term:`route
- configuration` (via the ``route`` method of the configurator). A
- set of configuration declarations is also usually implied via the
- use of a :term:`ZCML declaration` within an application, or a set
- of configuration declarations might be performed by a :term:`scan`
- of code in a package.
- Configuration Decoration
- Metadata implying one or more :term:`configuration declaration`
- invocations. Often set by configuration Python :term:`decorator`
- attributes, such as ``repoze.bfg.view.bfg_view``, aka ``@bfg_view``.
- Scan
- The term used by :mod:`repoze.bfg` to define the process of
- importing and examining all code in a Python package or module for
- :term:`configuration decoration`.
- Configurator
- An object used to do :term:`configuration declaration` within an
- application. The most common configurator is an instance of the
- ``repoze.bfg.configuration.Configurator`` class.
- Imperative Configuration
- The configuration mode in which you use Python to call methods on
- a :term:`Configurator` in order to add each :term:`configuration
- declaration` required by your application.
- Declarative Configuration
- The configuration mode in which you use :term:`ZCML` to make
- a set of :term:`configuration declaration` statements.
- Not Found View
- The :term:`view callable` invoked by :mod:`repoze.bfg` when the
- developer explicitly raises a
- ``repoze.bfg.exceptions.NotFound`` exception from within
- :term:`view` code or :term:`root factory` code, or when the
- current request doesn't match any :term:`view configuration`.
- :mod:`repoze.bfg` provides a default implementation of a not
- found view; it can be overridden. See
- :ref:`changing_the_notfound_view`.
- Forbidden View
- The :term:`view callable` invoked by :mod:`repoze.bfg` when the
- developer explicitly raises a
- ``repoze.bfg.exceptions.Forbidden`` exception from within
- :term:`view` code or :term:`root factory` code, or when the the
- :term:`view configuration` and :term:`authorization policy` found
- for a request disallows a particular view invocation.
- :mod:`repoze.bfg` provides a default implementation of a
- forbidden view; it can be overridden. See
- :ref:`changing_the_forbidden_view`.
- Thread Local
- A thread-local variable is one which is essentially a global
- variable in terms of how it is accessed and treated, however,
- each `thread
- <http://en.wikipedia.org/wiki/Thread_(computer_science)>` used by
- the application may have a different value for this same "global"
- variable. :mod:`repoze.bfg` uses a small number of thread local
- variables, as described in :ref:`threadlocals_chapter`. See also
- the `threading.local documentation
- <http://docs.python.org/library/threading.html#threading.local>`
- for more information.
+ Request
+ A ``WebOb`` request object. See :ref:`webob_chapter` for
+ information about request objects.
+ Response
+ An object that has three attributes: ``app_iter`` (representing an
+ iterable body), ``headerlist`` (representing the http headers sent
+ to the user agent), and ``status`` (representing the http status
+ string sent to the user agent). This is the interface defined for
+ ``WebOb`` response objects. See :ref:`webob_chapter` for
+ information about response objects.
+
+ Repoze
+ "Repoze" is essentially a "brand" of software developed by
+ `Agendaless Consulting <http://agendaless.com>`_ and a set of
+ contributors. The term has no special intrinsic meaning. The
+ project's `website <http://repoze.org>`_ has more information.
+ The software developed "under the brand" is available in a
+ `Subversion repository <http://svn.repoze.org>`_.
+
+ Setuptools
+ `Setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_
+ builds on Python's ``distutils`` to provide easier building,
+ distribution, and installation of libraries and applications.
+
+ pkg_resources
+ A module which ships with :term:`setuptools` that provides an API
+ for addressing "resource files" within Python packages. Resource
+ files are static files, template files, etc; basically anything
+ non-Python-source that lives in a Python package can be considered
+ a resource file. See also `PkgResources
+ <http://peak.telecommunity.com/DevCenter/PkgResources>`_
+
+ Resource
+ Any file contained within a Python :term:`package` which is *not*
+ a Python source code file.
+
+ Resource Specification
+ A colon-delimited identifier for a :term:`resource`. The colon
+ separates a Python :term:`package` name from a package subpath.
+ For example, the resource specification
+ ``my.package:static/baz.css`` identifies the file named
+ ``baz.css`` in the ``static`` subdirectory of the ``my.package``
+ Python :term:`package`.
+
+ Package
+ A directory on disk which contains an ``__init__.py`` file, making
+ it recognizable to Python as a location which can be ``import`` -ed.
+
+ Project
+ (Setuptools/distutils terminology). A directory on disk which
+ contains a ``setup.py`` file and one or more Python packages. The
+ ``setup.py`` file contains code that allows the package(s) to be
+ installed, distributed, and tested.
+
+ Distribution
+ (Setuptools/distutils terminology). A file representing an
+ installable library or application. Distributions are usually
+ files that have the suffix of ``.egg``, ``.tar.gz``, or ``.zip``.
+ Distributions are the target of Setuptools commands such as
+ ``easy_install``.
+
+ Entry Point
+ A :term:`setuptools` indirection, defined within a setuptools
+ :term:`distribution` setup.py. It is usually a name which refers
+ to a function somewhere in a package which is held by the
+ distribution.
+
+ Dotted Python name
+ A reference to a Python object by name using a string, in the form
+ ``path.to.modulename:attributename``. Often used in Paste and
+ setuptools configurations. A variant is used in dotted names
+ within :term:`ZCML` attributes that name objects (such as the ZCML
+ "view" directive's "view" attribute): the colon (``:``) is not
+ used; in its place is a dot.
+
+ View
+ Common vernacular for a :term:`view callable`.
+
+ View Callable
+ A "view callable" is a callable Python object which is associated
+ with a :term:`view configuration`; it returns a :term:`response`
+ object . A view callable accepts a single argument: ``request``,
+ which will be an instance of a :term:`request` object. An
+ alternate calling convention allows a view to be defined as a
+ callable which accepts a pair of arguments: ``context`` and
+ ``request``: this calling convention is useful for traversal-based
+ applications in which a :term:`context` is always very important. A
+ view callable is the primary mechanism by which a developer writes
+ user interface code within :mod:`repoze.bfg`. See
+ :ref:`views_chapter` for more information about :mod:`repoze.bfg`
+ view callables.
+
+ View Configuration
+ View configuration is the act of associating a :term:`view
+ callable` with configuration information. This configuration
+ information helps map a given :term:`request` to a particular view
+ callable and it can influence the response of a view callable.
+ :mod:`repoze.bfg` views can be configured via :term:`imperative
+ configuration`, :term:`ZCML` or by a special ``@bfg_view``
+ decorator coupled with a :term:`scan`. See :ref:`views_chapter`
+ for more information about view configuration.
+
+ View name
+ The "URL name" of a view, e.g ``index.html``. If a view is
+ configured without a name, its name is considered to be the empty
+ string (which implies the :term:`default view`).
+
+ Default view
+ The default view of a model is the view invoked when the
+ :term:`view name` is the empty string (``''``). This is the case
+ when :term:`traversal` exhausts the path elements in the PATH_INFO
+ of a request before it returns a :term:`context`.
+
+ Virtualenv
+ An isolated Python environment. Allows you to control which
+ packages are used on a particular project by cloning your main
+ Python. `virtualenv <http://pypi.python.org/pypi/virtualenv>`_
+ was created by Ian Bicking.
+
+ Model
+ An object representing data in the system. If :mod:`traversal` is
+ used, a model is a node in the object graph traversed by the
+ system. When traversal is used, a model instance becomes the
+ :term:`context` of a :term:`view`. If :mod:`url dispatch` is
+ used, a single :term:`context` is generated for each request and
+ is used as the context of a view: this object is also technically
+ a "model" in :mod:`repoze.bfg` terms, although this terminology
+ can be a bit confusing: see :ref:`model_traversal_confusion`.
+
+ Traversal
+ The act of descending "down" a graph of model objects from a root
+ model in order to find a :term:`context`. The :mod:`repoze.bfg`
+ :term:`router` performs traversal of model objects when a
+ :term:`root factory` is specified. See the
+ :ref:`traversal_chapter` chapter for more information. Traversal
+ can be performed *instead* of :term:`URL dispatch` or can be
+ combined *with* URL dispatch. See :ref:`hybrid_chapter` for more
+ information about combining traversal and URL dispatch (advanced).
+
+ Router
+ The :term:`WSGI` application created when you start a
+ :mod:`repoze.bfg` application. The router intercepts requests,
+ invokes traversal and/or URL dispatch, calls view functions, and
+ returns responses to the WSGI server on behalf of your
+ :mod:`repoze.bfg` application.
+
+ URL dispatch
+ An alternative to graph traversal as a mechanism for locating a
+ :term:`context` for a :term:`view`. When you use a :term:`route`
+ in your :mod:`repoze.bfg` application via a :term:`route
+ configuration`, you are using URL dispatch. See the
+ :ref:`urldispatch_chapter` for more information.
+
+ Context
+ An object in the system that is found during :term:`traversal` or
+ :term:`URL dispatch` based on URL data; if it's found via
+ traversal, it's usually a :term:`model` object that is part of an
+ object graph; if it's found via :term:`URL dispatch`, it's a
+ object manufactured on behalf of the route's "factory". A context
+ becomes the subject of a :term:`view`, and typically has security
+ information attached to it. See the :ref:`traversal_chapter`
+ chapter and the :ref:`urldispatch_chapter` chapter for more
+ information about how a URL is resolved to a context.
+
+ Application registry
+ A registry of configuration information consulted by
+ :mod:`repoze.bfg` while servicing an appliation. An application
+ registry maps model types to views, as well as housing other
+ application-specific component registrations. Every
+ :mod:`repoze.bfg` application has one (and only one) application
+ registry.
+
+ Template
+ A file with replaceable parts that is capable of representing some
+ text, XML, or HTML when rendered.
+
+ Location
+ The path to an object in an object graph. See :ref:`location_aware`
+ for more information about how to make a model object *location-aware*.
+
+ Permission
+ A string or unicode object that represents an action being taken
+ against a context. A permission is associated with a view name
+ and a model type by the developer. Models are decorated with
+ security declarations (e.g. an :term:`ACL`), which reference these
+ tokens also. Permissions are used by the active to security
+ policy to match the view permission against the model's statements
+ about which permissions are granted to which principal in a
+ context in order to to answer the question "is this user allowed
+ to do this". Examples of permissions: ``read``, or
+ ``view_blog_entries``.
+
+ ACE
+ An *access control entry*. An access control entry is one element
+ in an :term:`ACL`. An access control entry is a three-tuple that
+ describes three things: an *action* (one of either ``Allow`` or
+ ``Deny``), a :term:`principal` (a string describing a user or
+ group), and a :term:`permission`. For example the ACE, ``(Allow,
+ 'bob', 'read')`` is a member of an ACL that indicates that the
+ principal ``bob`` is allowed the permission ``read`` against the
+ context the ACL is attached to.
+
+ ACL
+ An *access control list*. An ACL is a sequence of :term:`ACE`
+ tuples. An ACL is attached to a model instance. An example of an
+ ACL is ``[ (Allow, 'bob', 'read'), (Deny, 'fred', 'write')]``. If
+ an ACL is attached to a model instance, and that model instance is
+ findable via the context, it will be consulted any active security
+ policy to determine wither a particular request can be fulfilled
+ given the :term:`authentication` information in the request.
+
+ Authentication
+ The act of determining that the credentials a user presents during
+ a particular request are "good". :mod:`repoze.bfg` uses the
+ :term:`authentication` data supplied by the upstream component as
+ one input during :term:`authorization`. Authentication in
+ :mod:`repoze.bfg` is performed via an :term:`authentication
+ policy`.
+
+ Authorization
+ The act of determining whether a user can perform a specific
+ action. In bfg terms, this means determining whether, for a given
+ context, any :term:`principal` (or principals) associated with the
+ request have the requisite :term:`permission` to allow the request
+ to continue. Authorization in :mod:`repoze.bfg` is performed via
+ its :term:`authorization policy`.
+
+ Principal
+ A *principal* is a string or unicode object representing a userid
+ or a group id. It is provided by an :term:`authentication
+ policy`. For example, if a user had the user id "bob", and Bob
+ was part of two groups named "group foo" and "group bar", the
+ request might have information attached to it that would
+ indictate that Bob was represented by three principals: "bob",
+ "group foo" and "group bar".
+
+ Authorization Policy
+ An authorization policy in :mod:`repoze.bfg` terms is a bit of
+ code which has an API which determines whether or not the
+ principals associated with the request can perform an action
+ associated with a permission, based on the information found on the
+ :term:`context`.
+
+ Authentication Policy
+ An authentication policy in :mod:`repoze.bfg` terms is a bit of
+ code which has an API which determines the current
+ :term:`principal` (or principals) associated with a request.
+
+ WSGI
+ `Web Server Gateway Interface <http://wsgi.org/>`_. This is a
+ Python standard for connecting web applications to web servers,
+ similar to the concept of Java Servlets. ``repoze.bfg`` requires
+ that your application be served as a WSGI application.
+
+ Middleware
+ *Middleware* is a :term:`WSGI` concept. It is a WSGI component
+ that acts both as a server and an application. Interesting uses
+ for middleware exist, such as caching, content-transport
+ encoding, and other functions. See `WSGI.org <http://wsgi.org>`_
+ or `PyPI <http://python.org/pypi>`_ to find middleware for your
+ application.
+
+ Pipeline
+ The :term:`Paste` term for a single configuration of a WSGI
+ server, a WSGI application, with a set of middleware in-between.
+
+ Zope
+ `The Z Object Publishing Framework <http://zope.org>`_, a
+ full-featured Python web framework.
+
+ Grok
+ `A web framework based on Zope 3 <http://grok.zope.org>`_.
+
+ Django
+ `A full-featured Python web framework <http://djangoproject.com>`_.
+
+ Pylons
+ `A lightweight Python web framework <http://pylonshq.com>`_.
+
+ ZODB
+ `Zope Object Database <http://wiki.zope.org/ZODB/FrontPage>`_, a
+ persistent Python object store.
+
+ ZEO
+ `Zope Enterprise Objects
+ <http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/ZEO.stx>`_
+ allows multiple simultaneous processes to access a single
+ :term:`ZODB` database.
+
+ WebOb
+ `WebOb <http://pythonpaste.org/webob/>`_ is a WSGI request/response
+ library created by Ian Bicking.
+
+ Paste
+ `Paste <http://pythonpaste.org>`_ is a WSGI development and
+ deployment system developed by Ian Bicking.
+
+ PasteDeploy
+ `PasteDeploy <http://pythonpaste.org>`_ is a library used by
+ :mod:`repoze.bfg` which makes it possible to configure
+ :term:`WSGI` components together declaratively within an ``.ini``
+ file. It was developed by Ian Bicking as part of :term:`Paste`.
+
+ Chameleon
+ `chameleon <http://chameleon.repoze.org>`_ is an attribute
+ language template compiler which supports both the :term:`ZPT` and
+ :term:`Genshi` templating specifications. It is written and
+ maintained by Malthe Borch. It has several extensions, such as
+ the ability to use bracketed (Genshi-style) ``${name}`` syntax,
+ even within ZPT. It is also much faster than the reference
+ implementations of both ZPT and Genshi. :mod:`repoze.bfg` offers
+ Chameleon templating out of the box in ZPT and text flavors.
+
+ ZPT
+ The `Zope Page Template <http://wiki.zope.org/ZPT/FrontPage>`_
+ templating language.
+
+ METAL
+ `Macro Expansion for TAL <http://wiki.zope.org/ZPT/METAL>`_, a
+ part of :term:`ZPT` which makes it possible to share common look
+ and feel between templates.
+
+ Genshi
+ An `XML templating language <http://pypi.python.org/pypi/Genshi/>`_
+ by Christopher Lenz.
+
+ Jinja2
+ A `text templating language <http://jinja.pocoo.org/2/>`_ by Armin
+ Ronacher.
+
+ Routes
+ A `system by Ben Bangert <http://routes.groovie.org/>`_ which
+ parses URLs and compares them against a number of user defined
+ mappings. The URL pattern matching syntax in :mod:`repoze.bfg` is
+ inspired by the Routes syntax (which was inspired by Ruby On
+ Rails pattern syntax).
+
+ Route
+ A single pattern matched by the :term:`url dispatch` subsystem,
+ which generally resolves to a :term:`root factory` (and then
+ ultimately a :term:`view`). See also :term:`url dispatch`.
+
+ Route Configuration
+ Route configuration is the act of using :term:`imperative
+ configuration` or a :term:`ZCML` ``<route>`` statement to
+ associate request parameters with a particular :term:`route` using
+ pattern matching and :term:`route predicate` statements. See
+ :ref:`urldispatch_chapter` for more information about route
+ configuration.
+
+ ZCML
+ `Zope Configuration Markup Language
+ <http://www.muthukadan.net/docs/zca.html#zcml>`_, an XML dialect
+ used by Zope and :mod:`repoze.bfg` for configuration tasks. ZCML
+ is capable of performing different types of :term:`configuration
+ declaration`, but its primary purpose in :mod:`repoze.bfg` is to
+ perform :term:`view configuration` and :term:`route configuration`
+ within the ``configure.zcml`` file in a :mod:`repoze.bfg`
+ application. You can use ZCML as an alternative to
+ :term:`imperative configuration`.
+
+ ZCML Directive
+ A ZCML "tag" such as ``<view>`` or ``<route>``.
+
+ ZCML Declaration
+ The concrete use of a :term:`ZCML directive` within a ZCML file.
+
+ Zope Component Architecture
+ The `Zope Component Architecture
+ <http://www.muthukadan.net/docs/zca.html>`_ (aka ZCA) is a system
+ which allows for application pluggability and complex dispatching
+ based on objects which implement an :term:`interface`.
+ :mod:`repoze.bfg` uses the ZCA "under the hood" to perform view
+ dispatching and other application configuration tasks.
+
+ ReStructuredText
+ A `plain text format <http://docutils.sourceforge.net/rst.html>`_
+ that is the defacto standard for descriptive text shipped in
+ :term:`distribution` files, and Python docstrings. This
+ documentation is authored in ReStructuredText format.
+
+ Root
+ The object at which :term:`traversal` begins when
+ :mod:`repoze.bfg` searches for a :term:`context` (for :term:`URL
+ Dispatch`, the root is *always* the context).
+
+ Subpath
+ A list of element "left over" after the :term:`router` has
+ performed a successful traversal to a view. The subpath is a
+ sequence of strings, e.g. ``['left', 'over', 'names']``. Within
+ BFG applications that use URL dispatch rather than traversal, you
+ can use ``*subpath`` in the route pattern to influence the
+ subpath. See :ref:`star_subpath` for more information.
+
+ Interface
+ A `Zope interface <http://pypi.python.org/pypi/zope.interface>`_
+ object. In :mod:`repoze.bfg`, an interface may be attached to a
+ :term:`model` object or a :term:`request` object in order to
+ identify that the object is "of a type". Interfaces are used
+ internally by :mod:`repoze.bfg` to perform view lookups and other
+ policy lookups. The ability to make use of an interface is
+ exposed to an application programmers during :term:`view
+ configuration` via the ``for`` argument, the ``request_type``
+ argument and the ``containment`` argument. Interfaces are also
+ exposed to application developers when they make use of the
+ :term:`event` system. Fundamentally, :mod:`repoze.bfg` programmers
+ can think of an interface as something that they can attach to an
+ object that stamps it with a "type" unrelated to its underlying
+ Python type. Interfaces can also be used to describe the behavior
+ of an object (its methods and attributes), but unless they choose
+ to, :mod:`repoze.bfg` programmers do not need to understand or use
+ this feature of interfaces.
+
+ Event
+ An object broadcast to zero or more :term:`subscriber` callables
+ during normal :mod:`repoze.bfg` system operations during the
+ lifetime of an application. Application code can subscribe to
+ these events by using the subscriber functionality described in
+ :ref:`events_chapter`.
+
+ Subscriber
+ A callable which receives an :term:`event`. A callable becomes a
+ subscriber via :term:`imperative configuration` or the
+ ``<subscriber>`` ZCML directive. See :ref:`events_chapter` for
+ more information.
+
+ Request type
+ An attribute of a :term:`request` that allows for specialization
+ of view invocation based on arbitrary categorization. The every
+ :term:`request` object that :mod:`repoze.bfg` generates and
+ manipulates has one or more :term:`interface` objects attached to
+ it. The default interface attached to a request object is
+ ``repoze.bfg.interfaces.IRequest``.
+
+ repoze.lemonade
+ Zope2 CMF-like `data structures and helper facilities
+ <http://docs.repoze.org/lemonade>`_ for CA-and-ZODB-based
+ applications useful within bfg applications.
+
+ repoze.catalog
+ An indexing and search facility (fielded and full-text) based on
+ `zope.index <http://pypi.python.org/pypi/zope.index>`_. See `the
+ documentation <http://docs.repoze.org/catalog>`_ for more
+ information.
+
+ repoze.who
+ `Authentication middleware <http://docs.repoze.org/who>`_ for
+ :term:`WSGI` applications. It can be used by :mod:`repoze.bfg` to
+ provide authentication information.
+
+ repoze.workflow
+ `Barebones workflow for Python apps
+ <http://docs.repoze.org/workflow>`_ . It can be used by
+ :mod:`repoze.bfg` to form a workflow system.
+
+ Virtual root
+ A model object representing the "virtual" root of a request; this
+ is typically the physical root object (the object returned by the
+ application root factory) unless :ref:`vhosting_chapter` is in
+ use.
+
+ Lineage
+ An ordered sequence of objects based on a ":term:`location`
+ -aware" context. The lineage of any given :term:`context` is
+ composed of itself, its parent, its parent's parent, and so on.
+ The order of the sequence is context-first, then the parent of the
+ context, then its parent's parent, and so on. The parent of an
+ object in a lineage is available as its ``__parent__`` attribute.
+
+ Root Factory
+ The "root factory" of an :mod:`repoze.bfg` application is called
+ on every request sent to the application. The root factory
+ returns the traversal root of an application. It is
+ conventionally named ``get_root``. An application may supply a
+ root factory to :mod:`repoze.bfg` during the construction of a
+ :term:`Configurator`. If a root factory is not supplied, the
+ application uses a default root object. Use of the default root
+ object is useful in application which use :term:`URL dispatch` for
+ all URL-to-view code mappings.
+
+ SQLAlchemy
+ `SQLAlchemy' <http://www.sqlalchemy.org/>`_ is an object
+ relational mapper used in tutorials within this documentation.
+
+ JSON
+ `JavaScript Object Notation <http://www.json.org/>`_ is a data
+ serialization format.
+
+ Renderer
+ A registered serializer that can be configured via :term:`view
+ configuration` which converts a non-:term:`Response` return values
+ from a :term:`view` into a string (and ultimately a response).
+ Using a renderer can make writing views that require templating or
+ other serialization less tedious. See
+ :ref:`views_which_use_a_renderer` for more information.
+
+ mod_wsgi
+ `mod_wsgi <http://code.google.com/p/modwsgi/>`_ is an Apache
+ module developed by Graham Dumpleton. It allows :term:`WSGI`
+ applications (such as applications developed using
+ :mod:`repoze.bfg`) to be served using the Apache web server.
+
+ View Predicate
+ An argument to a :term:`view configuration` which evaluates to
+ ``True`` or ``False`` for a given :term:`request`. All predicates
+ attached to a view configuration must evaluate to true for the
+ associated view to be considered as a possible callable for a
+ given request.
+
+ Route Predicate
+ An argument to a :term:`route configuration` which implies a value
+ that evaluates to ``True`` or ``False`` for a given
+ :term:`request`. All predicates attached to a :term:`route
+ configuration` must evaluate to ``True`` for the associated route
+ to "match" the current request. If a route does not match the
+ current request, the next route (in definition order) is
+ attempted.
+
+ Predicate
+ A test which returns ``True`` or ``False``. Two different types
+ of predicates exist in :mod:`repoze.bfg`: a :term:`view predicate`
+ and a :term:`route predicate`. View predicates are attached to
+ :term:`view configuration` and route predicates are attached to
+ :term:`route configuration`.
+
+ Decorator
+ A wrapper around a Python function or class which accepts the
+ function or class as its first argument and which returns an
+ arbitrary object. :mod:`repoze.bfg` provides several decorators,
+ used for configuration and return value modification purposes. See
+ also `PEP 318 <http://www.python.org/dev/peps/pep-0318/>`_.
+
+ Configuration Declaration
+ An individual method call made to an instance of a
+ :mod:`repoze.bfg` :term:`Configurator` object which performs an
+ arbitrary action, such as registering a :term:`view configuration`
+ (via the ``view`` method of the configurator) or :term:`route
+ configuration` (via the ``route`` method of the configurator). A
+ set of configuration declarations is also usually implied via the
+ use of a :term:`ZCML declaration` within an application, or a set
+ of configuration declarations might be performed by a :term:`scan`
+ of code in a package.
+
+ Configuration Decoration
+ Metadata implying one or more :term:`configuration declaration`
+ invocations. Often set by configuration Python :term:`decorator`
+ attributes, such as ``repoze.bfg.view.bfg_view``, aka ``@bfg_view``.
+
+ Scan
+ The term used by :mod:`repoze.bfg` to define the process of
+ importing and examining all code in a Python package or module for
+ :term:`configuration decoration`.
+
+ Configurator
+ An object used to do :term:`configuration declaration` within an
+ application. The most common configurator is an instance of the
+ ``repoze.bfg.configuration.Configurator`` class.
+
+ Imperative Configuration
+ The configuration mode in which you use Python to call methods on
+ a :term:`Configurator` in order to add each :term:`configuration
+ declaration` required by your application.
+
+ Declarative Configuration
+ The configuration mode in which you use :term:`ZCML` to make
+ a set of :term:`configuration declaration` statements.
+
+ Not Found View
+ The :term:`view callable` invoked by :mod:`repoze.bfg` when the
+ developer explicitly raises a
+ ``repoze.bfg.exceptions.NotFound`` exception from within
+ :term:`view` code or :term:`root factory` code, or when the
+ current request doesn't match any :term:`view configuration`.
+ :mod:`repoze.bfg` provides a default implementation of a not
+ found view; it can be overridden. See
+ :ref:`changing_the_notfound_view`.
+
+ Forbidden View
+ The :term:`view callable` invoked by :mod:`repoze.bfg` when the
+ developer explicitly raises a
+ ``repoze.bfg.exceptions.Forbidden`` exception from within
+ :term:`view` code or :term:`root factory` code, or when the the
+ :term:`view configuration` and :term:`authorization policy` found
+ for a request disallows a particular view invocation.
+ :mod:`repoze.bfg` provides a default implementation of a
+ forbidden view; it can be overridden. See
+ :ref:`changing_the_forbidden_view`.
+
+ Thread Local
+ A thread-local variable is one which is essentially a global
+ variable in terms of how it is accessed and treated, however,
+ each `thread
+ <http://en.wikipedia.org/wiki/Thread_(computer_science)>` used by
+ the application may have a different value for this same "global"
+ variable. :mod:`repoze.bfg` uses a small number of thread local
+ variables, as described in :ref:`threadlocals_chapter`. See also
+ the `threading.local documentation
+ <http://docs.python.org/library/threading.html#threading.local>`
+ for more information.