def check_history_headings(mod_path):
history_path = os.path.join(mod_path, HISTORY_NAME)
source_path = None
destination_path = None
with open(history_path, 'r') as f:
input_string = f.read()
_, pub = core.publish_programmatically(
source_class=io.StringInput, source=input_string,
source_path=source_path,
destination_class=io.NullOutput, destination=None,
destination_path=destination_path,
reader=None, reader_name='standalone',
parser=None, parser_name='restructuredtext',
writer=None, writer_name='null',
settings=None, settings_spec=None, settings_overrides={},
config_section=None, enable_exit_status=None)
# Check first heading is Release History
if pub.writer.document.children[0].rawsource != RELEASE_HISTORY_TITLE:
print("Expected '{}' as first heading in HISTORY.rst".format(RELEASE_HISTORY_TITLE))
return False
all_versions = [t['names'][0] for t in pub.writer.document.children if t['names']]
# Check that no headings contain 'unreleased'. We don't require it any more
if any('unreleased' in v.lower() for v in all_versions):
print("We no longer require 'unreleased' in headings. Use the appropriate version number instead.")
return False
# Check that the current package version has a history entry
if not all_versions:
print("Unable to get versions from {}. Check formatting. e.g. there should be a new line after the 'Release History' heading.".format(history_path))
return False
first_version_history = all_versions[0]
actual_version = subprocess.check_output('python setup.py --version'.split(), cwd=mod_path, universal_newlines=True)
actual_version = actual_version.strip()
if first_version_history != actual_version:
print("The topmost version in {} does not match version {} defined in setup.py.".format(history_path, actual_version))
return False
return True
评论列表
文章目录