Metadata-Version: 2.1
Name: chainmap
Version: 1.0.2
Summary: Backport/clone of ChainMap for py26, py32, and pypy3.
Home-page: https://bitbucket.org/jeunice/chainmap
Author: Jonathan Eunice
Author-email: jonathan.eunice@gmail.com
License: Python Software Foundation License
Keywords: ChainMap nested context layer overlay stack
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: Python Software Foundation License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries :: Python Modules
License-File: LICENSE.txt


| |version| |downloads| |versions| |impls| |wheel| |coverage|

.. |version| image:: http://img.shields.io/pypi/v/chainmap.svg?style=flat
    :alt: PyPI Package latest release
    :target: https://pypi.python.org/pypi/chainmap

.. |downloads| image:: http://img.shields.io/pypi/dm/chainmap.svg?style=flat
    :alt: PyPI Package monthly downloads
    :target: https://pypi.python.org/pypi/chainmap

.. |versions| image:: https://img.shields.io/pypi/pyversions/chainmap.svg
    :alt: Supported versions
    :target: https://pypi.python.org/pypi/chainmap

.. |impls| image:: https://img.shields.io/pypi/implementation/chainmap.svg
    :alt: Supported implementations
    :target: https://pypi.python.org/pypi/chainmap

.. |wheel| image:: https://img.shields.io/pypi/wheel/chainmap.svg
    :alt: Wheel packaging support
    :target: https://pypi.python.org/pypi/chainmap

.. |coverage| image:: https://img.shields.io/badge/test_coverage-100%25-6600CC.svg
    :alt: Test line coverage
    :target: https://pypi.python.org/pypi/chainmap


This module is a `polyfill <https://en.wikipedia.org/wiki/Polyfill>`_,
implementing ``ChainMap`` for reasonably-recent versions of Python
that do not have ``collections.ChainMap``--namely, Python 2.6,
Python 3.2, and PyPy3 releases based on Python 3.2. (It will also
work as expected on Python 2.7, PyPy, and Python 3.3 and higher,
but it is not needed there since those verions' ``collections``
modules contains a ``ChainMap`` implementation.)

The code for this package is closely derived from the Python 3.5
source code at `hg.python.org <https://hg.python.org>`_, (especially
the ``collections`` and ``reprlib`` modules). Several changes have
been made to ensure Python 2.6 compatibility, and tests and packaging
have been added.

Typical usage::

    from chainmap import ChainMap

If you prefer to preferentially import from the Python standard library when
``ChainMap`` is available there, this will do the trick::

    try:
        from collections import ChainMap
    except ImportError:
        from chainmap import ChainMap

Please see `the standard documentation <https://docs.python.org/3/library/collections.html#collections.ChainMap>`_
for details on how to use ``ChainMap``.

If you're not sure *why* someone would use a ``ChainMap``, they are
useful for managing "nested" contexts and "overlays." See e.g. my
`options <https://pypi.python.org/pypi/options>`_, `quoter
<https://pypi.python.org/pypi/quoter>`_, and `say
<https://pypi.python.org/pypi/say>`_ packages, which use them quite
extensively for flexible option handling. You can find similar uses
in the `Context class <https://docs.djangoproject.com/en/1.8/ref/templates/api/#django.template.Context>`_
of Django's template engine.

Notes
=====

* Automated multi-version testing managed with
  `pytest <http://pypi.python.org/pypi/pytest>`_,
  `pytest-cov <http://pypi.python.org/pypi/pytest-cov>`_,
  `coverage <http://pypi.python.org/pypi/coverage>`_, and
  `tox <http://pypi.python.org/pypi/tox>`_.
  Packaging linting with `pyroma <https://pypi.python.org/pypi/pyroma>`_.

* Successfully packaged for, and tested against, all late-model
  versions of Python: 2.6, 2.7, 3.2, 3.3,
  3.4, and 3.5 as well as PyPy 2.6.1 (based on
  2.7.10) and PyPy3 2.4.0 (based on 3.2.5).

* The author, `Jonathan Eunice <mailto:jonathan.eunice@gmail.com>`_ or
  `@jeunice on Twitter <http://twitter.com/jeunice>`_
  welcomes your comments and suggestions.

Installation
============

To install or upgrade to the latest version::

    pip install -U chainmap

To ``easy_install`` under a specific Python version (3.3 in this example)::

    python3.3 -m easy_install --upgrade chainmap

(You may need to prefix these with ``sudo`` to authorize
installation. In environments without super-user privileges, you may want to
use ``pip``'s ``--user`` option, to install only for a single user, rather
than system-wide.)


