nbdev 3.0.13__tar.gz → 3.0.15__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.
Files changed (38) hide show
  1. {nbdev-3.0.13/nbdev.egg-info → nbdev-3.0.15}/PKG-INFO +1 -1
  2. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/__init__.py +1 -1
  3. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/clean.py +11 -7
  4. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/maker.py +6 -8
  5. {nbdev-3.0.13 → nbdev-3.0.15/nbdev.egg-info}/PKG-INFO +1 -1
  6. {nbdev-3.0.13 → nbdev-3.0.15}/CONTRIBUTING.md +0 -0
  7. {nbdev-3.0.13 → nbdev-3.0.15}/LICENSE +0 -0
  8. {nbdev-3.0.13 → nbdev-3.0.15}/MANIFEST.in +0 -0
  9. {nbdev-3.0.13 → nbdev-3.0.15}/README.md +0 -0
  10. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/_modidx.py +0 -0
  11. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/cli.py +0 -0
  12. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/config.py +0 -0
  13. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/diff.py +0 -0
  14. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/doclinks.py +0 -0
  15. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/export.py +0 -0
  16. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/extract_attachments.py +0 -0
  17. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/frontmatter.py +0 -0
  18. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/imports.py +0 -0
  19. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/merge.py +0 -0
  20. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/migrate.py +0 -0
  21. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/process.py +0 -0
  22. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/processors.py +0 -0
  23. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/qmd.py +0 -0
  24. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/quarto.py +0 -0
  25. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/release.py +0 -0
  26. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/scrubmagics.py +0 -0
  27. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/serve.py +0 -0
  28. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/serve_drv.py +0 -0
  29. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/showdoc.py +0 -0
  30. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/sync.py +0 -0
  31. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev/test.py +0 -0
  32. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev.egg-info/SOURCES.txt +0 -0
  33. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev.egg-info/dependency_links.txt +0 -0
  34. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev.egg-info/entry_points.txt +0 -0
  35. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev.egg-info/requires.txt +0 -0
  36. {nbdev-3.0.13 → nbdev-3.0.15}/nbdev.egg-info/top_level.txt +0 -0
  37. {nbdev-3.0.13 → nbdev-3.0.15}/pyproject.toml +0 -0
  38. {nbdev-3.0.13 → nbdev-3.0.15}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nbdev
3
- Version: 3.0.13
3
+ Version: 3.0.15
4
4
  Summary: Create delightful software with Jupyter Notebooks
5
5
  Author-email: "Jeremy Howard and the fast.ai community" <j@fast.ai>
6
6
  License: Apache-2.0
@@ -1,4 +1,4 @@
1
- __version__ = "3.0.13"
1
+ __version__ = "3.0.15"
2
2
 
3
3
  from .doclinks import nbdev_export
4
4
  from .showdoc import show_doc
@@ -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
- # o.get('metadata', {}).pop('tags', None)
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
- for c in nb['cells']: _clean_cell(c, clear_all, cell_metadata_keys, clean_ids)
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
- clean_nb(nb, clear_all, allowed_metadata_keys, allowed_cell_metadata_keys, cfg.clean_ids)
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 nbdev_install_hooks
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
@@ -5,10 +5,6 @@
5
5
  # %% auto #0
6
6
  __all__ = ['find_var', 'read_var', 'update_var', 'ModuleMaker', 'decor_id', 'make_code_cells', 'relative_import', 'update_import']
7
7
 
8
- # %% ../nbs/api/02_maker.ipynb #aac32462
9
- #| export
10
-
11
-
12
8
  # %% ../nbs/api/02_maker.ipynb #ae4d461b
13
9
  from .config import *
14
10
  from .imports import *
@@ -23,6 +19,7 @@ import ast,contextlib
23
19
  from collections import defaultdict
24
20
  from pprint import pformat
25
21
  from textwrap import TextWrapper
22
+ from itertools import dropwhile,takewhile
26
23
 
27
24
  # %% ../nbs/api/02_maker.ipynb #c2d38766
28
25
  def find_var(lines, varname):
@@ -178,12 +175,13 @@ def _import2relative(cells, lib_path=None):
178
175
 
179
176
  # %% ../nbs/api/02_maker.ipynb #5bff9d71
180
177
  def _retr_mdoc(cells):
181
- "Search for md meta quote line, used to create module docstring"
178
+ "Search for md meta quote lines, used to create module docstring"
182
179
  md1 = first(o for o in cells if o.cell_type=='markdown' and o.source.startswith('# '))
183
180
  if not md1: return ''
184
- summ = first(o for o in md1.source.splitlines() if o.startswith('> '))
185
- if not summ: return ''
186
- summ = summ.lstrip('> ').strip()
181
+ lines = dropwhile(lambda l: not l.startswith('> '), md1.source.splitlines())
182
+ lines = list(takewhile(lambda l: l.startswith('> '), lines))
183
+ if not lines: return ''
184
+ summ = '\n'.join(l.lstrip('> ').strip() for l in lines)
187
185
  return f'"""{summ}"""\n\n' if summ else ''
188
186
 
189
187
  # %% ../nbs/api/02_maker.ipynb #cdd205d6
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nbdev
3
- Version: 3.0.13
3
+ Version: 3.0.15
4
4
  Summary: Create delightful software with Jupyter Notebooks
5
5
  Author-email: "Jeremy Howard and the fast.ai community" <j@fast.ai>
6
6
  License: Apache-2.0
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