From f2f64ed496af13e633d97b4ffe70aa3084d15bdb Mon Sep 17 00:00:00 2001 From: Alexander Goscinski Date: Wed, 24 Jul 2024 17:55:07 +0200 Subject: [PATCH] Apply the formatting to double quotes on template repo --- {{cookiecutter.plugin_name}}/conftest.py | 8 +- .../docs/source/conf.py | 76 +++++++++---------- .../examples/example_01.py | 34 ++++----- .../{{cookiecutter.module_name}}/__init__.py | 2 +- .../calculations.py | 28 +++---- .../src/{{cookiecutter.module_name}}/cli.py | 22 +++--- .../data/__init__.py | 14 ++-- .../{{cookiecutter.module_name}}/helpers.py | 12 +-- .../{{cookiecutter.module_name}}/parsers.py | 10 +-- .../tests/test_calculations.py | 28 +++---- .../tests/test_cli.py | 6 +- 11 files changed, 120 insertions(+), 120 deletions(-) diff --git a/{{cookiecutter.plugin_name}}/conftest.py b/{{cookiecutter.plugin_name}}/conftest.py index dd9d4ae..e696b9d 100644 --- a/{{cookiecutter.plugin_name}}/conftest.py +++ b/{{cookiecutter.plugin_name}}/conftest.py @@ -2,15 +2,15 @@ import pytest -pytest_plugins = ['aiida.manage.tests.pytest_fixtures'] +pytest_plugins = ["aiida.manage.tests.pytest_fixtures"] -@pytest.fixture(scope='function', autouse=True) +@pytest.fixture(scope="function", autouse=True) def clear_database_auto(clear_database): # pylint: disable=unused-argument """Automatically clear database in between tests.""" -@pytest.fixture(scope='function') +@pytest.fixture(scope="function") def {{cookiecutter.entry_point_prefix}}_code(aiida_local_code_factory): """Get a {{cookiecutter.entry_point_prefix}} code.""" - return aiida_local_code_factory(executable='diff', entry_point='{{cookiecutter.entry_point_prefix}}') + return aiida_local_code_factory(executable="diff", entry_point="{{cookiecutter.entry_point_prefix}}") diff --git a/{{cookiecutter.plugin_name}}/docs/source/conf.py b/{{cookiecutter.plugin_name}}/docs/source/conf.py index 66a143b..522cf1c 100755 --- a/{{cookiecutter.plugin_name}}/docs/source/conf.py +++ b/{{cookiecutter.plugin_name}}/docs/source/conf.py @@ -21,7 +21,7 @@ # -- AiiDA-related setup -------------------------------------------------- # Load AiiDA profile -temp_profile = SqliteTempBackend.create_profile('temp-profile') +temp_profile = SqliteTempBackend.create_profile("temp-profile") load_profile(temp_profile, allow_switch=True) # -- General configuration ------------------------------------------------ @@ -34,43 +34,43 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.mathjax', - 'sphinx.ext.intersphinx', - 'sphinx.ext.viewcode', - 'sphinxcontrib.contentui', - 'aiida.sphinxext', + "sphinx.ext.autodoc", + "sphinx.ext.mathjax", + "sphinx.ext.intersphinx", + "sphinx.ext.viewcode", + "sphinxcontrib.contentui", + "aiida.sphinxext", ] intersphinx_mapping = { - 'python': ('https://docs.python.org/3', None), - 'aiida': ('https://aiida.readthedocs.io/projects/aiida-core/en/latest', None), + "python": ("https://docs.python.org/3", None), + "aiida": ("https://aiida.readthedocs.io/projects/aiida-core/en/latest", None), } # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] # The suffix of source filenames. -source_suffix = '.rst' +source_suffix = ".rst" # The encoding of source files. # source_encoding = 'utf-8-sig' # The master toctree document. # ~ master_doc = 'index' -master_doc = 'index' +master_doc = "index" # General information about the project. -project = '{{cookiecutter.plugin_name}}' -copyright_first_year = '{{cookiecutter.year}}' -copyright_owners = '{{cookiecutter.author}}' +project = "{{cookiecutter.plugin_name}}" +copyright_first_year = "{{cookiecutter.year}}" +copyright_owners = "{{cookiecutter.author}}" current_year = str(time.localtime().tm_year) copyright_year_string = ( - current_year if current_year == copyright_first_year else f'{copyright_first_year}-{current_year}' + current_year if current_year == copyright_first_year else f"{copyright_first_year}-{current_year}" ) # pylint: disable=redefined-builtin -copyright = f'{copyright_year_string}, {copyright_owners}. All rights reserved' +copyright = f"{copyright_year_string}, {copyright_owners}. All rights reserved" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -79,14 +79,14 @@ # The full version, including alpha/beta/rc tags. release = {{cookiecutter.module_name}}.__version__ # The short X.Y version. -version = '.'.join(release.split('.')[:2]) +version = ".".join(release.split(".")[:2]) # 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" # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: @@ -104,13 +104,13 @@ show_authors = True # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = "sphinx" # -- Options for HTML output ---------------------------------------------- -html_theme = 'furo' -html_logo = 'images/AiiDA_transparent_logo.png' -html_title = f'{{cookiecutter.plugin_name}} v{release}' +html_theme = "furo" +html_logo = "images/AiiDA_transparent_logo.png" +html_title = f"{{cookiecutter.plugin_name}} v{release}" html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. @@ -167,7 +167,7 @@ # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. -html_use_opensearch = 'https://{{cookiecutter.plugin_name}}.readthedocs.io' +html_use_opensearch = "https://{{cookiecutter.plugin_name}}.readthedocs.io" # This is the file name suffix for HTML files (e.g. ".xhtml"). # html_file_suffix = None @@ -176,13 +176,13 @@ # Sphinx supports the following languages: # 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' # 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' -html_search_language = 'en' +html_search_language = "en" # Warnings to ignore when using the -n (nitpicky) option # We should ignore any python built-in exception, for instance nitpick_ignore = [ - ('py:class', 'Logger'), - ('py:class', 'QbFields'), # Warning started to appear with aiida 2.6 + ("py:class", "Logger"), + ("py:class", "QbFields"), # Warning started to appear with aiida 2.6 ] @@ -195,8 +195,8 @@ def run_apidoc(_): See also https://github.com/rtfd/readthedocs.org/issues/1139 """ source_dir = os.path.abspath(os.path.dirname(__file__)) - apidoc_dir = os.path.join(source_dir, 'apidoc') - package_dir = os.path.join(source_dir, os.pardir, os.pardir, 'src', '{{cookiecutter.module_name}}') + apidoc_dir = os.path.join(source_dir, "apidoc") + package_dir = os.path.join(source_dir, os.pardir, os.pardir, "src", "{{cookiecutter.module_name}}") # In #1139, they suggest the route below, but this ended up # calling sphinx-build, not sphinx-apidoc @@ -205,25 +205,25 @@ def run_apidoc(_): import subprocess - cmd_path = 'sphinx-apidoc' - if hasattr(sys, 'real_prefix'): # Check to see if we are in a virtualenv + cmd_path = "sphinx-apidoc" + if hasattr(sys, "real_prefix"): # Check to see if we are in a virtualenv # If we are, assemble the path manually - cmd_path = os.path.abspath(os.path.join(sys.prefix, 'bin', 'sphinx-apidoc')) + cmd_path = os.path.abspath(os.path.join(sys.prefix, "bin", "sphinx-apidoc")) options = [ - '-o', + "-o", apidoc_dir, package_dir, - '--private', - '--force', - '--no-toc', + "--private", + "--force", + "--no-toc", ] # See https://stackoverflow.com/a/30144019 env = os.environ.copy() - env['SPHINX_APIDOC_OPTIONS'] = 'members,special-members,private-members,undoc-members,show-inheritance' + env["SPHINX_APIDOC_OPTIONS"] = "members,special-members,private-members,undoc-members,show-inheritance" subprocess.check_call([cmd_path] + options, env=env) def setup(app): - app.connect('builder-inited', run_apidoc) + app.connect("builder-inited", run_apidoc) diff --git a/{{cookiecutter.plugin_name}}/examples/example_01.py b/{{cookiecutter.plugin_name}}/examples/example_01.py index e2d5d65..a9ec4df 100644 --- a/{{cookiecutter.plugin_name}}/examples/example_01.py +++ b/{{cookiecutter.plugin_name}}/examples/example_01.py @@ -11,7 +11,7 @@ from aiida.plugins import CalculationFactory, DataFactory from {{cookiecutter.module_name}} import helpers -INPUT_DIR = path.join(path.dirname(path.realpath(__file__)), 'input_files') +INPUT_DIR = path.join(path.dirname(path.realpath(__file__)), "input_files") def test_run({{cookiecutter.entry_point_prefix}}_code): @@ -23,35 +23,35 @@ def test_run({{cookiecutter.entry_point_prefix}}_code): # get code computer = helpers.get_computer() {{cookiecutter.entry_point_prefix}}_code = helpers.get_code( - entry_point='{{cookiecutter.entry_point_prefix}}', computer=computer + entry_point="{{cookiecutter.entry_point_prefix}}", computer=computer ) # Prepare input parameters - diff_parameters = DataFactory('{{cookiecutter.entry_point_prefix}}') - parameters = diff_parameters({'ignore-case': True}) + diff_parameters = DataFactory("{{cookiecutter.entry_point_prefix}}") + parameters = diff_parameters({"ignore-case": True}) - singlefile_data = DataFactory('core.singlefile') - file1 = singlefile_data(file=path.join(INPUT_DIR, 'file1.txt')) - file2 = singlefile_data(file=path.join(INPUT_DIR, 'file2.txt')) + singlefile_data = DataFactory("core.singlefile") + file1 = singlefile_data(file=path.join(INPUT_DIR, "file1.txt")) + file2 = singlefile_data(file=path.join(INPUT_DIR, "file2.txt")) # set up calculation inputs = { - 'code': {{cookiecutter.entry_point_prefix}}_code, - 'parameters': parameters, - 'file1': file1, - 'file2': file2, - 'metadata': { - 'description': 'Test job submission with the {{cookiecutter.module_name}} plugin', + "code": {{cookiecutter.entry_point_prefix}}_code, + "parameters": parameters, + "file1": file1, + "file2": file2, + "metadata": { + "description": "Test job submission with the {{cookiecutter.module_name}} plugin", }, } # Note: in order to submit your calculation to the aiida daemon, do: # from aiida.engine import submit # future = submit(CalculationFactory('{{cookiecutter.entry_point_prefix}}'), **inputs) - result = engine.run(CalculationFactory('{{cookiecutter.entry_point_prefix}}'), **inputs) + result = engine.run(CalculationFactory("{{cookiecutter.entry_point_prefix}}"), **inputs) - computed_diff = result['{{cookiecutter.entry_point_prefix}}'].get_content() - print(f'Computed diff between files: \n{computed_diff}') + computed_diff = result["{{cookiecutter.entry_point_prefix}}"].get_content() + print(f"Computed diff between files: \n{computed_diff}") @click.command() @@ -69,5 +69,5 @@ def cli(code): test_run(code) -if __name__ == '__main__': +if __name__ == "__main__": cli() # pylint: disable=no-value-for-parameter diff --git a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/__init__.py b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/__init__.py index 4bf6914..18cbcfa 100644 --- a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/__init__.py +++ b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/__init__.py @@ -4,4 +4,4 @@ {{cookiecutter.short_description}} """ -__version__ = '{{cookiecutter.version}}' +__version__ = "{{cookiecutter.version}}" diff --git a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/calculations.py b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/calculations.py index a70ad58..7574183 100644 --- a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/calculations.py +++ b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/calculations.py @@ -9,7 +9,7 @@ from aiida.orm import SinglefileData from aiida.plugins import DataFactory -DiffParameters = DataFactory('{{cookiecutter.entry_point_prefix}}') +DiffParameters = DataFactory("{{cookiecutter.entry_point_prefix}}") class DiffCalculation(CalcJob): @@ -25,31 +25,31 @@ def define(cls, spec): super().define(spec) # set default values for AiiDA options - spec.inputs['metadata']['options']['resources'].default = { - 'num_machines': 1, - 'num_mpiprocs_per_machine': 1, + spec.inputs["metadata"]["options"]["resources"].default = { + "num_machines": 1, + "num_mpiprocs_per_machine": 1, } - spec.inputs['metadata']['options']['parser_name'].default = '{{cookiecutter.entry_point_prefix}}' + spec.inputs["metadata"]["options"]["parser_name"].default = "{{cookiecutter.entry_point_prefix}}" # new ports - spec.input('metadata.options.output_filename', valid_type=str, default='patch.diff') + spec.input("metadata.options.output_filename", valid_type=str, default="patch.diff") spec.input( - 'parameters', + "parameters", valid_type=DiffParameters, - help='Command line parameters for diff', + help="Command line parameters for diff", ) - spec.input('file1', valid_type=SinglefileData, help='First file to be compared.') - spec.input('file2', valid_type=SinglefileData, help='Second file to be compared.') + spec.input("file1", valid_type=SinglefileData, help="First file to be compared.") + spec.input("file2", valid_type=SinglefileData, help="Second file to be compared.") spec.output( - '{{cookiecutter.entry_point_prefix}}', + "{{cookiecutter.entry_point_prefix}}", valid_type=SinglefileData, - help='diff between file1 and file2.', + help="diff between file1 and file2.", ) spec.exit_code( 300, - 'ERROR_MISSING_OUTPUT_FILES', - message='Calculation did not produce all expected output files.', + "ERROR_MISSING_OUTPUT_FILES", + message="Calculation did not produce all expected output files.", ) def prepare_for_submission(self, folder): diff --git a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/cli.py b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/cli.py index 6bb3b54..fe56b5e 100644 --- a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/cli.py +++ b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/cli.py @@ -17,37 +17,37 @@ # See aiida.cmdline.data entry point in setup.json -@verdi_data.group('{{cookiecutter.entry_point_prefix}}') +@verdi_data.group("{{cookiecutter.entry_point_prefix}}") def data_cli(): """Command line interface for {{cookiecutter.plugin_name}}""" -@data_cli.command('list') +@data_cli.command("list") @decorators.with_dbenv() def list_(): # pylint: disable=redefined-builtin """ Display all DiffParameters nodes """ - diff_parameters = DataFactory('{{cookiecutter.entry_point_prefix}}') + diff_parameters = DataFactory("{{cookiecutter.entry_point_prefix}}") qb = QueryBuilder() qb.append(diff_parameters) results = qb.all() - s = '' + s = "" for result in results: obj = result[0] - s += f'{obj!s}, pk: {obj.pk}\n' + s += f"{obj!s}, pk: {obj.pk}\n" sys.stdout.write(s) -@data_cli.command('export') -@click.argument('node', metavar='IDENTIFIER', type=DataParamType()) +@data_cli.command("export") +@click.argument("node", metavar="IDENTIFIER", type=DataParamType()) @click.option( - '--outfile', - '-o', + "--outfile", + "-o", type=click.Path(dir_okay=False), - help='Write output to file (default: print to stdout).', + help="Write output to file (default: print to stdout).", ) @decorators.with_dbenv() def export(node, outfile): @@ -55,7 +55,7 @@ def export(node, outfile): string = str(node) if outfile: - with open(outfile, 'w', encoding='utf8') as f: + with open(outfile, "w", encoding="utf8") as f: f.write(string) else: click.echo(string) diff --git a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/data/__init__.py b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/data/__init__.py index 8334d39..2b39992 100644 --- a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/data/__init__.py +++ b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/data/__init__.py @@ -10,11 +10,11 @@ # A subset of diff's command line options cmdline_options = { - Optional('ignore-case'): bool, - Optional('ignore-file-name-case'): bool, - Optional('ignore-tab-expansion'): bool, - Optional('ignore-space-change'): bool, - Optional('ignore-all-space'): bool, + Optional("ignore-case"): bool, + Optional("ignore-file-name-case"): bool, + Optional("ignore-tab-expansion"): bool, + Optional("ignore-space-change"): bool, + Optional("ignore-all-space"): bool, } @@ -72,7 +72,7 @@ def cmdline_params(self, file1_name, file2_name): pm_dict = self.get_dict() for option, enabled in pm_dict.items(): if enabled: - parameters += ['--' + option] + parameters += ["--" + option] parameters += [file1_name, file2_name] @@ -88,5 +88,5 @@ def __str__(self): """ string = super().__str__() - string += '\n' + str(self.get_dict()) + string += "\n" + str(self.get_dict()) return string diff --git a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/helpers.py b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/helpers.py index 9757f08..6c693cf 100644 --- a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/helpers.py +++ b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/helpers.py @@ -14,10 +14,10 @@ from aiida.common.exceptions import NotExistent from aiida.orm import Code, Computer -LOCALHOST_NAME = 'localhost-test' +LOCALHOST_NAME = "localhost-test" executables = { - '{{cookiecutter.entry_point_prefix}}': 'diff', + "{{cookiecutter.entry_point_prefix}}": "diff", } @@ -54,11 +54,11 @@ def get_computer(name=LOCALHOST_NAME, workdir=None): computer = Computer( label=name, - description='localhost computer set up by aiida_diff tests', + description="localhost computer set up by aiida_diff tests", hostname=name, workdir=workdir, - transport_type='core.local', - scheduler_type='core.direct', + transport_type="core.local", + scheduler_type="core.direct", ) computer.store() computer.set_minimum_job_poll_interval(0.0) @@ -85,7 +85,7 @@ def get_code(entry_point, computer): ) from exc codes = Code.objects.find( # pylint: disable=no-member - filters={'label': executable} + filters={"label": executable} ) if codes: return codes[0] diff --git a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/parsers.py b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/parsers.py index f2dbfb7..3e040d3 100644 --- a/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/parsers.py +++ b/{{cookiecutter.plugin_name}}/src/{{cookiecutter.module_name}}/parsers.py @@ -10,7 +10,7 @@ from aiida.parsers.parser import Parser from aiida.plugins import CalculationFactory -DiffCalculation = CalculationFactory('{{cookiecutter.entry_point_prefix}}') +DiffCalculation = CalculationFactory("{{cookiecutter.entry_point_prefix}}") class DiffParser(Parser): @@ -29,7 +29,7 @@ def __init__(self, node): """ super().__init__(node) if not issubclass(node.process_class, DiffCalculation): - raise exceptions.ParsingError('Can only parse DiffCalculation') + raise exceptions.ParsingError("Can only parse DiffCalculation") def parse(self, **kwargs): """ @@ -37,7 +37,7 @@ def parse(self, **kwargs): :returns: an exit code, if parsing fails (or nothing if parsing succeeds) """ - output_filename = self.node.get_option('output_filename') + output_filename = self.node.get_option("output_filename") # Check that folder content is as expected files_retrieved = self.retrieved.list_object_names() @@ -49,8 +49,8 @@ def parse(self, **kwargs): # add output file self.logger.info(f"Parsing '{output_filename}'") - with self.retrieved.open(output_filename, 'rb') as handle: + with self.retrieved.open(output_filename, "rb") as handle: output_node = SinglefileData(file=handle) - self.out('{{cookiecutter.entry_point_prefix}}', output_node) + self.out("{{cookiecutter.entry_point_prefix}}", output_node) return ExitCode(0) diff --git a/{{cookiecutter.plugin_name}}/tests/test_calculations.py b/{{cookiecutter.plugin_name}}/tests/test_calculations.py index 9c57015..0bfdd90 100644 --- a/{{cookiecutter.plugin_name}}/tests/test_calculations.py +++ b/{{cookiecutter.plugin_name}}/tests/test_calculations.py @@ -14,25 +14,25 @@ def test_process({{cookiecutter.entry_point_prefix}}_code): note this does not test that the expected outputs are created of output parsing""" # Prepare input parameters - diff_parameters = DataFactory('{{cookiecutter.entry_point_prefix}}') - parameters = diff_parameters({'ignore-case': True}) + diff_parameters = DataFactory("{{cookiecutter.entry_point_prefix}}") + parameters = diff_parameters({"ignore-case": True}) - file1 = SinglefileData(file=os.path.join(TEST_DIR, 'input_files', 'file1.txt')) - file2 = SinglefileData(file=os.path.join(TEST_DIR, 'input_files', 'file2.txt')) + file1 = SinglefileData(file=os.path.join(TEST_DIR, "input_files", "file1.txt")) + file2 = SinglefileData(file=os.path.join(TEST_DIR, "input_files", "file2.txt")) # set up calculation inputs = { - 'code': {{cookiecutter.entry_point_prefix}}_code, - 'parameters': parameters, - 'file1': file1, - 'file2': file2, - 'metadata': { - 'options': {'max_wallclock_seconds': 30}, + "code": {{cookiecutter.entry_point_prefix}}_code, + "parameters": parameters, + "file1": file1, + "file2": file2, + "metadata": { + "options": {"max_wallclock_seconds": 30}, }, } - result = run(CalculationFactory('{{cookiecutter.entry_point_prefix}}'), **inputs) - computed_diff = result['{{cookiecutter.entry_point_prefix}}'].get_content() + result = run(CalculationFactory("{{cookiecutter.entry_point_prefix}}"), **inputs) + computed_diff = result["{{cookiecutter.entry_point_prefix}}"].get_content() - assert 'content1' in computed_diff - assert 'content2' in computed_diff + assert "content1" in computed_diff + assert "content2" in computed_diff diff --git a/{{cookiecutter.plugin_name}}/tests/test_cli.py b/{{cookiecutter.plugin_name}}/tests/test_cli.py index e269955..afbd24b 100644 --- a/{{cookiecutter.plugin_name}}/tests/test_cli.py +++ b/{{cookiecutter.plugin_name}}/tests/test_cli.py @@ -11,8 +11,8 @@ class TestDataCli: def setup_method(self): """Prepare nodes for cli tests.""" - diff_parameters = DataFactory('{{cookiecutter.entry_point_prefix}}') - self.parameters = diff_parameters({'ignore-case': True}) + diff_parameters = DataFactory("{{cookiecutter.entry_point_prefix}}") + self.parameters = diff_parameters({"ignore-case": True}) self.parameters.store() self.runner = CliRunner() @@ -31,4 +31,4 @@ def test_data_diff_export(self): we have set up. """ result = self.runner.invoke(export, [str(self.parameters.pk)], catch_exceptions=False) - assert 'ignore-case' in result.output + assert "ignore-case" in result.output