Skip to content

Commit 76e246e

Browse files
authored
Merge pull request #8 from stitchfix/bugfix-py3-parse-function
Fix ast parsing for functions in python 3
2 parents b6e1ec6 + d0cef35 commit 76e246e

4 files changed

Lines changed: 20 additions & 1 deletion

File tree

nodebook/nodebookcore.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ def visit_FunctionDef(self, node):
4646
self.locals.add(node.name)
4747
self.generic_visit(node)
4848

49+
def visit_arg(self, node):
50+
self.locals.add(node.arg)
51+
4952
def visit_AugAssign(self, node):
5053
target = node.target
5154
while (type(target) is ast.Subscript):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setup(
77
name='nodebook',
8-
version='0.2.0',
8+
version='0.2.1',
99
author='Kevin Zielnicki',
1010
author_email='kzielnicki@stitchfix.com',
1111
license='Stitch Fix 2017',

tests/test_nodebookcore.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ def test_multiline(self, rf):
4242
assert rf.locals == {'pd', 'y'}
4343
assert rf.imports == {'pandas'}
4444

45+
def test_function(self, rf):
46+
code_tree = ast.parse(
47+
"def add(x,y):\n"
48+
" return x+y\n"
49+
)
50+
rf.visit(code_tree)
51+
assert rf.inputs == set()
52+
assert rf.locals == {'add', 'x', 'y'}
53+
assert rf.imports == set()
54+
4555

4656
class TestNodebook(object):
4757
@pytest.fixture()

tests/test_pickledict.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ def test_df(self, mydict):
3333
df = pd.DataFrame({'a': [0, 1, 2], 'b': ['foo', 'bar', 'baz']})
3434
mydict['test_df'] = df
3535
assert mydict['test_df'].equals(df)
36+
37+
def test_func(self, mydict):
38+
def add(a, b):
39+
return a + b
40+
mydict['test_func'] = add
41+
assert mydict['test_func'](3,5) == 8
3642

3743
def test_immutability(self, mydict):
3844
l = [1, 2, 3]

0 commit comments

Comments
 (0)