[Checkins] SVN: zc.relationship/trunk/ make setup hopefully more Windows friendly; and some automatic ReST validation of the long_description. will have an internal 2.0c1 before releasing final to PyPI.

Gary Poster gary at zope.com
Thu Apr 24 06:36:28 EDT 2008


Log message for revision 85696:
  make setup hopefully more Windows friendly; and some automatic ReST validation of the long_description.  will have an internal 2.0c1 before releasing final to PyPI.

Changed:
  U   zc.relationship/trunk/buildout.cfg
  U   zc.relationship/trunk/setup.py

-=-
Modified: zc.relationship/trunk/buildout.cfg
===================================================================
--- zc.relationship/trunk/buildout.cfg	2008-04-24 10:35:21 UTC (rev 85695)
+++ zc.relationship/trunk/buildout.cfg	2008-04-24 10:36:28 UTC (rev 85696)
@@ -12,4 +12,5 @@
 [py]
 recipe = zc.recipe.egg
 eggs = zc.relationship
+       docutils
 interpreter = py

Modified: zc.relationship/trunk/setup.py
===================================================================
--- zc.relationship/trunk/setup.py	2008-04-24 10:35:21 UTC (rev 85695)
+++ zc.relationship/trunk/setup.py	2008-04-24 10:36:28 UTC (rev 85696)
@@ -11,19 +11,68 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
+import os
 from setuptools import setup, find_packages
 
-long_description=(
-    open('src/zc/relationship/README.txt').read() + '\n\n' +
-    open("src/zc/relationship/CHANGES.txt").read())
+# generic helpers primarily for the long_description
+try:
+    import docutils
+except ImportError:
+    import warnings
+    def validateReST(text):
+        return ''
+else:
+    import docutils.utils
+    import docutils.parsers.rst
+    import StringIO
+    def validateReST(text):
+        doc = docutils.utils.new_document('validator')
+        # our desired settings
+        doc.reporter.halt_level = 5
+        doc.reporter.report_level = 1
+        stream = doc.reporter.stream = StringIO.StringIO()
+        # docutils buglets (?)
+        doc.settings.tab_width = 2
+        doc.settings.pep_references = doc.settings.rfc_references = False
+        doc.settings.trim_footnote_reference_space = None
+        # and we're off...
+        parser = docutils.parsers.rst.Parser()
+        parser.parse(text, doc)
+        return stream.getvalue()
 
-f = open('TEST_THIS_REST_BEFORE_REGISTERING.txt', 'w')
-f.write(long_description)
-f.close()
+def text(*args, **kwargs):
+    # note: distutils explicitly disallows unicode for setup values :-/
+    # http://docs.python.org/dist/meta-data.html
+    tmp = []
+    for a in args:
+        if a.endswith('.txt'):
+            f = open(os.path.join(*a.split('/')))
+            tmp.append(f.read())
+            f.close()
+            tmp.append('\n\n')
+        else:
+            tmp.append(a)
+    if len(tmp) == 1:
+        res = tmp[0]
+    else:
+        res = ''.join(tmp)
+    out = kwargs.get('out')
+    if out is True:
+        out = 'TEST_THIS_REST_BEFORE_REGISTERING.txt'
+    if out:
+        f = open(out, 'w')
+        f.write(res)
+        f.close()
+        report = validateReST(res)
+        if report:
+            print report
+            raise ValueError('ReST validation error')
+    return res
+# end helpers; below this line should be code custom to this package
 
 setup(
     name="zc.relationship",
-    version="2.0",
+    version="2.0c1",
     packages=find_packages('src'),
     include_package_data=True,
     package_dir= {'':'src'},
@@ -33,8 +82,11 @@
     zip_safe=False,
     author='Gary Poster',
     author_email='gary at zope.com',
-    description=open("README.txt").read(),
-    long_description=long_description,
+    description=text("README.txt"),
+    long_description=text(
+        'src/zc/relationship/README.txt',
+        'src/zc/relationship/CHANGES.txt',
+        out=True),
     license='ZPL 2.1',
     keywords="zope zope3",
     install_requires=[



More information about the Checkins mailing list