diff --git a/HISTORY.rst b/HISTORY.rst index 92e4905b4..c6739c123 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -10,7 +10,7 @@ Release History - Notebook metadata is filtered - only the most common metadata are stored in the text representation (#105) - New config option ``additional_metadata_on_text_files`` on the content manager. Defaults to ``True``. Change its value to ``False`` to avoid creating a YAML header or cell metadata if there was none initially (#110) -- Language magic arguments are preserved (#111) +- Language magic arguments are preserved in R Markdown, and also supported in ``light`` and ``percent`` scripts (#111) - First markdown cell exported as a docstring when using the Sphinx format (#107) 0.8.3 (2018-10-19) diff --git a/jupytext/cell_metadata.py b/jupytext/cell_metadata.py index 1af1bda72..8946c1b75 100644 --- a/jupytext/cell_metadata.py +++ b/jupytext/cell_metadata.py @@ -236,9 +236,6 @@ def rmd_options_to_metadata(options): else: if update_metadata_from_rmd_options(name, value, metadata): continue - if name == 'active': - metadata[name] = value.replace('"', '').replace("'", '') - continue try: metadata[name] = _py_logical_values(value) continue @@ -251,7 +248,7 @@ def rmd_options_to_metadata(options): if ('active' in metadata or metadata.get('run_control', {}).get('frozen') is True) and 'eval' in metadata: del metadata['eval'] - return language, metadata + return metadata.get('language') or language, metadata def md_options_to_metadata(options): @@ -282,7 +279,9 @@ def try_eval_metadata(metadata, name): value = metadata[name] if not isinstance(value, (str, unicode)): return - if value.startswith('"') or value.startswith("'"): + if (value.startswith('"') and value.endswith('"')) or (value.startswith("'") and value.endswith("'")): + if name in ['active', 'magic_args', 'language']: + metadata[name] = value[1:-1] return if value.startswith('c(') and value.endswith(')'): value = '[' + value[2:-1] + ']' diff --git a/jupytext/cell_reader.py b/jupytext/cell_reader.py index 458366b7f..b2da8c15f 100644 --- a/jupytext/cell_reader.py +++ b/jupytext/cell_reader.py @@ -76,7 +76,6 @@ class BaseCellReader(object): cell_type = None language = None - default_language = 'python' default_comment_magics = None metadata = None content = [] @@ -95,6 +94,7 @@ class BaseCellReader(object): def __init__(self, ext, comment_magics=None): """Create a cell reader with empty content""" self.ext = ext + self.default_language = _SCRIPT_EXTENSIONS.get(ext, {}).get('language', 'python') self.comment_magics = comment_magics if comment_magics is not None else self.default_comment_magics def read(self, lines): @@ -106,8 +106,7 @@ def read(self, lines): self.metadata_and_language_from_option_line(lines[0]) if self.metadata and 'language' in self.metadata: - self.language = self.metadata['language'] - del self.metadata['language'] + self.language = self.metadata.pop('language') # Parse cell till its end and set content, lines_to_next_cell pos_next_cell = self.find_cell_content(lines) @@ -202,10 +201,14 @@ def find_cell_content(self, lines): # Cell content source = lines[cell_start:cell_end_marker] - self.content = self.uncomment_code_and_magics(source) + if not is_active(self.ext, self.metadata) or \ + ('active' not in self.metadata and self.language and self.language != self.default_language): + self.content = uncomment(source, self.comment if self.ext != '.R' else '#') + else: + self.content = self.uncomment_code_and_magics(source) # Exactly two empty lines at the end of cell (caused by PEP8)? - if (self.ext == '.py' and explicit_eoc and last_two_lines_blank(source)): + if self.ext == '.py' and explicit_eoc and last_two_lines_blank(source): self.content = source[:-2] self.metadata['lines_to_end_of_cell_marker'] = 2 diff --git a/jupytext/cell_to_text.py b/jupytext/cell_to_text.py index 131a965c2..045aa163f 100644 --- a/jupytext/cell_to_text.py +++ b/jupytext/cell_to_text.py @@ -31,6 +31,7 @@ def comment_lines(lines, prefix): class BaseCellExporter(object): """A class that represent a notebook cell as text""" default_comment_magics = None + parse_cell_language = True def __init__(self, cell, default_language, ext, comment_magics=None, cell_metadata_filter=None): self.ext = ext @@ -38,14 +39,20 @@ def __init__(self, cell, default_language, ext, comment_magics=None, cell_metada self.source = cell_source(cell) self.unfiltered_metadata = cell.metadata self.metadata = filter_metadata(copy(cell.metadata), cell_metadata_filter, _IGNORE_CELL_METADATA) - self.language, magic_args = cell_language(self.source) - if magic_args: - if ext.endswith('.Rmd'): - if "'" in magic_args: - magic_args = '"' + magic_args + '"' - else: - magic_args = "'" + magic_args + "'" - self.metadata['magic_args'] = magic_args + self.language, magic_args = cell_language(self.source) if self.parse_cell_language else (None, None) + + if self.language: + if magic_args: + if ext.endswith('.Rmd'): + if "'" in magic_args: + magic_args = '"' + magic_args + '"' + else: + magic_args = "'" + magic_args + "'" + self.metadata['magic_args'] = magic_args + + if not ext.endswith('.Rmd'): + self.metadata['language'] = self.language + self.language = self.language or default_language self.default_language = default_language self.comment = _SCRIPT_EXTENSIONS.get(ext, {}).get('comment', '#') @@ -184,10 +191,8 @@ def is_code(self): def code_to_text(self): """Return the text representation of a code cell""" active = is_active(self.ext, self.metadata) - if active and self.language != self.default_language: + if self.language != self.default_language and 'active' not in self.metadata: active = False - self.metadata['active'] = 'ipynb' - self.metadata['language'] = self.language source = copy(self.source) escape_code_start(source, self.ext, self.language) @@ -282,6 +287,7 @@ class DoublePercentCellExporter(BaseCellExporter): """A class that can represent a notebook cell as an Hydrogen/Spyder/VScode script (#59)""" default_comment_magics = False + parse_cell_language = False def code_to_text(self): """Not used""" diff --git a/jupytext/languages.py b/jupytext/languages.py index b89db8a0e..8da4b4700 100644 --- a/jupytext/languages.py +++ b/jupytext/languages.py @@ -47,9 +47,6 @@ def set_main_and_cell_language(metadata, cells, ext): if language != main_language and language in _JUPYTER_LANGUAGES: if 'magic_args' in cell['metadata']: magic_args = cell['metadata'].pop('magic_args') - if (magic_args.startswith('"') and magic_args.endswith('"')) or \ - (magic_args.startswith("'") and magic_args.endswith("'")): - magic_args = magic_args[1:-1] cell['source'] = u'%%{} {}\n'.format(language, magic_args) + cell['source'] else: cell['source'] = u'%%{}\n'.format(language) + cell['source'] diff --git a/tests/notebooks/ipynb_py/Notebook_with_R_magic.ipynb b/tests/notebooks/ipynb_py/Notebook_with_R_magic.ipynb new file mode 100644 index 000000000..4f8c81296 --- /dev/null +++ b/tests/notebooks/ipynb_py/Notebook_with_R_magic.ipynb @@ -0,0 +1,96 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# A notebook with R cells\n", + "\n", + "This notebook shows the use of R cells to generate plots" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext rpy2.ipython" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "%%R\n", + "suppressMessages(require(tidyverse))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%R\n", + "ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color=Species)) + geom_point()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The default plot dimensions are not good for us, so we use the -w and -h parameters in %%R magic to set the plot size" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%R -w 400 -h 240\n", + "ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color=Species)) + geom_point()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tests/notebooks/mirror/ipynb_to_Rmd/Notebook_with_R_magic.Rmd b/tests/notebooks/mirror/ipynb_to_Rmd/Notebook_with_R_magic.Rmd new file mode 100644 index 000000000..92ffd4745 --- /dev/null +++ b/tests/notebooks/mirror/ipynb_to_Rmd/Notebook_with_R_magic.Rmd @@ -0,0 +1,39 @@ +--- +jupyter: + kernelspec: + display_name: Python 2 + language: python + name: python2 + language_info: + codemirror_mode: + name: ipython + version: 2 + file_extension: .py + mimetype: text/x-python + name: python + nbconvert_exporter: python + pygments_lexer: ipython2 + version: 2.7.11 +--- + +# A notebook with R cells + +This notebook shows the use of R cells to generate plots + +```{python} +# %load_ext rpy2.ipython +``` + +```{r} +suppressMessages(require(tidyverse)) +``` + +```{r} +ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color=Species)) + geom_point() +``` + +The default plot dimensions are not good for us, so we use the -w and -h parameters in %%R magic to set the plot size + +```{r magic_args='-w 400 -h 240'} +ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color=Species)) + geom_point() +``` diff --git a/tests/notebooks/mirror/ipynb_to_percent/Notebook_with_R_magic.py b/tests/notebooks/mirror/ipynb_to_percent/Notebook_with_R_magic.py new file mode 100644 index 000000000..0c38acb1d --- /dev/null +++ b/tests/notebooks/mirror/ipynb_to_percent/Notebook_with_R_magic.py @@ -0,0 +1,40 @@ +# --- +# jupyter: +# kernelspec: +# display_name: Python 2 +# language: python +# name: python2 +# language_info: +# codemirror_mode: +# name: ipython +# version: 2 +# file_extension: .py +# mimetype: text/x-python +# name: python +# nbconvert_exporter: python +# pygments_lexer: ipython2 +# version: 2.7.11 +# --- + +# %% [markdown] +# # A notebook with R cells +# +# This notebook shows the use of R cells to generate plots + +# %% +%load_ext rpy2.ipython + +# %% +%%R +suppressMessages(require(tidyverse)) + +# %% +%%R +ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color=Species)) + geom_point() + +# %% [markdown] +# The default plot dimensions are not good for us, so we use the -w and -h parameters in %%R magic to set the plot size + +# %% +%%R -w 400 -h 240 +ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color=Species)) + geom_point() diff --git a/tests/notebooks/mirror/ipynb_to_script/Notebook_with_R_magic.py b/tests/notebooks/mirror/ipynb_to_script/Notebook_with_R_magic.py new file mode 100644 index 000000000..a34b7fccb --- /dev/null +++ b/tests/notebooks/mirror/ipynb_to_script/Notebook_with_R_magic.py @@ -0,0 +1,35 @@ +# --- +# jupyter: +# kernelspec: +# display_name: Python 2 +# language: python +# name: python2 +# language_info: +# codemirror_mode: +# name: ipython +# version: 2 +# file_extension: .py +# mimetype: text/x-python +# name: python +# nbconvert_exporter: python +# pygments_lexer: ipython2 +# version: 2.7.11 +# --- + +# # A notebook with R cells +# +# This notebook shows the use of R cells to generate plots + +# %load_ext rpy2.ipython + +# + {"language": "R"} +# suppressMessages(require(tidyverse)) + +# + {"language": "R"} +# ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color=Species)) + geom_point() +# - + +# The default plot dimensions are not good for us, so we use the -w and -h parameters in %%R magic to set the plot size + +# + {"magic_args": "-w 400 -h 240", "language": "R"} +# ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color=Species)) + geom_point() diff --git a/tests/test_contentsmanager.py b/tests/test_contentsmanager.py index 706497b07..4baa8b043 100644 --- a/tests/test_contentsmanager.py +++ b/tests/test_contentsmanager.py @@ -545,25 +545,28 @@ def test_metadata_filter_is_effective(nb_file, tmpdir): cm.root_dir = str(tmpdir) # save notebook to tmpdir - cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) + with mock.patch('jupytext.header.INSERT_AND_CHECK_VERSION_NUMBER', True): + cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) # set config cm.default_jupytext_formats = 'ipynb, py' - cm.default_notebook_metadata_filter = 'jupytext,-all' + cm.default_notebook_metadata_filter = 'language_info,jupytext,-all' cm.default_cell_metadata_filter = '-all' # load notebook - nb = cm.get(tmp_ipynb)['content'] + with mock.patch('jupytext.header.INSERT_AND_CHECK_VERSION_NUMBER', True): + nb = cm.get(tmp_ipynb)['content'] # save notebook again with mock.patch('jupytext.header.INSERT_AND_CHECK_VERSION_NUMBER', True): cm.save(model=dict(type='notebook', content=nb), path=tmp_ipynb) # read text version - nb2 = jupytext.readf(str(tmpdir.join(tmp_script))) + with mock.patch('jupytext.header.INSERT_AND_CHECK_VERSION_NUMBER', True): + nb2 = jupytext.readf(str(tmpdir.join(tmp_script))) # test no metadata - assert set(nb2.metadata.keys()) == {'jupytext'} + assert set(nb2.metadata.keys()) <= {'language_info', 'jupytext'} for cell in nb2.cells: assert not cell.metadata diff --git a/tests/test_mirror.py b/tests/test_mirror.py index b05673cb8..6693406ee 100644 --- a/tests/test_mirror.py +++ b/tests/test_mirror.py @@ -138,7 +138,7 @@ def test_percent_to_ipynb(nb_file): assert_conversion_same_as_mirror(nb_file, '.ipynb', 'script_to_ipynb', format_name='percent') -@pytest.mark.parametrize('nb_file', list_notebooks('ipynb_py', skip='(raw|hash|frozen)')) +@pytest.mark.parametrize('nb_file', list_notebooks('ipynb_py', skip='(raw|hash|frozen|magic)')) def test_ipynb_to_python_sphinx(nb_file): assert_conversion_same_as_mirror(nb_file, '.py', 'ipynb_to_sphinx', format_name='sphinx') @@ -164,6 +164,6 @@ def test_ipynb_to_Rmd(nb_file): assert_conversion_same_as_mirror(nb_file, '.Rmd', 'ipynb_to_Rmd') -@pytest.mark.parametrize('nb_file', list_notebooks('ipynb', skip='(66|frozen)')) +@pytest.mark.parametrize('nb_file', list_notebooks('ipynb', skip='(66|frozen|magic)')) def test_ipynb_to_md(nb_file): assert_conversion_same_as_mirror(nb_file, '.md', 'ipynb_to_md')