Hello community, here is the log from the commit of package kapidox for openSUSE:Factory checked in at 2018-03-22 12:02:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kapidox (Old) and /work/SRC/openSUSE:Factory/.kapidox.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kapidox" Thu Mar 22 12:02:07 2018 rev:50 rq:586805 version:5.44.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kapidox/kapidox.changes 2018-02-18 11:42:16.481793867 +0100 +++ /work/SRC/openSUSE:Factory/.kapidox.new/kapidox.changes 2018-03-22 12:08:14.434956273 +0100 @@ -1,0 +2,26 @@ +Wed Mar 14 13:37:16 UTC 2018 - [email protected] + +- Add 0001-Look-first-for-qhelpgenerator-qt5-for-help-generatio.patch: + * Look for qhelpgenerator-qt5 first (as it's named in openSUSE) +- Add 0001-Remove-shebangs-from-non-executable-files.patch: + * Remove shebangs from non-executable files +- Add an explicit dependency on libqt5-qttools (needed for QCH + generation) +- Rework summary and description to match what this package actually + does +- Switch from Python 2 to Python 3 usage +- Reformat the spec with spec-cleaner + +------------------------------------------------------------------- +Mon Mar 12 23:29:40 CET 2018 - [email protected] + +- Update to 5.44.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/kde-frameworks-5.44.0.php +- Changes since 5.43.0: + * QCH files are now generated and available. + remove unused variables and functions + * Remove some unused arguments from the input parsing + * Exit in error if the output directory is not empty. + Some other small fixes (kde#390904) + +------------------------------------------------------------------- Old: ---- kapidox-5.43.0.tar.xz New: ---- 0001-Look-first-for-qhelpgenerator-qt5-for-help-generatio.patch 0001-Remove-shebangs-from-non-executable-files.patch kapidox-5.44.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kapidox.spec ++++++ --- /var/tmp/diff_new_pack.9dCGQF/_old 2018-03-22 12:08:15.250927023 +0100 +++ /var/tmp/diff_new_pack.9dCGQF/_new 2018-03-22 12:08:15.254926880 +0100 @@ -16,49 +16,53 @@ # -%define _tar_path 5.43 +%define _tar_path 5.44 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %global _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} Name: kapidox -Version: 5.43.0 +Version: 5.44.0 Release: 0 -Requires: doxygen +Summary: Scripts and data for building API documentation +License: BSD-2-Clause +Group: System/GUI/KDE +Url: http://www.kde.org +Source: http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz +# PATCH-FIX-UPSTREAM +Patch0: 0001-Remove-shebangs-from-non-executable-files.patch +# PATCH-FIX-UPSTREAM +Patch1: 0001-Look-first-for-qhelpgenerator-qt5-for-help-generatio.patch BuildRequires: fdupes BuildRequires: kf5-filesystem -BuildRequires: python -Requires: python-Jinja2 -Recommends: python-PyYAML +BuildRequires: python3 Requires: doxygen Requires: graphviz Requires: graphviz-gd -Requires: python-xml -Summary: KDE Base Libraries -License: BSD-2-Clause -Group: System/GUI/KDE -Url: http://www.kde.org -Source: http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz -BuildRoot: %{_tmppath}/%{name}-%{version}-build +Requires: libqt5-qttools +Requires: python3-Jinja2 +Requires: python3-xml +Recommends: python3-PyYAML +BuildArch: noarch %description -This package contains the core libraries of the K Desktop Environment. - -This package is absolutely necessary for using KDE applications. +The kapidox framework enables the generation of API documentation from +Doxygen-formatted codde comments in a standard format and style. %prep %setup -q +%autopatch -p1 %build - python setup.py build + python3 setup.py build %install - python setup.py install --prefix=%{_kf5_prefix} --root=%{buildroot} + python3 setup.py install --prefix=%{_kf5_prefix} --root=%{buildroot} %fdupes %{buildroot} %files -%defattr(-,root,root) -%doc README* LICENSE +%license LICENSE +%doc README* %{_kf5_bindir}/kapidox_generate %{_kf5_bindir}/depdiagram-generate %{_kf5_bindir}/depdiagram-generate-all @@ -66,7 +70,7 @@ %{_kf5_mandir}/man1/depdiagram-generate-all.1* %{_kf5_mandir}/man1/depdiagram-generate.1* %{_kf5_mandir}/man1/depdiagram-prepare.1* -%{python_sitelib}/kapidox/ -%{python_sitelib}/kapidox-*.egg-info +%{python3_sitelib}/kapidox/ +%{python3_sitelib}/kapidox-*.egg-info %changelog ++++++ 0001-Look-first-for-qhelpgenerator-qt5-for-help-generatio.patch ++++++ >From 64dac1ad3c8db765dd269ee6ec8a4549bb93d598 Mon Sep 17 00:00:00 2001 From: Luca Beltrame <[email protected]> Date: Wed, 14 Mar 2018 09:25:02 +0100 Subject: [PATCH] Look first for qhelpgenerator-qt5 for help generation Summary: A number of distributions uses the -qt5 suffix for Qt command line tools, to make sure they can coexist with the Qt4 equivalents. This change uses `distutils`'s `find_executable` to look for the -qt5 suffix of `qhelpgenerator`. If it is not found, it falls back to the un-suffixed version. Reviewers: #frameworks, ochurlaud Subscribers: #documentation Tags: #frameworks, #documentation Differential Revision: https://phabricator.kde.org/D11315 --- src/kapidox/generator.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/kapidox/generator.py b/src/kapidox/generator.py index 3fdf5e7..3346a47 100644 --- a/src/kapidox/generator.py +++ b/src/kapidox/generator.py @@ -30,6 +30,7 @@ from __future__ import division, absolute_import, print_function, unicode_literals import codecs +from distutils.spawn import find_executable import datetime import os import logging @@ -928,5 +929,14 @@ def create_qch(products, tagfiles): name = product.name+".qhp" outname = product.name+".qch" tree_out.write(name, encoding="utf-8", xml_declaration=True) - subprocess.call(["qhelpgenerator", name, '-o', 'qch/'+outname]) + + # On many distributions, qhelpgenerator from Qt5 is suffixed with + # "-qt5". Look for it first, and fall back to unsuffixed one if + # not found. + qhelpgenerator = find_executable("qhelpgenerator-qt5") + + if qhelpgenerator is None: + qhelpgenerator = "qhelpgenerator" + + subprocess.call([qhelpgenerator, name, '-o', 'qch/'+outname]) os.remove(name) -- 2.16.2 ++++++ 0001-Remove-shebangs-from-non-executable-files.patch ++++++ >From b9d46fec4437ababe8a77e197059733633977c89 Mon Sep 17 00:00:00 2001 From: Luca Beltrame <[email protected]> Date: Wed, 14 Mar 2018 14:34:15 +0100 Subject: [PATCH] Remove shebangs from non-executable files Summary: These files are meant to be used as part of the import, not directly. Therefore it makes no sense to have /usr/bin/env python calls on top. (Other files correctly don't have shebangs) Reviewers: #frameworks, ochurlaud Subscribers: #documentation Tags: #frameworks, #documentation Differential Revision: https://phabricator.kde.org/D11330 --- src/kapidox/depdiagram/generate.py | 1 - src/kapidox/hlfunctions.py | 1 - 2 files changed, 2 deletions(-) diff --git a/src/kapidox/depdiagram/generate.py b/src/kapidox/depdiagram/generate.py index 20fae6f..af80d51 100644 --- a/src/kapidox/depdiagram/generate.py +++ b/src/kapidox/depdiagram/generate.py @@ -1,4 +1,3 @@ -#! /usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2014 Aurélien Gâteau <[email protected]> diff --git a/src/kapidox/hlfunctions.py b/src/kapidox/hlfunctions.py index 26571b8..ed1dd68 100644 --- a/src/kapidox/hlfunctions.py +++ b/src/kapidox/hlfunctions.py @@ -1,4 +1,3 @@ -#! /usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2014 Alex Merry <[email protected]> -- 2.16.2 ++++++ kapidox-5.43.0.tar.xz -> kapidox-5.44.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.43.0/setup.py new/kapidox-5.44.0/setup.py --- old/kapidox-5.43.0/setup.py 2018-01-15 15:51:43.000000000 +0100 +++ new/kapidox-5.44.0/setup.py 2018-03-03 10:48:26.000000000 +0100 @@ -6,7 +6,7 @@ setup( name='kapidox', - version='5.43.0', + version='5.44.0', description='KDE API documentation generation tools', maintainer = 'Olivier Churlaud', maintainer_email = '[email protected]', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.43.0/src/kapidox/argparserutils.py new/kapidox-5.44.0/src/kapidox/argparserutils.py --- old/kapidox-5.43.0/src/kapidox/argparserutils.py 2018-01-15 15:51:43.000000000 +0100 +++ new/kapidox-5.44.0/src/kapidox/argparserutils.py 2018-03-03 10:48:26.000000000 +0100 @@ -33,8 +33,12 @@ def parse_args(depdiagram_available): + import textwrap parser = argparse.ArgumentParser( - description='Generate API documentation for the KDE Products' + formatter_class=argparse.RawDescriptionHelpFormatter, + description=textwrap.dedent('''Generate API documentations of complex projects. + +>> This function must be run from an empty directory (where the documentation will be build).''') ) group = add_sources_group(parser) group.add_argument('sourcesdir', @@ -74,12 +78,6 @@ help='Generate man page documentation.') group.add_argument('--qhp', action='store_true', help='Generate Qt Compressed Help documentation.') - group.add_argument('--searchengine', action='store_true', - help="Enable Doxygen's search engine feature.") - group.add_argument('--api-searchbox', action='store_true', - help="Enable the API searchbox.") - group.add_argument('--indexing', action='store_true', - help="Enable indexing.") return group diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.43.0/src/kapidox/data/Doxyfile.global new/kapidox-5.44.0/src/kapidox/data/Doxyfile.global --- old/kapidox-5.43.0/src/kapidox/data/Doxyfile.global 2018-01-15 15:51:43.000000000 +0100 +++ new/kapidox-5.44.0/src/kapidox/data/Doxyfile.global 2018-03-03 10:48:26.000000000 +0100 @@ -158,10 +158,6 @@ # Turn off the condensed index at top of each HTML page. DISABLE_INDEX = YES -# Turn off built-in JS search engine -#SEARCHENGINE = NO - - #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- @@ -210,6 +206,7 @@ # relations between templates and their instances. TEMPLATE_RELATIONS = YES +# Do not overwrite these values or the KApiDox JS search function will break. SEARCHENGINE = YES SERVER_BASED_SEARCH = YES EXTERNAL_SEARCH = YES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.43.0/src/kapidox/data/templates/frontpage.html new/kapidox-5.44.0/src/kapidox/data/templates/frontpage.html --- old/kapidox-5.43.0/src/kapidox/data/templates/frontpage.html 2018-01-15 15:51:43.000000000 +0100 +++ new/kapidox-5.44.0/src/kapidox/data/templates/frontpage.html 2018-03-03 10:48:26.000000000 +0100 @@ -50,8 +50,8 @@ {% endif %} {% if qch or man %} <li class="prod-download"> - {% if qch %} <a href="{{ product.href }}/{{product.name}}.qch">QCH</a>{% endif %} - {% if man %} <a href="{{ product.href }}/{{product.name}}.man">QCH</a>{% endif %} + {% if qch %} [<a href="qch/{{product.name}}.qch">QCH file</a>]{% endif %} + {% if man %} <a href="qch/{{product.name}}.man">MAN</a>{% endif %} </li> {% endif %} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.43.0/src/kapidox/data/templates/subgroup.html new/kapidox-5.44.0/src/kapidox/data/templates/subgroup.html --- old/kapidox-5.43.0/src/kapidox/data/templates/subgroup.html 2018-01-15 15:51:43.000000000 +0100 +++ new/kapidox-5.44.0/src/kapidox/data/templates/subgroup.html 2018-03-03 10:48:26.000000000 +0100 @@ -40,6 +40,8 @@ {% endfor %} </div> <a class="library-fancyname" href="{{lib.href}}">{{lib.fancyname}}</a> + {% if qch %} [<a href="{{ lib.name }}/qch/{{lib.fancyname }}.qch">QCH file</a>]{% endif %} + {% if man %} <a href="{{ product.href }}/{{product.name}}.man">MAN</a>{% endif %} </div> <span class="library-description">{{lib.description}}</span> </td> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.43.0/src/kapidox/generator.py new/kapidox-5.44.0/src/kapidox/generator.py --- old/kapidox-5.43.0/src/kapidox/generator.py 2018-01-15 15:51:43.000000000 +0100 +++ new/kapidox-5.44.0/src/kapidox/generator.py 2018-03-03 10:48:26.000000000 +0100 @@ -71,7 +71,6 @@ "build_classmap", "postprocess", "create_dirs", - "write_mapping_to_php", "create_jinja_environment", ) @@ -105,8 +104,6 @@ # Output options 'man_pages', 'qhp', - 'searchengine', - 'api_searchbox', # Binaries 'doxygen', 'qhelpgenerator', @@ -120,8 +117,6 @@ # Output options self.man_pages = args.man_pages self.qhp = args.qhp - self.searchengine = args.searchengine - self.api_searchbox = args.api_searchbox # Binaries self.doxygen = args.doxygen self.qhelpgenerator = args.qhelpgenerator @@ -136,16 +131,15 @@ return jinja2.Environment(loader=loader) -def process_toplevel_html_file(outputfile, doxdatadir, products, title, - api_searchbox=False): +def process_toplevel_html_file(outputfile, doxdatadir, products, title, qch_enabled=False): products.sort(key=lambda x: x.fancyname.lower()) mapping = { 'resources': './resources', - 'api_searchbox': api_searchbox, # steal the doxygen css from one of the frameworks # this means that all the doxygen-provided images etc. will be found 'title': title, + 'qch': qch_enabled, 'breadcrumbs': { 'entries': [ { @@ -166,14 +160,13 @@ outf.write(tmpl2.render(mapping)) -def process_subgroup_html_files(outputfile, doxdatadir, groups, available_platforms, title, - api_searchbox=False): +def process_subgroup_html_files(outputfile, doxdatadir, groups, available_platforms, title, qch_enabled=False): for group in groups: mapping = { 'resources': '../resources', - 'api_searchbox': api_searchbox, 'title': title, + 'qch': qch_enabled, 'breadcrumbs': { 'entries': [ { @@ -494,37 +487,6 @@ return mapping -def write_mapping_to_php(mapping, outputfile, varname='map'): - """Write a mapping out as PHP code - - Creates a PHP array as described by mapping. For example, the mapping - - [("foo","bar"),("x","y")] - - would cause the file - - <?php $map = array('foo' => 'bar','x' => 'y') ?> - - to be written out. - - Args: - mapping: a list of pairs of strings - outputfile: the file to write to - varname: override the PHP variable name (defaults to 'map') - """ - logging.info('Generating PHP mapping') - with codecs.open(outputfile, 'w', 'utf-8') as f: - f.write('<?php $' + varname + ' = array(') - first = True - for entry in mapping: - if first: - first = False - else: - f.write(',') - f.write("'" + entry['classname'] + "' => '" + entry['filename'] + "'") - f.write(') ?>') - - def generate_dependencies_page(tmp_dir, doxdatadir, modulename, dependency_diagram): """Create `modulename`-dependencies.md in `tmp_dir`""" template_path = os.path.join(doxdatadir, 'dependencies.md.tmpl') @@ -623,8 +585,6 @@ GENERATE_MAN=ctx.man_pages, GENERATE_QHP=ctx.qhp) - #, SEARCHENGINE=ctx.searchengine) - if doxyfile_entries: writer.write_entries(**doxyfile_entries) @@ -647,7 +607,6 @@ 'title': ctx.title, 'fwinfo': ctx.fwinfo, 'copyright': ctx.copyright, - 'api_searchbox': ctx.api_searchbox, 'doxygen_menu': {'entries': menu_items(ctx.htmldir, ctx.modulename)}, 'class_map': {'classes': classmap}, 'kapidox_version': utils.get_kapidox_version(), @@ -709,6 +668,9 @@ if lib.part_of_group: corrected_tagfiles = [] for k in range(len(tagfiles)): + # tagfiles are tupples like: + # ('/usr/share/doc/qt/KF5Completion.tags', '/usr/share/doc/qt') + # ('/where/the/tagfile/is/Name.tags', '/where/the/root/folder/is') if tagfiles[k][1].startswith("http://") or tagfiles[k][1].startswith("https://"): corrected_tagfiles.append(tagfiles[k]) else: @@ -756,7 +718,6 @@ def finish_fw_apidocs(ctx, group_menu): classmap = build_classmap(ctx.tagfile) - #write_mapping_to_php(classmap, os.path.join(ctx.outputdir, 'classmap.inc')) entries = [{ 'href': '../../index.html', @@ -780,12 +741,12 @@ } copyright = '1996-' + str(datetime.date.today().year) + ' The KDE developers' mapping = { + 'qch': ctx.qhp, 'doxygencss': 'doxygen.css', 'resources': ctx.resourcedir, 'title': ctx.title, 'fwinfo': ctx.fwinfo, 'copyright': copyright, - 'api_searchbox': ctx.api_searchbox, 'doxygen_menu': {'entries': menu_items(ctx.htmldir, ctx.modulename)}, 'class_map': {'classes': classmap}, 'kapidox_version': utils.get_kapidox_version(), @@ -921,7 +882,6 @@ child.attrib['ref'] = product.name + '/' +child.attrib['ref'] for child in root.find(".//"+tag_toc): - print(child.attrib['ref']) if lib.part_of_group: product_indexSection.append(child) else: @@ -933,16 +893,6 @@ resources = [ "*.json", product.name + "/*.json", - product.name +"/" + lib.name +"/html/*.json", - product.name + "/*.html", - product.name + "/html/*.html", - product.name +"/html/*.png", - product.name +"/html/*.css", - product.name +"/html/*.js", - product.name +"/" + lib.name +"/html/*.html", - product.name +"/" + lib.name +"/html/*.png", - product.name +"/" + lib.name +"/html/*.css", - product.name +"/" + lib.name +"/html/*.js", "resources/css/*.css", "resources/3rd-party/bootstrap/css/*.css", "resources/3rd-party/jquery/jquery-3.1.0.min.js", @@ -950,6 +900,24 @@ "resources/js/*.js", "resources/icons/*", ] + if product.part_of_group: + resources.extend([ + product.name + "/*.html", + product.name + "/" + lib.name +"/html/*.html", + product.name + "/" + lib.name +"/html/*.png", + product.name + "/" + lib.name +"/html/*.css", + product.name + "/" + lib.name +"/html/*.js", + product.name + "/" + lib.name +"/html/*.json" + ]) + + else: + resources.extend([ + product.name + "/html/*.html", + product.name + "/html/*.png", + product.name + "/html/*.css", + product.name + "/html/*.js" + ]) + for resource in resources: file_elem = ET.SubElement(files, "file") file_elem.text = resource diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.43.0/src/kapidox/hlfunctions.py new/kapidox-5.44.0/src/kapidox/hlfunctions.py --- old/kapidox-5.43.0/src/kapidox/hlfunctions.py 2018-01-15 15:51:43.000000000 +0100 +++ new/kapidox-5.44.0/src/kapidox/hlfunctions.py 2018-03-03 10:48:26.000000000 +0100 @@ -49,12 +49,20 @@ except ImportError: DEPDIAGRAM_AVAILABLE = False -def do_it(maintainers, copyright, searchpaths=None): + +def do_it(maintainers_fct, copyright, searchpaths=None): + utils.setup_logging() if searchpaths is None: searchpaths = searchpaths=['/usr/share/doc/qt5', '/usr/share/doc/qt'] - utils.setup_logging() args = argparserutils.parse_args(DEPDIAGRAM_AVAILABLE) + if len(os.listdir(os.getcwd())) > 0: + logging.error("Run this command from an empty directory.") + exit(2) + + if not DEPDIAGRAM_AVAILABLE: + logging.warning("Missing Graphviz dependency: diagrams will not be generated.") + tagfiles = generator.search_for_tagfiles( suggestion=args.qtdoc_dir, doclink=args.qtdoc_link, @@ -62,6 +70,7 @@ searchpaths=searchpaths) rootdir = args.sourcesdir + maintainers = maintainers_fct() metalist = preprocessing.parse_tree(rootdir) products, groups, libraries, available_platforms = preprocessing.sort_metainfo(metalist, maintainers) @@ -77,14 +86,14 @@ args.doxdatadir, title=args.title, products=products, - api_searchbox=args.api_searchbox + qch_enabled=args.qhp ) generator.process_subgroup_html_files('index.html', args.doxdatadir, title=args.title, groups=groups, available_platforms=available_platforms, - api_searchbox=args.api_searchbox + qch_enabled=args.qhp ) tmp_dir = tempfile.mkdtemp(prefix='kapidox-') @@ -100,9 +109,16 @@ dot_files, tmp_dir) if ok: lib.dependency_diagram = png_path + + # store this as we won't use that everytime + create_qhp = args.qhp + args.qhp = False ctx = generator.create_fw_context(args, lib, tagfiles) + # set it back + args.qhp = create_qhp + generator.gen_fw_apidocs(ctx, tmp_dir) - tagfiles.append(generator.create_fw_tagfile_tuple(lib)) + tagfiles.insert(0, generator.create_fw_tagfile_tuple(lib)) # Rebuild for interdependencies for lib in libraries: @@ -114,7 +130,6 @@ generator.finish_fw_apidocs(ctx, None) logging.info('# Generate indexing files') generator.indexer(lib) - logging.info('# Done') for product in products: generator.create_product_index(product) if product.logo_url is not None: @@ -124,7 +139,10 @@ shutil.copy(product.logo_url_src, product.logo_url) generator.create_global_index(products) if args.qhp: + logging.info('# Merge qch files' + .format(lib.fancyname)) generator.create_qch(products, tagfiles) + logging.info('# Done') finally: if args.keep_temp_dirs: logging.info('Kept temp dir at {}'.format(tmp_dir)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kapidox-5.43.0/src/kapidox_generate new/kapidox-5.44.0/src/kapidox_generate --- old/kapidox-5.43.0/src/kapidox_generate 2018-01-15 15:51:43.000000000 +0100 +++ new/kapidox-5.44.0/src/kapidox_generate 2018-03-03 10:48:26.000000000 +0100 @@ -99,11 +99,10 @@ def main(): - utils.setup_logging() kde_copyright = '1996-' + str(datetime.date.today().year) + ' The KDE developers' - maintainers = download_kde_identities() + get_maintainers = download_kde_identities - hlfunctions.do_it(maintainers=maintainers, + hlfunctions.do_it(maintainers_fct=get_maintainers, copyright=kde_copyright)
