Show More
@@ -2651,12 +2651,12 b' class InteractiveShell(SingletonConfigurable):' | |||
|
2651 | 2651 | if fname.endswith('.ipynb'): |
|
2652 | 2652 | from IPython.nbformat import current |
|
2653 | 2653 | with open(fname) as f: |
|
2654 |
nb = current.read(f |
|
|
2655 |
if not nb. |
|
|
2654 | nb = current.read(f) | |
|
2655 | if not nb.cells: | |
|
2656 | 2656 | return |
|
2657 |
for cell in nb. |
|
|
2657 | for cell in nb.cells: | |
|
2658 | 2658 | if cell.cell_type == 'code': |
|
2659 |
yield cell. |
|
|
2659 | yield cell.source | |
|
2660 | 2660 | else: |
|
2661 | 2661 | with open(fname) as f: |
|
2662 | 2662 | yield f.read() |
@@ -1,25 +1,12 b'' | |||
|
1 | """Implementation of basic magic functions. | |
|
2 | """ | |
|
3 | #----------------------------------------------------------------------------- | |
|
4 | # Copyright (c) 2012 The IPython Development Team. | |
|
5 | # | |
|
6 | # Distributed under the terms of the Modified BSD License. | |
|
7 | # | |
|
8 | # The full license is in the file COPYING.txt, distributed with this software. | |
|
9 | #----------------------------------------------------------------------------- | |
|
10 | ||
|
11 | #----------------------------------------------------------------------------- | |
|
12 | # Imports | |
|
13 | #----------------------------------------------------------------------------- | |
|
1 | """Implementation of basic magic functions.""" | |
|
2 | ||
|
14 | 3 | from __future__ import print_function |
|
15 | 4 | |
|
16 | # Stdlib | |
|
17 | 5 | import io |
|
18 | 6 | import json |
|
19 | 7 | import sys |
|
20 | 8 | from pprint import pformat |
|
21 | 9 | |
|
22 | # Our own packages | |
|
23 | 10 | from IPython.core import magic_arguments, page |
|
24 | 11 | from IPython.core.error import UsageError |
|
25 | 12 | from IPython.core.magic import Magics, magics_class, line_magic, magic_escapes |
@@ -30,9 +17,6 b' from IPython.utils.path import unquote_filename' | |||
|
30 | 17 | from IPython.utils.py3compat import unicode_type |
|
31 | 18 | from IPython.utils.warn import warn, error |
|
32 | 19 | |
|
33 | #----------------------------------------------------------------------------- | |
|
34 | # Magics class implementation | |
|
35 | #----------------------------------------------------------------------------- | |
|
36 | 20 | |
|
37 | 21 | class MagicsDisplay(object): |
|
38 | 22 | def __init__(self, magics_manager): |
@@ -599,13 +583,6 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
599 | 583 | 'file extension will write the notebook as a Python script' |
|
600 | 584 | ) |
|
601 | 585 | @magic_arguments.argument( |
|
602 | '-f', '--format', | |
|
603 | help='Convert an existing IPython notebook to a new format. This option ' | |
|
604 | 'specifies the new format and can have the values: json, py. ' | |
|
605 | 'The target filename is chosen automatically based on the new ' | |
|
606 | 'format. The filename argument gives the name of the source file.' | |
|
607 | ) | |
|
608 | @magic_arguments.argument( | |
|
609 | 586 | 'filename', type=unicode_type, |
|
610 | 587 | help='Notebook name or filename' |
|
611 | 588 | ) |
@@ -613,41 +590,20 b' Defaulting color scheme to \'NoColor\'"""' | |||
|
613 | 590 | def notebook(self, s): |
|
614 | 591 | """Export and convert IPython notebooks. |
|
615 | 592 | |
|
616 | This function can export the current IPython history to a notebook file | |
|
617 | or can convert an existing notebook file into a different format. For | |
|
618 |
|
|
|
619 | To export the history to "foo.py" do "%notebook -e foo.py". To convert | |
|
620 | "foo.ipynb" to "foo.json" do "%notebook -f json foo.ipynb". Possible | |
|
621 | formats include (json/ipynb, py). | |
|
593 | This function can export the current IPython history to a notebook file. | |
|
594 | For example, to export the history to "foo.ipynb" do "%notebook -e foo.ipynb". | |
|
595 | To export the history to "foo.py" do "%notebook -e foo.py". | |
|
622 | 596 | """ |
|
623 | 597 | args = magic_arguments.parse_argstring(self.notebook, s) |
|
624 | 598 | |
|
625 | 599 | from IPython.nbformat import current |
|
626 | 600 | args.filename = unquote_filename(args.filename) |
|
627 | 601 | if args.export: |
|
628 | fname, name, format = current.parse_filename(args.filename) | |
|
629 | 602 | cells = [] |
|
630 | 603 | hist = list(self.shell.history_manager.get_range()) |
|
631 | 604 | for session, prompt_number, input in hist[:-1]: |
|
632 | 605 | cells.append(current.new_code_cell(prompt_number=prompt_number, |
|
633 | 606 | input=input)) |
|
634 |
|
|
|
635 | nb = current.new_notebook(name=name,worksheets=[worksheet]) | |
|
636 | with io.open(fname, 'w', encoding='utf-8') as f: | |
|
637 | current.write(nb, f, format); | |
|
638 | elif args.format is not None: | |
|
639 | old_fname, old_name, old_format = current.parse_filename(args.filename) | |
|
640 | new_format = args.format | |
|
641 | if new_format == u'xml': | |
|
642 | raise ValueError('Notebooks cannot be written as xml.') | |
|
643 | elif new_format == u'ipynb' or new_format == u'json': | |
|
644 | new_fname = old_name + u'.ipynb' | |
|
645 | new_format = u'json' | |
|
646 | elif new_format == u'py': | |
|
647 | new_fname = old_name + u'.py' | |
|
648 | else: | |
|
649 | raise ValueError('Invalid notebook format: %s' % new_format) | |
|
650 | with io.open(old_fname, 'r', encoding='utf-8') as f: | |
|
651 | nb = current.read(f, old_format) | |
|
652 | with io.open(new_fname, 'w', encoding='utf-8') as f: | |
|
653 | current.write(nb, f, new_format) | |
|
607 | nb = current.new_notebook(cells=cells) | |
|
608 | with io.open(args.filename, 'w', encoding='utf-8') as f: | |
|
609 | current.write(nb, f) |
@@ -632,35 +632,6 b' class NotebookExportMagicTests(TestCase):' | |||
|
632 | 632 | _ip.ex(py3compat.u_format(u"u = {u}'héllo'")) |
|
633 | 633 | _ip.magic("notebook -e %s" % outfile) |
|
634 | 634 | |
|
635 | def test_notebook_export_py(self): | |
|
636 | with TemporaryDirectory() as td: | |
|
637 | outfile = os.path.join(td, "nb.py") | |
|
638 | _ip.ex(py3compat.u_format(u"u = {u}'héllo'")) | |
|
639 | _ip.magic("notebook -e %s" % outfile) | |
|
640 | ||
|
641 | def test_notebook_reformat_py(self): | |
|
642 | from IPython.nbformat.v3.tests.nbexamples import nb0 | |
|
643 | from IPython.nbformat import current | |
|
644 | with TemporaryDirectory() as td: | |
|
645 | infile = os.path.join(td, "nb.ipynb") | |
|
646 | with io.open(infile, 'w', encoding='utf-8') as f: | |
|
647 | current.write(nb0, f, 'json') | |
|
648 | ||
|
649 | _ip.ex(py3compat.u_format(u"u = {u}'héllo'")) | |
|
650 | _ip.magic("notebook -f py %s" % infile) | |
|
651 | ||
|
652 | def test_notebook_reformat_json(self): | |
|
653 | from IPython.nbformat.v3.tests.nbexamples import nb0 | |
|
654 | from IPython.nbformat import current | |
|
655 | with TemporaryDirectory() as td: | |
|
656 | infile = os.path.join(td, "nb.py") | |
|
657 | with io.open(infile, 'w', encoding='utf-8') as f: | |
|
658 | current.write(nb0, f, 'py') | |
|
659 | ||
|
660 | _ip.ex(py3compat.u_format(u"u = {u}'héllo'")) | |
|
661 | _ip.magic("notebook -f ipynb %s" % infile) | |
|
662 | _ip.magic("notebook -f json %s" % infile) | |
|
663 | ||
|
664 | 635 | |
|
665 | 636 | def test_env(): |
|
666 | 637 | env = _ip.magic("env") |
@@ -377,14 +377,12 b' tclass.py: deleting object: C-third' | |||
|
377 | 377 | """Test %run notebook.ipynb""" |
|
378 | 378 | from IPython.nbformat import current |
|
379 | 379 | nb = current.new_notebook( |
|
380 |
|
|
|
381 | current.new_worksheet(cells=[ | |
|
382 | current.new_text_cell("The Ultimate Question of Everything"), | |
|
380 | cells=[ | |
|
381 | current.new_markdown_cell("The Ultimate Question of Everything"), | |
|
383 | 382 |
|
|
384 | ]) | |
|
385 | 383 | ] |
|
386 | 384 | ) |
|
387 |
src = current.writes(nb |
|
|
385 | src = current.writes(nb) | |
|
388 | 386 | self.mktmp(src, ext='.ipynb') |
|
389 | 387 | |
|
390 | 388 | _ip.magic("run %s" % self.fname) |
General Comments 0
You need to be logged in to leave comments.
Login now