diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..8d79b7e --- /dev/null +++ b/setup.cfg @@ -0,0 +1,6 @@ +[flake8] +# E203: whitespaces before ':' +# E231: missing whitespace after ',' +# W503: line break before binary operator +ignore = E203,E231,W503 +max-line-length = 88 diff --git a/setup.py b/setup.py index 5ad80b5..c2c3a99 100644 --- a/setup.py +++ b/setup.py @@ -1,38 +1,40 @@ import os from setuptools import setup, find_packages def parse_requirements(name=None): if name: - reqf = 'requirements-%s.txt' % name + reqf = "requirements-%s.txt" % name else: - reqf = 'requirements.txt' + reqf = "requirements.txt" requirements = [] if not os.path.exists(reqf): return requirements with open(reqf) as f: for line in f.readlines(): line = line.strip() - if not line or line.startswith('#'): + if not line or line.startswith("#"): continue requirements.append(line) return requirements setup( - name='swh.docs', - description='Software Heritage development documentation', - author='Software Heritage developers', - author_email='swh-devel@inria.fr', - url='https://forge.softwareheritage.org/source/swh-docs/', + name="swh.docs", + description="Software Heritage development documentation", + author="Software Heritage developers", + author_email="swh-devel@inria.fr", + url="https://forge.softwareheritage.org/source/swh-docs/", packages=find_packages(), scripts=[], install_requires=parse_requirements(), - setup_requires=['vcversioner'], - extras_require={'testing': parse_requirements('test'), - 'building': parse_requirements('swh')}, + setup_requires=["vcversioner"], + extras_require={ + "testing": parse_requirements("test"), + "building": parse_requirements("swh"), + }, vcversioner={}, include_package_data=True, ) diff --git a/swh/__init__.py b/swh/__init__.py index 69e3be5..8db66d3 100644 --- a/swh/__init__.py +++ b/swh/__init__.py @@ -1 +1 @@ -__path__ = __import__('pkgutil').extend_path(__path__, __name__) +__path__ = __import__("pkgutil").extend_path(__path__, __name__) diff --git a/swh/docs/django_settings.py b/swh/docs/django_settings.py index f374fe2..bb85deb 100644 --- a/swh/docs/django_settings.py +++ b/swh/docs/django_settings.py @@ -1,14 +1,14 @@ from swh.deposit.settings.development import * # noqa import swh.web.settings.development as web # merge some config variables ns = globals() for var in dir(web): if var.isupper() and var in ns and isinstance(ns[var], list): for elt in getattr(web, var): if elt not in ns[var]: ns[var].append(elt) -SECRET_KEY = 'change me' +SECRET_KEY = "change me" diff --git a/swh/docs/sphinx/conf.py b/swh/docs/sphinx/conf.py index 6c494b9..c10611d 100755 --- a/swh/docs/sphinx/conf.py +++ b/swh/docs/sphinx/conf.py @@ -1,160 +1,165 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # import django import os # General information about the project. -project = 'Software Heritage - Development Documentation' -copyright = '2015-2019 The Software Heritage developers' -author = 'The Software Heritage developers' +project = "Software Heritage - Development Documentation" +copyright = "2015-2019 The Software Heritage developers" +author = "The Software Heritage developers" # -- General configuration ------------------------------------------------ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['sphinx.ext.autodoc', - 'sphinx.ext.napoleon', - 'sphinxcontrib.httpdomain', - 'sphinx.ext.extlinks', - 'sphinxcontrib.images', - 'sphinxcontrib.programoutput', - 'sphinx.ext.viewcode', - 'sphinx_tabs.tabs', - 'sphinx_rtd_theme', - 'sphinx.ext.graphviz', - ] +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinxcontrib.httpdomain", + "sphinx.ext.extlinks", + "sphinxcontrib.images", + "sphinxcontrib.programoutput", + "sphinx.ext.viewcode", + "sphinx_tabs.tabs", + "sphinx_rtd_theme", + "sphinx.ext.graphviz", +] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # -source_suffix = ['.rst', '.md'] +source_suffix = [".rst", ".md"] # source_suffix = '.rst' source_parsers = { - '.md': 'recommonmark.parser.CommonMarkParser', + ".md": "recommonmark.parser.CommonMarkParser", } # The master toctree document. -master_doc = 'index' +master_doc = "index" # A string of reStructuredText that will be included at the beginning of every # source file that is read. # A bit hackish but should work both for each swh package and the whole swh-doc -rst_prolog = ''' +rst_prolog = """ .. include:: /../../swh-docs/docs/swh_substitutions -''' +""" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '' +version = "" # The full version, including alpha/beta/rc tags. -release = '' +release = "" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = 'en' +language = "en" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path -exclude_patterns = ['_build', 'swh-icinga-plugins/index.rst', 'swh-search/index.rst'] +exclude_patterns = ["_build", "swh-icinga-plugins/index.rst", "swh-search/index.rst"] # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = "sphinx" # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = True # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'sphinx_rtd_theme' +html_theme = "sphinx_rtd_theme" -html_favicon = '_static/favicon.ico' +html_favicon = "_static/favicon.ico" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # html_theme_options = { - 'collapse_navigation': True, - 'sticky_navigation': True, + "collapse_navigation": True, + "sticky_navigation": True, } -html_logo = '_static/software-heritage-logo-title-motto-vertical-white.png' +html_logo = "_static/software-heritage-logo-title-motto-vertical-white.png" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +html_static_path = ["_static"] # make logo actually appear, avoiding gotcha due to alabaster default conf. # https://github.com/bitprophet/alabaster/issues/97#issuecomment-303722935 html_sidebars = { - '**': [ - 'about.html', - 'globaltoc.html', - 'relations.html', - 'sourcelink.html', - 'searchbox.html', + "**": [ + "about.html", + "globaltoc.html", + "relations.html", + "sourcelink.html", + "searchbox.html", ] } # If not None, a 'Last updated on:' timestamp is inserted at every page # bottom, using the given strftime format. # The empty string is equivalent to '%b %d, %Y'. html_last_updated_fmt = "%Y-%m-%d %H:%M:%S %Z" # refer to the Python standard library. -intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} +intersphinx_mapping = {"python": ("https://docs.python.org/3", None)} # -- autodoc configuration ---------------------------------------------- -autodoc_default_flags = ['members', 'undoc-members', 'private-members', - 'special-members'] -autodoc_member_order = 'bysource' -autodoc_mock_imports = ['rados'] +autodoc_default_flags = [ + "members", + "undoc-members", + "private-members", + "special-members", +] +autodoc_member_order = "bysource" +autodoc_mock_imports = ["rados"] -modindex_common_prefix = ['swh.'] +modindex_common_prefix = ["swh."] # for the extlinks extension, sub-projects should fill that dict extlinks = {} # XXX Kill this ASA this PR is accepted and released # https://github.com/sphinx-contrib/httpdomain/pull/19 def register_routingtable_as_label(app, document): from sphinx.locale import _ # noqa - labels = app.env.domaindata['std']['labels'] - labels['routingtable'] = 'http-routingtable', '', _('HTTP Routing Table') - anonlabels = app.env.domaindata['std']['anonlabels'] - anonlabels['routingtable'] = 'http-routingtable', '' + + labels = app.env.domaindata["std"]["labels"] + labels["routingtable"] = "http-routingtable", "", _("HTTP Routing Table") + anonlabels = app.env.domaindata["std"]["anonlabels"] + anonlabels["routingtable"] = "http-routingtable", "" # hack to set the adequate django settings when building global swh doc # to avoid autodoc build errors def setup(app): - os.environ.setdefault('DJANGO_SETTINGS_MODULE', - 'swh.docs.django_settings') + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "swh.docs.django_settings") django.setup() import pkg_resources # noqa from distutils.version import StrictVersion # noqa - httpdomain = pkg_resources.get_distribution('sphinxcontrib-httpdomain') - if StrictVersion(httpdomain.version) <= StrictVersion('1.7.0'): - app.connect('doctree-read', register_routingtable_as_label) + httpdomain = pkg_resources.get_distribution("sphinxcontrib-httpdomain") + if StrictVersion(httpdomain.version) <= StrictVersion("1.7.0"): + app.connect("doctree-read", register_routingtable_as_label) diff --git a/tox.ini b/tox.ini index 369b8d5..d042813 100644 --- a/tox.ini +++ b/tox.ini @@ -1,30 +1,37 @@ [tox] -envlist=flake8 +envlist=flake8,black [testenv] basepython = python3 passenv = SPHINXOPTS JAVA_HOME [testenv:sphinx] extras = building deps = django < 2 pifpaf commands = {envpython} -m pifpaf run postgresql -- make -C docs {posargs:html} [testenv:sphinx-dev] deps = django < 2 -rrequirements-swh-dev.txt pifpaf commands = {envpython} -m pifpaf run postgresql -- make -C docs {posargs:html} +[testenv:black] +skip_install = true +deps = + black +commands = + {envpython} -m black --check swh + [testenv:flake8] skip_install = true deps = flake8 commands = {envpython} -m flake8