nbdev 3.0.14__tar.gz → 3.0.16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nbdev-3.0.14/nbdev.egg-info → nbdev-3.0.16}/PKG-INFO +1 -1
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/__init__.py +1 -1
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/clean.py +11 -7
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/export.py +1 -1
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/maker.py +5 -4
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/processors.py +3 -2
- {nbdev-3.0.14 → nbdev-3.0.16/nbdev.egg-info}/PKG-INFO +1 -1
- {nbdev-3.0.14 → nbdev-3.0.16}/pyproject.toml +1 -1
- {nbdev-3.0.14 → nbdev-3.0.16}/CONTRIBUTING.md +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/LICENSE +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/MANIFEST.in +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/README.md +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/_modidx.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/cli.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/config.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/diff.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/doclinks.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/extract_attachments.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/frontmatter.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/imports.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/merge.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/migrate.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/process.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/qmd.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/quarto.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/release.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/scrubmagics.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/serve.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/serve_drv.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/showdoc.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/sync.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev/test.py +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev.egg-info/SOURCES.txt +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev.egg-info/dependency_links.txt +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev.egg-info/entry_points.txt +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev.egg-info/requires.txt +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/nbdev.egg-info/top_level.txt +0 -0
- {nbdev-3.0.14 → nbdev-3.0.16}/setup.cfg +0 -0
|
@@ -58,7 +58,7 @@ def _clean_cell_output_id(lines):
|
|
|
58
58
|
return _skip_or_sub(lines) if isinstance(lines,str) else [_skip_or_sub(o) for o in lines]
|
|
59
59
|
|
|
60
60
|
# %% ../nbs/api/11_clean.ipynb #b4cde615
|
|
61
|
-
def _clean_cell_output(cell, clean_ids):
|
|
61
|
+
def _clean_cell_output(cell, clean_ids, allowed_out_meta_keys):
|
|
62
62
|
"Remove `cell` output execution count and optionally ids from text reprs"
|
|
63
63
|
outputs = cell.get('outputs', [])
|
|
64
64
|
for o in outputs:
|
|
@@ -69,15 +69,15 @@ def _clean_cell_output(cell, clean_ids):
|
|
|
69
69
|
if k.startswith('text') and clean_ids: data[k] = _clean_cell_output_id(data[k])
|
|
70
70
|
if k.startswith('image') and "svg" not in k: data[k] = data[k].rstrip()
|
|
71
71
|
if 'text' in o and clean_ids: o['text'] = _clean_cell_output_id(o['text'])
|
|
72
|
-
|
|
72
|
+
if 'metadata' in o: o['metadata'] = {k:v for k,v in o['metadata'].items() if k in allowed_out_meta_keys}
|
|
73
73
|
|
|
74
74
|
# %% ../nbs/api/11_clean.ipynb #2ba79c93
|
|
75
|
-
def _clean_cell(cell, clear_all, allowed_metadata_keys, clean_ids):
|
|
75
|
+
def _clean_cell(cell, clear_all, allowed_metadata_keys, clean_ids, allowed_out_meta_keys):
|
|
76
76
|
"Clean `cell` by removing superfluous metadata or everything except the input if `clear_all`"
|
|
77
77
|
if 'execution_count' in cell: cell['execution_count'] = None
|
|
78
78
|
if 'outputs' in cell:
|
|
79
79
|
if clear_all: cell['outputs'] = []
|
|
80
|
-
else: _clean_cell_output(cell, clean_ids)
|
|
80
|
+
else: _clean_cell_output(cell, clean_ids, allowed_out_meta_keys)
|
|
81
81
|
if cell['source'] == ['']: cell['source'] = []
|
|
82
82
|
cell['metadata'] = {} if clear_all else {
|
|
83
83
|
k:v for k,v in cell['metadata'].items() if k in allowed_metadata_keys}
|
|
@@ -90,13 +90,16 @@ def clean_nb(
|
|
|
90
90
|
allowed_metadata_keys:list=None, # Preserve the list of keys in the main notebook metadata
|
|
91
91
|
allowed_cell_metadata_keys:list=None, # Preserve the list of keys in cell level metadata
|
|
92
92
|
clean_ids=True, # Remove ids from plaintext reprs?
|
|
93
|
+
allowed_out_metadata_keys:list=None, # Preserve the list of keys in output metadata
|
|
93
94
|
):
|
|
94
95
|
"Clean `nb` from superfluous metadata"
|
|
95
96
|
metadata_keys = {"kernelspec", "jekyll", "jupytext", "doc", "widgets"}
|
|
96
97
|
if allowed_metadata_keys: metadata_keys.update(allowed_metadata_keys)
|
|
97
98
|
cell_metadata_keys = {"hide_input"}
|
|
98
99
|
if allowed_cell_metadata_keys: cell_metadata_keys.update(allowed_cell_metadata_keys)
|
|
99
|
-
|
|
100
|
+
out_meta_keys = set()
|
|
101
|
+
if allowed_out_metadata_keys: out_meta_keys.update(allowed_out_metadata_keys)
|
|
102
|
+
for c in nb['cells']: _clean_cell(c, clear_all, cell_metadata_keys, clean_ids, out_meta_keys)
|
|
100
103
|
if nb.get('metadata', {}).get('kernelspec', {}).get('name', None):
|
|
101
104
|
nb['metadata']['kernelspec']['display_name'] = nb["metadata"]["kernelspec"]["name"]
|
|
102
105
|
nb['metadata'] = {k:v for k,v in nb['metadata'].items() if k in metadata_keys}
|
|
@@ -127,7 +130,8 @@ def _nbdev_clean(nb, path=None, clear_all=None):
|
|
|
127
130
|
clear_all = clear_all or cfg.clear_all
|
|
128
131
|
allowed_metadata_keys = cfg.get("allowed_metadata_keys") or []
|
|
129
132
|
allowed_cell_metadata_keys = cfg.get("allowed_cell_metadata_keys") or []
|
|
130
|
-
|
|
133
|
+
allowed_out_metadata_keys = cfg.get("allowed_out_metadata_keys") or []
|
|
134
|
+
clean_nb(nb, clear_all, allowed_metadata_keys, allowed_cell_metadata_keys, cfg.clean_ids, allowed_out_metadata_keys)
|
|
131
135
|
if path: nbdev_trust.__wrapped__(path)
|
|
132
136
|
|
|
133
137
|
# %% ../nbs/api/11_clean.ipynb #6af3b9d4
|
|
@@ -209,7 +213,7 @@ def nbdev_install_hooks():
|
|
|
209
213
|
os.chmod(fn, os.stat(fn).st_mode | stat.S_IEXEC)
|
|
210
214
|
|
|
211
215
|
cmd = 'git config --local include.path ../.gitconfig'
|
|
212
|
-
(repo_path/'.gitconfig').write_text(f'''# Generated by
|
|
216
|
+
(repo_path/'.gitconfig').write_text(f'''# Generated by nbdev-install-hooks
|
|
213
217
|
#
|
|
214
218
|
# If you need to disable this instrumentation do:
|
|
215
219
|
# git config --local --unset include.path
|
|
@@ -30,7 +30,7 @@ class ExportModuleProc:
|
|
|
30
30
|
def __call__(self, cell):
|
|
31
31
|
src = cell.source
|
|
32
32
|
if not src: return
|
|
33
|
-
if cell.cell_type=='markdown' and src.startswith('# '): self.
|
|
33
|
+
if cell.cell_type=='markdown' and (src.startswith('# ') or 'export' in cell.directives_): self._exporti_(cell)
|
|
34
34
|
_exports_=_export_
|
|
35
35
|
|
|
36
36
|
# %% ../nbs/api/04_export.ipynb #76717e36
|
|
@@ -111,7 +111,7 @@ def make_code_cells(*ss): return dict2nb({'cells':L(ss).map(mk_cell)}).cells
|
|
|
111
111
|
# %% ../nbs/api/02_maker.ipynb #a2546836
|
|
112
112
|
def relative_import(name, fname, level=0):
|
|
113
113
|
"Convert a module `name` to a name relative to `fname`"
|
|
114
|
-
|
|
114
|
+
if level: raise ValueError(f"nbdev export does not support relative imports: module={name}, export_path={fname}")
|
|
115
115
|
sname = name.replace('.','/')
|
|
116
116
|
if not(os.path.commonpath([sname,fname])): return name
|
|
117
117
|
rel = os.path.relpath(sname, fname)
|
|
@@ -175,14 +175,15 @@ def _import2relative(cells, lib_path=None):
|
|
|
175
175
|
|
|
176
176
|
# %% ../nbs/api/02_maker.ipynb #5bff9d71
|
|
177
177
|
def _retr_mdoc(cells):
|
|
178
|
-
"Search for
|
|
178
|
+
"Search for markdown cells used to create module docstring"
|
|
179
179
|
md1 = first(o for o in cells if o.cell_type=='markdown' and o.source.startswith('# '))
|
|
180
180
|
if not md1: return ''
|
|
181
181
|
lines = dropwhile(lambda l: not l.startswith('> '), md1.source.splitlines())
|
|
182
182
|
lines = list(takewhile(lambda l: l.startswith('> '), lines))
|
|
183
|
-
if not lines: return ''
|
|
184
183
|
summ = '\n'.join(l.lstrip('> ').strip() for l in lines)
|
|
185
|
-
|
|
184
|
+
docs = L(o.source.rstrip() for o in cells if o.cell_type=='markdown' and 'export' in getattr(o,'directives_',{}))
|
|
185
|
+
mdoc = '\n\n'.join(L(summ)+docs).strip()
|
|
186
|
+
return f'"""{mdoc}"""\n\n' if mdoc else ''
|
|
186
187
|
|
|
187
188
|
# %% ../nbs/api/02_maker.ipynb #cdd205d6
|
|
188
189
|
@patch
|
|
@@ -198,8 +198,9 @@ def rm_header_dash(cell):
|
|
|
198
198
|
_hide_dirs = {'export','exporti', 'hide','default_exp'}
|
|
199
199
|
|
|
200
200
|
def rm_export(cell):
|
|
201
|
-
"Remove cells that are exported or hidden"
|
|
202
|
-
if cell.directives_ and (cell.directives_.keys() & _hide_dirs): del(cell['source'])
|
|
201
|
+
"Remove code cells that are exported or hidden"
|
|
202
|
+
if cell.cell_type=='code' and cell.directives_ and (cell.directives_.keys() & _hide_dirs): del(cell['source'])
|
|
203
|
+
|
|
203
204
|
|
|
204
205
|
# %% ../nbs/api/10_processors.ipynb #2d9a0a30
|
|
205
206
|
_re_showdoc = re.compile(r'^show_doc', re.MULTILINE)
|
|
@@ -76,7 +76,7 @@ version = {attr = "nbdev.__version__"}
|
|
|
76
76
|
include = ["nbdev"]
|
|
77
77
|
|
|
78
78
|
[tool.nbdev]
|
|
79
|
-
allowed_metadata_keys = ['
|
|
79
|
+
allowed_metadata_keys = ['solveit']
|
|
80
80
|
custom_sidebar = true
|
|
81
81
|
readme_nb = "getting_started.ipynb"
|
|
82
82
|
jupyter_hooks = true
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|