X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/ffaaf4838228c922b586a87f717ed402031fcc0a..1f7f6de4aba4e1e42cb2f947204f8256f7370cb0:/src/black/__init__.py diff --git a/src/black/__init__.py b/src/black/__init__.py index 2786861..39d1296 100644 --- a/src/black/__init__.py +++ b/src/black/__init__.py @@ -630,7 +630,7 @@ def get_sources( using_default_exclude = exclude is None exclude = re_compile_maybe_verbose(DEFAULT_EXCLUDES) if exclude is None else exclude - gitignore: Optional[PathSpec] = None + gitignore: Optional[Dict[Path, PathSpec]] = None root_gitignore = get_gitignore(root) for s in src: @@ -917,7 +917,7 @@ def format_file_contents(src_contents: str, *, fast: bool, mode: Mode) -> FileCo valid by calling :func:`assert_equivalent` and :func:`assert_stable` on it. `mode` is passed to :func:`format_str`. """ - if not src_contents.strip(): + if not mode.preview and not src_contents.strip(): raise NothingChanged if mode.is_ipynb: @@ -1014,6 +1014,9 @@ def format_ipynb_string(src_contents: str, *, fast: bool, mode: Mode) -> FileCon Operate cell-by-cell, only on code cells, only for Python notebooks. If the ``.ipynb`` originally had a trailing newline, it'll be preserved. """ + if mode.preview and not src_contents: + raise NothingChanged + trailing_newline = src_contents[-1] == "\n" modified = False nb = json.loads(src_contents) @@ -1106,6 +1109,13 @@ def _format_str_once(src_contents: str, *, mode: Mode) -> str: dst_contents = [] for block in dst_blocks: dst_contents.extend(block.all_lines()) + if mode.preview and not dst_contents: + # Use decode_bytes to retrieve the correct source newline (CRLF or LF), + # and check if normalized_content has more than one line + normalized_content, _, newline = decode_bytes(src_contents.encode("utf-8")) + if "\n" in normalized_content: + return newline + return "" return "".join(dst_contents)