From bcec3c59b77beb034433e7a0a5308c661b7a3617 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Tue, 9 Nov 2021 13:27:12 +0100 Subject: [PATCH] DOC: switch to sphinx --- .circleci/config.yml | 24 +++++++++++ .github/workflows/main.yaml | 3 +- .gitignore | 6 +++ Makefile | 16 +++++--- build/index.html | 22 ---------- docs/Makefile | 23 +++++++++++ docs/_static/favicon.ico | Bin 0 -> 22486 bytes docs/conf.py | 41 +++++++++++++++++++ docs/index.rst | 65 +++++++++++++++++++++++++++++ requirements/requirements.in | 2 + requirements/requirements.txt | 74 ++++++++++++++++++++++++++++------ 11 files changed, 234 insertions(+), 42 deletions(-) create mode 100644 .circleci/config.yml delete mode 100644 build/index.html create mode 100644 docs/Makefile create mode 100644 docs/_static/favicon.ico create mode 100644 docs/conf.py create mode 100644 docs/index.rst diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..4315cfc --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,24 @@ +version: 2.1 + +orbs: + python: circleci/python@0.2.1 + +jobs: + build_docs: + executor: python/default + steps: + - checkout + - python/install-deps + - run: + name: Build cheatsheets and docs + command: make all + - persist_to_workspace: + root: docs/_build/html + paths: . + - store_artifacts: + path: docs/_build/html/ + +workflows: + main: + jobs: + - build_docs diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index e80a9e2..447fbc6 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -61,10 +61,11 @@ jobs: path: | cheatsheets.pdf handout-*.pdf + ./docs/_build/html/ - name: Publish cheatsheets and handouts if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./build/ + publish_dir: ./docs/_build/html/ force_orphan: true diff --git a/.gitignore b/.gitignore index 274ba0b..3761438 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,9 @@ handout-*.png # ---------------------------------- figures/*.pdf fonts/**/*.[ot]tf + +# html build +docs/_build/* + +# OS specific +.DS_Store diff --git a/Makefile b/Makefile index 9844efe..114d87e 100644 --- a/Makefile +++ b/Makefile @@ -4,10 +4,7 @@ SRC := $(wildcard *.tex) default: all .PHONY: all -all: logos figures cheatsheets handouts - mkdir -p ./build/ - cp cheatsheets*.p* ./build/ - cp handout-*.p* ./build/ +all: logos figures cheatsheets handouts docs .PHONY: logos logos: @@ -16,11 +13,11 @@ logos: .PHONY: figures figures: # generate the figures - cd scripts && for script in *.py; do echo $$script; python $$script; done + cd scripts && for script in *.py; do echo $$script; MPLBACKEND="agg" python $$script; done # crop the figures cd figures && for figure in *.pdf; do echo $$figure; pdfcrop $$figure $$figure; done # regenerate some figures that should not be cropped - cd scripts && python styles.py + cd scripts && MPLBACKEND="agg" python styles.py .PHONY: cheatsheets cheatsheets: @@ -44,6 +41,13 @@ check: ./check-num-pages.sh handout-intermediate.pdf 1 ./check-links.py cheatsheets.pdf +.PHONY: docs +docs: + make -C docs/ html + cp ./cheatsheets*.p* ./docs/_build/html + cp ./handout-*.p* ./docs/_build/html + + .PHONY: fonts fonts: make -C fonts/ diff --git a/build/index.html b/build/index.html deleted file mode 100644 index 4fc9dd5..0000000 --- a/build/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - Codestin Search App - - -

Matplotlib Cheatsheets

- - - diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..b38d2a3 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,23 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= -W +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +show: + @python -c "import webbrowser; webbrowser.open_new_tab('file://$(shell pwd)/build/html/index.html')" + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dc57242b5b93bdb1787ef43296858ce2d6d2f6d8 GIT binary patch literal 22486 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 + + + +Handouts +******** + +.. container:: twocol + + .. container:: + + .. image:: ../handout-beginner.png + :width: 270px + :align: center + :alt: image of beginner handout + + `Beginner [pdf] <./handout-beginner.pdf>`_ + + + .. container:: + + .. image:: ../handout-intermediate.png + :width: 270px + :align: center + :alt: image of intermediate handout + + `Intermediate [pdf] <./handout-intermediate.pdf>`_ + + + .. container:: + + .. image:: ../handout-tips.png + :width: 270px + :align: center + :alt: image of tips handout + + `Tips [pdf] <./handout-tips.pdf>`_ + diff --git a/requirements/requirements.in b/requirements/requirements.in index 6476718..00cad75 100644 --- a/requirements/requirements.in +++ b/requirements/requirements.in @@ -5,5 +5,7 @@ pdfx pip-tools pre-commit scipy +sphinx +mpl-sphinx-theme --no-binary shapely diff --git a/requirements/requirements.txt b/requirements/requirements.txt index ab7607c..b48f201 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,17 +1,25 @@ # -# This file is autogenerated by pip-compile +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # # pip-compile requirements.in # --no-binary shapely +alabaster==0.7.12 + # via sphinx appdirs==1.4.4 # via virtualenv +babel==2.9.1 + # via sphinx +beautifulsoup4==4.10.0 + # via pydata-sphinx-theme bump2version==1.0.1 # via -r requirements.in cartopy==0.19.0.post1 # via -r requirements.in +certifi==2021.10.8 + # via requests cffi==1.15.0 # via cryptography cfgv==3.2.0 @@ -20,6 +28,8 @@ chardet==4.0.0 # via # pdfminer.six # pdfx +charset-normalizer==2.0.7 + # via requests click==8.0.0 # via pip-tools cryptography==35.0.0 @@ -28,19 +38,28 @@ cycler==0.10.0 # via matplotlib distlib==0.3.1 # via virtualenv +docutils==0.17.1 + # via + # pydata-sphinx-theme + # sphinx filelock==3.0.12 # via virtualenv identify==2.2.2 # via pre-commit -importlib-metadata==3.9.0 - # via - # pep517 - # pre-commit - # virtualenv +idna==3.3 + # via requests +imagesize==1.2.0 + # via sphinx +jinja2==3.0.2 + # via sphinx kiwisolver==1.3.1 # via matplotlib +markupsafe==2.0.1 + # via jinja2 matplotlib==3.4.2 # via -r requirements.in +mpl-sphinx-theme==0.0.6 + # via -r requirements.in nodeenv==1.5.0 # via pre-commit numpy==1.19.5 @@ -48,6 +67,8 @@ numpy==1.19.5 # cartopy # matplotlib # scipy +packaging==21.2 + # via sphinx pdfminer.six==20201018 # via pdfx pdfx==1.4.1 @@ -62,14 +83,24 @@ pre-commit==2.11.1 # via -r requirements.in pycparser==2.20 # via cffi +pydata-sphinx-theme==0.7.1 + # via mpl-sphinx-theme +pygments==2.10.0 + # via sphinx pyparsing==2.4.7 - # via matplotlib + # via + # matplotlib + # packaging pyshp==2.1.3 # via cartopy python-dateutil==2.8.1 # via matplotlib +pytz==2021.3 + # via babel pyyaml==5.4.1 # via pre-commit +requests==2.26.0 + # via sphinx scipy==1.5.4 # via -r requirements.in shapely==1.7.1 @@ -79,20 +110,37 @@ six==1.15.0 # cycler # python-dateutil # virtualenv +snowballstemmer==2.1.0 + # via sphinx sortedcontainers==2.4.0 # via pdfminer.six +soupsieve==2.3 + # via beautifulsoup4 +sphinx==4.2.0 + # via + # -r requirements.in + # pydata-sphinx-theme +sphinxcontrib-applehelp==1.0.2 + # via sphinx +sphinxcontrib-devhelp==1.0.2 + # via sphinx +sphinxcontrib-htmlhelp==2.0.0 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 + # via sphinx toml==0.10.2 # via # pep517 # pre-commit -typing-extensions==3.7.4.3 - # via importlib-metadata +urllib3==1.26.7 + # via requests virtualenv==20.4.3 # via pre-commit -zipp==3.4.1 - # via - # importlib-metadata - # pep517 # The following packages are considered to be unsafe in a requirements file: # pip +# setuptools