<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def setup(package, **kwargs):
 """a template for the python setup.py installer routine * take setup information from the packages __init__.py file - __email__ - __version__ - __depencies__ are still available after installation * exclude /tests* * create scripts from all files in /bin * create the long description from - /README.rst - /CHANGES.rst - /AUTHORS.rst * remove /build at the end """


    def read(*paths):
        """Build a file path from *paths* and return the contents."""
        p = os.path.join(*paths)
        if os.path.exists(p):
            with open(p, 'r') as f:
                return f.read()
        return ''

    setuptoolsSetup(
        name=package.__name__,
        version=package.__version__,
        author=package.__author__,
        author_email=package.__email__,
        url=package.__url__,
        license=package.__license__,
        install_requires=package.__depencies__,
        classifiers=package.__classifiers__,
        description=package.__description__,
        packages=find_packages(exclude=['tests*']),
        include_package_data=True,
        scripts=[] if not os.path.exists('bin') else [
            os.path.join('bin', x) for x in os.listdir('bin')],
        long_description=(
            read('README.rst') + '\n\n' +
            read('CHANGES.rst') + '\n\n' +
            read('AUTHORS.rst')),
        **kwargs
    )
    # remove the build
    # else old and notexistent files could come again in the installed pkg
    mainPath = os.path.abspath(os.path.dirname(__file__))
    bPath = os.path.join(mainPath, 'build')
    if os.path.exists(bPath):
        shutil.rmtree(bPath)