|
| 1 | +from copy import deepcopy |
1 | 2 | from datetime import datetime, timezone |
2 | 3 | from uuid import uuid4 |
3 | 4 |
|
@@ -92,15 +93,21 @@ def parameterize_notebook( |
92 | 93 | # Upgrade the Notebook to the latest v4 before writing into it |
93 | 94 | nb = nbformat.v4.upgrade(nb) |
94 | 95 |
|
| 96 | + param_cell_index = find_first_tagged_cell_index(nb, 'parameters') |
| 97 | + injected_cell_index = find_first_tagged_cell_index(nb, 'injected-parameters') |
| 98 | + |
95 | 99 | newcell = nbformat.v4.new_code_cell(source=param_content) |
96 | | - newcell.metadata['tags'] = ['injected-parameters'] |
| 100 | + if param_cell_index >= 0: |
| 101 | + newcell.metadata = deepcopy(nb.cells[param_cell_index].metadata) |
| 102 | + |
| 103 | + tags = [tag for tag in newcell.metadata.get('tags', []) if tag != 'parameters'] |
| 104 | + if 'injected-parameters' not in tags: |
| 105 | + tags.append('injected-parameters') |
| 106 | + newcell.metadata['tags'] = tags |
97 | 107 |
|
98 | 108 | if report_mode: |
99 | | - newcell.metadata['jupyter'] = newcell.get('jupyter', {}) |
100 | | - newcell.metadata['jupyter']['source_hidden'] = True |
| 109 | + newcell.metadata.setdefault('jupyter', {})['source_hidden'] = True |
101 | 110 |
|
102 | | - param_cell_index = find_first_tagged_cell_index(nb, 'parameters') |
103 | | - injected_cell_index = find_first_tagged_cell_index(nb, 'injected-parameters') |
104 | 111 | if injected_cell_index >= 0: |
105 | 112 | # Replace the injected cell with a new version |
106 | 113 | before = nb.cells[:injected_cell_index] |
|
0 commit comments