diff --git a/gcgen/api/__init__.py b/gcgen/api/__init__.py index 6dae04d..5edfee2 100644 --- a/gcgen/api/__init__.py +++ b/gcgen/api/__init__.py @@ -14,5 +14,5 @@ "generator", "get_snippet", "write_file", - "Json" + "Json", ] diff --git a/gcgen/generate.py b/gcgen/generate.py index 8be4c01..ea23492 100644 --- a/gcgen/generate.py +++ b/gcgen/generate.py @@ -106,7 +106,12 @@ def scope(self, scope: Scope) -> None: self._scope = scope def on_snippet( - self, snippet_prefix: str, snippet_name: str, snippet_arg: Json, src_path: Path, fh: TextIOWrapper + self, + snippet_prefix: str, + snippet_name: str, + snippet_arg: Json, + src_path: Path, + fh: TextIOWrapper, ): logger.debug(f"on_snippet {snippet_name!r} called") snippet_fn: Union[SnippetFn, None] = self._snippets_scope.get( diff --git a/gcgen/snippetparser.py b/gcgen/snippetparser.py index 1f92186..6503d0e 100644 --- a/gcgen/snippetparser.py +++ b/gcgen/snippetparser.py @@ -69,7 +69,14 @@ def printerr(self) -> None: class SnippetJsonValueError(SnippetParseError): - def __init__(self, file: Path, snippet: str, value: str, json_err: JSONDecodeError, line_start: int): + def __init__( + self, + file: Path, + snippet: str, + value: str, + json_err: JSONDecodeError, + line_start: int, + ): self.file = file self.snippet = snippet self.line_start = line_start @@ -81,15 +88,13 @@ def __init__(self, file: Path, snippet: str, value: str, json_err: JSONDecodeErr file, snippet, line_start, - line_start + line_start, ) def printerr(self) -> None: print("Snippet argument parse error:") print("") - print( - "Error parsing argument as JSON value" - ) + print("Error parsing argument as JSON value") print("") print("Details:") print(f" File: {self.file}") @@ -105,7 +110,12 @@ def __init__(self, snippet_start: str, snippet_end: str): self.snippet_end = snippet_end def on_snippet( - self, snippet_prefix: str, snippet_name: str, snippet_arg: Json, src_path: Path, fh: TextIOWrapper + self, + snippet_prefix: str, + snippet_name: str, + snippet_arg: Json, + src_path: Path, + fh: TextIOWrapper, ): pass @@ -133,7 +143,9 @@ def parse(self, fpath: Path, dpath: Path): if ndx != -1: cont = True prefix = line[0:ndx] - parts = line[ndx + len(snippet_start):].strip().split(" ", 1) + parts = ( + line[ndx + len(snippet_start) :].strip().split(" ", 1) + ) if len(parts) == 1: snippet_name = parts[0] snippet_arg = None @@ -148,7 +160,11 @@ def parse(self, fpath: Path, dpath: Path): snippet_arg = json.loads(snippet_arg) except JSONDecodeError as e: raise SnippetJsonValueError( - fpath, snippet_name, snippet_arg_raw, e, lineno + fpath, + snippet_name, + snippet_arg_raw, + e, + lineno, ) from e break @@ -174,7 +190,9 @@ def parse(self, fpath: Path, dpath: Path): for line in src: lineno += 1 if line.startswith(s_end): - self.on_snippet(snippet_prefix, snippet_name, snippet_arg, fpath, dst) + self.on_snippet( + snippet_prefix, snippet_name, snippet_arg, fpath, dst + ) dst.write(line) # retain the snippet end line cont = True break diff --git a/tests/test_gentests.py b/tests/test_gentests.py index 1243502..979da5f 100644 --- a/tests/test_gentests.py +++ b/tests/test_gentests.py @@ -6,7 +6,11 @@ from setuptools._distutils.dir_util import copy_tree from typing import Dict, List from gcgen import generate -from gcgen.snippetparser import UnclosedSnippetError, NestedSnippetsError, SnippetJsonValueError +from gcgen.snippetparser import ( + UnclosedSnippetError, + NestedSnippetsError, + SnippetJsonValueError, +) import pytest import logging @@ -155,9 +159,7 @@ def test_bb_snippets_calling_snippets(): def test_bb_snippets_json_args(): - gentest_test_eql( - "bb-snippets-json-args", ["example.txt"] - ) + gentest_test_eql("bb-snippets-json-args", ["example.txt"]) def test_bb_snippets_json_args_err(): diff --git a/tests/test_parser.py b/tests/test_parser.py index 84fe003..59a0716 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -42,13 +42,16 @@ def parse(self, fpath: Path, dpath: Path): super().parse(fpath, dpath) def on_snippet( - self, snippet_prefix: str, snippet_name: str, snippet_arg: snippetparser.Json, src_path: Path, fh: TextIOWrapper + self, + snippet_prefix: str, + snippet_name: str, + snippet_arg: snippetparser.Json, + src_path: Path, + fh: TextIOWrapper, ): - self._results.append(SnippetResult( - name=snippet_name, - prefix=snippet_prefix, - args=snippet_arg - )) + self._results.append( + SnippetResult(name=snippet_name, prefix=snippet_prefix, args=snippet_arg) + ) # pass @@ -70,7 +73,7 @@ def test_prog_w_noarg_snippets(): parser.parse(fpath, fpath) assert parser._results == [ SnippetResult(name="hello", prefix="", args=None), - SnippetResult(name="smth", prefix=" ", args=None) + SnippetResult(name="smth", prefix=" ", args=None), ] @@ -105,5 +108,9 @@ def test_prog_w_json_args(): SnippetResult(name="hello", prefix="", args=None), SnippetResult(name="hello", prefix="", args="Jacque"), SnippetResult(name="print_files", prefix=" ", args=["file1", "file2"]), - SnippetResult(name="mk_user", prefix=" ", args={"username": "jane", "groups": ["wheel", "docker"]}), + SnippetResult( + name="mk_user", + prefix=" ", + args={"username": "jane", "groups": ["wheel", "docker"]}, + ), ]