Fix indentation.

This commit is contained in:
Georg Brandl 2012-03-08 20:35:08 +01:00
parent 50dbb3f2cf
commit 4dcf474337
1 changed files with 48 additions and 47 deletions

View File

@ -91,65 +91,66 @@ The class can be used to simulate nested scopes and is useful in templating.
The use-cases also parallel those for the builtin :func:`super` function. The use-cases also parallel those for the builtin :func:`super` function.
A reference to ``d.parents`` is equivalent to: ``ChainMap(*d.maps[1:])``. A reference to ``d.parents`` is equivalent to: ``ChainMap(*d.maps[1:])``.
.. versionadded:: 3.3 .. versionadded:: 3.3
Example of simulating Python's internal lookup chain:: Example of simulating Python's internal lookup chain::
import builtins import builtins
pylookup = ChainMap(locals(), globals(), vars(builtins)) pylookup = ChainMap(locals(), globals(), vars(builtins))
Example of letting user specified values take precedence over environment Example of letting user specified values take precedence over environment
variables which in turn take precedence over default values:: variables which in turn take precedence over default values::
import os, argparse import os, argparse
defaults = {'color': 'red', 'user': guest} defaults = {'color': 'red', 'user': guest}
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user') parser.add_argument('-u', '--user')
parser.add_argument('-c', '--color') parser.add_argument('-c', '--color')
user_specified = vars(parser.parse_args()) user_specified = vars(parser.parse_args())
combined = ChainMap(user_specified, os.environ, defaults) combined = ChainMap(user_specified, os.environ, defaults)
Example patterns for using the :class:`ChainMap` class to simulate nested Example patterns for using the :class:`ChainMap` class to simulate nested
contexts:: contexts::
c = ChainMap() Create root context c = ChainMap() # Create root context
d = c.new_child() Create nested child context d = c.new_child() # Create nested child context
e = c.new_child() Child of c, independent from d e = c.new_child() # Child of c, independent from d
e.maps[0] Current context dictionary -- like Python's locals() e.maps[0] # Current context dictionary -- like Python's locals()
e.maps[-1] Root context -- like Python's globals() e.maps[-1] # Root context -- like Python's globals()
e.parents Enclosing context chain -- like Python's nonlocals e.parents # Enclosing context chain -- like Python's nonlocals
d['x'] Get first key in the chain of contexts d['x'] # Get first key in the chain of contexts
d['x'] = 1 Set value in current context d['x'] = 1 # Set value in current context
del['x'] Delete from current context del['x'] # Delete from current context
list(d) All nested values list(d) # All nested values
k in d Check all nested values k in d # Check all nested values
len(d) Number of nested values len(d) # Number of nested values
d.items() All nested items d.items() # All nested items
dict(d) Flatten into a regular dictionary dict(d) # Flatten into a regular dictionary
.. seealso:: .. seealso::
* The `MultiContext class * The `MultiContext class
<http://svn.enthought.com/svn/enthought/CodeTools/trunk/enthought/contexts/multi_context.py>`_ <http://svn.enthought.com/svn/enthought/CodeTools/trunk/enthought/contexts/multi_context.py>`_
in the Enthought `CodeTools package in the Enthought `CodeTools package
<https://github.com/enthought/codetools>`_ has options to support <https://github.com/enthought/codetools>`_ has options to support
writing to any mapping in the chain. writing to any mapping in the chain.
* Django's `Context class * Django's `Context class
<http://code.djangoproject.com/browser/django/trunk/django/template/context.py>`_ <http://code.djangoproject.com/browser/django/trunk/django/template/context.py>`_
for templating is a read-only chain of mappings. It also features for templating is a read-only chain of mappings. It also features
pushing and popping of contexts similar to the pushing and popping of contexts similar to the
:meth:`~collections.ChainMap.new_child` method and the :meth:`~collections.ChainMap.new_child` method and the
:meth:`~collections.ChainMap.parents` property. :meth:`~collections.ChainMap.parents` property.
* The `Nested Contexts recipe * The `Nested Contexts recipe
<http://code.activestate.com/recipes/577434/>`_ has options to control <http://code.activestate.com/recipes/577434/>`_ has options to control
whether writes and other mutations apply only to the first mapping or to whether writes and other mutations apply only to the first mapping or to
any mapping in the chain. any mapping in the chain.
* A `greatly simplified read-only version of Chainmap
<http://code.activestate.com/recipes/305268/>`_.
* A `greatly simplified read-only version of Chainmap
<http://code.activestate.com/recipes/305268/>`_.
:class:`Counter` objects :class:`Counter` objects
------------------------ ------------------------