Skip to content

Commit d351adc

Browse files
committed
fixes #953
1 parent 86b35cf commit d351adc

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

nbdev/_modidx.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
'nbdev.maker._import2relative': ('09_API/maker.html#_import2relative', 'nbdev/maker.py'),
102102
'nbdev.maker._mark_text_ranges': ('09_API/maker.html#_mark_text_ranges', 'nbdev/maker.py'),
103103
'nbdev.maker._retr_mdoc': ('09_API/maker.html#_retr_mdoc', 'nbdev/maker.py'),
104+
'nbdev.maker._targets': ('09_API/maker.html#_targets', 'nbdev/maker.py'),
104105
'nbdev.maker._val_or_id': ('09_API/maker.html#_val_or_id', 'nbdev/maker.py'),
105106
'nbdev.maker._wants': ('09_API/maker.html#_wants', 'nbdev/maker.py'),
106107
'nbdev.maker.decor_id': ('09_API/maker.html#decor_id', 'nbdev/maker.py'),

nbdev/maker.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ def _filt_dec(x): return decor_id(x).startswith('patch')
8787
def _wants(o): return isinstance(o,_def_types) and not any(L(o.decorator_list).filter(_filt_dec))
8888

8989
# %% ../nbs/09_API/02_maker.ipynb 20
90+
def _targets(o): return [o.target] if isinstance(o, ast.AnnAssign) else o.targets
91+
9092
@patch
9193
def make_all(self:ModuleMaker, cells):
9294
"Create `__all__` with all exports in `cells`"
@@ -95,11 +97,11 @@ def make_all(self:ModuleMaker, cells):
9597
# include anything mentioned in "_all_", even if otherwise private
9698
# NB: "_all_" can include strings (names), or symbols, so we look for "id" or "value"
9799
assigns = trees.filter(risinstance(_assign_types))
98-
all_assigns = assigns.filter(lambda o: getattr(o.targets[0],'id',None)=='_all_')
100+
all_assigns = assigns.filter(lambda o: getattr(_targets(o)[0],'id',None)=='_all_')
99101
all_vals = all_assigns.map(_val_or_id).concat()
100102
syms = trees.filter(_wants).attrgot('name')
101103
# assignment targets (NB: can be multiple, e.g. "a=b=c", and/or destructuring e.g "a,b=(1,2)")
102-
assign_targs = L(L(assn.targets).map(_all_targets).concat() for assn in assigns).concat()
104+
assign_targs = L(L(_targets(assn)).map(_all_targets).concat() for assn in assigns).concat()
103105
exports = (assign_targs.attrgot('id')+syms).filter(lambda o: o and o[0]!='_')
104106
return (exports+all_vals).unique()
105107

nbs/09_API/02_maker.ipynb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,9 @@
276276
"outputs": [],
277277
"source": [
278278
"#|export\n",
279+
"\n",
280+
"def _targets(o): return [o.target] if isinstance(o, ast.AnnAssign) else o.targets\n",
281+
"\n",
279282
"@patch\n",
280283
"def make_all(self:ModuleMaker, cells):\n",
281284
" \"Create `__all__` with all exports in `cells`\"\n",
@@ -284,11 +287,11 @@
284287
" # include anything mentioned in \"_all_\", even if otherwise private\n",
285288
" # NB: \"_all_\" can include strings (names), or symbols, so we look for \"id\" or \"value\"\n",
286289
" assigns = trees.filter(risinstance(_assign_types))\n",
287-
" all_assigns = assigns.filter(lambda o: getattr(o.targets[0],'id',None)=='_all_')\n",
290+
" all_assigns = assigns.filter(lambda o: getattr(_targets(o)[0],'id',None)=='_all_')\n",
288291
" all_vals = all_assigns.map(_val_or_id).concat()\n",
289292
" syms = trees.filter(_wants).attrgot('name')\n",
290293
" # assignment targets (NB: can be multiple, e.g. \"a=b=c\", and/or destructuring e.g \"a,b=(1,2)\")\n",
291-
" assign_targs = L(L(assn.targets).map(_all_targets).concat() for assn in assigns).concat()\n",
294+
" assign_targs = L(L(_targets(assn)).map(_all_targets).concat() for assn in assigns).concat()\n",
292295
" exports = (assign_targs.attrgot('id')+syms).filter(lambda o: o and o[0]!='_')\n",
293296
" return (exports+all_vals).unique()"
294297
]

0 commit comments

Comments
 (0)