未验证 提交 515d3562 编写于 作者: 0 0x45f 提交者: GitHub

[Dy2stat]Remove all comments of users code when dy2stat (#38003)

* remove outer comment when dy2stat

* remove all comment

* add unit test
上级 c5a7da4b
...@@ -547,7 +547,11 @@ def func_to_source_code(function, dedent=True): ...@@ -547,7 +547,11 @@ def func_to_source_code(function, dedent=True):
raise TypeError( raise TypeError(
"The type of 'function' should be a function or method, but received {}.". "The type of 'function' should be a function or method, but received {}.".
format(type(function).__name__)) format(type(function).__name__))
source_code = inspect.getsource(function) source_code_list, _ = inspect.getsourcelines(function)
source_code_list = [
line for line in source_code_list if not line.lstrip().startswith('#')
]
source_code = ''.join(source_code_list)
if dedent: if dedent:
source_code = textwrap.dedent(source_code) source_code = textwrap.dedent(source_code)
......
...@@ -26,6 +26,7 @@ import paddle.fluid as fluid ...@@ -26,6 +26,7 @@ import paddle.fluid as fluid
from paddle.fluid.dygraph.dygraph_to_static import ProgramTranslator from paddle.fluid.dygraph.dygraph_to_static import ProgramTranslator
from paddle.fluid.dygraph.jit import declarative from paddle.fluid.dygraph.jit import declarative
from paddle.fluid.dygraph.nn import Linear from paddle.fluid.dygraph.nn import Linear
from paddle.fluid.dygraph.dygraph_to_static.utils import func_to_source_code
from ifelse_simple_func import dyfunc_with_if_else from ifelse_simple_func import dyfunc_with_if_else
...@@ -344,5 +345,18 @@ class TestFunctionTrainEvalMode(unittest.TestCase): ...@@ -344,5 +345,18 @@ class TestFunctionTrainEvalMode(unittest.TestCase):
net.foo.train() net.foo.train()
class TestRemoveCommentInDy2St(unittest.TestCase):
def func_with_comment(self):
# Comment1
x = paddle.to_tensor([1, 2, 3])
# Comment2
# Comment3
y = paddle.to_tensor([4, 5, 6])
def test_remove_comment(self):
code_string = func_to_source_code(self.func_with_comment)
self.assertEqual('#' not in code_string, True)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册