]>
git.madduck.net Git - etc/vim.git/blobdiff - src/black/parsing.py
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
import ast
import platform
import sys
import ast
import platform
import sys
-from typing import Any, Iterable, Iterator, List, Set, Tuple, Type, Union
+from typing import Any, AnyStr, Iterable, Iterator, List, Set, Tuple, Type, Union
if sys.version_info < (3, 8):
from typing_extensions import Final
if sys.version_info < (3, 8):
from typing_extensions import Final
drv = driver.Driver(grammar)
try:
drv.parse_string(src_txt, True)
drv = driver.Driver(grammar)
try:
drv.parse_string(src_txt, True)
+ except (ParseError, TokenError, IndentationError) :
return False
else:
return True
return False
else:
return True
ast27_AST: Final[Type[ast27.AST]] = ast27.AST
ast27_AST: Final[Type[ast27.AST]] = ast27.AST
+def _normalize(lineend: AnyStr, value: AnyStr) -> AnyStr:
+ # To normalize, we strip any leading and trailing space from
+ # each line...
+ stripped: List[AnyStr] = [i.strip() for i in value.splitlines()]
+ normalized = lineend.join(stripped)
+ # ...and remove any blank lines at the beginning and end of
+ # the whole string
+ return normalized.strip()
+
+
def stringify_ast(
node: Union[ast.AST, ast3.AST, ast27.AST], depth: int = 0
) -> Iterator[str]:
def stringify_ast(
node: Union[ast.AST, ast3.AST, ast27.AST], depth: int = 0
) -> Iterator[str]:
and field == "value"
and isinstance(value, (str, bytes))
):
and field == "value"
and isinstance(value, (str, bytes))
):
- lineend = "\n" if isinstance(value, str) else b"\n"
- # To normalize, we strip any leading and trailing space from
- # each line...
- stripped = [line.strip() for line in value.splitlines()]
- normalized = lineend.join(stripped) # type: ignore[attr-defined]
- # ...and remove any blank lines at the beginning and end of
- # the whole string
- normalized = normalized.strip()
+ if isinstance(value, str):
+ normalized: Union[str, bytes] = _normalize("\n", value)
+ else:
+ normalized = _normalize(b"\n", value)
else:
normalized = value
yield f"{' ' * (depth+2)}{normalized!r}, # {value.__class__.__name__}"
else:
normalized = value
yield f"{' ' * (depth+2)}{normalized!r}, # {value.__class__.__name__}"