Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
elif check in levels:
point = levels.index(check)+1
line = closeindent*(len(levels[point:])+1)+line
levels = levels[:point]
current = levels.pop()
elif current != check:
raise CoconutSyntaxError("illegal dedent to unused indentation level", line, 0, self.adjust(ln))
new.append(line)
count += self.change(line)
self.skips = skips
if new:
last = new[-1].split("#", 1)[0].rstrip()
if last.endswith("\\"):
raise CoconutSyntaxError("illegal final backslash continuation", last, len(last), self.adjust(len(new)))
if count != 0:
raise CoconutSyntaxError("unclosed parenthetical", new[-1], len(new[-1]), self.adjust(len(new)))
new.append(closeindent*len(levels))
return "\n".join(new)
if current is None:
if check:
raise CoconutSyntaxError("illegal initial indent", line, 0, self.adjust(ln))
else:
current = 0
elif check > current:
levels.append(current)
current = check
line = openindent+line
elif check in levels:
point = levels.index(check)+1
line = closeindent*(len(levels[point:])+1)+line
levels = levels[:point]
current = levels.pop()
elif current != check:
raise CoconutSyntaxError("illegal dedent to unused indentation level", line, 0, self.adjust(ln))
new.append(line)
count += self.change(line)
self.skips = skips
if new:
last = new[-1].split("#", 1)[0].rstrip()
if last.endswith("\\"):
raise CoconutSyntaxError("illegal final backslash continuation", last, len(last), self.adjust(len(new)))
if count != 0:
raise CoconutSyntaxError("unclosed parenthetical", new[-1], len(new[-1]), self.adjust(len(new)))
new.append(closeindent*len(levels))
return "\n".join(new)
def import_handle(self, original, location, tokens):
"""Universalizes imports."""
if len(tokens) == 1:
imp_from, imports = None, tokens[0]
elif len(tokens) == 2:
imp_from, imports = tokens
if imp_from == "__future__":
raise self.make_err(CoconutSyntaxError, "illegal from __future__ import (Coconut does these automatically)", original, location)
else:
raise CoconutException("invalid import tokens", tokens)
importmap = [] # [((imp | old_imp, imp, version_check), impas), ...]
for imps in imports:
if len(imps) == 1:
imp, impas = imps[0], imps[0]
else:
imp, impas = imps
if imp_from is not None:
imp = imp_from + "./" + imp # marker for from ... import ...
old_imp = None
path = imp.split(".")
for i in reversed(range(1, len(path)+1)):
base, exts = ".".join(path[:i]), path[i:]
clean_base = base.replace("/", "")
if clean_base in new_to_old_stdlib:
if current is None:
if check:
raise self.make_err(CoconutSyntaxError, "illegal initial indent", line, 0, self.adjust(ln))
else:
current = 0
elif check > current:
levels.append(current)
current = check
line = openindent + line
elif check in levels:
point = levels.index(check) + 1
line = closeindent*(len(levels[point:]) + 1) + line
levels = levels[:point]
current = levels.pop()
elif current != check:
raise self.make_err(CoconutSyntaxError, "illegal dedent to unused indentation level", line, 0, self.adjust(ln))
new.append(line)
count += change(line)
self.skips = skips
if new:
last = new[-1].split("#", 1)[0].rstrip()
if last.endswith("\\"):
raise self.make_err(CoconutSyntaxError, "illegal final backslash continuation", last, len(last), self.adjust(len(new)))
if count != 0:
raise self.make_err(CoconutSyntaxError, "unclosed parenthetical", new[-1], len(new[-1]), self.adjust(len(new)))
new.append(closeindent*len(levels))
return "\n".join(new)
self.value += "^"
class CoconutParseError(CoconutSyntaxError):
"""Coconut ParseError."""
def __init__(self, line, col, ln):
"""Creates The Coconut ParseError."""
super(CoconutParseError, self).__init__("parsing failed", line, col-1, ln)
class CoconutStyleError(CoconutSyntaxError):
"""Coconut --strict error."""
def __init__(self, message, source=None, point=None, ln=None):
"""Creates the --strict Coconut error."""
message += " (disable --strict to dismiss)"
super(CoconutStyleError, self).__init__(message, source, point, ln)
class CoconutTargetError(CoconutSyntaxError):
"""Coconut --target error."""
def __init__(self, message, source=None, point=None, ln=None):
"""Creates the --target Coconut error."""
message += " (enable --target 3 to dismiss)"
super(CoconutTargetError, self).__init__(message, source, point, ln)
class CoconutWarning(Warning):
"""Base Coconut warning."""
def __init__(self, *args, **kwargs):
"""Creates the Coconut warning from a Coconut exception."""
CoconutSyntaxError.__init__(self, *args, **kwargs)
def __repr__(self):
"""Displays the Coconut warning."""
return self.value
def __str__(self):
"""Wraps repr."""
part = clean(source.splitlines()[lineno(point, source)-1])
self.value += "\n" + " "*tablen + part + "\n" + " "*tablen
for x in range(0, col(point, source)-1):
if x < len(part) and part[x] in white:
self.value += part[x]
else:
self.value += " "
self.value += "^"
class CoconutParseError(CoconutSyntaxError):
"""Coconut ParseError."""
def __init__(self, line, col, ln):
"""Creates The Coconut ParseError."""
super(CoconutParseError, self).__init__("parsing failed", line, col-1, ln)
class CoconutStyleError(CoconutSyntaxError):
"""Coconut --strict error."""
def __init__(self, message, source=None, point=None, ln=None):
"""Creates the --strict Coconut error."""
message += " (disable --strict to dismiss)"
super(CoconutStyleError, self).__init__(message, source, point, ln)
class CoconutTargetError(CoconutSyntaxError):
"""Coconut --target error."""
def __init__(self, message, source=None, point=None, ln=None):
"""Creates the --target Coconut error."""
message += " (enable --target 3 to dismiss)"
super(CoconutTargetError, self).__init__(message, source, point, ln)
class CoconutWarning(Warning):
"""Base Coconut warning."""
def __init__(self, *args, **kwargs):
"""Processes items."""
out = tokens.pop(0)
for trailer in tokens:
if isinstance(trailer, str):
out += trailer
elif len(trailer) == 1:
if trailer[0] == "$[]":
out = islice_lambda(out)
elif trailer[0] == "$":
out = "__coconut__.functools.partial(__coconut__.functools.partial, "+out+")"
elif trailer[0] == "[]":
out = "__coconut__.functools.partial(__coconut__.operator.__getitem__, "+out+")"
elif trailer[0] == ".":
out = "__coconut__.functools.partial(__builtins__.getattr, "+out+")"
elif trailer[0] == "$(":
raise CoconutSyntaxError("a partial application argument is required",
original, location, self.adjust(lineno(location, original)))
else:
raise CoconutException("invalid trailer symbol", trailer[0])
elif len(trailer) == 2:
if trailer[0] == "$(":
out = "__coconut__.functools.partial("+out+", "+trailer[1]+")"
elif trailer[0] == "$[" or trailer[0] == "$[=":
if 0 < len(trailer[1]) <= 3:
args = []
for x in range(0, len(trailer[1])):
arg = trailer[1][x]
if not arg:
if x == 0:
arg = "0"
else:
arg = "None"
part = clean(source.splitlines()[lineno(point, source)-1], False).lstrip()
point -= len(source) - len(part) # adjust all points based on lstrip
part = part.rstrip() # adjust only points that are too large based on rstrip
self.value += "\n" + " "*tabideal + part
if point > 0:
if point >= len(part):
point = len(part) - 1
self.value += "\n" + " "*(tabideal + point) + "^"
class CoconutParseError(CoconutSyntaxError):
"""Coconut ParseError."""
def __init__(self, source=None, point=None, lineno=None):
"""Creates The Coconut ParseError."""
CoconutSyntaxError.__init__(self, "parsing failed", source, point, lineno)
class CoconutStyleError(CoconutSyntaxError):
"""Coconut --strict error."""
def __init__(self, message, source=None, point=None, lineno=None):
"""Creates the --strict Coconut error."""
message += " (disable --strict to dismiss)"
CoconutSyntaxError.__init__(self, message, source, point, lineno)
class CoconutTargetError(CoconutSyntaxError):
"""Coconut --target error."""
def __init__(self, message, source=None, point=None, lineno=None):
"""Creates the --target Coconut error."""
message, target = message
message += " (enable --target "+target+" to dismiss)"
CoconutSyntaxError.__init__(self, message, source, point, lineno)
class CoconutWarning(CoconutSyntaxError):
"""Base Coconut warning."""
elif len(found) == 3: # found == "___"
if c == "\n":
skips = addskip(skips, self.adjust(lineno(x, inputstring)))
hold = [c, found, None] # [_contents, _start, _stop]
found = None
else:
raise CoconutSyntaxError("invalid number of string starts", inputstring, x, self.adjust(lineno(x, inputstring)))
elif c == "#":
hold = [""] # [_comment]
elif c in holds:
found = c
else:
out.append(c)
x += 1
if hold is not None or found is not None:
raise CoconutSyntaxError("unclosed string", inputstring, x, self.adjust(lineno(x, inputstring)))
else:
self.skips = skips
return "".join(out)
def __init__(self, *args, **kwargs):
"""Creates the Coconut warning from a Coconut exception."""
CoconutSyntaxError.__init__(self, *args, **kwargs)
def __repr__(self):