X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/f2ea461e9e9fa5c47bb61fd72d512c748928badc..e3000ace2fd1fcb1c181bb7a8285f1f976bcbdc7:/src/black/files.py diff --git a/src/black/files.py b/src/black/files.py index 1be5606..427ad66 100644 --- a/src/black/files.py +++ b/src/black/files.py @@ -18,7 +18,7 @@ from typing import ( ) from pathspec import PathSpec -import toml +import tomli from black.output import err from black.report import Report @@ -38,7 +38,7 @@ def find_project_root(srcs: Sequence[str]) -> Path: project root, the root of the file system is returned. """ if not srcs: - return Path("/").resolve() + srcs = [str(Path.cwd().resolve())] path_srcs = [Path(Path.cwd(), src).resolve() for src in srcs] @@ -89,9 +89,10 @@ def find_pyproject_toml(path_search_start: Tuple[str, ...]) -> Optional[str]: def parse_pyproject_toml(path_config: str) -> Dict[str, Any]: """Parse a pyproject toml file, pulling out relevant parts for Black - If parsing fails, will raise a toml.TomlDecodeError + If parsing fails, will raise a tomli.TOMLDecodeError """ - pyproject_toml = toml.load(path_config) + with open(path_config, encoding="utf8") as f: + pyproject_toml = tomli.load(f) config = pyproject_toml.get("tool", {}).get("black", {}) return {k.replace("--", "").replace("-", "_"): v for k, v in config.items()} @@ -118,7 +119,7 @@ def get_gitignore(root: Path) -> PathSpec: gitignore = root / ".gitignore" lines: List[str] = [] if gitignore.is_file(): - with gitignore.open() as gf: + with gitignore.open(encoding="utf-8") as gf: lines = gf.readlines() return PathSpec.from_lines("gitwildmatch", lines) @@ -204,6 +205,8 @@ def gen_python_files( continue if child.is_dir(): + # If gitignore is None, gitignore usage is disabled, while a Falsey + # gitignore is when the directory doesn't have a .gitignore file. yield from gen_python_files( child.iterdir(), root, @@ -212,7 +215,7 @@ def gen_python_files( extend_exclude, force_exclude, report, - gitignore, + gitignore + get_gitignore(child) if gitignore is not None else None, ) elif child.is_file():