def test_report(self) -> None: report = black.Report() out_lines = [] err_lines = [] def out(msg: str, **kwargs: Any) -> None: out_lines.append(msg) def err(msg: str, **kwargs: Any) -> None: err_lines.append(msg) with patch("black.out", out), patch("black.err", err): report.done(Path("f1"), black.Changed.NO) self.assertEqual(len(out_lines), 1) self.assertEqual(len(err_lines), 0) self.assertEqual(out_lines[-1], "f1 already well formatted, good job.") self.assertEqual(unstyle(str(report)), "1 file left unchanged.") self.assertEqual(report.return_code, 0) report.done(Path("f2"), black.Changed.YES) self.assertEqual(len(out_lines), 2) self.assertEqual(len(err_lines), 0) self.assertEqual(out_lines[-1], "reformatted f2") self.assertEqual(unstyle(str(report)), "1 file reformatted, 1 file left unchanged.") report.done(Path("f3"), black.Changed.CACHED) self.assertEqual(len(out_lines), 3) self.assertEqual(len(err_lines), 0) self.assertEqual(out_lines[-1], "f3 wasn't modified on disk since last run.") self.assertEqual(unstyle(str(report)), "1 file reformatted, 2 files left unchanged.") self.assertEqual(report.return_code, 0) report.check = True self.assertEqual(report.return_code, 1) report.check = False report.failed(Path("e1"), "boom") self.assertEqual(len(out_lines), 3) self.assertEqual(len(err_lines), 1) self.assertEqual(err_lines[-1], "error: cannot format e1: boom") self.assertEqual( unstyle(str(report)), "1 file reformatted, 2 files left unchanged, " "1 file failed to reformat.", ) self.assertEqual(report.return_code, 123) report.done(Path("f3"), black.Changed.YES) self.assertEqual(len(out_lines), 4) self.assertEqual(len(err_lines), 1) self.assertEqual(out_lines[-1], "reformatted f3") self.assertEqual( unstyle(str(report)), "2 files reformatted, 2 files left unchanged, " "1 file failed to reformat.", ) self.assertEqual(report.return_code, 123) report.failed(Path("e2"), "boom") self.assertEqual(len(out_lines), 4) self.assertEqual(len(err_lines), 2) self.assertEqual(err_lines[-1], "error: cannot format e2: boom") self.assertEqual( unstyle(str(report)), "2 files reformatted, 2 files left unchanged, " "2 files failed to reformat.", ) self.assertEqual(report.return_code, 123) report.done(Path("f4"), black.Changed.NO) self.assertEqual(len(out_lines), 5) self.assertEqual(len(err_lines), 2) self.assertEqual(out_lines[-1], "f4 already well formatted, good job.") self.assertEqual( unstyle(str(report)), "2 files reformatted, 3 files left unchanged, " "2 files failed to reformat.", ) self.assertEqual(report.return_code, 123) report.check = True self.assertEqual( unstyle(str(report)), "2 files would be reformatted, 3 files would be left unchanged, " "2 files would fail to reformat.", )
def test_report(self) -> None: report = black.Report() out_lines = [] err_lines = [] def out(msg: str, **kwargs): out_lines.append(msg) def err(msg: str, **kwargs): err_lines.append(msg) with patch("black.out", out), patch("black.err", err): report.done(Path('f1'), changed=False) self.assertEqual(len(out_lines), 1) self.assertEqual(len(err_lines), 0) self.assertEqual(out_lines[-1], 'f1 already well formatted, good job.') self.assertEqual(unstyle(str(report)), '1 file left unchanged.') self.assertEqual(report.return_code, 0) report.done(Path('f2'), changed=True) self.assertEqual(len(out_lines), 2) self.assertEqual(len(err_lines), 0) self.assertEqual(out_lines[-1], 'reformatted f2') self.assertEqual( unstyle(str(report)), '1 file reformatted, 1 file left unchanged.' ) self.assertEqual(report.return_code, 1) report.failed(Path('e1'), 'boom') self.assertEqual(len(out_lines), 2) self.assertEqual(len(err_lines), 1) self.assertEqual(err_lines[-1], 'error: cannot format e1: boom') self.assertEqual( unstyle(str(report)), '1 file reformatted, 1 file left unchanged, ' '1 file failed to reformat.', ) self.assertEqual(report.return_code, 123) report.done(Path('f3'), changed=True) self.assertEqual(len(out_lines), 3) self.assertEqual(len(err_lines), 1) self.assertEqual(out_lines[-1], 'reformatted f3') self.assertEqual( unstyle(str(report)), '2 files reformatted, 1 file left unchanged, ' '1 file failed to reformat.', ) self.assertEqual(report.return_code, 123) report.failed(Path('e2'), 'boom') self.assertEqual(len(out_lines), 3) self.assertEqual(len(err_lines), 2) self.assertEqual(err_lines[-1], 'error: cannot format e2: boom') self.assertEqual( unstyle(str(report)), '2 files reformatted, 1 file left unchanged, ' '2 files failed to reformat.', ) self.assertEqual(report.return_code, 123) report.done(Path('f4'), changed=False) self.assertEqual(len(out_lines), 4) self.assertEqual(len(err_lines), 2) self.assertEqual(out_lines[-1], 'f4 already well formatted, good job.') self.assertEqual( unstyle(str(report)), '2 files reformatted, 2 files left unchanged, ' '2 files failed to reformat.', ) self.assertEqual(report.return_code, 123)
def test_report_quiet(self) -> None: report = black.Report(quiet=True) out_lines = [] err_lines = [] def out(msg: str, **kwargs: Any) -> None: out_lines.append(msg) def err(msg: str, **kwargs: Any) -> None: err_lines.append(msg) with patch("black.out", out), patch("black.err", err): report.done(Path("f1"), black.Changed.NO) self.assertEqual(len(out_lines), 0) self.assertEqual(len(err_lines), 0) self.assertEqual(unstyle(str(report)), "1 file left unchanged.") self.assertEqual(report.return_code, 0) report.done(Path("f2"), black.Changed.YES) self.assertEqual(len(out_lines), 0) self.assertEqual(len(err_lines), 0) self.assertEqual(unstyle(str(report)), "1 file reformatted, 1 file left unchanged.") report.done(Path("f3"), black.Changed.CACHED) self.assertEqual(len(out_lines), 0) self.assertEqual(len(err_lines), 0) self.assertEqual(unstyle(str(report)), "1 file reformatted, 2 files left unchanged.") self.assertEqual(report.return_code, 0) report.check = True self.assertEqual(report.return_code, 1) report.check = False report.failed(Path("e1"), "boom") self.assertEqual(len(out_lines), 0) self.assertEqual(len(err_lines), 1) self.assertEqual(err_lines[-1], "error: cannot format e1: boom") self.assertEqual( unstyle(str(report)), "1 file reformatted, 2 files left unchanged, " "1 file failed to reformat.", ) self.assertEqual(report.return_code, 123) report.done(Path("f3"), black.Changed.YES) self.assertEqual(len(out_lines), 0) self.assertEqual(len(err_lines), 1) self.assertEqual( unstyle(str(report)), "2 files reformatted, 2 files left unchanged, " "1 file failed to reformat.", ) self.assertEqual(report.return_code, 123) report.failed(Path("e2"), "boom") self.assertEqual(len(out_lines), 0) self.assertEqual(len(err_lines), 2) self.assertEqual(err_lines[-1], "error: cannot format e2: boom") self.assertEqual( unstyle(str(report)), "2 files reformatted, 2 files left unchanged, " "2 files failed to reformat.", ) self.assertEqual(report.return_code, 123) report.path_ignored(Path("wat"), "no match") self.assertEqual(len(out_lines), 0) self.assertEqual(len(err_lines), 2) self.assertEqual( unstyle(str(report)), "2 files reformatted, 2 files left unchanged, " "2 files failed to reformat.", ) self.assertEqual(report.return_code, 123) report.done(Path("f4"), black.Changed.NO) self.assertEqual(len(out_lines), 0) self.assertEqual(len(err_lines), 2) self.assertEqual( unstyle(str(report)), "2 files reformatted, 3 files left unchanged, " "2 files failed to reformat.", ) self.assertEqual(report.return_code, 123) report.check = True self.assertEqual( unstyle(str(report)), "2 files would be reformatted, 3 files would be left unchanged, " "2 files would fail to reformat.", )
class_fields = [ ["Field", "Type", "Description"], ["Parameters", "Type", "Description"], ] func_fields = [ ["Parameters", "Type", "Required", "Description"], ["Parameter", "Type", "Required", "Description"], ] use_back = False use_yapf = False black_settings = dict( write_back=black.WriteBack.from_configuration(check=False, diff=False), report=black.Report(check=False, quiet=False, verbose=False), mode=black.FileMode( target_versions=set(), line_length=black.DEFAULT_LINE_LENGTH, is_pyi=False, string_normalization=True, ), ) yapf_settings = dict( style={ 'ALIGN_CLOSING_BRACKET_WITH_VISUAL_INDENT': True, 'ALLOW_MULTILINE_LAMBDAS': True, 'ALLOW_MULTILINE_DICTIONARY_KEYS': False, 'ALLOW_SPLIT_BEFORE_DEFAULT_OR_NAMED_ASSIGNS': True, 'ALLOW_SPLIT_BEFORE_DICT_VALUE': False, 'ARITHMETIC_PRECEDENCE_INDICATION': False,
def cli( ctx: click.Context, line_length: int, check: bool, include: Pattern[str], exclude: Pattern[str], extend_exclude: Optional[Pattern[str]], force_exclude: Optional[Pattern[str]], stdin_filename: Optional[str], quiet: bool, verbose: bool, clear_output: bool, src: Tuple[str, ...], config: Optional[str], ) -> None: """ The uncompromising code formatter, for Jupyter notebooks. """ write_back = black.WriteBack.from_configuration(check=check, diff=False) mode = black.Mode( target_versions=TARGET_VERSIONS, line_length=line_length, is_pyi=False, string_normalization=True, ) if config and verbose: black.out(f"Using configuration from {config}.", bold=False, fg="blue") report = black.Report(check=check, quiet=quiet, verbose=verbose) sources = black.get_sources( ctx=ctx, src=src, quiet=quiet, verbose=verbose, include=include, exclude=exclude, force_exclude=force_exclude, report=report, extend_exclude=extend_exclude, stdin_filename=stdin_filename, ) black.path_empty( sources, "No Jupyter notebooks are present to be formatted. Nothing to do 😴", quiet, verbose, ctx, ) for source in sources: reformat_one( src=source, write_back=write_back, mode=mode, clear_output=clear_output, report=report, quiet=quiet, verbose=verbose, ) if verbose or not quiet: black.out("All done! ✨ 🍰 ✨") click.secho(str(report), err=True) ctx.exit(report.return_code)
def cli( ctx: click.Context, line_length: int, check: bool, include: str, exclude: str, quiet: bool, verbose: bool, clear_output: bool, src: Tuple[str], config: Optional[str], ) -> None: """ The uncompromising code formatter, for Jupyter notebooks. """ write_back = black.WriteBack.from_configuration(check=check, diff=False) mode = black.FileMode( target_versions=black.PY36_VERSIONS, line_length=line_length, is_pyi=False, string_normalization=True, ) if config and verbose: black.out(f"Using configuration from {config}.", bold=False, fg="blue") try: include_regex = black.re_compile_maybe_verbose(include) except re.error: black.err(f"Invalid regular expression for include given: {include!r}") ctx.exit(2) try: exclude_regex = black.re_compile_maybe_verbose(exclude) except re.error: black.err(f"Invalid regular expression for exclude given: {exclude!r}") ctx.exit(2) report = black.Report(check=check, quiet=quiet, verbose=verbose) root = black.find_project_root(src) sources: Set[Path] = set() for s in src: p = Path(s) if p.is_dir(): sources.update( black.gen_python_files_in_dir( p, root, include_regex, exclude_regex, report, black.get_gitignore(root), )) elif p.is_file() or s == "-": # if a file was explicitly given, we don't care about its extension sources.add(p) else: black.err(f"invalid path: {s}") if len(sources) == 0: if verbose or not quiet: black.out("No paths given. Nothing to do.") ctx.exit(0) for source in sources: reformat_one( src=source, write_back=write_back, mode=mode, clear_output=clear_output, report=report, quiet=quiet, verbose=verbose, ) if verbose or not quiet: black.out(f"All done!") click.secho(str(report), err=True) ctx.exit(report.return_code)