Skip to content

single-liner function defitions don't work well in nbmodular #56

@JaumeAmoresDS

Description

@JaumeAmoresDS

For example:

def f(): pass

will make cell2func not work due to the if inserted. When running jupynbm on such .py jupy file, I get:

Traceback (most recent call last):
  File "/home/jaumeamllo/miniconda3/envs/nbmodular/bin/jupynbm", line 33, in <module>
    sys.exit(load_entry_point('nbmodular', 'console_scripts', 'jupynbm')())
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/jupynbm.py", line 234, in jupynbm_export_cli
    parse_argv_and_run_jupynbm(sys.argv[1:])
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/jupynbm.py", line 223, in parse_argv_and_run_jupynbm
    jupynbm(
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/jupynbm.py", line 182, in jupynbm
    nbm_export_all_paths(
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/export.py", line 586, in nbm_export_all_paths
    nbm_export(f, **kwargs)
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/export.py", line 569, in nbm_export
    processor = NbMagicExporter(
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/export.py", line 393, in __init__
    NBProcessor(path, self.nb_magic_processor, rm_directives=False, nb=nb).process()
  File "/home/jaumeamllo/miniconda3/envs/nbmodular/lib/python3.10/site-packages/nbdev/process.py", line 127, in process
    for proc in self.procs: self._proc(proc)
  File "/home/jaumeamllo/miniconda3/envs/nbmodular/lib/python3.10/site-packages/nbdev/process.py", line 120, in _proc
    for cell in self.nb.cells: self._process_cell(proc, cell)
  File "/home/jaumeamllo/miniconda3/envs/nbmodular/lib/python3.10/site-packages/nbdev/process.py", line 111, in _process_cell
    if callable(proc) and not _is_direc(proc): cell = opt_set(cell, proc(cell))
  File "/home/jaumeamllo/miniconda3/envs/nbmodular/lib/python3.10/site-packages/nbdev/process.py", line 134, in __call__
    def __call__(self, cell): return self.cell(cell)
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/export.py", line 308, in cell
    self.cell_processor.process_function_call(
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/cell2func.py", line 2167, in process_function_call
    self.function(
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/cell2func.py", line 2784, in function
    this_function = self.create_function_and_run_code(
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/cell2func.py", line 2464, in create_function_and_run_code
    self.current_function = self.create_function(
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/cell2func.py", line 2336, in create_function
    this_function.parse_variables()
  File "/home/jaumeamllo/workspace/mine/nbmodular/nbmodular/cell2func.py", line 532, in parse_variables
    root = ast.parse(code)
  File "/home/jaumeamllo/miniconda3/envs/nbmodular/lib/python3.10/ast.py", line 50, in parse
    return compile(source, filename, mode, flags,
  File "<unknown>", line 2
    pass
    ^^^^

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions