|
36 | 36 |
|
37 | 37 | NB_FORMAT_VERSION = 4 |
38 | 38 |
|
| 39 | +def get_language_from_nb_metadata(metadata): |
| 40 | + ks_lang = metadata.kernelspec.get("language", None) |
| 41 | + li_name = metadata.language_info.get("name", None) |
| 42 | + return ks_lang or li_name |
| 43 | + |
39 | 44 | # exception to indicate the kernel needs restarting |
40 | 45 | class RestartKernel(Exception): |
41 | 46 | pass |
@@ -254,7 +259,7 @@ def handle_meta_object(obj): |
254 | 259 | if cell.cell_type == 'code': |
255 | 260 | total_code_cells += 1 |
256 | 261 | # map cells to their labels |
257 | | - language = client.nb.metadata.kernelspec.get("language", client.nb.metadata.language_info.name) |
| 262 | + language = get_language_from_nb_metadata(client.nb.metadata) |
258 | 263 | label = nb_cell_yaml_options(language, cell).get('label', '') |
259 | 264 | cell_labels.append(label) |
260 | 265 | # find max label length |
@@ -436,7 +441,7 @@ def nb_cleanup_cell(nb, resource_dir): |
436 | 441 |
|
437 | 442 | def nb_language_cell(name, nb, resource_dir, allow_empty, **args): |
438 | 443 | kernelspec = nb.metadata.kernelspec |
439 | | - language = nb.metadata.kernelspec.get("language", nb.metadata.language_info.name) |
| 444 | + language = get_language_from_nb_metadata(nb.metadata) |
440 | 445 | trace(json.dumps(nb.metadata, indent=2)) |
441 | 446 | source = '' |
442 | 447 | lang_dir = os.path.join(resource_dir, 'jupyter', 'lang', language) |
@@ -503,7 +508,7 @@ def nb_kernel_dependencies(setup_cell): |
503 | 508 |
|
504 | 509 | def cell_execute(client, cell, index, execution_count, eval_default, store_history): |
505 | 510 |
|
506 | | - language = client.nb.metadata.kernelspec.get("language", client.nb.metadata.language_info.name) |
| 511 | + language = get_language_from_nb_metadata(client.nb.metadata) |
507 | 512 | # read cell options |
508 | 513 | cell_options = nb_cell_yaml_options(language, cell) |
509 | 514 |
|
@@ -564,7 +569,7 @@ def clear_user_expressions(): |
564 | 569 | del metadata["user_expressions"] |
565 | 570 |
|
566 | 571 | # find expressions in source |
567 | | - language = client.nb.metadata.kernelspec.get("language", client.nb.metadata.language_info.name) |
| 572 | + language = get_language_from_nb_metadata(client.nb.metadata) |
568 | 573 | source = ''.join(cell.source) |
569 | 574 | expressions = re.findall( |
570 | 575 | fr'(?:^|[^`])`{{{language}}}[ \t]([^`]+)`', |
@@ -627,7 +632,7 @@ def nb_parameterize(nb, params): |
627 | 632 |
|
628 | 633 | # alias kernel name and language |
629 | 634 | kernel_name = nb.metadata.kernelspec.name |
630 | | - language = nb.metadata.kernelspec.get("language", nb.metadata.language_info.name) |
| 635 | + language = get_language_from_nb_metadata(nb.metadata) |
631 | 636 |
|
632 | 637 | # find params index and note any tags/yaml on it (exit if no params) |
633 | 638 | params_index = find_first_tagged_cell_index(nb, "parameters") |
@@ -705,7 +710,7 @@ def find_first_tagged_cell_index(nb, tag): |
705 | 710 | return parameters_indices[0] |
706 | 711 |
|
707 | 712 | def nb_strip_yaml_options(client, source): |
708 | | - yaml_lines = nb_cell_yaml_lines(client.nb.metadata.kernelspec.get("language", client.nb.metadata.language_info.name), source) |
| 713 | + yaml_lines = nb_cell_yaml_lines(get_language_from_nb_metadata(client.nb.metadata), source) |
709 | 714 | num_yaml_lines = len(yaml_lines) |
710 | 715 | if num_yaml_lines > 0: |
711 | 716 | return "\n".join(source.splitlines()[num_yaml_lines:]) |
|
0 commit comments