@@ -192,7 +192,7 @@ def notebook_execute(options, status):
192192 nb_parameterize (nb , quarto_kernel_setup_options ["params" ])
193193
194194 # insert setup cell
195- setup_cell = nb_setup_cell (nb . metadata . kernelspec , quarto_kernel_setup_options )
195+ setup_cell = nb_setup_cell (nb , quarto_kernel_setup_options )
196196 nb .cells .insert (0 , setup_cell )
197197
198198 nb_cache = retrieve_nb_from_cache (nb , status , ** quarto_kernel_setup_options )
@@ -254,7 +254,8 @@ def handle_meta_object(obj):
254254 if cell .cell_type == 'code' :
255255 total_code_cells += 1
256256 # map cells to their labels
257- label = nb_cell_yaml_options (client .nb .metadata .kernelspec .language , cell ).get ('label' , '' )
257+ language = client .nb .metadata .kernelspec .get ("language" , client .nb .metadata .language_info .name )
258+ label = nb_cell_yaml_options (language , cell ).get ('label' , '' )
258259 cell_labels .append (label )
259260 # find max label length
260261 max_label_len = max (max_label_len , len (label ))
@@ -350,7 +351,7 @@ def handle_meta_object(obj):
350351 nb_write (client .nb , input )
351352
352353 # execute cleanup cell
353- cleanup_cell = nb_cleanup_cell (nb . metadata . kernelspec , resource_dir )
354+ cleanup_cell = nb_cleanup_cell (nb , resource_dir )
354355 if cleanup_cell :
355356 kernel_supports_daemonization = True
356357 nb .cells .append (cleanup_cell )
@@ -425,18 +426,20 @@ async def get_info():
425426def nb_write (nb , input ):
426427 nbformat .write (nb , input , version = NB_FORMAT_VERSION )
427428
428- def nb_setup_cell (kernelspec , options ):
429+ def nb_setup_cell (nb , options ):
429430 options = dict (options )
430431 options ["allow_empty" ] = True
431- return nb_language_cell ('setup' , kernelspec , ** options )
432+ return nb_language_cell ('setup' , nb , ** options )
432433
433- def nb_cleanup_cell (kernelspec , resource_dir ):
434- return nb_language_cell ('cleanup' , kernelspec , resource_dir , False )
434+ def nb_cleanup_cell (nb , resource_dir ):
435+ return nb_language_cell ('cleanup' , nb , resource_dir , False )
435436
436- def nb_language_cell (name , kernelspec , resource_dir , allow_empty , ** args ):
437- trace (json .dumps (kernelspec , indent = 2 ))
437+ def nb_language_cell (name , nb , resource_dir , allow_empty , ** args ):
438+ kernelspec = nb .metadata .kernelspec
439+ language = nb .metadata .kernelspec .get ("language" , nb .metadata .language_info .name )
440+ trace (json .dumps (nb .metadata , indent = 2 ))
438441 source = ''
439- lang_dir = os .path .join (resource_dir , 'jupyter' , 'lang' , kernelspec . language )
442+ lang_dir = os .path .join (resource_dir , 'jupyter' , 'lang' , language )
440443 if os .path .isdir (lang_dir ):
441444 cell_file = glob .glob (os .path .join (lang_dir , name + '.*' ))
442445 # base64-encode the run_path given
@@ -445,7 +448,7 @@ def nb_language_cell(name, kernelspec, resource_dir, allow_empty, **args):
445448 with open (cell_file [0 ], 'r' ) as file :
446449 source = file .read ().format (** args )
447450 else :
448- trace (f'No { kernelspec . language } directory found in { lang_dir } ' )
451+ trace (f'No { language } directory found in { lang_dir } ' )
449452 trace (f'Will look for explicit quarto setup cell information in kernelspec dir' )
450453 try :
451454 with open (os .path .join (kernelspec .path , f"quarto_{ name } _cell" ), 'r' ) as file :
@@ -500,8 +503,9 @@ def nb_kernel_dependencies(setup_cell):
500503
501504def cell_execute (client , cell , index , execution_count , eval_default , store_history ):
502505
506+ language = client .nb .metadata .kernelspec .get ("language" , client .nb .metadata .language_info .name )
503507 # read cell options
504- cell_options = nb_cell_yaml_options (client . nb . metadata . kernelspec . language , cell )
508+ cell_options = nb_cell_yaml_options (language , cell )
505509
506510 # check options for eval and error
507511 eval = cell_options .get ('eval' , eval_default )
@@ -560,7 +564,7 @@ def clear_user_expressions():
560564 del metadata ["user_expressions" ]
561565
562566 # find expressions in source
563- language = client .nb .metadata .kernelspec .language
567+ language = client .nb .metadata .kernelspec .get ( " language" , client . nb . metadata . language_info . name )
564568 source = '' .join (cell .source )
565569 expressions = re .findall (
566570 fr'(?:^|[^`])`{{{ language } }}[ \t]([^`]+)`' ,
@@ -623,7 +627,7 @@ def nb_parameterize(nb, params):
623627
624628 # alias kernel name and language
625629 kernel_name = nb .metadata .kernelspec .name
626- language = nb .metadata .kernelspec .language
630+ language = nb .metadata .kernelspec .get ( " language" , nb . metadata . language_info . name )
627631
628632 # find params index and note any tags/yaml on it (exit if no params)
629633 params_index = find_first_tagged_cell_index (nb , "parameters" )
@@ -701,7 +705,7 @@ def find_first_tagged_cell_index(nb, tag):
701705 return parameters_indices [0 ]
702706
703707def nb_strip_yaml_options (client , source ):
704- yaml_lines = nb_cell_yaml_lines (client .nb .metadata .kernelspec .language , source )
708+ yaml_lines = nb_cell_yaml_lines (client .nb .metadata .kernelspec .get ( " language" , client . nb . metadata . language_info . name ) , source )
705709 num_yaml_lines = len (yaml_lines )
706710 if num_yaml_lines > 0 :
707711 return "\n " .join (source .splitlines ()[num_yaml_lines :])
0 commit comments