lgtm-com[bot]: This pull request **introduces 2 alerts** when merging e6caf0801ed5627b3fbbd7ad6f8e20e71a0bf74d into 213acee31cb2d36b8ad36aa80dcd0f49ab922e48 - [view on LGTM.com](https://lgtm.com/projects/g/mwouts/jupytext/rev/pr-8bf885b60f8e276d82dc1ef072f92922c504974d)

**new alerts:**

* 2 for Wrong name for an argument in a call
Skylion007: @mwouts the lgtm alert is outside of the code I edited in my PR
lgtm-com[bot]: This pull request **introduces 2 alerts** when merging 57c0a69bf92088643ba69531b09dc75945b64537 into 213acee31cb2d36b8ad36aa80dcd0f49ab922e48 - [view on LGTM.com](https://lgtm.com/projects/g/mwouts/jupytext/rev/pr-a731e6c67f619bef09ed32304b948179bf01829d)

**new alerts:**

* 2 for Wrong name for an argument in a call
mwouts: Awesome! Thank you @Skylion007.
Indeed the issue raised by LGTM is not related to your contribution.
Let me see if I can fix that one first at #589  - I'll come back here afterwards.
diff --git a/.github/workflows/continuous-integration-conda.yml b/.github/workflows/continuous-integration-conda.yml
index 68d356b..a16fa4f 100644
--- a/.github/workflows/continuous-integration-conda.yml
+++ b/.github/workflows/continuous-integration-conda.yml
@@ -65,7 +65,8 @@ jobs:
           conda install autopep8 --freeze-installed
           # install sphinx_gallery and matplotlib if available
           conda install sphinx-gallery --freeze-installed
-          conda install myst-parser --freeze-installed
+          # myst-parser
+          conda install 'myst-parser>=0.8' 'myst-parser<0.9' --freeze-installed
           exit 0
       - name: Conda list
         shell: pwsh
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 48398a6..8aa7fa2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@
 - Configured coverage targets in `codecov.yml`
 - Only scripts can have an encoding comment, not Markdown or R Markdown files (#576)
 - Support spaces in `--pipe` commands (#562)
+- Use `>=` and `<` rather than `~=` in the `extras_require` of `setup.py` (#589)
 
 
 1.5.2 (2020-07-21)
diff --git a/docs/faq.md b/docs/faq.md
index 7504b61..aa3f112 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -52,7 +52,11 @@ jupytext --update-metadata '{"jupytext": null}' path/to/notebooks/*.ipynb
 
 Certainly. Open your pre-existing scripts or Markdown files as notebooks with a click in Jupyter Notebook, and with the _Open as Notebook_ menu in JupyterLab.
 
-The text formats do not store the output cells. If you want to preserve these when you refresh the notebook, be sure to pair the text file to an `.ipynb` file.
+In Jupyter Notebook you can also create text notebooks with the _New Text Notebook_ menu.
+
+Output cells appear in the browser when you execute the notebook, but they are not written to the disk when you save the notebook.
+
+The output cells are lost when you reload the notebook - if you want to avoid this, just _pair_ the text file to an `.ipynb` file.
 
 If you want to convert text formats to notebooks programmatically, use one of
 ```bash
diff --git a/jupytext/magics.py b/jupytext/magics.py
index 858e0f8..4de898a 100644
--- a/jupytext/magics.py
+++ b/jupytext/magics.py
@@ -40,7 +40,7 @@ _MAGIC_FORCE_ESC_RE["csharp"] = re.compile(r"^(// |//)*#![a-zA-Z](.*)//\s*escape
 _MAGIC_FORCE_ESC_RE["csharp"] = re.compile(r"^(// |//)*#![a-zA-Z](.*)//\s*noescape")
 
 # Commands starting with a question or exclamation mark have to be escaped
-_PYTHON_HELP_OR_BASH_CMD = re.compile(r"^\s*(# |#)*\s*(\?|!)\s*[A-Za-z]")
+_PYTHON_HELP_OR_BASH_CMD = re.compile(r"^\s*(# |#)*\s*(\?|!)\s*[A-Za-z\.\~\$\\\/]")
 
 # A bash command not followed by an equal sign or a parenthesis is a magic command
 _PYTHON_MAGIC_CMD = re.compile(
diff --git a/setup.py b/setup.py
index 57bbe8f..f5a3c6f 100644
--- a/setup.py
+++ b/setup.py
@@ -55,7 +55,7 @@ setup(
     tests_require=["pytest"],
     install_requires=["nbformat>=4.0.0", "pyyaml", "toml", 'mock;python_version<"3"'],
     extras_require={
-        "myst": ["myst-parser~=0.8; python_version >= '3.6'"],
+        "myst": ["myst-parser>=0.8; python_version >= '3.6'", "myst-parser<0.9"],
         "toml": ["toml"],
     },
     license="MIT",

Black has syntax error with valid iPython magic when using --pipe
To reproduce:

This occurs on `black, version 19.10b0` and 'jupytext==1.5.2'. When --sync a notebook to py:percent format using the following command:

```bash
jupytext --update-metadata '{"jupytext":{"notebook_metadata_filter":"all", "cell_metadata_filter":"-all"}, "accelerator":"GPU"}' --set-formats 'nb_python//py:percent,colabs//ipynb' --pipe black --pipe "sed s/[[:space:]]*\#[[:space:]]\%\%/\#\%\%/g"  --pipe 'isort -' --pipe-fmt 'py:percent' --sync
```

I get this error:
```bash
executing black -
error: cannot format -: Cannot parse: 73:0: !~/miniconda.sh -b -p $HOME/miniconda
```
Now I tracked down the error, and when I change the lines ipynb to use ``` !bash ~/miniconda.sh -b -p $HOME/miniconda```, it works just fine. Also the following lines also generated error:
```bash 
error: cannot format -: Cannot parse: 78:0: !. activate habitat;``` 

I had to change it to
```bash
!conda . activate
```

I also had to change:
```bash
!./test_locally_pointnav_rgbd.sh
```
to 
```bash
!bash ./test_locally_pointnav_rgbd.sh
```

TLDR: Black has issues when the first arg following '!' isn't a command, but references an executable file or another bash alias.  

diff --git a/tests/test_escape_magics.py b/tests/test_escape_magics.py
index d6cec99..108e2db 100644
--- a/tests/test_escape_magics.py
+++ b/tests/test_escape_magics.py
@@ -164,6 +164,20 @@ def test_force_comment_using_contents_manager(tmpdir):
         "# ls",
         "# mv a b",
         "! mkdir tmp",
+        "!./script",
+        "! ./script",
+        "!./script args",
+        "!./script.sh args",
+        "! ./script.sh args",
+        "!~/script.sh args",
+        "! ~/script.sh args",
+        "!../script.sh $ENV $USER",
+        "! ../script.sh $ENV $USER",
+        "!$HOME/script.sh $ENV $USER",
+        "!/bin/sh $ENV $USER",
+        "! /bin/sh $ENV $USER",
+        r"! \bin\sh $ENV $USER",
+        r"!\bin\sh $ENV $USER",
         "cat",
         "cat ",
         "cat hello.txt",

environment.yml
pip install -e .[dev]
parse_log_pytest
environment.yml
pytest
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
aiofiles @ file:///croot/aiofiles_1683773582346/work
aiosqlite @ file:///croot/aiosqlite_1743188121172/work
alabaster @ file:///croot/alabaster_1718201490751/work
anyio @ file:///croot/anyio_1729121277521/work
argon2-cffi @ file:///opt/conda/conda-bld/argon2-cffi_1645000214183/work
argon2-cffi-bindings @ file:///croot/argon2-cffi-bindings_1736182440035/work
astroid @ file:///croot/astroid_1736455921794/work
asttokens @ file:///opt/conda/conda-bld/asttokens_1646925590279/work
attrs @ file:///croot/attrs_1734533101012/work
autopep8 @ file:///croot/autopep8_1708962882016/work
babel @ file:///croot/babel_1737454360933/work
backcall @ file:///home/ktietz/src/ci/backcall_1611930011877/work
beautifulsoup4 @ file:///croot/beautifulsoup4-split_1718029820055/work
black @ file:///croot/black_1737659122412/work
bleach @ file:///croot/bleach_1732290411627/work
Brotli @ file:///croot/brotli-split_1736182456865/work
certifi @ file:///croot/certifi_1738623731865/work/certifi
cffi @ file:///croot/cffi_1736182485317/work
cfgv @ file:///croot/cfgv_1694505959159/work
charset-normalizer @ file:///croot/charset-normalizer_1721748349566/work
click @ file:///croot/click_1698129812380/work
cmarkgfm @ file:///croot/cmarkgfm_1741367044794/work
comm @ file:///croot/comm_1709322850197/work
commonmark @ file:///Users/ktietz/demo/mc3/conda-bld/commonmark_1630649545323/work
coverage @ file:///croot/coverage_1734018327576/work
cryptography @ file:///croot/cryptography_1740577825284/work
debugpy @ file:///croot/debugpy_1736267418885/work
decorator @ file:///opt/conda/conda-bld/decorator_1643638310831/work
defusedxml @ file:///tmp/build/80754af9/defusedxml_1615228127516/work
dill @ file:///croot/dill_1715094664823/work
distlib @ file:///croot/distlib_1714716998232/work
docutils @ file:///opt/conda/conda-bld/docutils_1657175430858/work
entrypoints @ file:///tmp/build/80754af9/entrypoints_1649926439650/work
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
execnet @ file:///croot/execnet_1731939276985/work
executing @ file:///opt/conda/conda-bld/executing_1646925071911/work
fastjsonschema @ file:///croot/python-fastjsonschema_1731939362158/work
filelock @ file:///croot/filelock_1700591183607/work
flake8 @ file:///croot/flake8_1726157165993/work
future @ file:///croot/future_1730902796226/work
identify @ file:///opt/conda/conda-bld/identify_1663193176610/work
idna @ file:///croot/idna_1714398848350/work
imagesize @ file:///opt/conda/conda-bld/imagesize_1657179498843/work
importlib_metadata @ file:///croot/importlib_metadata-suite_1732633488278/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
ipykernel @ file:///croot/ipykernel_1737660677549/work
ipython @ file:///croot/ipython_1694181358621/work
ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work
ipywidgets @ file:///croot/ipywidgets_1733504575802/work
isort @ file:///croot/isort_1736366665795/work
jaraco.classes @ file:///tmp/build/80754af9/jaraco.classes_1620983179379/work
jedi @ file:///croot/jedi_1733987392413/work
jeepney @ file:///tmp/build/80754af9/jeepney_1627537048313/work
Jinja2 @ file:///croot/jinja2_1741710844255/work
json5 @ file:///croot/json5_1730786798687/work
jsonschema @ file:///croot/jsonschema_1728486696720/work
jsonschema-specifications @ file:///croot/jsonschema-specifications_1699032386549/work
jupyter @ file:///croot/jupyter_1737645803214/work
jupyter-console @ file:///croot/jupyter_console_1679999630278/work
jupyter-contrib-nbextensions @ file:///home/conda/feedstock_root/build_artifacts/jupyter_contrib_nbextensions_1670068802953/work
jupyter-events @ file:///croot/jupyter_events_1741184577592/work
jupyter-highlight-selected-word @ file:///home/conda/feedstock_root/build_artifacts/jupyter_highlight_selected_word_1695322379939/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-ydoc @ file:///croot/jupyter_ydoc_1726065554479/work
jupyter_client @ file:///croot/jupyter_client_1676329080601/work
jupyter_contrib_core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_contrib_core_1734637697362/work
jupyter_core @ file:///croot/jupyter_core_1718818295206/work
jupyter_server @ file:///croot/jupyter_server_1741200034823/work
jupyter_server_fileid @ file:///croot/jupyter_server_fileid_1684273577568/work
jupyter_server_terminals @ file:///croot/jupyter_server_terminals_1686870725608/work
jupyter_server_ydoc @ file:///croot/jupyter_server_ydoc_1726213198316/work
jupyterlab @ file:///croot/jupyterlab_1708029878135/work
jupyterlab-pygments @ file:///croot/jupyterlab_pygments_1700168593176/work
jupyterlab_server @ file:///croot/jupyterlab_server_1725865349919/work
jupyterlab_widgets @ file:///croot/jupyterlab_widgets_1733440870459/work
-e git+https://github.com/mwouts/jupytext.git@213acee31cb2d36b8ad36aa80dcd0f49ab922e48#egg=jupytext
keyring @ file:///croot/keyring_1709632513808/work
lxml @ file:///croot/lxml_1737039601731/work
markdown-it-py @ file:///home/conda/feedstock_root/build_artifacts/markdown-it-py_1733250460757/work
MarkupSafe @ file:///croot/markupsafe_1738584038848/work
matplotlib-inline @ file:///opt/conda/conda-bld/matplotlib-inline_1662014470464/work
mccabe @ file:///opt/conda/conda-bld/mccabe_1644221741721/work
mdit-py-plugins @ file:///home/conda/feedstock_root/build_artifacts/mdit-py-plugins_1733854715505/work
mdurl @ file:///opt/conda/conda-bld/mdurl_1659716024347/work
mistune @ file:///croot/mistune_1741124011532/work
more-itertools @ file:///croot/more-itertools_1727185441804/work
mypy-extensions @ file:///croot/mypy_extensions_1695130926492/work
myst-parser @ file:///home/conda/feedstock_root/build_artifacts/myst-parser_1714413780344/work
nbclassic @ file:///croot/nbclassic_1717622582894/work
nbclient @ file:///croot/nbclient_1741123995822/work
nbconvert @ file:///croot/nbconvert-meta_1741184653315/work
nbformat @ file:///croot/nbformat_1728049424075/work
nest-asyncio @ file:///croot/nest-asyncio_1708532673751/work
nodeenv @ file:///croot/nodeenv_1741859496902/work
notebook @ file:///croot/notebook_1717630758219/work
notebook_shim @ file:///croot/notebook-shim_1741707758683/work
overrides @ file:///croot/overrides_1699371140756/work
packaging @ file:///croot/packaging_1734472117206/work
pandocfilters @ file:///opt/conda/conda-bld/pandocfilters_1643405455980/work
parso @ file:///croot/parso_1733963305961/work
pathspec @ file:///croot/pathspec_1674681560568/work
pexpect @ file:///tmp/build/80754af9/pexpect_1605563209008/work
pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work
pillow @ file:///croot/pillow_1738010226202/work
pkginfo @ file:///croot/pkginfo_1743184746806/work
platformdirs @ file:///croot/platformdirs_1692205439124/work
pluggy @ file:///croot/pluggy_1733169602837/work
pre-commit @ file:///croot/pre-commit-split_1694776958465/work
prometheus_client @ file:///croot/prometheus_client_1731953121795/work
prompt-toolkit @ file:///croot/prompt-toolkit_1704404351921/work
psutil @ file:///croot/psutil_1736367091698/work
ptyprocess @ file:///tmp/build/80754af9/ptyprocess_1609355006118/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
pure-eval @ file:///opt/conda/conda-bld/pure_eval_1646925070566/work
pycodestyle @ file:///croot/pycodestyle_1726150303809/work
pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work
pyflakes @ file:///croot/pyflakes_1708962956225/work
Pygments @ file:///croot/pygments_1684279966437/work
pylint @ file:///croot/pylint_1736469691131/work
PyQt6==6.7.1
PyQt6_sip @ file:///croot/pyqt-split_1740498191142/work/pyqt_sip
PySocks @ file:///tmp/build/80754af9/pysocks_1605305812635/work
pytest @ file:///croot/pytest_1738938843180/work
pytest-cov @ file:///croot/pytest-cov_1732897209816/work
pytest-xdist @ file:///croot/pytest-xdist_1732896314179/work
python-dateutil @ file:///croot/python-dateutil_1716495738603/work
python-json-logger @ file:///croot/python-json-logger_1734370021104/work
PyYAML @ file:///croot/pyyaml_1728657952215/work
pyzmq @ file:///croot/pyzmq_1709318311506/work
qtconsole @ file:///croot/qtconsole_1737590761179/work
QtPy @ file:///croot/qtpy_1700144840038/work
readme-renderer @ file:///croot/readme_renderer_1690358467326/work
recommonmark @ file:///Users/ktietz/demo/mc3/conda-bld/recommonmark_1629466645250/work
referencing @ file:///croot/referencing_1699012038513/work
requests @ file:///croot/requests_1730999120400/work
requests-toolbelt @ file:///croot/requests-toolbelt_1690874004362/work
rfc3339-validator @ file:///croot/rfc3339-validator_1683077044675/work
rfc3986 @ file:///Users/ktietz/demo/mc3/conda-bld/rfc3986_1629478296451/work
rfc3986-validator @ file:///croot/rfc3986-validator_1683058983515/work
rich @ file:///croot/rich_1732638981168/work
rpds-py @ file:///croot/rpds-py_1736541261634/work
SecretStorage @ file:///croot/secretstorage_1678709481048/work
Send2Trash @ file:///croot/send2trash_1736540790175/work
sip @ file:///croot/sip_1738856193618/work
six @ file:///tmp/build/80754af9/six_1644875935023/work
sniffio @ file:///croot/sniffio_1705431295498/work
snowballstemmer @ file:///tmp/build/80754af9/snowballstemmer_1637937080595/work
soupsieve @ file:///croot/soupsieve_1696347547217/work
Sphinx @ file:///croot/sphinx_1718275386998/work
sphinx-copybutton==0.5.2
sphinx-gallery @ file:///home/conda/feedstock_root/build_artifacts/sphinx-gallery_1739451496361/work
sphinx-rtd-theme==3.0.2
sphinxcontrib-applehelp @ file:///home/ktietz/src/ci/sphinxcontrib-applehelp_1611920841464/work
sphinxcontrib-devhelp @ file:///home/ktietz/src/ci/sphinxcontrib-devhelp_1611920923094/work
sphinxcontrib-htmlhelp @ file:///tmp/build/80754af9/sphinxcontrib-htmlhelp_1623945626792/work
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath @ file:///home/ktietz/src/ci/sphinxcontrib-jsmath_1611920942228/work
sphinxcontrib-qthelp @ file:///home/ktietz/src/ci/sphinxcontrib-qthelp_1611921055322/work
sphinxcontrib-serializinghtml @ file:///croot/sphinxcontrib-serializinghtml_1718201486943/work
stack-data @ file:///opt/conda/conda-bld/stack_data_1646927590127/work
terminado @ file:///croot/terminado_1671751832461/work
tinycss2 @ file:///croot/tinycss2_1738337643607/work
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
tomlkit @ file:///croot/tomlkit_1728650307440/work
tornado @ file:///croot/tornado_1733960490606/work
traitlets @ file:///croot/traitlets_1718227057033/work
twine @ file:///croot/twine_1733412094381/work
typing_extensions @ file:///croot/typing_extensions_1734714854207/work
ukkonen @ file:///croot/ukkonen_1736541021184/work
urllib3 @ file:///croot/urllib3_1737133630106/work
virtualenv @ file:///croot/virtualenv_1733440267065/work
wcwidth @ file:///Users/ktietz/demo/mc3/conda-bld/wcwidth_1629357192024/work
webencodings==0.5.1
websocket-client @ file:///croot/websocket-client_1715878298792/work
widgetsnbextension @ file:///croot/widgetsnbextension_1733439572884/work
y-py @ file:///croot/y-py_1741380046895/work
ypy-websocket @ file:///croot/ypy-websocket_1726065537145/work
zipp @ file:///croot/zipp_1732630741423/work

name: jupytext
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - aiofiles=22.1.0=py39h06a4308_0
  - aiosqlite=0.21.0=py39h06a4308_0
  - alabaster=0.7.16=py39h06a4308_0
  - anyio=4.6.2=py39h06a4308_0
  - argon2-cffi=21.3.0=pyhd3eb1b0_0
  - argon2-cffi-bindings=21.2.0=py39h5eee18b_1
  - astroid=3.3.8=py39h06a4308_0
  - asttokens=2.0.5=pyhd3eb1b0_0
  - attrs=24.3.0=py39h06a4308_0
  - autopep8=2.0.4=pyhd3eb1b0_0
  - babel=2.16.0=py39h06a4308_0
  - backcall=0.2.0=pyhd3eb1b0_0
  - beautifulsoup4=4.12.3=py39h06a4308_0
  - black=24.10.0=py39h06a4308_0
  - bleach=6.2.0=py39h06a4308_0
  - brotli-python=1.0.9=py39h6a678d5_9
  - bzip2=1.0.8=h5eee18b_6
  - c-ares=1.19.1=h5eee18b_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2025.1.31=py39h06a4308_0
  - cffi=1.17.1=py39h1fdaa30_1
  - cfgv=3.4.0=py39h06a4308_0
  - charset-normalizer=3.3.2=pyhd3eb1b0_0
  - click=8.1.7=py39h06a4308_0
  - cmarkgfm=2024.11.20=py39h5eee18b_0
  - comm=0.2.1=py39h06a4308_0
  - commonmark=0.9.1=pyhd3eb1b0_0
  - coverage=7.6.9=py39h5eee18b_0
  - cryptography=44.0.1=py39h7825ff9_0
  - cyrus-sasl=2.1.28=h52b45da_1
  - dbus=1.13.18=hb2f20db_0
  - debugpy=1.8.11=py39h6a678d5_0
  - decorator=5.1.1=pyhd3eb1b0_0
  - defusedxml=0.7.1=pyhd3eb1b0_0
  - dill=0.3.8=py39h06a4308_0
  - distlib=0.3.8=py39h06a4308_0
  - docutils=0.18.1=py39h06a4308_3
  - entrypoints=0.4=py39h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - execnet=2.1.1=pyhd3eb1b0_0
  - executing=0.8.3=pyhd3eb1b0_0
  - expat=2.6.4=h6a678d5_0
  - filelock=3.13.1=py39h06a4308_0
  - flake8=7.1.1=py39h06a4308_0
  - fontconfig=2.14.1=h55d465d_3
  - freetype=2.12.1=h4a9f257_0
  - future=1.0.0=py39h06a4308_0
  - glib=2.78.4=h6a678d5_0
  - glib-tools=2.78.4=h6a678d5_0
  - icu=73.1=h6a678d5_0
  - identify=2.5.5=py39h06a4308_0
  - idna=3.7=py39h06a4308_0
  - imagesize=1.4.1=py39h06a4308_0
  - importlib-metadata=8.5.0=py39h06a4308_0
  - importlib_metadata=8.5.0=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ipykernel=6.29.5=py39h06a4308_1
  - ipython=8.15.0=py39h06a4308_0
  - ipython_genutils=0.2.0=pyhd3eb1b0_1
  - ipywidgets=8.1.5=py39h06a4308_0
  - isort=5.13.2=py39h06a4308_1
  - jaraco.classes=3.2.1=pyhd3eb1b0_0
  - jedi=0.19.2=py39h06a4308_0
  - jeepney=0.7.1=pyhd3eb1b0_0
  - jinja2=3.1.6=py39h06a4308_0
  - jpeg=9e=h5eee18b_3
  - json5=0.9.25=py39h06a4308_0
  - jsonschema=4.23.0=py39h06a4308_0
  - jsonschema-specifications=2023.7.1=py39h06a4308_0
  - jupyter=1.1.1=py39h06a4308_0
  - jupyter_client=7.4.9=py39h06a4308_0
  - jupyter_console=6.6.3=py39h06a4308_0
  - jupyter_contrib_core=0.4.0=pyhd8ed1ab_1
  - jupyter_contrib_nbextensions=0.7.0=pyhd8ed1ab_0
  - jupyter_core=5.7.2=py39h06a4308_0
  - jupyter_events=0.12.0=py39h06a4308_0
  - jupyter_highlight_selected_word=0.2.0=pyhd8ed1ab_1006
  - jupyter_latex_envs=1.4.6=pyhd8ed1ab_1002
  - jupyter_nbextensions_configurator=0.6.1=pyhd8ed1ab_0
  - jupyter_server=2.15.0=py39h06a4308_0
  - jupyter_server_fileid=0.9.0=py39h06a4308_0
  - jupyter_server_terminals=0.4.4=py39h06a4308_1
  - jupyter_server_ydoc=0.8.0=py39h06a4308_2
  - jupyter_ydoc=0.2.5=py39h06a4308_0
  - jupyterlab=3.6.7=py39h06a4308_0
  - jupyterlab_pygments=0.2.2=py39h06a4308_0
  - jupyterlab_server=2.27.3=py39h06a4308_0
  - jupyterlab_widgets=3.0.13=py39h06a4308_0
  - keyring=24.3.1=py39h06a4308_0
  - krb5=1.20.1=h143b758_1
  - lcms2=2.16=hb9589c4_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - lerc=4.0.0=h6a678d5_0
  - libabseil=20250127.0=cxx17_h6a678d5_0
  - libcups=2.4.2=h2d74bed_1
  - libcurl=8.12.1=hc9e6f67_0
  - libdeflate=1.22=h5eee18b_0
  - libedit=3.1.20230828=h5eee18b_0
  - libev=4.33=h7f8727e_1
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libglib=2.78.4=hdc74915_0
  - libgomp=11.2.0=h1234567_1
  - libiconv=1.16=h5eee18b_3
  - libnghttp2=1.57.0=h2d74bed_0
  - libpng=1.6.39=h5eee18b_0
  - libpq=17.4=hdbd6064_0
  - libprotobuf=5.29.3=hc99497a_0
  - libsodium=1.0.18=h7b6447c_0
  - libssh2=1.11.1=h251f7ec_0
  - libstdcxx-ng=11.2.0=h1234567_1
  - libtiff=4.5.1=hffd6297_1
  - libuuid=1.41.5=h5eee18b_0
  - libwebp-base=1.3.2=h5eee18b_1
  - libxcb=1.15=h7f8727e_0
  - libxkbcommon=1.0.1=h097e994_2
  - libxml2=2.13.5=hfdd30dd_0
  - libxslt=1.1.41=h097e994_0
  - lxml=5.3.0=py39h57af460_1
  - lz4-c=1.9.4=h6a678d5_1
  - markdown-it-py=3.0.0=pyhd8ed1ab_1
  - markupsafe=3.0.2=py39h5eee18b_0
  - matplotlib-inline=0.1.6=py39h06a4308_0
  - mccabe=0.7.0=pyhd3eb1b0_0
  - mdit-py-plugins=0.4.2=pyhd8ed1ab_1
  - mdurl=0.1.0=py39h06a4308_0
  - mistune=3.1.2=py39h06a4308_0
  - more-itertools=10.3.0=py39h06a4308_0
  - mypy_extensions=1.0.0=py39h06a4308_0
  - mysql=8.4.0=h721767e_2
  - myst-parser=3.0.1=pyhd8ed1ab_0
  - nbclassic=1.1.0=py39h06a4308_0
  - nbclient=0.10.2=py39h06a4308_0
  - nbconvert=7.16.6=py39h06a4308_0
  - nbconvert-core=7.16.6=py39h06a4308_0
  - nbconvert-pandoc=7.16.6=py39h06a4308_0
  - nbformat=5.10.4=py39h06a4308_0
  - ncurses=6.4=h6a678d5_0
  - nest-asyncio=1.6.0=py39h06a4308_0
  - nodeenv=1.9.1=py39h06a4308_0
  - nodejs=10.13.0=he6710b0_0
  - notebook=6.5.7=py39h06a4308_0
  - notebook-shim=0.2.4=py39h06a4308_0
  - openjpeg=2.5.2=he7f1fd0_0
  - openldap=2.6.4=h42fbc30_0
  - openssl=3.0.16=h5eee18b_0
  - overrides=7.4.0=py39h06a4308_0
  - packaging=24.2=py39h06a4308_0
  - pandoc=2.12=h06a4308_3
  - pandocfilters=1.5.0=pyhd3eb1b0_0
  - parso=0.8.4=py39h06a4308_0
  - pathspec=0.10.3=py39h06a4308_0
  - pcre2=10.42=hebb0a14_1
  - pexpect=4.8.0=pyhd3eb1b0_3
  - pickleshare=0.7.5=pyhd3eb1b0_1003
  - pillow=11.1.0=py39hcea889d_0
  - pip=25.0=py39h06a4308_0
  - pkginfo=1.12.0=py39h06a4308_0
  - platformdirs=3.10.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pre-commit=3.4.0=py39h06a4308_1
  - prometheus_client=0.21.0=py39h06a4308_0
  - prompt-toolkit=3.0.43=py39h06a4308_0
  - prompt_toolkit=3.0.43=hd3eb1b0_0
  - psutil=5.9.0=py39h5eee18b_1
  - ptyprocess=0.7.0=pyhd3eb1b0_2
  - pure_eval=0.2.2=pyhd3eb1b0_0
  - pycodestyle=2.12.1=py39h06a4308_0
  - pycparser=2.21=pyhd3eb1b0_0
  - pyflakes=3.2.0=py39h06a4308_0
  - pygments=2.15.1=py39h06a4308_1
  - pylint=3.3.3=py39h06a4308_0
  - pyqt=6.7.1=py39h6a678d5_0
  - pyqt6-sip=13.9.1=py39h5eee18b_0
  - pysocks=1.7.1=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - pytest-cov=6.0.0=py39h06a4308_0
  - pytest-xdist=3.6.1=py39h06a4308_0
  - python=3.9.21=he870216_1
  - python-dateutil=2.9.0post0=py39h06a4308_2
  - python-fastjsonschema=2.20.0=py39h06a4308_0
  - python-json-logger=3.2.1=py39h06a4308_0
  - pyyaml=6.0.2=py39h5eee18b_0
  - pyzmq=24.0.1=py39h5eee18b_0
  - qtbase=6.7.3=hdaa5aa8_0
  - qtconsole=5.6.1=py39h06a4308_0
  - qtdeclarative=6.7.3=h6a678d5_0
  - qtpy=2.4.1=py39h06a4308_0
  - qtsvg=6.7.3=he621ea3_0
  - qttools=6.7.3=h80c7b02_0
  - qtwebchannel=6.7.3=h6a678d5_0
  - qtwebsockets=6.7.3=h6a678d5_0
  - readline=8.2=h5eee18b_0
  - readme_renderer=40.0=py39h06a4308_0
  - recommonmark=0.6.0=pyhd3eb1b0_0
  - referencing=0.30.2=py39h06a4308_0
  - requests=2.32.3=py39h06a4308_1
  - requests-toolbelt=1.0.0=py39h06a4308_0
  - rfc3339-validator=0.1.4=py39h06a4308_0
  - rfc3986=1.4.0=pyhd3eb1b0_0
  - rfc3986-validator=0.1.1=py39h06a4308_0
  - rich=13.9.4=py39h06a4308_0
  - rpds-py=0.22.3=py39h4aa5aa6_0
  - secretstorage=3.3.1=py39h06a4308_1
  - send2trash=1.8.2=py39h06a4308_1
  - setuptools=75.8.0=py39h06a4308_0
  - sip=6.10.0=py39h6a678d5_0
  - six=1.16.0=pyhd3eb1b0_1
  - sniffio=1.3.0=py39h06a4308_0
  - snowballstemmer=2.2.0=pyhd3eb1b0_0
  - soupsieve=2.5=py39h06a4308_0
  - sphinx=7.3.7=py39h5eee18b_0
  - sphinx-gallery=0.19.0=pyhd8ed1ab_0
  - sphinxcontrib-applehelp=1.0.2=pyhd3eb1b0_0
  - sphinxcontrib-devhelp=1.0.2=pyhd3eb1b0_0
  - sphinxcontrib-htmlhelp=2.0.0=pyhd3eb1b0_0
  - sphinxcontrib-jsmath=1.0.1=pyhd3eb1b0_0
  - sphinxcontrib-qthelp=1.0.3=pyhd3eb1b0_0
  - sphinxcontrib-serializinghtml=1.1.10=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - stack_data=0.2.0=pyhd3eb1b0_0
  - terminado=0.17.1=py39h06a4308_0
  - tinycss2=1.4.0=py39h06a4308_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - tomli=2.0.1=py39h06a4308_0
  - tomlkit=0.13.2=py39h06a4308_0
  - tornado=6.4.2=py39h5eee18b_0
  - traitlets=5.14.3=py39h06a4308_0
  - twine=6.0.1=py39h06a4308_0
  - typing-extensions=4.12.2=py39h06a4308_0
  - typing_extensions=4.12.2=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - ukkonen=1.0.1=py39hdb19cb5_1
  - urllib3=2.3.0=py39h06a4308_0
  - virtualenv=20.28.0=py39h06a4308_0
  - wcwidth=0.2.5=pyhd3eb1b0_0
  - webencodings=0.5.1=py39h06a4308_1
  - websocket-client=1.8.0=py39h06a4308_0
  - wheel=0.45.1=py39h06a4308_0
  - widgetsnbextension=4.0.13=py39h06a4308_0
  - xcb-util-cursor=0.1.4=h5eee18b_0
  - xz=5.6.4=h5eee18b_1
  - y-py=0.6.2=py39h4aa5aa6_2
  - yaml=0.2.5=h7b6447c_0
  - yarn=1.22.19=h06a4308_0
  - ypy-websocket=0.8.4=py39h06a4308_0
  - zeromq=4.3.5=h6a678d5_0
  - zipp=3.21.0=py39h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - zstd=1.5.6=hc292b87_0
  - pip:
      - sphinx-copybutton==0.5.2
      - sphinx-rtd-theme==3.0.2
      - sphinxcontrib-jquery==4.1
prefix: /opt/conda/envs/jupytext

tests/test_escape_magics.py::test_comment_bash_commands_in_python[! tests/test_escape_magics.py::test_comment_bash_commands_in_python[!./script] tests/test_escape_magics.py::test_comment_bash_commands_in_python[!./script tests/test_escape_magics.py::test_comment_bash_commands_in_python[!./script.sh tests/test_escape_magics.py::test_comment_bash_commands_in_python[!~/script.sh tests/test_escape_magics.py::test_comment_bash_commands_in_python[!../script.sh tests/test_escape_magics.py::test_comment_bash_commands_in_python[!$HOME/script.sh tests/test_escape_magics.py::test_comment_bash_commands_in_python[!/bin/sh tests/test_escape_magics.py::test_comment_bash_commands_in_python[!\\bin\\sh
tests/test_escape_magics.py::test_force_comment_using_contents_manager
tests/test_escape_magics.py::test_unesc tests/test_escape_magics.py::test_escape[%matplotlib tests/test_escape_magics.py::test_escape[#%matplotlib tests/test_escape_magics.py::test_escape[##%matplotlib tests/test_escape_magics.py::test_escape[%%HTML] tests/test_escape_magics.py::test_escape[%autoreload] tests/test_escape_magics.py::test_escape[%store] tests/test_escape_magics.py::test_escape_magic_only[@pytest.fixture] tests/test_escape_magics.py::test_force_noescape[%matplotlib tests/test_escape_magics.py::test_force_noescape_with_gbl_esc_flag[%matplotlib tests/test_escape_magics.py::test_force_escape_with_gbl_esc_flag[%matplotlib tests/test_escape_magics.py::test_magics_commented_default[md-False] tests/test_escape_magics.py::test_magics_commented_default[Rmd-True] tests/test_escape_magics.py::test_magics_commented_default[py:light-True] tests/test_escape_magics.py::test_magics_commented_default[py:percent-True] tests/test_escape_magics.py::test_magics_commented_default[py:sphinx-True] tests/test_escape_magics.py::test_magics_commented_default[R-True] tests/test_escape_magics.py::test_magics_commented_default[ss:light-True] tests/test_escape_magics.py::test_magics_commented_default[ss:percent-True] tests/test_escape_magics.py::test_magics_are_commented[md] tests/test_escape_magics.py::test_magics_are_commented[Rmd] tests/test_escape_magics.py::test_magics_are_commented[py:light] tests/test_escape_magics.py::test_magics_are_commented[py:percent] tests/test_escape_magics.py::test_magics_are_commented[py:sphinx] tests/test_escape_magics.py::test_magics_are_commented[R] tests/test_escape_magics.py::test_magics_are_commented[ss:light] tests/test_escape_magics.py::test_magics_are_commented[ss:percent] tests/test_escape_magics.py::test_magics_are_not_commented[md] tests/test_escape_magics.py::test_magics_are_not_commented[Rmd] tests/test_escape_magics.py::test_magics_are_not_commented[py:light] tests/test_escape_magics.py::test_magics_are_not_commented[py:percent] tests/test_escape_magics.py::test_magics_are_not_commented[py:sphinx] tests/test_escape_magics.py::test_magics_are_not_commented[R] tests/test_escape_magics.py::test_magics_are_not_commented[ss:light] tests/test_escape_magics.py::test_magics_are_not_commented[ss:percent] tests/test_escape_magics.py::test_comment_bash_commands_in_python[ls] tests/test_escape_magics.py::test_comment_bash_commands_in_python[!ls] tests/test_escape_magics.py::test_comment_bash_commands_in_python[ls tests/test_escape_magics.py::test_comment_bash_commands_in_python[!whoami] tests/test_escape_magics.py::test_comment_bash_commands_in_python[# tests/test_escape_magics.py::test_comment_bash_commands_in_python[cat] tests/test_escape_magics.py::test_comment_bash_commands_in_python[cat tests/test_escape_magics.py::test_do_not_comment_python_cmds[copy(a)] tests/test_escape_magics.py::test_do_not_comment_python_cmds[copy.deepcopy] tests/test_escape_magics.py::test_do_not_comment_python_cmds[cat tests/test_escape_magics.py::test_do_not_comment_python_cmds[cat=5] tests/test_escape_magics.py::test_do_not_comment_python_cmds[cat, tests/test_escape_magics.py::test_do_not_comment_python_cmds[cat(5)] tests/test_escape_magics.py::test_do_not_comment_bash_commands_in_R[ls] tests/test_escape_magics.py::test_do_not_comment_bash_commands_in_R[!ls] tests/test_escape_magics.py::test_do_not_comment_bash_commands_in_R[ls tests/test_escape_magics.py::test_do_not_comment_bash_commands_in_R[!whoami] tests/test_escape_magics.py::test_do_not_comment_bash_commands_in_R[# tests/test_escape_magics.py::test_markdown_image_is_not_magic tests/test_escape_magics.py::test_question_is_not_magic tests/test_escape_magics.py::test_multiline_python_magic tests/test_escape_magics.py::test_configure_magic tests/test_escape_magics.py::test_indented_magic
jupytext/magics.py docs/faq.md setup.py CHANGELOG.md .github/workflows/continuous-integration-conda.yml
jupytext/magics.py docs/faq.md setup.py CHANGELOG.md .github/workflows/continuous-integration-conda.yml