Skip to content

Commit d05dcc4

Browse files
committed
fix nbdev export
1 parent 39a855a commit d05dcc4

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

nbdev/_modidx.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@
3030
'nbdev.cli.watch_export': ('api/cli.html#watch_export', 'nbdev/cli.py')},
3131
'nbdev.config': { 'nbdev.config.ConfigToml': ('api/config.html#configtoml', 'nbdev/config.py'),
3232
'nbdev.config.ConfigToml.__getattr__': ('api/config.html#configtoml.__getattr__', 'nbdev/config.py'),
33+
'nbdev.config.ConfigToml.__getitem__': ('api/config.html#configtoml.__getitem__', 'nbdev/config.py'),
3334
'nbdev.config.ConfigToml.__init__': ('api/config.html#configtoml.__init__', 'nbdev/config.py'),
35+
'nbdev.config.ConfigToml.d': ('api/config.html#configtoml.d', 'nbdev/config.py'),
3436
'nbdev.config.ConfigToml.get': ('api/config.html#configtoml.get', 'nbdev/config.py'),
37+
'nbdev.config.ConfigToml.path': ('api/config.html#configtoml.path', 'nbdev/config.py'),
3538
'nbdev.config._basic_export_nb': ('api/config.html#_basic_export_nb', 'nbdev/config.py'),
3639
'nbdev.config._fetch_from_git': ('api/config.html#_fetch_from_git', 'nbdev/config.py'),
3740
'nbdev.config._find_nbdev_pyproject': ('api/config.html#_find_nbdev_pyproject', 'nbdev/config.py'),

nbdev/config.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,20 @@ def __init__(self, d, proj, cfg_file):
193193
self.doc_baseurl = (u.path or '/').rstrip('/') or '/'
194194
if 'lib_path' not in self: self['lib_path'] = self.lib_name.replace('-', '_')
195195

196-
def __getattr__(self, k):
197-
v = super().__getattr__(k)
198-
return self.config_path / v if k in _path_keys else v
196+
@property
197+
def d(self): return {k:v for k,v in super().items()}
198+
199+
def __getattr__(self, k): return stop(AttributeError(k)) if k=='d' or k not in self.d else self.get(k)
200+
def __getitem__(self, k): return stop(IndexError(k)) if k not in self.d else self.get(k)
199201

200202
def get(self, k, default=None):
201-
v = super().get(k, default)
202-
return self.config_path / v if k in _path_keys and v else v
203+
v = self.d.get(k, default)
204+
if v is None: return None
205+
return self.config_path / v if k in _path_keys else v
206+
207+
def path(self, k, default=None):
208+
v = self.d.get(k, default)
209+
return v if v is None else self.config_path / v
203210

204211
# %% ../nbs/api/01_config.ipynb #6fed9c91
205212
def _user_config():

nbdev/doclinks.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ def _build_modidx(dest=None, nbs_path=None, skip_exists=False):
107107
with contextlib.suppress(FileNotFoundError): idxfile.unlink()
108108
if idxfile.exists(): res = exec_local(idxfile.read_text(encoding='utf-8'), 'd')
109109
else: res = dict(syms={}, settings={})
110-
cfg = get_config()
111-
res['settings'] = {k:cfg[k] for k in ('doc_host','doc_baseurl','lib_path','git_url','branch') if k in cfg}
110+
res['settings'] = {k:v for k,v in get_config().d.items() if k in ('doc_host','doc_baseurl','lib_path','git_url','branch')}
112111
code_root = dest.parent.resolve()
113112
for file in globtastic(dest, file_glob="*.py", skip_file_re='^_', skip_folder_re=r"\.ipynb_checkpoints"):
114113
try: res['syms'].update(_get_modidx((dest.parent/file).resolve(), code_root, nbs_path=nbs_path))

nbs/api/01_config.ipynb

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -389,13 +389,20 @@
389389
" self.doc_baseurl = (u.path or '/').rstrip('/') or '/'\n",
390390
" if 'lib_path' not in self: self['lib_path'] = self.lib_name.replace('-', '_')\n",
391391
"\n",
392-
" def __getattr__(self, k):\n",
393-
" v = super().__getattr__(k)\n",
394-
" return self.config_path / v if k in _path_keys else v\n",
392+
" @property\n",
393+
" def d(self): return {k:v for k,v in super().items()}\n",
394+
"\n",
395+
" def __getattr__(self, k): return stop(AttributeError(k)) if k=='d' or k not in self.d else self.get(k)\n",
396+
" def __getitem__(self, k): return stop(IndexError(k)) if k not in self.d else self.get(k)\n",
395397
"\n",
396398
" def get(self, k, default=None):\n",
397-
" v = super().get(k, default)\n",
398-
" return self.config_path / v if k in _path_keys and v else v"
399+
" v = self.d.get(k, default)\n",
400+
" if v is None: return None\n",
401+
" return self.config_path / v if k in _path_keys else v\n",
402+
"\n",
403+
" def path(self, k, default=None):\n",
404+
" v = self.d.get(k, default)\n",
405+
" return v if v is None else self.config_path / v"
399406
]
400407
},
401408
{

nbs/api/05_doclinks.ipynb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,7 @@
265265
" with contextlib.suppress(FileNotFoundError): idxfile.unlink()\n",
266266
" if idxfile.exists(): res = exec_local(idxfile.read_text(encoding='utf-8'), 'd')\n",
267267
" else: res = dict(syms={}, settings={}) \n",
268-
" cfg = get_config()\n",
269-
" res['settings'] = {k:cfg[k] for k in ('doc_host','doc_baseurl','lib_path','git_url','branch') if k in cfg}\n",
268+
" res['settings'] = {k:v for k,v in get_config().d.items() if k in ('doc_host','doc_baseurl','lib_path','git_url','branch')}\n",
270269
" code_root = dest.parent.resolve()\n",
271270
" for file in globtastic(dest, file_glob=\"*.py\", skip_file_re='^_', skip_folder_re=r\"\\.ipynb_checkpoints\"):\n",
272271
" try: res['syms'].update(_get_modidx((dest.parent/file).resolve(), code_root, nbs_path=nbs_path))\n",

0 commit comments

Comments
 (0)