Show More
@@ -54,14 +54,38 class CythonMagics(Magics): | |||
|
54 | 54 | |
|
55 | 55 | @cell_magic |
|
56 | 56 | def cython_inline(self, line, cell): |
|
57 |
"""Compile and run a Cython code cell using Cython.inline. |
|
|
57 | """Compile and run a Cython code cell using Cython.inline. | |
|
58 | ||
|
59 | This magic simply passes the body of the cell to Cython.inline | |
|
60 | and returns the result. If the variables `a` and `b` are defined | |
|
61 | in the user's namespace, here is a simple example that returns | |
|
62 | their sum:: | |
|
63 | ||
|
64 | %%cython_inline | |
|
65 | return a+b | |
|
66 | ||
|
67 | For most purposes, we recommend the usage of the `%%cython` magic. | |
|
68 | """ | |
|
58 | 69 | locs = self.shell.user_global_ns |
|
59 | 70 | globs = self.shell.user_ns |
|
60 | 71 | return Cython.inline(cell, locals=locs, globals=globs) |
|
61 | 72 | |
|
62 | 73 | @cell_magic |
|
63 | 74 | def cython_pyximport(self, line, cell): |
|
64 |
"""Compile and import a Cython code cell using pyximport. |
|
|
75 | """Compile and import a Cython code cell using pyximport. | |
|
76 | ||
|
77 | The contents of the cell are written to a `.pyx` file in the current | |
|
78 | working directory, which is then imported using `pyximport`. This | |
|
79 | magic requires a module name to be passed:: | |
|
80 | ||
|
81 | %%cython_pyximport modulename | |
|
82 | def f(x): | |
|
83 | return 2.0*x | |
|
84 | ||
|
85 | The compiled module is then imported and all of its symbols are injected into | |
|
86 | the user's namespace. For most purposes, we recommend the usage of the | |
|
87 | `%%cython` magic. | |
|
88 | """ | |
|
65 | 89 | module_name = line.strip() |
|
66 | 90 | if not module_name: |
|
67 | 91 | raise ValueError('module name must be given') |
@@ -86,7 +110,19 class CythonMagics(Magics): | |||
|
86 | 110 | ) |
|
87 | 111 | @cell_magic |
|
88 | 112 | def cython(self, line, cell): |
|
89 |
"""Compile and import everything from a Cython code cell. |
|
|
113 | """Compile and import everything from a Cython code cell. | |
|
114 | ||
|
115 | The contents of the cell are written to a `.pyx` file in the | |
|
116 | `~/.cython/magic` using a filename with the hash of the code. | |
|
117 | This file is then cythonized and compiled. The resulting module | |
|
118 | is imported and all of its symbols are injected into the user's | |
|
119 | namespace. The usage is similar to that of `%%cython_pyximport` but | |
|
120 | you don't have to pass a module name:: | |
|
121 | ||
|
122 | %%cython | |
|
123 | def f(x): | |
|
124 | return 2.0*x | |
|
125 | """ | |
|
90 | 126 | args = parse_argstring(self.cython, line) |
|
91 | 127 | code = cell if cell.endswith('\n') else cell+'\n' |
|
92 | 128 | lib_dir=os.path.expanduser('~/.cython/magic') |
General Comments 0
You need to be logged in to leave comments.
Login now