def append_removed_collections(builder: RstBuilder, changelog_entry: ChangelogEntry) -> None: if changelog_entry.removed_collections: builder.add_section('Removed Collections', 1) for collector, collection_version in changelog_entry.removed_collections: builder.add_list_item(f"{collector.collection} " f"(previously included version: {collection_version})") builder.add_raw_rst('')
def append_unchanged_collections(builder: RstBuilder, changelog_entry: ChangelogEntry) -> None: if changelog_entry.unchanged_collections: builder.add_section('Unchanged Collections', 1) for collector, collection_version in changelog_entry.unchanged_collections: builder.add_list_item( f"{collector.collection} (still version {collection_version})") builder.add_raw_rst('')
def append_changelog_changes_collections(builder: RstBuilder, collection_metadata: CollectionsMetadata, changelog_entry: ChangelogEntry, is_last: bool) -> PluginDataT: result: PluginDataT = [] if changelog_entry.changed_collections: builder.add_section('Included Collections' if is_last else 'Changed Collections', 1) for ( collector, collection_version, prev_collection_version ) in changelog_entry.changed_collections: if is_last: msg = f"{collector.collection} with version {collection_version}." if prev_collection_version is not None: msg += f" This was upgraded from version {prev_collection_version}." else: if prev_collection_version is None: msg = f"{collector.collection} was upgraded to version {collection_version}." else: msg = f"{collector.collection} was upgraded from" msg += f" version {prev_collection_version} to version {collection_version}." msg += "\n" changelog = collector.changelog if changelog: release_entries = changelog.generator.collect( squash=True, after_version=prev_collection_version, until_version=collection_version) if not release_entries: msg += "The collection did not have a changelog in this version." elif release_entries[0].empty: msg += "There are no changes recorded in the changelog." else: result.append(( collector.collection, f"{collector.collection}.", changelog.generator, release_entries[0])) msg += "The changes are reported in the combined changelog below." else: metadata = collection_metadata.get_meta(collector.collection) if metadata.changelog_url is not None: msg += "You can find the collection's changelog at" msg += f" `{metadata.changelog_url} <{metadata.changelog_url}>`_." else: msg += "Unfortunately, this collection does not provide changelog data in a" msg += " format that can be processed by the changelog generator." builder.add_list_item(msg) builder.add_raw_rst('') return result
def dump_plugins(builder: RstBuilder, plugins: PluginDumpT) -> None: last_title = [] for title, name, description in sorted(plugins): if title != last_title: if last_title: builder.add_raw_rst('') for i in range(common_start(last_title, title), len(title)): builder.add_section(title[i], i + 1) last_title = title builder.add_list_item(f"{name} - {description}") if last_title: builder.add_raw_rst('')
def append_porting_guide(builder: RstBuilder, changelog_entry: ChangelogEntry) -> None: maybe_add_title = create_title_adder( builder, 'Porting Guide for v{0}'.format(changelog_entry.version_str), 0) for section in ['known_issues', 'breaking_changes', 'major_changes']: append_porting_guide_section(builder, changelog_entry, maybe_add_title, section) if changelog_entry.removed_collections: next(maybe_add_title) builder.add_section('Removed Collections', 1) for collector, collection_version in changelog_entry.removed_collections: builder.add_list_item(f"{collector.collection} " f"(previously included version: {collection_version})") builder.add_raw_rst('') for section in ['removed_features', 'deprecated_features']: append_porting_guide_section(builder, changelog_entry, maybe_add_title, section)