Kaydet (Commit) bf16623c authored tarafından Batuhan Taşkaya's avatar Batuhan Taşkaya

Merge branch 'master' of github.com:abstractequalsmagic/pepallow

......@@ -12,7 +12,7 @@ with Allow(211):
counter += 1
assert counter == 9
assert product == ["1a", "1b", "1c", "2a", "2b", "2c", "3a", "3b", "3c"]
assert product == ['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']
with Allow(231):
b = Bean(3)
......@@ -34,3 +34,4 @@ with Allow(313):
assert IV + I == V
assert VI + M == 1006
assert (M - D) + VI - X == (500) + 6 - 10
import ast
class HandledTransformer(ast.NodeTransformer):
def __init__(self, handler, *args, **kwargs):
self.handler = handler
......
......@@ -21,12 +21,10 @@ class TreeHandler:
def __init__(self, tree):
self.tree = tree
self._inserteds = set()
def set_global(self, itemid, item):
self._inserteds.add(itemid)
self.tree.body = [item] + self.tree.body # self.tree.body.insert(0, item)
class PEPTransformer(ast.NodeTransformer):
def visit(self, tree):
if isinstance(tree, ast.Module):
......@@ -35,11 +33,7 @@ class PEPTransformer(ast.NodeTransformer):
return super().visit(tree)
def visit_With(self, node):
if (
isinstance(node.items[0].context_expr, ast.Call)
and isinstance(node.items[0].context_expr.func, ast.Name)
and node.items[0].context_expr.func.id == "Allow"
):
if isinstance(node.items[0].context_expr, ast.Call) and isinstance(node.items[0].context_expr.func, ast.Name) and node.items[0].context_expr.func.id == "Allow":
pep = node.items[0].context_expr.args[0].n
new_node = PEPS[pep]["transformer"](self.handler).visit(node)
ast.copy_location(new_node, node)
......
......@@ -23,9 +23,7 @@ class PEP211Transformer(HandledTransformer):
and isinstance(node.iter.op, ast.MatMult)
):
if len(node.target.elts) < 2:
raise ValueError(
f"Not enough values to unpack (expected 2, got {len(node.target.elts)})"
)
raise ValueError(f"Not enough values to unpack (expected 2, got {len(node.target.elts)})")
elif len(node.target.elts) > 2:
raise ValueError("Too many values to unpack (expected 2)")
......
......@@ -10,12 +10,8 @@ class PEP231Transformer(HandledTransformer):
if isinstance(ctx, ast.Load):
node = ast.IfExp(
ast.Call(
ast.Name("hasattr", ast.Load()), [name, ast.Str("__findattr__")], []
),
ast.Call(
ast.Attribute(name, "__findattr__", ast.Load()), [ast.Str(attr)], []
),
ast.Call(ast.Name("hasattr", ast.Load()), [name, ast.Str("__findattr__")], []),
ast.Call(ast.Attribute(name, "__findattr__", ast.Load()), [ast.Str(attr)], []),
orelse=ast.Attribute(name, attr, ctx),
)
......@@ -28,25 +24,11 @@ class PEP231Transformer(HandledTransformer):
attr = target.attr
ctx = target.ctx
node = ast.Expr(
ast.IfExp(
ast.Call(
ast.Name("hasattr", ast.Load()),
[name, ast.Str("__findattr__")],
[],
),
ast.Call(
ast.Attribute(name, "__findattr__", ast.Load()),
[ast.Str(attr), node.value],
[],
),
orelse=ast.Call(
ast.Name("setattr", ast.Load()),
[name, ast.Str(attr), node.value],
[],
),
)
)
node = ast.Expr(ast.IfExp(
ast.Call(ast.Name("hasattr", ast.Load()), [name, ast.Str("__findattr__")], []),
ast.Call(ast.Attribute(name, "__findattr__", ast.Load()), [ast.Str(attr), node.value], []),
orelse=ast.Call(ast.Name("setattr", ast.Load()), [name, ast.Str(attr), node.value], []),
))
return node
......@@ -55,7 +37,6 @@ class AssetBean:
"""
Directly copied from https://www.python.org/dev/peps/pep-0231/
"""
def __init__(self, x):
self.__myfoo = x
......
......@@ -7,7 +7,6 @@ try:
except ImportError:
from pepallow.romana import roman
class PEP313Transformer(HandledTransformer):
"""
PEP313 => Adding Roman Numeral Literals to Python
......
......@@ -18,7 +18,7 @@ class PEP377Transformer(HandledTransformer):
],
[],
),
),
)
)
return node
......@@ -36,10 +36,7 @@ class PEP377Transformer(HandledTransformer):
assign = (
ast.Pass()
if node.items[0] is None
else ast.Assign(
[node.items[0].optional_vars],
ast.Name("StatementSkipped", ast.Load()),
)
else ast.Assign([node.items[0].optional_vars], ast.Name("StatementSkipped", ast.Load()))
)
node = ast.Try(
[node],
......
......@@ -8,7 +8,7 @@ with open(current_dir / "README.md", encoding="utf-8") as f:
setup(
name="pepallow",
version="0.3.1",
version="0.3.2",
packages=find_packages(),
url="https://github.com/abstractequalsmagic/pepallow",
description = "Hack the interpreter for running rejected pep's changes.",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment