codecov[bot]: # [Codecov](https://codecov.io/gh/mwouts/jupytext/pull/472?src=pr&el=h1) Report
> Merging [#472](https://codecov.io/gh/mwouts/jupytext/pull/472?src=pr&el=desc) into [master](https://codecov.io/gh/mwouts/jupytext/commit/271fa1cf8b17a8b3a62dccca8bb8124e755449a0&el=desc) will **increase** coverage by `0.00%`.
> The diff coverage is `100.00%`.

[![Impacted file tree graph](https://codecov.io/gh/mwouts/jupytext/pull/472/graphs/tree.svg?width=650&height=150&src=pr&token=a1pNjsiILi)](https://codecov.io/gh/mwouts/jupytext/pull/472?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master     #472   +/-   ##
=======================================
  Coverage   98.85%   98.86%           
=======================================
  Files          80       80           
  Lines        7884     7899   +15     
=======================================
+ Hits         7794     7809   +15     
  Misses         90       90           
```


| [Impacted Files](https://codecov.io/gh/mwouts/jupytext/pull/472?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [jupytext/stringparser.py](https://codecov.io/gh/mwouts/jupytext/pull/472/diff?src=pr&el=tree#diff-anVweXRleHQvc3RyaW5ncGFyc2VyLnB5) | `95.45% <100.00%> (+0.33%)` | :arrow_up: |
| [tests/test\_read\_simple\_percent.py](https://codecov.io/gh/mwouts/jupytext/pull/472/diff?src=pr&el=tree#diff-dGVzdHMvdGVzdF9yZWFkX3NpbXBsZV9wZXJjZW50LnB5) | `100.00% <100.00%> (ø)` | |
| [tests/test\_stringparser.py](https://codecov.io/gh/mwouts/jupytext/pull/472/diff?src=pr&el=tree#diff-dGVzdHMvdGVzdF9zdHJpbmdwYXJzZXIucHk=) | `100.00% <100.00%> (ø)` | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/mwouts/jupytext/pull/472?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/mwouts/jupytext/pull/472?src=pr&el=footer). Last update [271fa1c...4bea6fb](https://codecov.io/gh/mwouts/jupytext/pull/472?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 45aa942..f22230e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@
 **Fixed**
 - Fixed the CLI example for not commenting out magic commands: `--opt comment_magics=false`. In addition, most of the `jupytext` commands in `using-cli.md` are now tested! (#465)
 - `jupytext.read` and `jupytext.write` now give more meaningful errors when the format information is incorrect (#462)
+- Multiline comments starting with quadruple quotes should not cause issues anymore (#460)
 
 1.4.1 (2020-03-19)
 ------------------
diff --git a/jupytext/stringparser.py b/jupytext/stringparser.py
index 17b28fa..1b3c618 100644
--- a/jupytext/stringparser.py
+++ b/jupytext/stringparser.py
@@ -8,6 +8,7 @@ class StringParser:
     is quoted or not"""
     single = None
     triple = None
+    triple_start = None
 
     def __init__(self, language):
         self.ignore = language is None
@@ -29,6 +30,8 @@ class StringParser:
         if not self.is_quoted() and self.comment is not None and line.startswith(self.comment):
             return
 
+        self.triple_start = -1
+
         for i, char in enumerate(line):
             if char not in ['"', "'"]:
                 continue
@@ -46,13 +49,14 @@ class StringParser:
                 continue
 
             if self.triple == char:
-                if line[i - 2:i + 1] == 3 * char:
+                if line[i - 2:i + 1] == 3 * char and i >= self.triple_start + 3:
                     self.triple = None
                     continue
             if self.triple is not None:
                 continue
             if line[i - 2:i + 1] == 3 * char:
                 self.triple = char
+                self.triple_start = i
                 continue
             self.single = char
 

Wrong cell separation when creating .ipynb from .py
Let's say I work in a notebook file, paired to a `.py` file, and write one function per cell.

When I re-generate the `.ipynb` notebook from the `.py` file I have noticed that some functions now live in the same cell.

This is best illustrated by the images below. The following code:
![Screenshot 2020-03-17 at 21 43 10](https://user-images.githubusercontent.com/7881978/76904670-5777ad00-6898-11ea-8f0d-0e7ce50ecfa4.png)

becomes, after regenerating the `.ipynb` from the paired `.py`:
![Screenshot 2020-03-17 at 21 36 20](https://user-images.githubusercontent.com/7881978/76904593-34e59400-6898-11ea-95e2-fb2fb9c007d4.png)

The problem does not impact all functions/cells. I've inspected the code in the `.py` file and cannot find any obvious difference between the impacted cells/functions and the non impacted ones.

I'm using jupytext version `1.4.0` but had noticed this behaviour on previous versions too.
diff --git a/tests/test_read_simple_percent.py b/tests/test_read_simple_percent.py
index 42af388..1a2fa1b 100644
--- a/tests/test_read_simple_percent.py
+++ b/tests/test_read_simple_percent.py
@@ -405,3 +405,21 @@ def test_single_triple_quote_works(no_jupytext_version_number, text='''# ---
 print("hello")
 ''', notebook=new_notebook(cells=[new_code_cell('print("hello")')])):
     compare_notebooks(jupytext.reads(text, 'py'), notebook)
+
+
+def test_docstring_with_quadruple_quote(nb=new_notebook(cells=[
+    new_code_cell('''def fun_1(df):
+  """"
+  docstring starting with 4 double quotes and ending with 3
+  """
+  return df'''),
+    new_code_cell('''def fun_2(df):
+  """
+  docstring
+  """
+  return df''')
+])):
+    """Reproduces https://github.com/mwouts/jupytext/issues/460"""
+    py = jupytext.writes(nb, 'py:percent')
+    nb2 = jupytext.reads(py, 'py')
+    compare_notebooks(nb2, nb)
diff --git a/tests/test_stringparser.py b/tests/test_stringparser.py
index 985b31d..36307dc 100644
--- a/tests/test_stringparser.py
+++ b/tests/test_stringparser.py
@@ -37,3 +37,19 @@ def test_single_chars(text="""'This is a single line comment'''
     for line in text.splitlines():
         assert not sp.is_quoted()
         sp.read_line(line)
+
+
+def test_long_string_with_four_quotes(text="""''''This is a multiline
+comment that starts with four quotes
+'''
+
+1 + 1
+"""):
+    quoted = []
+    sp = StringParser('python')
+    for i, line in enumerate(text.splitlines()):
+        if sp.is_quoted():
+            quoted.append(i)
+        sp.read_line(line)
+
+    assert quoted == [1, 2]

environment.yml
pip install -e .[dev]
parse_log_pytest
environment.yml
pytest pytest-xdist
apt-get update apt-get install -y gcc
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster @ file:///home/conda/feedstock_root/build_artifacts/alabaster_1673645646525/work
anyio @ file:///home/conda/feedstock_root/build_artifacts/anyio_1632754243255/work/dist
argon2-cffi @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi_1633990451307/work
astroid @ file:///home/conda/feedstock_root/build_artifacts/astroid_1631641568157/work
async_generator @ file:///home/conda/feedstock_root/build_artifacts/async_generator_1722652753231/work
attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1640799537051/work
autopep8 @ file:///home/conda/feedstock_root/build_artifacts/autopep8_1660060670469/work
Babel @ file:///home/conda/feedstock_root/build_artifacts/babel_1667688356751/work
backcall @ file:///home/conda/feedstock_root/build_artifacts/backcall_1592338393461/work
backports.functools-lru-cache @ file:///home/conda/feedstock_root/build_artifacts/backports.functools_lru_cache_1702571698061/work
black @ file:///home/conda/feedstock_root/build_artifacts/black-recipe_1656424001314/work
bleach @ file:///home/conda/feedstock_root/build_artifacts/bleach_1696630167146/work
brotlipy==0.7.0
certifi==2021.5.30
cffi @ file:///home/conda/feedstock_root/build_artifacts/cffi_1631636256886/work
charset-normalizer @ file:///home/conda/feedstock_root/build_artifacts/charset-normalizer_1661170624537/work
click @ file:///home/conda/feedstock_root/build_artifacts/click_1621503698523/work
cmarkgfm @ file:///home/conda/feedstock_root/build_artifacts/cmarkgfm_1625147428696/work
colorama @ file:///home/conda/feedstock_root/build_artifacts/colorama_1655412516417/work
contextvars==2.4
cryptography @ file:///home/conda/feedstock_root/build_artifacts/cryptography_1634230300355/work
cycler @ file:///home/conda/feedstock_root/build_artifacts/cycler_1635519461629/work
dataclasses @ file:///home/conda/feedstock_root/build_artifacts/dataclasses_1628958435052/work
decorator @ file:///home/conda/feedstock_root/build_artifacts/decorator_1641555617451/work
defusedxml @ file:///home/conda/feedstock_root/build_artifacts/defusedxml_1615232257335/work
docutils @ file:///home/conda/feedstock_root/build_artifacts/docutils_1618676244774/work
entrypoints @ file:///home/conda/feedstock_root/build_artifacts/entrypoints_1643888246732/work
execnet @ file:///home/conda/feedstock_root/build_artifacts/execnet_1623615976382/work
flake8 @ file:///home/conda/feedstock_root/build_artifacts/flake8_1646781084538/work
idna @ file:///home/conda/feedstock_root/build_artifacts/idna_1726459485162/work
imagesize @ file:///home/conda/feedstock_root/build_artifacts/imagesize_1656939531508/work
immutables @ file:///home/conda/feedstock_root/build_artifacts/immutables_1628601257972/work
importlib-metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1630267465156/work
iniconfig @ file:///home/conda/feedstock_root/build_artifacts/iniconfig_1603384189793/work
ipykernel @ file:///home/conda/feedstock_root/build_artifacts/ipykernel_1620912934572/work/dist/ipykernel-5.5.5-py3-none-any.whl
ipython @ file:///home/conda/feedstock_root/build_artifacts/ipython_1609697613279/work
ipython_genutils @ file:///home/conda/feedstock_root/build_artifacts/ipython_genutils_1716278396992/work
ipywidgets @ file:///home/conda/feedstock_root/build_artifacts/ipywidgets_1679421482533/work
isort @ file:///home/conda/feedstock_root/build_artifacts/isort_1636447814597/work
jedi @ file:///home/conda/feedstock_root/build_artifacts/jedi_1605054537831/work
jeepney @ file:///home/conda/feedstock_root/build_artifacts/jeepney_1627546597665/work
Jinja2 @ file:///home/conda/feedstock_root/build_artifacts/jinja2_1655912915439/work
json5 @ file:///home/conda/feedstock_root/build_artifacts/json5_1600692310011/work
jsonschema @ file:///home/conda/feedstock_root/build_artifacts/jsonschema_1634752161479/work
jupyter @ file:///home/conda/feedstock_root/build_artifacts/jupyter_1696255489086/work
jupyter-client @ file:///home/conda/feedstock_root/build_artifacts/jupyter_client_1642858610849/work
jupyter-console @ file:///home/conda/feedstock_root/build_artifacts/jupyter_console_1676328545892/work
jupyter-contrib-core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_contrib_core_1657548529421/work
jupyter-contrib-nbextensions @ file:///home/conda/feedstock_root/build_artifacts/jupyter_contrib_nbextensions_1670068802953/work
jupyter-core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_core_1631852698933/work
jupyter-highlight-selected-word @ file:///home/conda/feedstock_root/build_artifacts/jupyter_highlight_selected_word_1611341001018/work
jupyter-latex-envs @ file:///home/conda/feedstock_root/build_artifacts/jupyter_latex_envs_1614852190293/work
jupyter-nbextensions-configurator @ file:///home/conda/feedstock_root/build_artifacts/jupyter_nbextensions_configurator_1670793770953/work
jupyter-server @ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_1642016731880/work
jupyterlab @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_1650038326843/work
jupyterlab-server @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_server_1641592475363/work
jupyterlab-widgets @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_widgets_1655961217661/work
-e git+https://github.com/mwouts/jupytext.git@271fa1cf8b17a8b3a62dccca8bb8124e755449a0#egg=jupytext
keyring @ file:///home/conda/feedstock_root/build_artifacts/keyring_1631478318457/work
kiwisolver @ file:///home/conda/feedstock_root/build_artifacts/kiwisolver_1610099771815/work
lazy-object-proxy @ file:///home/conda/feedstock_root/build_artifacts/lazy-object-proxy_1616506793265/work
lxml @ file:///home/conda/feedstock_root/build_artifacts/lxml_1616532291993/work
markdown-it-py @ file:///home/conda/feedstock_root/build_artifacts/markdown-it-py_1643058938924/work
MarkupSafe @ file:///home/conda/feedstock_root/build_artifacts/markupsafe_1621455668064/work
matplotlib @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-suite_1611858699142/work
mccabe==0.6.1
mdit-py-plugins @ file:///home/conda/feedstock_root/build_artifacts/mdit-py-plugins_1639763187273/work
mdurl @ file:///home/conda/feedstock_root/build_artifacts/mdurl_1704317613764/work
mistune @ file:///home/conda/feedstock_root/build_artifacts/mistune_1673904152039/work
more-itertools @ file:///home/conda/feedstock_root/build_artifacts/more-itertools_1690211628840/work
mypy-extensions @ file:///home/conda/feedstock_root/build_artifacts/mypy_extensions_1675543315189/work
myst-parser @ file:///home/conda/feedstock_root/build_artifacts/myst-parser_1644607050203/work
nbclassic @ file:///home/conda/feedstock_root/build_artifacts/nbclassic_1641934401341/work
nbconvert @ file:///home/conda/feedstock_root/build_artifacts/nbconvert_1631125953237/work
nbformat @ file:///home/conda/feedstock_root/build_artifacts/nbformat_1617383142101/work
nest_asyncio @ file:///home/conda/feedstock_root/build_artifacts/nest-asyncio_1705850609492/work
notebook @ file:///home/conda/feedstock_root/build_artifacts/notebook_1616419146127/work
numpy @ file:///home/conda/feedstock_root/build_artifacts/numpy_1626681920064/work
olefile @ file:///home/conda/feedstock_root/build_artifacts/olefile_1602866521163/work
packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1637239678211/work
pandocfilters @ file:///home/conda/feedstock_root/build_artifacts/pandocfilters_1631603243851/work
parso @ file:///home/conda/feedstock_root/build_artifacts/parso_1595548966091/work
pathspec @ file:///home/conda/feedstock_root/build_artifacts/pathspec_1626613672358/work
pexpect @ file:///home/conda/feedstock_root/build_artifacts/pexpect_1667297516076/work
pickleshare @ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1602536217715/work
Pillow @ file:///home/conda/feedstock_root/build_artifacts/pillow_1630696616009/work
pkginfo @ file:///home/conda/feedstock_root/build_artifacts/pkginfo_1673281726124/work
platformdirs @ file:///home/conda/feedstock_root/build_artifacts/platformdirs_1645298319244/work
pluggy @ file:///home/conda/feedstock_root/build_artifacts/pluggy_1631522669284/work
prometheus-client @ file:///home/conda/feedstock_root/build_artifacts/prometheus_client_1689032443210/work
prompt-toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1670414775770/work
ptyprocess @ file:///home/conda/feedstock_root/build_artifacts/ptyprocess_1609419310487/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
py @ file:///home/conda/feedstock_root/build_artifacts/py_1636301881863/work
pycodestyle @ file:///home/conda/feedstock_root/build_artifacts/pycodestyle_1633982426610/work
pycparser @ file:///home/conda/feedstock_root/build_artifacts/pycparser_1636257122734/work
pyflakes @ file:///home/conda/feedstock_root/build_artifacts/pyflakes_1633634815271/work
Pygments @ file:///home/conda/feedstock_root/build_artifacts/pygments_1672682006896/work
pylint @ file:///home/conda/feedstock_root/build_artifacts/pylint_1631892890219/work
pyOpenSSL @ file:///home/conda/feedstock_root/build_artifacts/pyopenssl_1663846997386/work
pyparsing @ file:///home/conda/feedstock_root/build_artifacts/pyparsing_1724616129934/work
pyrsistent @ file:///home/conda/feedstock_root/build_artifacts/pyrsistent_1610146795286/work
PySocks @ file:///home/conda/feedstock_root/build_artifacts/pysocks_1610291458349/work
pytest==6.2.5
pytest-xdist @ file:///home/conda/feedstock_root/build_artifacts/pytest-xdist_1666727700002/work
python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1626286286081/work
pytz @ file:///home/conda/feedstock_root/build_artifacts/pytz_1693930252784/work
PyYAML==5.4.1
pyzmq @ file:///home/conda/feedstock_root/build_artifacts/pyzmq_1631793305981/work
qtconsole @ file:///home/conda/feedstock_root/build_artifacts/qtconsole-base_1640876679830/work
QtPy @ file:///home/conda/feedstock_root/build_artifacts/qtpy_1643828301492/work
readme-renderer @ file:///home/conda/feedstock_root/build_artifacts/readme_renderer_1602693010535/work
requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1656534056640/work
requests-toolbelt @ file:///home/conda/feedstock_root/build_artifacts/requests-toolbelt_1682953341151/work
rfc3986 @ file:///home/conda/feedstock_root/build_artifacts/rfc3986_1641825045899/work
SecretStorage @ file:///home/conda/feedstock_root/build_artifacts/secretstorage_1612911548807/work
Send2Trash @ file:///home/conda/feedstock_root/build_artifacts/send2trash_1682601222253/work
six @ file:///home/conda/feedstock_root/build_artifacts/six_1620240208055/work
sniffio @ file:///home/conda/feedstock_root/build_artifacts/sniffio_1610318313243/work
snowballstemmer @ file:///home/conda/feedstock_root/build_artifacts/snowballstemmer_1637143057757/work
Sphinx @ file:///home/conda/feedstock_root/build_artifacts/sphinx_1648404928645/work
sphinx-gallery @ file:///home/conda/feedstock_root/build_artifacts/sphinx-gallery_1700542355088/work
sphinxcontrib-applehelp @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-applehelp_1674487779667/work
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-htmlhelp_1675256494457/work
sphinxcontrib-jsmath @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-jsmath_1691604704163/work
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml @ file:///home/conda/feedstock_root/build_artifacts/sphinxcontrib-serializinghtml_1649380998999/work
terminado @ file:///home/conda/feedstock_root/build_artifacts/terminado_1631128154882/work
testpath @ file:///home/conda/feedstock_root/build_artifacts/testpath_1645693042223/work
toml @ file:///home/conda/feedstock_root/build_artifacts/toml_1604308577558/work
tomli @ file:///home/conda/feedstock_root/build_artifacts/tomli_1635181214134/work
tornado @ file:///home/conda/feedstock_root/build_artifacts/tornado_1610094701020/work
tqdm @ file:///home/conda/feedstock_root/build_artifacts/tqdm_1677887202771/work
traitlets @ file:///home/conda/feedstock_root/build_artifacts/traitlets_1631041982274/work
twine @ file:///home/conda/feedstock_root/build_artifacts/twine_1643895093454/work
typed-ast @ file:///home/conda/feedstock_root/build_artifacts/typed-ast_1618337594445/work
typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/typing_extensions_1644850595256/work
urllib3 @ file:///home/conda/feedstock_root/build_artifacts/urllib3_1678635778344/work
wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1699959196938/work
webencodings @ file:///home/conda/feedstock_root/build_artifacts/webencodings_1694681268211/work
websocket-client @ file:///home/conda/feedstock_root/build_artifacts/websocket-client_1645884408572/work
widgetsnbextension @ file:///home/conda/feedstock_root/build_artifacts/widgetsnbextension_1655939017940/work
wrapt @ file:///home/conda/feedstock_root/build_artifacts/wrapt_1610094846427/work
zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1633302054558/work

name: jupytext
channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - alabaster=0.7.13=pyhd8ed1ab_0
  - anyio=3.3.2=py36h5fab9bb_0
  - argon2-cffi=21.1.0=py36h8f6f2f9_0
  - astroid=2.8.0=py36h5fab9bb_0
  - async_generator=1.10=pyhd8ed1ab_1
  - attrs=21.4.0=pyhd8ed1ab_0
  - autopep8=1.7.0=pyhd8ed1ab_0
  - babel=2.11.0=pyhd8ed1ab_0
  - backcall=0.2.0=pyh9f0ad1d_0
  - backports=1.0=pyhd8ed1ab_4
  - backports.functools_lru_cache=2.0.0=pyhd8ed1ab_0
  - black=22.6.0=pyhd8ed1ab_0
  - bleach=6.1.0=pyhd8ed1ab_0
  - brotlipy=0.7.0=py36h8f6f2f9_1001
  - bzip2=1.0.8=h4bc722e_7
  - ca-certificates=2025.1.31=hbcca054_0
  - certifi=2021.5.30=py36h5fab9bb_0
  - cffi=1.14.6=py36hd8eec40_1
  - charset-normalizer=2.1.1=pyhd8ed1ab_0
  - click=8.0.1=py36h5fab9bb_0
  - cmarkgfm=0.6.0=py36h8f6f2f9_0
  - colorama=0.4.5=pyhd8ed1ab_0
  - contextvars=2.4=py_0
  - cryptography=35.0.0=py36hb60f036_0
  - cycler=0.11.0=pyhd8ed1ab_0
  - dataclasses=0.8=pyh787bdff_2
  - dbus=1.13.6=h5008d03_3
  - decorator=5.1.1=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - docutils=0.17.1=py36h5fab9bb_0
  - entrypoints=0.4=pyhd8ed1ab_0
  - execnet=1.9.0=pyhd8ed1ab_0
  - expat=2.6.4=h5888daf_0
  - flake8=4.0.1=pyhd8ed1ab_2
  - freetype=2.12.1=h267a509_2
  - icu=68.2=h9c3ff4c_0
  - idna=3.10=pyhd8ed1ab_0
  - imagesize=1.4.1=pyhd8ed1ab_0
  - immutables=0.16=py36h8f6f2f9_0
  - importlib-metadata=4.8.1=py36h5fab9bb_0
  - importlib_metadata=4.8.1=hd8ed1ab_1
  - iniconfig=1.1.1=pyh9f0ad1d_0
  - ipykernel=5.5.5=py36hcb3619a_0
  - ipython=7.16.1=py36he448a4c_2
  - ipython_genutils=0.2.0=pyhd8ed1ab_1
  - ipywidgets=7.7.4=pyhd8ed1ab_0
  - isort=5.10.1=pyhd8ed1ab_0
  - jedi=0.17.2=py36h5fab9bb_1
  - jeepney=0.7.1=pyhd8ed1ab_0
  - jinja2=2.11.3=pyhd8ed1ab_2
  - jpeg=9e=h0b41bf4_3
  - json5=0.9.5=pyh9f0ad1d_0
  - jsonschema=4.1.2=pyhd8ed1ab_0
  - jupyter=1.0.0=pyhd8ed1ab_10
  - jupyter_client=7.1.2=pyhd8ed1ab_0
  - jupyter_console=6.5.1=pyhd8ed1ab_0
  - jupyter_contrib_core=0.4.0=pyhd8ed1ab_0
  - jupyter_contrib_nbextensions=0.7.0=pyhd8ed1ab_0
  - jupyter_core=4.8.1=py36h5fab9bb_0
  - jupyter_highlight_selected_word=0.2.0=py36h5fab9bb_1002
  - jupyter_latex_envs=1.4.6=pyhd8ed1ab_1002
  - jupyter_nbextensions_configurator=0.6.1=pyhd8ed1ab_0
  - jupyter_server=1.13.2=pyhd8ed1ab_0
  - jupyterlab=3.3.4=pyhd8ed1ab_0
  - jupyterlab_server=2.10.3=pyhd8ed1ab_0
  - jupyterlab_widgets=1.1.1=pyhd8ed1ab_0
  - keyring=23.2.1=py36h5fab9bb_0
  - kiwisolver=1.3.1=py36h605e78d_1
  - lazy-object-proxy=1.6.0=py36h8f6f2f9_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.43=h712a8e2_4
  - lerc=3.0=h9c3ff4c_0
  - libblas=3.9.0=31_h59b9bed_openblas
  - libcblas=3.9.0=31_he106b2a_openblas
  - libdeflate=1.10=h7f98852_0
  - libexpat=2.6.4=h5888daf_0
  - libffi=3.4.6=h2dba641_0
  - libgcc=14.2.0=h767d61c_2
  - libgcc-ng=14.2.0=h69a702a_2
  - libgfortran=14.2.0=h69a702a_2
  - libgfortran5=14.2.0=hf1ad2bd_2
  - libglib=2.80.2=hf974151_0
  - libgomp=14.2.0=h767d61c_2
  - libiconv=1.18=h4ce23a2_1
  - liblapack=3.9.0=31_h7ac8fdf_openblas
  - liblzma=5.6.4=hb9d3cd8_0
  - liblzma-devel=5.6.4=hb9d3cd8_0
  - libnsl=2.0.1=hd590300_0
  - libopenblas=0.3.29=pthreads_h94d23a6_0
  - libpng=1.6.43=h2797004_0
  - libsodium=1.0.18=h36c2ea0_1
  - libsqlite=3.46.0=hde9e2c9_0
  - libstdcxx=14.2.0=h8f9b012_2
  - libstdcxx-ng=14.2.0=h4852527_2
  - libtiff=4.3.0=h0fcbabc_4
  - libuv=1.42.0=h7f98852_0
  - libwebp-base=1.5.0=h851e524_0
  - libxml2=2.9.12=h72842e0_0
  - libxslt=1.1.33=h15afd5d_2
  - libzlib=1.2.13=h4ab18f5_6
  - lxml=4.6.3=py36h04a5ba7_0
  - markdown-it-py=2.0.1=pyhd8ed1ab_0
  - markupsafe=2.0.1=py36h8f6f2f9_0
  - matplotlib-base=3.3.4=py36hd391965_0
  - mccabe=0.6.1=py_1
  - mdit-py-plugins=0.3.0=pyhd8ed1ab_0
  - mdurl=0.1.2=pyhd8ed1ab_0
  - mistune=0.8.4=pyh1a96a4e_1006
  - more-itertools=10.0.0=pyhd8ed1ab_0
  - mypy_extensions=1.0.0=pyha770c72_0
  - myst-parser=0.17.0=pyhd8ed1ab_0
  - nbclassic=0.3.5=pyhd8ed1ab_0
  - nbconvert=5.6.1=pyhd8ed1ab_2
  - nbformat=5.1.3=pyhd8ed1ab_0
  - ncurses=6.5=h2d0b736_3
  - nest-asyncio=1.6.0=pyhd8ed1ab_0
  - nodejs=12.22.6=h8b53aa1_0
  - notebook=6.3.0=py36h5fab9bb_0
  - numpy=1.19.5=py36hfc0c790_2
  - olefile=0.46=pyh9f0ad1d_1
  - openjpeg=2.5.0=h7d73246_0
  - openssl=1.1.1w=hd590300_0
  - packaging=21.3=pyhd8ed1ab_0
  - pandoc=3.6.4=ha770c72_0
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - parso=0.7.1=pyh9f0ad1d_0
  - pathspec=0.9.0=pyhd8ed1ab_0
  - pcre2=10.43=hcad00b1_0
  - pexpect=4.8.0=pyh1a96a4e_2
  - pickleshare=0.7.5=py_1003
  - pillow=8.3.2=py36h676a545_0
  - pip=21.3.1=pyhd8ed1ab_0
  - pkginfo=1.9.6=pyhd8ed1ab_0
  - platformdirs=2.5.1=pyhd8ed1ab_0
  - pluggy=1.0.0=py36h5fab9bb_1
  - prometheus_client=0.17.1=pyhd8ed1ab_0
  - prompt-toolkit=3.0.36=pyha770c72_0
  - prompt_toolkit=3.0.36=hd8ed1ab_0
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - py=1.11.0=pyh6c4a22f_0
  - pycodestyle=2.8.0=pyhd8ed1ab_0
  - pycparser=2.21=pyhd8ed1ab_0
  - pyflakes=2.4.0=pyhd8ed1ab_0
  - pygments=2.14.0=pyhd8ed1ab_0
  - pylint=2.11.1=pyhd8ed1ab_0
  - pyopenssl=22.0.0=pyhd8ed1ab_1
  - pyparsing=3.1.4=pyhd8ed1ab_0
  - pyrsistent=0.17.3=py36h8f6f2f9_2
  - pysocks=1.7.1=py36h5fab9bb_3
  - pytest=6.2.5=py36h5fab9bb_0
  - pytest-xdist=3.0.2=pyhd8ed1ab_0
  - python=3.6.15=hb7a2778_0_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python_abi=3.6=2_cp36m
  - pytz=2023.3.post1=pyhd8ed1ab_0
  - pyyaml=5.4.1=py36h8f6f2f9_1
  - pyzmq=22.3.0=py36h7068817_0
  - qtconsole-base=5.2.2=pyhd8ed1ab_1
  - qtpy=2.0.1=pyhd8ed1ab_0
  - readline=8.2=h8c095d6_2
  - readme_renderer=27.0=pyh9f0ad1d_0
  - requests=2.28.1=pyhd8ed1ab_0
  - requests-toolbelt=1.0.0=pyhd8ed1ab_0
  - rfc3986=2.0.0=pyhd8ed1ab_0
  - secretstorage=3.3.1=py36h5fab9bb_0
  - send2trash=1.8.2=pyh41d4057_0
  - setuptools=58.0.4=py36h5fab9bb_2
  - six=1.16.0=pyh6c4a22f_0
  - sniffio=1.2.0=py36h5fab9bb_1
  - snowballstemmer=2.2.0=pyhd8ed1ab_0
  - sphinx=4.5.0=pyh6c4a22f_0
  - sphinx-gallery=0.15.0=pyhd8ed1ab_0
  - sphinxcontrib-applehelp=1.0.4=pyhd8ed1ab_0
  - sphinxcontrib-devhelp=1.0.2=py_0
  - sphinxcontrib-htmlhelp=2.0.1=pyhd8ed1ab_0
  - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_0
  - sphinxcontrib-qthelp=1.0.3=py_0
  - sphinxcontrib-serializinghtml=1.1.5=pyhd8ed1ab_2
  - sqlite=3.46.0=h6d4b2fc_0
  - terminado=0.12.1=py36h5fab9bb_0
  - testpath=0.6.0=pyhd8ed1ab_0
  - tk=8.6.13=noxft_h4845f30_101
  - toml=0.10.2=pyhd8ed1ab_0
  - tomli=1.2.2=pyhd8ed1ab_0
  - tornado=6.1=py36h8f6f2f9_1
  - tqdm=4.65.0=pyhd8ed1ab_0
  - traitlets=4.3.3=pyhd8ed1ab_2
  - twine=3.8.0=pyhd8ed1ab_0
  - typed-ast=1.4.3=py36h8f6f2f9_0
  - typing-extensions=4.1.1=hd8ed1ab_0
  - typing_extensions=4.1.1=pyha770c72_0
  - urllib3=1.26.15=pyhd8ed1ab_0
  - wcwidth=0.2.10=pyhd8ed1ab_0
  - webencodings=0.5.1=pyhd8ed1ab_2
  - websocket-client=1.3.1=pyhd8ed1ab_0
  - wheel=0.37.1=pyhd8ed1ab_0
  - widgetsnbextension=3.6.1=pyha770c72_0
  - wrapt=1.12.1=py36h8f6f2f9_3
  - xz=5.6.4=hbcc6ac9_0
  - xz-gpl-tools=5.6.4=hbcc6ac9_0
  - xz-tools=5.6.4=hb9d3cd8_0
  - yaml=0.2.5=h7f98852_2
  - yarn=1.22.22=h31011fe_0
  - zeromq=4.3.5=h59595ed_1
  - zipp=3.6.0=pyhd8ed1ab_0
  - zlib=1.2.13=h4ab18f5_6
  - zstd=1.5.6=ha6fb4c9_0
prefix: /opt/conda/envs/jupytext

tests/test_read_simple_percent.py::test_docstring_with_quadruple_quote tests/test_stringparser.py::test_long_string_with_four_quotes
tests/test_read_simple_percent.py::test_multiple_empty_cells
tests/test_read_simple_percent.py::test_read_simple_file tests/test_read_simple_percent.py::test_read_cell_with_metadata tests/test_read_simple_percent.py::test_read_nbconvert_script tests/test_read_simple_percent.py::test_read_remove_blank_lines tests/test_read_simple_percent.py::test_no_crash_on_square_bracket tests/test_read_simple_percent.py::test_nbconvert_cell tests/test_read_simple_percent.py::test_nbformat_v3_nbpy_cell tests/test_read_simple_percent.py::test_first_cell_markdown_191 tests/test_read_simple_percent.py::test_multiline_comments_in_markdown_1 tests/test_read_simple_percent.py::test_multiline_comments_in_markdown_2 tests/test_read_simple_percent.py::test_multiline_comments_format_option tests/test_read_simple_percent.py::test_multiline_comments_in_raw_cell tests/test_read_simple_percent.py::test_multiline_comments_in_markdown_cell_no_line_return tests/test_read_simple_percent.py::test_multiline_comments_in_markdown_cell_is_robust_to_additional_cell_marker tests/test_read_simple_percent.py::test_cell_markers_option_in_contents_manager tests/test_read_simple_percent.py::test_default_cell_markers_in_contents_manager tests/test_read_simple_percent.py::test_default_cell_markers_in_contents_manager_does_not_impact_light_format tests/test_read_simple_percent.py::test_single_triple_quote_works tests/test_stringparser.py::test_long_string tests/test_stringparser.py::test_single_chars
jupytext/stringparser.py CHANGELOG.md
jupytext/stringparser.py CHANGELOG.md