Commits

Anonymous committed 34a9843

Parses distmeta + adds trove classifiers

  • Participants
  • Parent commits 5192bbf

Comments (0)

Files changed (2)

anyjson/__init__.py

 
 import sys
 
-__version__ = "0.3.1"
-__author__ = "Rune Halvorsen <runefh@gmail.com>"
+VERSION = (0, 3, 1)
+__version__ = ".".join(map(str, VERSION[0:3])) + "".join(VERSION[3:])
+__author__ = "Rune Halvorsen"
+__contact__ "runefh@gmail.com"
 __homepage__ = "http://bitbucket.org/runeh/anyjson/"
 __docformat__ = "restructuredtext"
 
+# -eof meta-
+
 implementation = None
 
 """
 except ImportError:
     from distutils.core import setup, find_packages
 
-author = "Rune Halvorsen"
-email = "runefh@gmail.com"
-version = "0.3.1"
-desc = """Wraps the best available JSON implementation available in a common interface"""
+# -*- Distribution Meta -*-
+import re
+re_meta = re.compile(r'__(\w+?)__\s*=\s*(.*)')
+re_vers = re.compile(r'VERSION\s*=\s*\((.*?)\)')
+re_doc = re.compile(r'^"""(.+?)"""')
+rq = lambda s: s.strip("\"'")
+
+def add_default(m):
+    attr_name, attr_value = m.groups()
+    return ((attr_name, rq(attr_value)), )
+
+
+def add_version(m):
+    v = list(map(rq, m.groups()[0].split(", ")))
+    return (("VERSION", ".".join(v[0:3]) + "".join(v[3:])), )
+
+
+def add_doc(m):
+    return (("doc", m.groups()[0]), )
+
+pats = {re_meta: add_default,
+        re_vers: add_version,
+        re_doc: add_doc}
+here = os.path.abspath(os.path.dirname(__file__))
+meta_fh = open(os.path.join(here, "anyjson/__init__.py"))
+try:
+    meta = {}
+    for line in meta_fh:
+        if line.strip() == '# -eof meta-':
+            break
+        for pattern, handler in pats.items():
+            m = pattern.match(line.strip())
+            if m:
+                meta.update(handler(m))
+finally:
+    meta_fh.close()
+
 
 setup(name='anyjson',
-      version=version,
-      description=desc,
+      version=meta["VERSION"],
+      description=meta["doc"],
+      author=meta["author"],
+      author_email=meta["contact"],
+      url=meta["homepage"],
+      license='BSD',
       long_description=open("README").read(),
       classifiers=[
+            'Development Status :: 5 - Production/Stable',
             'License :: OSI Approved :: BSD License',
+            'Operating System :: OS Independent',
             'Intended Audience :: Developers',
             'Programming Language :: Python',
             'Programming Language :: Python :: 2',
             'Programming Language :: Python :: 2.7',
             'Programming Language :: Python :: 3',
             'Programming Language :: Python :: 3.1',
+            'Programming Language :: Python :: Implementation :: CPython',
+            'Programming Language :: Python :: Implementation :: PyPy',
+            'Programming Language :: Python :: Implementation :: Jython',
           ],
       keywords='json',
-      author=author,
-      author_email=email,
-      url='http://bitbucket.org/runeh/anyjson',
-      license='BSD',
       packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
       zip_safe=False,
       platforms=["any"],