script/lib/tweetstream/setup.py
changeset 14 10e7a0c7c64f
parent 13 79b6e132e3d7
child 527 80e5b9543cac
equal deleted inserted replaced
13:79b6e132e3d7 14:10e7a0c7c64f
     1 from setuptools import setup, find_packages
     1 import sys
     2 import sys, os
     2 import os
     3 
     3 
     4 author = "Rune Halvorsen" 
     4 extra = {}
     5 email = "runefh@gmail.com"
     5 if sys.version_info >= (3, 0):
     6 version = "1.0.0"
     6     extra.update(use_2to3=True)
     7 homepage = "http://bitbucket.org/runeh/tweetstream/"
     7 
       
     8 
       
     9 try:
       
    10     from setuptools import setup, find_packages
       
    11 except ImportError:
       
    12     from distutils.core import setup, find_packages
       
    13 
       
    14 
       
    15 # -*- Distribution Meta -*-
       
    16 import re
       
    17 re_meta = re.compile(r'__(\w+?)__\s*=\s*(.*)')
       
    18 re_vers = re.compile(r'VERSION\s*=\s*\((.*?)\)')
       
    19 re_doc = re.compile(r'^"""(.+?)"""', re.M|re.S)
       
    20 rq = lambda s: s.strip("\"'")
       
    21 
       
    22 
       
    23 def add_default(m):
       
    24     attr_name, attr_value = m.groups()
       
    25     return ((attr_name, rq(attr_value)), )
       
    26 
       
    27 
       
    28 def add_version(m):
       
    29     v = list(map(rq, m.groups()[0].split(", ")))
       
    30     return (("VERSION", ".".join(v[0:3]) + "".join(v[3:])), )
       
    31 
       
    32 
       
    33 def add_doc(m):
       
    34     return (("doc", m.groups()[0].replace("\n", " ")), )
       
    35 
       
    36 pats = {re_meta: add_default,
       
    37         re_vers: add_version}
       
    38 here = os.path.abspath(os.path.dirname(__file__))
       
    39 meta_fh = open(os.path.join(here, "tweetstream/__init__.py"))
       
    40 try:
       
    41     meta = {}
       
    42     acc = []
       
    43     for line in meta_fh:
       
    44         if line.strip() == '# -eof meta-':
       
    45             break
       
    46         acc.append(line)
       
    47         for pattern, handler in pats.items():
       
    48             m = pattern.match(line.strip())
       
    49             if m:
       
    50                 meta.update(handler(m))
       
    51     m = re_doc.match("".join(acc).strip())
       
    52     if m:
       
    53         meta.update(add_doc(m))
       
    54 finally:
       
    55     meta_fh.close()
       
    56 
     8 
    57 
     9 setup(name='tweetstream',
    58 setup(name='tweetstream',
    10     version=version,
    59     version=meta["VERSION"],
    11     description="Simple Twitter streaming API access",
    60     description=meta["doc"],
    12     long_description=open("README").read(),
    61     long_description=open("README").read(),
    13     classifiers=[
    62     classifiers=[
    14         'License :: OSI Approved :: BSD License',
    63         'License :: OSI Approved :: BSD License',
    15         'Intended Audience :: Developers',
    64         'Intended Audience :: Developers',
       
    65         'Programming Language :: Python :: 2.6',
       
    66         'Programming Language :: Python :: 2.7',
       
    67         'Programming Language :: Python :: 3',
       
    68         'Programming Language :: Python :: 3.1',
    16     ],
    69     ],
    17     keywords='twitter',
    70     keywords='twitter',
    18     author=author,
    71     author=meta["author"],
    19     author_email=email,
    72     author_email=meta["contact"],
    20     url=homepage,
    73     url=meta["homepage"],
    21     license='BSD',
    74     license='BSD',
    22     packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
    75     packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
    23     include_package_data=True,
    76     include_package_data=True,
    24     zip_safe=False,
    77     zip_safe=False,
    25     platforms=["any"],
    78     platforms=["any"],
    26     install_requires = ['anyjson'],
    79     install_requires=['anyjson'],
       
    80     **extra
    27 )
    81 )