BinOp()
This commit is contained in:
parent
5de5cfdcb8
commit
3879263121
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -13,7 +13,7 @@
|
|||||||
"editor.wordBasedSuggestions": "matchingDocuments",
|
"editor.wordBasedSuggestions": "matchingDocuments",
|
||||||
"editor.formatOnType": false,
|
"editor.formatOnType": false,
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"editor.formatOnSaveMode": "modifications"
|
"editor.formatOnSaveMode": "file"
|
||||||
},
|
},
|
||||||
"yapf.args": ["--style", "{based_on_style: google, column_limit: 88, indent_width: 4}"]
|
"yapf.args": ["--style", "{based_on_style: google, column_limit: 88, indent_width: 4}"]
|
||||||
}
|
}
|
||||||
|
|||||||
10
tests/test_expressions.py
Normal file
10
tests/test_expressions.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
from trace_commentor import Commentor
|
||||||
|
|
||||||
|
|
||||||
|
def test_binop():
|
||||||
|
|
||||||
|
@Commentor()
|
||||||
|
def target():
|
||||||
|
1 + 1
|
||||||
|
|
||||||
|
print(target())
|
||||||
@ -1,6 +1,5 @@
|
|||||||
import inspect
|
import inspect
|
||||||
import ast
|
import ast
|
||||||
import astor
|
|
||||||
|
|
||||||
from inspect import getfullargspec
|
from inspect import getfullargspec
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
@ -8,6 +7,7 @@ from functools import wraps
|
|||||||
from . import handlers
|
from . import handlers
|
||||||
from . import formatters
|
from . import formatters
|
||||||
from . import flags
|
from . import flags
|
||||||
|
from .utils import sign, to_source
|
||||||
|
|
||||||
|
|
||||||
class Commentor(object):
|
class Commentor(object):
|
||||||
@ -47,7 +47,7 @@ class Commentor(object):
|
|||||||
return handler(node, self)
|
return handler(node, self)
|
||||||
|
|
||||||
def eval(self, node: ast.Expr):
|
def eval(self, node: ast.Expr):
|
||||||
src = astor.code_gen.to_source(node)
|
src = to_source(node)
|
||||||
obj = eval(src, self._globals, self._locals)
|
obj = eval(src, self._globals, self._locals)
|
||||||
fmt = self.get_formatter(obj)
|
fmt = self.get_formatter(obj)
|
||||||
return f"{fmt(obj)} : {src}"
|
return f"{fmt(obj)} : {src}"
|
||||||
@ -59,17 +59,19 @@ class Commentor(object):
|
|||||||
else:
|
else:
|
||||||
return repr
|
return repr
|
||||||
|
|
||||||
def append(self, line):
|
def __append(self, line):
|
||||||
self._lines.append(" " * self.indent + str(line))
|
self._lines.append(" " * self.indent + str(line))
|
||||||
|
|
||||||
def append_source(self, line):
|
def append_source(self, line=None):
|
||||||
if self.state == flags.COMMENT:
|
if self.state == flags.COMMENT:
|
||||||
self.append('"""')
|
self.__append('"""')
|
||||||
self.append(line)
|
self.state = flags.SOURCE
|
||||||
|
if line is not None:
|
||||||
|
self.__append(sign(line, 2))
|
||||||
|
|
||||||
def append_comment(self, line):
|
def append_comment(self, line=None):
|
||||||
if self.state == flags.SOURCE:
|
if self.state == flags.SOURCE:
|
||||||
self.append('"""')
|
self.__append('"""')
|
||||||
self.append(line)
|
self.state = flags.COMMENT
|
||||||
|
if line is not None:
|
||||||
|
self.__append(sign(line, 2))
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
DEBUG = True
|
DEBUG = False
|
||||||
INDENT = 4
|
INDENT = 4
|
||||||
SOURCE = 1
|
SOURCE = 1
|
||||||
COMMENT = 2
|
COMMENT = 2
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
from .definitions import FunctionDef
|
from .definitions import FunctionDef
|
||||||
from .statements import Pass
|
from .statements import Pass
|
||||||
from .expressions import Expr
|
from .expressions import Expr, BinOp
|
||||||
from .literals import Constant
|
from .literals import Constant
|
||||||
|
|||||||
@ -1,13 +1,17 @@
|
|||||||
from .. import flags
|
from .. import flags
|
||||||
from ..utils import sign, to_source
|
from ..utils import to_source
|
||||||
|
|
||||||
def FunctionDef(self, cmtor):
|
def FunctionDef(self, cmtor):
|
||||||
cmtor.append_source(sign("def function():"))
|
cmtor.append_source("def function():")
|
||||||
cmtor.indent += flags.INDENT
|
cmtor.indent += flags.INDENT
|
||||||
|
|
||||||
if self is cmtor.root:
|
for stmt in self.body:
|
||||||
for stmt in self.body:
|
|
||||||
cmtor.append_source(sign(to_source(stmt)))
|
cmtor.append_source(to_source(stmt))
|
||||||
|
|
||||||
|
if self is cmtor.root:
|
||||||
cmtor.process(stmt)
|
cmtor.process(stmt)
|
||||||
|
|
||||||
|
cmtor.append_source()
|
||||||
|
|
||||||
cmtor.indent -= flags.INDENT
|
cmtor.indent -= flags.INDENT
|
||||||
|
|||||||
@ -1,2 +1,7 @@
|
|||||||
def Expr(self, cmtor):
|
def Expr(self, cmtor):
|
||||||
cmtor.process(self.value)
|
cmtor.process(self.value)
|
||||||
|
|
||||||
|
def BinOp(self, cmtor):
|
||||||
|
cmtor.process(self.left)
|
||||||
|
cmtor.process(self.right)
|
||||||
|
cmtor.append_comment(cmtor.eval(self))
|
||||||
|
|||||||
@ -1,6 +1,2 @@
|
|||||||
import ast
|
|
||||||
|
|
||||||
from .comments import comment
|
|
||||||
|
|
||||||
def Constant(self, cmtor):
|
def Constant(self, cmtor):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -2,9 +2,11 @@ import astor
|
|||||||
import inspect
|
import inspect
|
||||||
from . import flags
|
from . import flags
|
||||||
|
|
||||||
def sign(line: str):
|
def sign(line: str, depth=1):
|
||||||
if flags.DEBUG:
|
if flags.DEBUG:
|
||||||
debug_msg = inspect.currentframe().f_back.f_code.co_name
|
currentframe = inspect.currentframe()
|
||||||
|
outerframe = inspect.getouterframes(currentframe, depth)
|
||||||
|
debug_msg = outerframe[1][3]
|
||||||
return f"{line} --- {debug_msg}"
|
return f"{line} --- {debug_msg}"
|
||||||
else:
|
else:
|
||||||
return line
|
return line
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user