#!/usr/bin/env python import sys, os, types from os.path import join, dirname, abspath, expanduser try: from setuptools import setup using_setuptools = True except ImportError: from distutils.core import setup using_setuptools = False try: from distinfo import get_info, get_requires except ImportError: RE_HEADER_KEY=( r'(?ims)^:?(?P[a-z][\w\-_ ]*):\s*' '(?P.*?' '(?=(\Z|\n^:?[a-z][\w\-_ ]*:)))' ) def get_info(data): import re info={} for k,v,_ in re.findall(RE_HEADER_KEY, data): info.setdefault(k,[]).append(v.strip()) return info def get_requires(info, requires_keys='Requires Install-Requires'.split()): if isinstance(requires_keys, types.StringTypes): if ' ' in requires_keys or '\t' in requires_keys: raise TypeError( 'Either pass a single requires_key as a string, or a list of ' 'requires_keys' ) requires_keys=[requires_keys] requires = [] for k in requires_keys: requires.extend(info.get(k, [])) return requires def read(*rnames): return open(join(dirname(abspath(expanduser(__file__))), *rnames)).read() def update_docs(glob_pattern, ignore=None, docutils_conf=None): ignore = ignore or {} try: from docutils.core import publish_cmdline except ImportError: print 'failed to update docs, docutils not installed' return from glob import glob if docutils_conf: base_argv = ['--config=%s' % docutils_conf] else: base_argv = [] for source in glob(glob_pattern): if source in ignore: continue dest = os.path.splitext(source)[0] + '.html' if not os.path.exists(dest) or \ os.path.getmtime(dest) < os.path.getmtime(source): print 'building documentation file %s' % dest publish_cmdline(writer_name='html', argv=base_argv + [source, dest]) def get_long_desc(pinfo): return ( pinfo['Abstract'][0] + '\n' + read('README.txt') + '\n' + read('INSTALL.txt') + '\n' + read('ChangeLog') + '\n' + read('COPYING') + '\n' + '-----' * 7 ) PKG_INFO=get_info(file('pkg-info.txt').read()) entry_points=file('entry-points.txt').read() name=PKG_INFO['Name'][0] version=PKG_INFO['Version'][0] install_requires = get_requires(PKG_INFO, 'Install-Requires') provides=name+'-'+version setupkw=dict( name=PKG_INFO['Name'][0], version=PKG_INFO['Version'][0], description = PKG_INFO['Abstract'][0], author = PKG_INFO['Author'][0], license = PKG_INFO['License'][0], author_email = PKG_INFO['Author-email'], classifiers = PKG_INFO['Classifiers'], package_dir = {'':'.'}, py_modules = ['setupdevelop'], entry_points = entry_points, zip_safe=True ) if using_setuptools: setupkw['install_requires']=install_requires setup(**setupkw)