Skip to content

Accessing variables from previous notebook cells #6

@nonatomiclabs

Description

@nonatomiclabs

Example notebook

Usually, one can access from the current notebook cell variables from previous cells (for instance, we define a in cell 2 and access it in 3). However, I can not get that to work when using heat (example in cell 4), which is sometimes annoying (especially when creating such variable can take up some time).

Full traceback (click to expand)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-4-6d5dc00d7528> in <module>()
----> 1 get_ipython().run_cell_magic('heat', '', 'print(a)')

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/IPython/core/interactiveshell.py in run_cell_magic(self, magic_name, line, cell)
   2085             magic_arg_s = self.var_expand(line, stack_depth)
   2086             with self.builtin_trap:
-> 2087                 result = fn(magic_arg_s, cell)
   2088             return result
   2089 

<decorator-gen-124> in heat(self, line, cell)

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
    186     # but it's overkill for just that one bit of state.
    187     def magic_deco(arg):
--> 188         call = lambda f, *a, **k: f(*a, **k)
    189 
    190         if callable(arg):

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/heat.py in heat(self, line, cell)
     61 
     62         pyheat = PyHeat(tmp_file)
---> 63         pyheat.create_heatmap()
     64         pyheat.show_heatmap(output_file=filename)
     65         pyheat.close_heatmap()

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyheat/pyheat.py in create_heatmap(self)
     44         """Method to define the heatmap using profile data."""
     45         # Profile the file.
---> 46         self.__profile_file()
     47         # Map profile stats to heatmap data.
     48         self.__fetch_heatmap_data_from_profile()

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyheat/pyheat.py in __profile_file(self)
     71         self.line_profiler = pprofile.Profile()
     72         self.line_profiler.runfile(
---> 73             open(self.pyfile.path, 'r'), {}, self.pyfile.path)
     74 
     75     def __get_line_profile_data(self):

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pprofile.py in runfile(self, fd, argv, fd_name, compile_flags, dont_inherit, globals)
    606         try:
    607             sys.argv[:] = argv
--> 608             return self.runctx(code, ctx_globals, None)
    609         finally:
    610             sys.argv[:] = original_sys_argv

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pprofile.py in runctx(self, cmd, globals, locals)
    586         """Similar to profile.Profile.runctx ."""
    587         with self():
--> 588             exec(cmd, globals, locals)
    589         return self
    590 

/Users/Jean/Desktop/ipython_cell_input.py in <module>()
----> 1 print(a)

NameError: name 'a' is not defined

Would it be possible to add that feature? I have never worked on iPython extensions, but I would be glad to contribute to that one, if I'm pointed to the right part of code to improve.

Anyway, thank you for the great extension 👏

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions