diff --git a/bob/devtools/scripts/sphinx.py b/bob/devtools/scripts/sphinx.py index 9ae009057e5443756f56c91b864763337e163325..8aba8823da891a54ef7bf0aeb0787f2e9aa05615 100644 --- a/bob/devtools/scripts/sphinx.py +++ b/bob/devtools/scripts/sphinx.py @@ -8,30 +8,87 @@ def sphinx(): @sphinx.command() @click.argument( - "sphix_configuration", - default="doc/conf.py", + "sphix_configurations", type=click.Path(exists=True, dir_okay=False), required=False, + nargs=-1, ) -def migrate_autodoc_flags(sphix_configuration): - with open(sphix_configuration) as f: - config = f.read() +def migrate_autodoc_flags(sphix_configurations): + if not sphix_configurations: + sphix_configurations = ["doc/conf.py"] + for sphinx_config in sphix_configurations: + with open(sphinx_config) as f: + config = f.read() - config = config.replace( - """autodoc_default_flags = [ + config = config.replace( + """autodoc_default_flags = [ 'members', 'undoc-members', 'show-inheritance', ]""", - """autodoc_default_options = { + """autodoc_default_options = { "members": True, "undoc-members": True, "show-inheritance": True, }""", - ) + ) - config = config.replace( - """# We want to remove all private (i.e. _. or __.__) members + # another variant + config = config.replace( + """autodoc_default_flags = [ + "members", + "undoc-members", + "show-inheritance", +]""", + """autodoc_default_options = { + "members": True, + "undoc-members": True, + "show-inheritance": True, +}""", + ) + + # another variant + config = config.replace( + """autodoc_default_flags = [ + 'members', + 'undoc-members', + 'show-inheritance', +]""", + """autodoc_default_options = { + "members": True, + "undoc-members": True, + "show-inheritance": True, +}""", + ) + + # another variant + config = config.replace( + """autodoc_default_flags = [ + 'members', + 'undoc-members', + 'inherited-members', + 'show-inheritance', + ]""", + """autodoc_default_options = { + "members": True, + "undoc-members": True, + "inherited-members": True, + "show-inheritance": True, +}""", + ) + + # another variant + config = config.replace( + """autodoc_default_flags = ["members", "undoc-members", "show-inheritance"]""", + """autodoc_default_options = { + "members": True, + "undoc-members": True, + "show-inheritance": True, +}""", + ) + + config = config.replace( + """# We want to remove all private (i.e. _. or __.__) members # that are not in the list of accepted functions accepted_private_functions = ['__array__'] @@ -51,8 +108,91 @@ def member_function_test(app, what, name, obj, skip, options): def setup(app): app.connect('autodoc-skip-member', member_function_test) """, - "", - ) + "", + ) + + # another variant + config = config.replace( + """# We want to remove all private (i.e. _. or __.__) members +# that are not in the list of accepted functions +accepted_private_functions = ['__array__'] + + +def member_function_test(app, what, name, obj, skip, options): + # test if we have a private function + if len(name) > 1 and name[0] == '_': + # test if this private function should be allowed + if name not in accepted_private_functions: + # omit privat functions that are not in the list of accepted private functions + return skip + else: + # test if the method is documented + if not hasattr(obj, '__doc__') or not obj.__doc__: + return skip + return False + + +def setup(app): + app.connect('autodoc-skip-member', member_function_test) +""", + "", + ) + + # another variant + config = config.replace( + """# We want to remove all private (i.e. _. or __.__) members +# that are not in the list of accepted functions +accepted_private_functions = ["__array__"] + + +def member_function_test(app, what, name, obj, skip, options): + # test if we have a private function + if len(name) > 1 and name[0] == "_": + # test if this private function should be allowed + if name not in accepted_private_functions: + # omit privat functions that are not in the list of accepted private functions + return skip + else: + # test if the method is documented + if not hasattr(obj, "__doc__") or not obj.__doc__: + return skip + return False + + +def setup(app): + app.connect("autodoc-skip-member", member_function_test) +""", + "", + ) + + # another variant + config = config.replace( + """ +# We want to remove all private (i.e. _. or __.__) members +# that are not in the list of accepted functions +accepted_private_functions = ["__array__"] + + +def member_function_test(app, what, name, obj, skip, options): + # test if we have a private function + if len(name) > 1 and name[0] == "_": + # test if this private function should be allowed + if name not in accepted_private_functions: + # omit private functions that are not in the list of accepted private + # functions + return skip + else: + # test if the method is documented + if not hasattr(obj, "__doc__") or not obj.__doc__: + return skip + return False + + +def setup(app): + app.connect("autodoc-skip-member", member_function_test) +""", + "", + ) - with open(sphix_configuration, "w") as f: - f.write(config) + with open(sphinx_config, "w") as f: + f.write(config)