From 069a7099dae47ded39278f5b1310b307800efb97 Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Mon, 6 Dec 2021 10:34:14 +0100 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=94=A7=20MAINTAIN:=20Add=20publishing?= =?UTF-8?q?=20job=20for=20myst-docutils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docutils_setup.py | 59 +++++++++++++++++++++++++++++ .github/workflows/tests.yml | 33 ++++++++++++++-- 2 files changed, 88 insertions(+), 4 deletions(-) create mode 100755 .github/workflows/docutils_setup.py diff --git a/.github/workflows/docutils_setup.py b/.github/workflows/docutils_setup.py new file mode 100755 index 00000000..90309197 --- /dev/null +++ b/.github/workflows/docutils_setup.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +"""Script to convert package setup to myst-docutils.""" +import configparser +import io +import sys + + +def modify_setup_cfg(content: str) -> str: + """Modify setup.cfg.""" + cfg = configparser.ConfigParser() + cfg.read_string(content) + # change name of package + cfg.set("metadata", "name", "myst-docutils") + # move dependency on docutils and sphinx to extra + install_requires = [] + sphinx_extra = [""] + for line in cfg.get("options", "install_requires").splitlines(): + if line.startswith("docutils"): + sphinx_extra.append(line) + elif line.startswith("sphinx"): + sphinx_extra.append(line) + else: + install_requires.append(line) + cfg.set("options", "install_requires", "\n".join(install_requires)) + cfg.set("options.extras_require", "sphinx", "\n".join(sphinx_extra)) + + stream = io.StringIO() + cfg.write(stream) + return stream.getvalue() + + +def modify_readme(content: str) -> str: + """Modify README.md.""" + content = content.replace( + "# MyST-Parser", + "# MyST-Parser\n\nNote: myst-docutils is identical to myst-parser, " + "but without installation requirements on sphinx", + ) + content = content.replace("myst-parser", "myst-docutils") + content = content.replace("myst-docutils.readthedocs", "myst-parser.readthedocs") + content = content.replace( + "readthedocs.org/projects/myst-docutils", "readthedocs.org/projects/myst-parser" + ) + return content + + +if __name__ == "__main__": + setup_path = sys.argv[1] + readme_path = sys.argv[2] + with open(setup_path, "r") as f: + content = f.read() + content = modify_setup_cfg(content) + with open(setup_path, "w") as f: + f.write(content) + with open(readme_path, "r") as f: + content = f.read() + content = modify_readme(content) + with open(readme_path, "w") as f: + f.write(content) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8156b990..72d86152 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -4,7 +4,7 @@ on: push: branches: [master] tags: - - 'v*' + - "v[0-9]+.[0-9]+.[0-9]+*" pull_request: jobs: @@ -63,7 +63,7 @@ jobs: publish: - name: Publish to PyPi + name: Publish myst-parser to PyPi needs: [pre-commit, tests] if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') runs-on: ubuntu-latest @@ -76,10 +76,35 @@ jobs: python-version: 3.8 - name: Build package run: | - pip install wheel - python setup.py sdist bdist_wheel + pip install build + python -m build - name: Publish uses: pypa/gh-action-pypi-publish@v1.3.1 with: user: __token__ password: ${{ secrets.PYPI_KEY }} + + publish-docutils: + + name: Publish myst-docutils to PyPi + needs: [publish] + if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') + runs-on: ubuntu-latest + steps: + - name: Checkout source + uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v1 + with: + python-version: 3.8 + - name: Modify setup + run: python .github/workflows/docutils_setup.py setup.cfg README.md + - name: Build package + run: | + pip install build + python -m build + - name: Publish + uses: pypa/gh-action-pypi-publish@v1.3.1 + with: + user: __token__ + password: ${{ secrets.PYPI_KEY_DOCUTILS }} From b296dc4dcb7639ac699d29beb41f68145b9ca5cb Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Mon, 6 Dec 2021 10:44:01 +0100 Subject: [PATCH 2/6] add cli test --- .github/workflows/tests.yml | 24 +++++++++++++++++++++++- myst_parser/docutils_.py | 11 +++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 72d86152..127bb572 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -61,10 +61,32 @@ jobs: file: ./coverage.xml fail_ci_if_error: true + check-myst-docutils: + + name: Check myst-docutils install + + runs-on: ubuntu-latest + steps: + - name: Checkout source + uses: actions/checkout@v2 + - name: Set up Python 3.8 + uses: actions/setup-python@v1 + with: + python-version: 3.8 + - name: Modify setup + run: python .github/workflows/docutils_setup.py setup.cfg README.md + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install . + - name: Run CLI + run: python -m myst_docutils.docutils_ --help + + publish: name: Publish myst-parser to PyPi - needs: [pre-commit, tests] + needs: [pre-commit, tests, check-myst-docutils] if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') runs-on: ubuntu-latest steps: diff --git a/myst_parser/docutils_.py b/myst_parser/docutils_.py index 9c7c918e..f2ca0562 100644 --- a/myst_parser/docutils_.py +++ b/myst_parser/docutils_.py @@ -53,3 +53,14 @@ def parse(self, inputstring: str, document: nodes.document) -> None: # specified in the sphinx configuration tokens = [Token("front_matter", "", 0, content="{}", map=[0, 0])] + tokens parser.renderer.render(tokens, parser.options, env) + + +if __name__ == "__main__": + from docutils.core import default_description, publish_cmdline + + publish_cmdline( + parser=Parser(), + writer_name="html", + description="Generates (X)HTML documents from standalone MyST sources. " + + default_description, + ) From fcccb800d274352ee3f32239b0700017964536de Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Mon, 6 Dec 2021 10:45:09 +0100 Subject: [PATCH 3/6] Update tests.yml --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 127bb572..9d18345c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -80,7 +80,7 @@ jobs: python -m pip install --upgrade pip pip install . - name: Run CLI - run: python -m myst_docutils.docutils_ --help + run: python -m myst_parser.docutils_ --help publish: From 6611015b2c8e79b97c51b3277ea5f7c13118bfc0 Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Mon, 6 Dec 2021 10:49:24 +0100 Subject: [PATCH 4/6] Update tests.yml --- .github/workflows/tests.yml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9d18345c..7117a653 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,22 +17,22 @@ jobs: - name: Set up Python 3.8 uses: actions/setup-python@v1 with: - python-version: 3.8 + python-version: "3.8" - uses: pre-commit/action@v2.0.0 tests: strategy: matrix: - python-version: [3.6, 3.7, 3.8, 3.9] + python-version: ["3.6", "3.7", "3.8", "3.9"] sphinx: [">=4,<5"] os: [ubuntu-latest] include: - os: ubuntu-latest - python-version: 3.8 + python-version: "3.8" sphinx: ">=3,<4" - os: windows-latest - python-version: 3.8 + python-version: "3.8" sphinx: ">=4,<5" runs-on: ${{ matrix.os }} @@ -64,21 +64,26 @@ jobs: check-myst-docutils: name: Check myst-docutils install - runs-on: ubuntu-latest + + strategy: + matrix: + docutils-version: ["0.16", "0.17", "0.18"] + steps: - name: Checkout source uses: actions/checkout@v2 - name: Set up Python 3.8 uses: actions/setup-python@v1 with: - python-version: 3.8 + python-version: "3.8" - name: Modify setup run: python .github/workflows/docutils_setup.py setup.cfg README.md - name: Install dependencies run: | python -m pip install --upgrade pip pip install . + pip install docutils==${{ matrix.docutils-version }} - name: Run CLI run: python -m myst_parser.docutils_ --help @@ -95,7 +100,7 @@ jobs: - name: Set up Python 3.8 uses: actions/setup-python@v1 with: - python-version: 3.8 + python-version: "3.8" - name: Build package run: | pip install build @@ -118,7 +123,7 @@ jobs: - name: Set up Python 3.8 uses: actions/setup-python@v1 with: - python-version: 3.8 + python-version: "3.8" - name: Modify setup run: python .github/workflows/docutils_setup.py setup.cfg README.md - name: Build package From 5702827fc1563090c438dc3fd0b4f3c75eeac2a2 Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Mon, 6 Dec 2021 10:51:33 +0100 Subject: [PATCH 5/6] Update tests.yml --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7117a653..e2c29289 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -85,7 +85,7 @@ jobs: pip install . pip install docutils==${{ matrix.docutils-version }} - name: Run CLI - run: python -m myst_parser.docutils_ --help + run: echo "test" | python -m myst_parser.docutils_ publish: From 77b984e002e0558a38f7886f790750c308bfe5a0 Mon Sep 17 00:00:00 2001 From: Chris Sewell Date: Sat, 11 Dec 2021 03:56:11 +0100 Subject: [PATCH 6/6] Update tests.yml --- .github/workflows/tests.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e2c29289..99efb07a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -84,9 +84,8 @@ jobs: python -m pip install --upgrade pip pip install . pip install docutils==${{ matrix.docutils-version }} - - name: Run CLI - run: echo "test" | python -m myst_parser.docutils_ - + - name: Run docutils CLI + run: echo "test" | myst-docutils-html publish: