
About
================================================================================

**Summary:** define the metadata of your project in a single place, 
then make it available at setup-time and at runtime.

Let's consider the `about` package as an example ; we add to our project
files, in the source tree, a file named `about.py` that contains the metadata 
of the project:


    about
    |--- setup.py
    |--- README.md
    |...
    |--- about
    |    |--- __init__.py
    |    |...
    |    |--- about.py

This file contains the metadata (and a little boilerplate):

    # coding: utf-8

    metadata = dict(
      __name__        = "about",
      __version__     = "5.1.1",
      __license__     = "MIT License",  
      __author__      = u"Sébastien Boisgérault <Sebastien.Boisgerault@gmail.com>",
      __url__         = "https://warehouse.python.org/project/about",
      __summary__     = "Software Metadata for Humans",
      __keywords__    = "Python / 2.7, OS independent, software development"
    )

    globals().update(metadata)

    __all__ = metadata.keys()

**Setup.** To use this metadata, the `setup.py` file includes the code:

    import about
    import about.about

    info = about.get_metadata(about.about)

    # add extra information (contents, requirements, etc.).
    info.update(...)

    if __name__ == "__main__":
        setuptools.setup(**info)

**Runtime.** The metadata is stored as a collection of attributes of the 
`about.about` module. If we include in the `about/__init__.py` file the 
one-liner
    
    from .about import *

they become available in the top-level module:

    >>> import about
    >>> print about.__name__
    about
    >>> print about.__version__
    5.1.1
    >>> print about.__license__
    MIT License


