.. _steps_needed: .. _installation: Install Sphinx and Myst ============= To deploy this guide from `coderrefinery `_ , follow these steps... **A. Install Sphinx.** `sphinx-doc.org `_ .. code-block:: python Win: pip intall -U sphinx Linux: apt-get install python3-sphinx .. code-block:: python Mac (MiniConda): curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh bash Miniconda3-latest-MacOSX-x86_64.sh Test Environment: conda info --envs conda env list Turn Conda Off / On: conda deactivate conda activate Create Environment: conda create --name Sphinx condo activate Sphinx Install Sphinx from Conda-Forge: conda install -c conda-forge sphinx conda list -n sphinx Install Sphinx Conda Packages: conda install -c conda-forge sphinx sphinx_rtd_theme sphinx_copybutton myst_parser sphinx_design myst-nb sphinx-tabs Check version: .. code-block:: python sphinx-build --version **1. Install support packages from terminal.** .. code-block:: python pip install sphinx_rtd_theme pip install sphinx_copybutton pip install myst_parser pip install sphinx_design pip install pip install myst-nb pip install sphinx-tabs | - **Sphinx_rtd_theme** is the current blue and yellow theme provided by 'ReadtheDocs'. | - **Copybutton** allows us to copy code from code blocks. | - **Myst_parser** allows us to use markdown instead of rst. | Myst parser comes with its own extensions, such as 'Code' and 'Colon Fence' for Admonitions. | - **Sphinx_design** allow for use of grids and cards in a document. | - **Myst_NB** allows for integration of Jupyter Notebook `Myst-nb `_ | - **Sphinx-tabs** is useful for allowing virtual tabs within a page (ie. Linux | win | Mac). B. Install Pycharm or VSCode to view .rst files and to create .md markdown files. | **2.** Modify **CONF.PY** | 2a. After generating the template, in Conf.py, set the language. .. code-block:: python language = en | **2b.** Modify **conf.py**, look for **'html_theme'** and add: .. code-block:: python html_theme = 'sphinx_rtd_theme' .. image:: /Images/change_theme.png #### | **2c.** | Look for: | '# -- General configuration ------------------------------------------------' | and enable all pip installed extensions. .. code-block:: python extensions = [ 'sphinx.ext.autodoc', 'sphinx_copybutton', 'sphinx.ext.autosectionlabel', 'myst_parser', 'sphinx_design' 'sphinx-tabs' ] myst_enable_extensions = [ "colon_fence", "html_image" ] | **4c. Seperately, enable myst extensions, as shown above.** **4. Add and Update .yml file for gitpages.** | Create a workflow/yaml file. This can be done in our repo using the 'add' file button. | or we can do so locally. .. code-block:: python .github/workflows/docmentation.yaml .. image:: /Images/workflow-yaml.png The contents of the yaml file must include commands to install the extensions. .. code-block:: python name: Docs on: [push, pull_request, workflow_dispatch] permissions: contents: write jobs: docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v3 - name: Install dependencies run: | pip install sphinx sphinx_rtd_theme pip install myst-parser pip install sphinx_copybutton pip install sphinx_design - name: Sphinx build run: | sphinx-build doc _build - name: Deploy uses: peaceiris/actions-gh-pages@v3 if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} with: publish_branch: gh-pages github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: _build/ force_orphan: true Above, we see that there is a 'pip install extension' command for every extension we deploy. #### | The above yaml file will respond to a push event to git and use workflows > Actions to create a gh-branch. | Once that branch is created, we go to Settings > Pages and set the repo to 'gh-pages'. .. raw:: html .. attention:: Warning: Mac Machines hide files starting with '.' To make the invisible, visible, enter the following into the terminal. .. code-block:: python Type defaults write com.apple.Finder AppleShowAllFiles true Type killall Finder #### .. In essence these will act as subsections. Build ~~~~~ This is the command to build using Coderefinery's setup. .. code-block:: python sphinx-build doc _build We can use auto build to detect changes in code and trigger the build cycle on saving. .. code-block:: python pip install spinx-autobuild or if using python3: python3 -m pip install sphinx-autobuild Run using: sphinx-autobuild doc _build Point Browser at: http://127.0.0.1:8000 Changes will be autoloaded in the browser upon completion. **Test HTML pages TEST links** Inside the cloned repository, check the integrity of all internal and external links: .. code-block:: sphinx-build doc -W -b linkcheck -d _build/doctrees _build/html