Commits

Jason R. Coombs  committed 9f4af99

Moved link generation routine from setup.py to release.py. The new routine requires Python 2.6 for izip_longest and chain.from_iterable, so it's not suitable for setup.py. Also, there's no reason that every installer needs to compute the links - they can be resolved in advance during the release process.

  • Participants
  • Parent commits a331dda

Comments (0)

Files changed (3)

 include
 \.Python
 *.swp
+CHANGES (links).txt
 import urllib2
 import getpass
 import collections
+import itertools
+import re
 
 try:
 	import keyring
 
 	subprocess.check_call(['hg', 'update', VERSION])
 
+	linkify('CHANGES.txt', 'CHANGES (links).txt')
+
 	has_docs = build_docs()
 	if os.path.isdir('./dist'):
 		shutil.rmtree('./dist')
 	except:
 		print("Unable to upload bootstrap script. Ask Tarek to do it.")
 
+def linkify(source, dest):
+	with open(source) as source:
+		out = _linkified_text(source.read())
+	with open(dest, 'w') as dest:
+		dest.write(out)
+
+def _linkified(rst_path):
+	"return contents of reStructureText file with linked issue references"
+	rst_file = open(rst_path)
+	rst_content = rst_file.read()
+	rst_file.close()
+
+	return _linkified_text(rst_content)
+
+def _linkified_text(rst_content):
+	# first identify any existing HREFs so they're not changed
+	HREF_pattern = re.compile('`.*?`_', re.MULTILINE | re.DOTALL)
+
+	# split on the HREF pattern, returning the parts to be linkified
+	plain_text_parts = HREF_pattern.split(rst_content)
+	anchors = []
+	linkified_parts = [_linkified_part(part, anchors)
+		for part in plain_text_parts]
+	pairs = itertools.izip_longest(
+		linkified_parts,
+		HREF_pattern.findall(rst_content),
+		fillvalue='',
+	)
+	rst_content = ''.join(flatten(pairs))
+
+	anchors = sorted(anchors)
+
+	bitroot = 'http://bitbucket.org/tarek/distribute'
+	rst_content += "\n"
+	for x in anchors:
+		issue = re.findall(r'\d+', x)[0]
+		rst_content += '.. _`%s`: %s/issue/%s\n' % (x, bitroot, issue)
+	rst_content += "\n"
+	return rst_content
+
+def flatten(listOfLists):
+	"Flatten one level of nesting"
+	return itertools.chain.from_iterable(listOfLists)
+
+
+def _linkified_part(text, anchors):
+	"""
+	Linkify a part and collect any anchors generated
+	"""
+	revision = re.compile(r'\b(issue\s+#?\d+)\b', re.M | re.I)
+
+	anchors.extend(revision.findall(text)) # ['Issue #43', ...]
+	return revision.sub(r'`\1`_', text)
+
 if __name__ == '__main__':
 	do_release()
     from distribute_setup import _before_install
     _before_install()
 
-def _linkified(rst_path):
-    "return contents of reStructureText file with linked issue references"
-    rst_file = open(rst_path)
-    rst_content = rst_file.read()
-    rst_file.close()
-
-    return _linkified_text(rst_content)
-
-def _linkified_text(rst_content):
-    # first identify any existing HREFs so they're not changed
-    HREF_pattern = re.compile('`.*?`_', re.MULTILINE | re.DOTALL)
-
-    # split on the HREF pattern, returning the parts to be linkified
-    plain_text_parts = HREF_pattern.split(rst_content)
-    anchors = []
-    linkified_parts = [_linkified_part(part, anchors)
-        for part in plain_text_parts]
-    pairs = itertools.izip_longest(
-        linkified_parts,
-        HREF_pattern.findall(rst_content),
-        fillvalue='',
-    )
-    rst_content = ''.join(flatten(pairs))
-
-    anchors = sorted(anchors)
-
-    bitroot = 'http://bitbucket.org/tarek/distribute'
-    rst_content += "\n"
-    for x in anchors:
-        issue = re.findall(r'\d+', x)[0]
-        rst_content += '.. _`%s`: %s/issue/%s\n' % (x, bitroot, issue)
-    rst_content += "\n"
-    return rst_content
-
-import itertools
-def flatten(listOfLists):
-    "Flatten one level of nesting"
-    return itertools.chain.from_iterable(listOfLists)
-
-
-def _linkified_part(text, anchors):
-    """
-    Linkify a part and collect any anchors generated
-    """
-    revision = re.compile(r'\b(issue\s+#?\d+)\b', re.M | re.I)
-
-    anchors.extend(revision.findall(text)) # ['Issue #43', ...]
-    return revision.sub(r'`\1`_', text)
-
 readme_file = open('README.txt')
-long_description = readme_file.read() + _linkified('CHANGES.txt')
+changes_file = open('CHANGES (links).txt')
+long_description = readme_file.read() + changes_file.read()
 readme_file.close()
+changes_file.close()
 
 dist = setup(
     name="distribute",