Read the Docs build information Build id: 1678168 Project: invoca-developer-docs Version: 2022-08-01 Commit: b8a7e0d90d1d82dbb2be590b2c371aac8ad6924b Date: 2023-08-23T14:10:18.137357Z State: finished Success: False [rtd-command-info] start-time: 2023-08-23T14:10:47.141027Z, end-time: 2023-08-23T14:10:47.809698Z, duration: 0, exit-code: 0 git clone --depth 1 https://github.com/Invoca/developer-docs.git . Cloning into '.'... [rtd-command-info] start-time: 2023-08-23T14:10:48.379429Z, end-time: 2023-08-23T14:10:49.068922Z, duration: 0, exit-code: 0 git fetch origin --force --prune --prune-tags --depth 50 refs/heads/2022-08-01:refs/remotes/origin/2022-08-01 [rtd-command-info] start-time: 2023-08-23T14:10:49.616016Z, end-time: 2023-08-23T14:10:49.708799Z, duration: 0, exit-code: 0 git checkout --force origin/2022-08-01 Note: switching to 'origin/2022-08-01'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at b8a7e0d Merge pull request #327 from Invoca/STORY-15723_remove_beta_label_from_cipapi [rtd-command-info] start-time: 2023-08-23T14:10:50.345380Z, end-time: 2023-08-23T14:10:50.406005Z, duration: 0, exit-code: 0 git clean -d -f -f [rtd-command-info] start-time: 2023-08-23T14:10:53.201765Z, end-time: 2023-08-23T14:10:56.882965Z, duration: 3, exit-code: 0 python2.7 -mvirtualenv $READTHEDOCS_VIRTUALENV_PATH New python executable in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/bin/python2.7 Also creating executable in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/bin/python Installing setuptools, pip, wheel... done. [rtd-command-info] start-time: 2023-08-23T14:10:57.407386Z, end-time: 2023-08-23T14:10:59.338221Z, duration: 1, exit-code: 0 python -m pip install --upgrade --no-cache-dir pip setuptools DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality. Requirement already up-to-date: pip in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (20.3.4) Requirement already up-to-date: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (44.1.1) [rtd-command-info] start-time: 2023-08-23T14:11:00.186439Z, end-time: 2023-08-23T14:11:09.691000Z, duration: 9, exit-code: 0 python -m pip install --upgrade --no-cache-dir pillow mock==1.0.1 alabaster>=0.7,<0.8,!=0.7.5 commonmark==0.9.1 recommonmark==0.5.0 sphinx<2 sphinx-rtd-theme<0.5 readthedocs-sphinx-ext<2.3 jinja2<3.1.0 DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality. Collecting pillow Downloading Pillow-6.2.2-cp27-cp27mu-manylinux1_x86_64.whl (2.1 MB) Collecting mock==1.0.1 Downloading mock-1.0.1.tar.gz (818 kB) Collecting alabaster!=0.7.5,<0.8,>=0.7 Downloading alabaster-0.7.12-py2.py3-none-any.whl (14 kB) Collecting commonmark==0.9.1 Downloading commonmark-0.9.1-py2.py3-none-any.whl (51 kB) Collecting recommonmark==0.5.0 Downloading recommonmark-0.5.0-py2.py3-none-any.whl (9.8 kB) Collecting sphinx<2 Downloading Sphinx-1.8.6-py2.py3-none-any.whl (3.1 MB) Collecting sphinx-rtd-theme<0.5 Downloading sphinx_rtd_theme-0.4.3-py2.py3-none-any.whl (6.4 MB) Collecting readthedocs-sphinx-ext<2.3 Downloading readthedocs_sphinx_ext-2.2.2-py2.py3-none-any.whl (11 kB) Collecting jinja2<3.1.0 Downloading Jinja2-2.11.3-py2.py3-none-any.whl (125 kB) Collecting future>=0.14.0; python_version < "3" Downloading future-0.18.3.tar.gz (840 kB) Collecting docutils>=0.11 Downloading docutils-0.18.1-py2.py3-none-any.whl (570 kB) Collecting snowballstemmer>=1.1 Downloading snowballstemmer-2.2.0-py2.py3-none-any.whl (93 kB) Collecting imagesize Downloading imagesize-1.4.1-py2.py3-none-any.whl (8.8 kB) Collecting six>=1.5 Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting Pygments>=2.0 Downloading Pygments-2.5.2-py2.py3-none-any.whl (896 kB) Collecting babel!=2.0,>=1.3 Downloading Babel-2.9.1-py2.py3-none-any.whl (8.8 MB) Collecting requests>=2.0.0 Downloading requests-2.27.1-py2.py3-none-any.whl (63 kB) Collecting typing; python_version < "3.5" Downloading typing-3.10.0.0-py2-none-any.whl (26 kB) Collecting packaging Downloading packaging-20.9-py2.py3-none-any.whl (40 kB) Collecting sphinxcontrib-websupport Downloading sphinxcontrib_websupport-1.1.2-py2.py3-none-any.whl (39 kB) Requirement already satisfied, skipping upgrade: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx<2) (44.1.1) Collecting MarkupSafe>=0.23 Downloading MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl (24 kB) Collecting pytz>=2015.7 Downloading pytz-2023.3-py2.py3-none-any.whl (502 kB) Collecting urllib3<1.27,>=1.21.1 Downloading urllib3-1.26.16-py2.py3-none-any.whl (143 kB) Collecting certifi>=2017.4.17 Downloading certifi-2021.10.8-py2.py3-none-any.whl (149 kB) Collecting chardet<5,>=3.0.2; python_version < "3" Downloading chardet-4.0.0-py2.py3-none-any.whl (178 kB) Collecting idna<3,>=2.5; python_version < "3" Downloading idna-2.10-py2.py3-none-any.whl (58 kB) Collecting pyparsing>=2.0.2 Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) Building wheels for collected packages: mock, future Building wheel for mock (setup.py): started Building wheel for mock (setup.py): finished with status 'done' Created wheel for mock: filename=mock-1.0.1-py2-none-any.whl size=23754 sha256=a43eef96aa0e470114d83be782eb428d66b99a21631baf5f76c90be1e6c3c971 Stored in directory: /tmp/pip-ephem-wheel-cache-6owEwe/wheels/ad/62/e0/a06cc957652749e64c7904e899eca3ecb2ec47c60d52653660 Building wheel for future (setup.py): started Building wheel for future (setup.py): finished with status 'done' Created wheel for future: filename=future-0.18.3-py2-none-any.whl size=503537 sha256=8984c5b86e1e1137ce54617127ef9a40705946e39c7339fed5e9b692d2af0ad6 Stored in directory: /tmp/pip-ephem-wheel-cache-6owEwe/wheels/f4/cf/68/6299b44fe0ce2dcccb3e9de34443da085c6da93a204ef3130f Successfully built mock future Installing collected packages: pillow, mock, alabaster, future, commonmark, snowballstemmer, imagesize, six, Pygments, pytz, babel, urllib3, certifi, chardet, idna, requests, typing, pyparsing, packaging, MarkupSafe, jinja2, sphinxcontrib-websupport, docutils, sphinx, recommonmark, sphinx-rtd-theme, readthedocs-sphinx-ext ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts. sphinx 1.8.6 requires docutils<0.18,>=0.11, but you'll have docutils 0.18.1 which is incompatible. Successfully installed MarkupSafe-1.1.1 Pygments-2.5.2 alabaster-0.7.12 babel-2.9.1 certifi-2021.10.8 chardet-4.0.0 commonmark-0.9.1 docutils-0.18.1 future-0.18.3 idna-2.10 imagesize-1.4.1 jinja2-2.11.3 mock-1.0.1 packaging-20.9 pillow-6.2.2 pyparsing-2.4.7 pytz-2023.3 readthedocs-sphinx-ext-2.2.2 recommonmark-0.5.0 requests-2.27.1 six-1.16.0 snowballstemmer-2.2.0 sphinx-1.8.6 sphinx-rtd-theme-0.4.3 sphinxcontrib-websupport-1.1.2 typing-3.10.0.0 urllib3-1.26.16 [rtd-command-info] start-time: 2023-08-23T14:11:10.763490Z, end-time: 2023-08-23T14:11:19.962840Z, duration: 9, exit-code: 0 python -m pip install --exists-action=w --no-cache-dir -r requirements.txt DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality. Requirement already satisfied: sphinx in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from -r requirements.txt (line 1)) (1.8.6) Requirement already satisfied: sphinx-rtd-theme in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from -r requirements.txt (line 2)) (0.4.3) Collecting sphinxcontrib-httpdomain Downloading sphinxcontrib_httpdomain-1.8.1-py2.py3-none-any.whl (25 kB) Obtaining recommonmark from git+https://github.com/rtfd/recommonmark.git#egg=recommonmark (from -r requirements.txt (line 4)) Cloning https://github.com/rtfd/recommonmark.git to /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/src/recommonmark Running command git clone -q https://github.com/rtfd/recommonmark.git /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/src/recommonmark Collecting PyYAML Downloading PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl (574 kB) Collecting ipdb Downloading ipdb-0.13.13.tar.gz (17 kB) Installing build dependencies: started Installing build dependencies: finished with status 'done' WARNING: Missing build requirements in pyproject.toml for ipdb from https://files.pythonhosted.org/packages/3d/1b/7e07e7b752017f7693a0f4d41c13e5ca29ce8cbcfdcc1fd6c4ad8c0a27a0/ipdb-0.13.13.tar.gz#sha256=e3ac6018ef05126d442af680aad863006ec19d02290561ac88b8b1c0b0cfc726 (from -r requirements.txt (line 6)). WARNING: The project does not specify a build backend, and pip cannot fall back to setuptools without 'wheel'. Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Installing backend dependencies: started Installing backend dependencies: finished with status 'done' Preparing wheel metadata: started Preparing wheel metadata: finished with status 'done' Requirement already satisfied: snowballstemmer>=1.1 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (2.2.0) Requirement already satisfied: imagesize in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (1.4.1) Requirement already satisfied: six>=1.5 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (1.16.0) Requirement already satisfied: Pygments>=2.0 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (2.5.2) Requirement already satisfied: babel!=2.0,>=1.3 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (2.9.1) Requirement already satisfied: requests>=2.0.0 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (2.27.1) Requirement already satisfied: typing; python_version < "3.5" in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (3.10.0.0) Requirement already satisfied: packaging in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (20.9) Requirement already satisfied: Jinja2>=2.3 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (2.11.3) Requirement already satisfied: sphinxcontrib-websupport in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (1.1.2) Collecting docutils<0.18,>=0.11 Downloading docutils-0.17.1-py2.py3-none-any.whl (575 kB) Requirement already satisfied: alabaster<0.8,>=0.7 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (0.7.12) Requirement already satisfied: setuptools in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from sphinx->-r requirements.txt (line 1)) (44.1.1) Requirement already satisfied: commonmark>=0.8.1 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from recommonmark->-r requirements.txt (line 4)) (0.9.1) Collecting decorator<5.0.0; python_version == "2.7" Downloading decorator-4.4.2-py2.py3-none-any.whl (9.2 kB) Collecting ipython<6.0.0,>=5.1.0; python_version == "2.7" Downloading ipython-5.10.0-py2-none-any.whl (760 kB) Collecting toml>=0.10.2; python_version == "2.7" Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB) Collecting pathlib; python_version == "2.7" Downloading pathlib-1.0.1.tar.gz (49 kB) Requirement already satisfied: pytz>=2015.7 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from babel!=2.0,>=1.3->sphinx->-r requirements.txt (line 1)) (2023.3) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from requests>=2.0.0->sphinx->-r requirements.txt (line 1)) (1.26.16) Requirement already satisfied: certifi>=2017.4.17 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from requests>=2.0.0->sphinx->-r requirements.txt (line 1)) (2021.10.8) Requirement already satisfied: chardet<5,>=3.0.2; python_version < "3" in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from requests>=2.0.0->sphinx->-r requirements.txt (line 1)) (4.0.0) Requirement already satisfied: idna<3,>=2.5; python_version < "3" in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from requests>=2.0.0->sphinx->-r requirements.txt (line 1)) (2.10) Requirement already satisfied: pyparsing>=2.0.2 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from packaging->sphinx->-r requirements.txt (line 1)) (2.4.7) Requirement already satisfied: MarkupSafe>=0.23 in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from Jinja2>=2.3->sphinx->-r requirements.txt (line 1)) (1.1.1) Requirement already satisfied: future>=0.14.0; python_version < "3" in /home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages (from commonmark>=0.8.1->recommonmark->-r requirements.txt (line 4)) (0.18.3) Collecting backports.shutil-get-terminal-size; python_version == "2.7" Downloading backports.shutil_get_terminal_size-1.0.0-py2.py3-none-any.whl (6.5 kB) Collecting pathlib2; python_version == "2.7" or python_version == "3.3" Downloading pathlib2-2.3.7.post1-py2.py3-none-any.whl (18 kB) Collecting prompt-toolkit<2.0.0,>=1.0.4 Downloading prompt_toolkit-1.0.18-py2-none-any.whl (245 kB) Collecting pexpect; sys_platform != "win32" Downloading pexpect-4.8.0-py2.py3-none-any.whl (59 kB) Collecting simplegeneric>0.8 Downloading simplegeneric-0.8.1.zip (12 kB) Collecting traitlets>=4.2 Downloading traitlets-4.3.3-py2.py3-none-any.whl (75 kB) Collecting pickleshare Downloading pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB) Collecting scandir; python_version < "3.5" Downloading scandir-1.10.0.tar.gz (33 kB) Collecting wcwidth Downloading wcwidth-0.2.6-py2.py3-none-any.whl (29 kB) Collecting ptyprocess>=0.5 Downloading ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB) Collecting ipython-genutils Downloading ipython_genutils-0.2.0-py2.py3-none-any.whl (26 kB) Collecting enum34; python_version == "2.7" Downloading enum34-1.1.10-py2-none-any.whl (11 kB) Collecting backports.functools-lru-cache>=1.2.1; python_version < "3.2" Downloading backports.functools_lru_cache-1.6.6-py2.py3-none-any.whl (5.9 kB) Building wheels for collected packages: ipdb, pathlib, simplegeneric, scandir Building wheel for ipdb (PEP 517): started Building wheel for ipdb (PEP 517): finished with status 'done' Created wheel for ipdb: filename=ipdb-0.13.13-py2-none-any.whl size=12115 sha256=0d914b26a7c5211c5eea50f91895282d32734e9e48ad73108c95860543c4d7a3 Stored in directory: /tmp/pip-ephem-wheel-cache-IpRBVj/wheels/bf/cd/63/5de0d42cb785212814a642aba2c294e13957860cd41eab3377 Building wheel for pathlib (setup.py): started Building wheel for pathlib (setup.py): finished with status 'done' Created wheel for pathlib: filename=pathlib-1.0.1-py2-none-any.whl size=14347 sha256=ac3ff72c054b2e2b7b8ee23f9faafa5bf880f7b3c441be5921f522ba7cff33e1 Stored in directory: /tmp/pip-ephem-wheel-cache-IpRBVj/wheels/46/37/4f/332bcea757140ff34e14dec7be65931f544c7ac94eb671ae9f Building wheel for simplegeneric (setup.py): started Building wheel for simplegeneric (setup.py): finished with status 'done' Created wheel for simplegeneric: filename=simplegeneric-0.8.1-py2-none-any.whl size=5075 sha256=10307c58e3d2e592e18413db025ed4ad902cb76a775b9067d16a9ae7e27d8b31 Stored in directory: /tmp/pip-ephem-wheel-cache-IpRBVj/wheels/1b/83/23/9d866729c0090bfc62d03a5bd43080fb07a5f4fad10a09399a Building wheel for scandir (setup.py): started Building wheel for scandir (setup.py): finished with status 'done' Created wheel for scandir: filename=scandir-1.10.0-cp27-cp27mu-linux_x86_64.whl size=41679 sha256=7a38fdbe06d2b7641e30d880c10d82493cd4997f88d5c4286bbfbf7eed945607 Stored in directory: /tmp/pip-ephem-wheel-cache-IpRBVj/wheels/58/2c/26/52406f7d1f19bcc47a6fbd1037a5f293492f5cf1d58c539edb Successfully built ipdb pathlib simplegeneric scandir Installing collected packages: sphinxcontrib-httpdomain, docutils, recommonmark, PyYAML, decorator, backports.shutil-get-terminal-size, scandir, pathlib2, backports.functools-lru-cache, wcwidth, prompt-toolkit, ptyprocess, pexpect, simplegeneric, ipython-genutils, enum34, traitlets, pickleshare, ipython, toml, pathlib, ipdb Attempting uninstall: docutils Found existing installation: docutils 0.18.1 Uninstalling docutils-0.18.1: Successfully uninstalled docutils-0.18.1 Attempting uninstall: recommonmark Found existing installation: recommonmark 0.5.0 Uninstalling recommonmark-0.5.0: Successfully uninstalled recommonmark-0.5.0 Running setup.py develop for recommonmark Successfully installed PyYAML-5.4.1 backports.functools-lru-cache-1.6.6 backports.shutil-get-terminal-size-1.0.0 decorator-4.4.2 docutils-0.17.1 enum34-1.1.10 ipdb-0.13.13 ipython-5.10.0 ipython-genutils-0.2.0 pathlib-1.0.1 pathlib2-2.3.7.post1 pexpect-4.8.0 pickleshare-0.7.5 prompt-toolkit-1.0.18 ptyprocess-0.7.0 recommonmark scandir-1.10.0 simplegeneric-0.8.1 sphinxcontrib-httpdomain-1.8.1 toml-0.10.2 traitlets-4.3.3 wcwidth-0.2.6 [rtd-command-info] start-time: 2023-08-23T14:11:28.427724Z, end-time: 2023-08-23T14:11:28.481541Z, duration: 0, exit-code: 0 cat source/conf.py # -*- coding: utf-8 -*- # # invoca documentation build configuration file, created by # sphinx-quickstart on Fri May 9 18:53:36 2014. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys import os import re import pickle import types from datetime import datetime # append the current folder to the Python class path sys.path.append(os.getcwd()) # Invoca py files from doc_versions import * # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ------------------------------------------------ # Determine if this file being executed on read the docs or locally on_rtd = os.environ.get('READTHEDOCS', None) == 'True' # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. # these templates will only be used we building locally, they will be ignored by RTD templates_path = ['_templates'] # The suffix of source filenames. source_suffix = ['.rst'] # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Invoca' copyright = u'{}, Invoca'.format(datetime.now().year) # The full version, including alpha/beta/rc tags. version = COMMON_VERSION release = COMMON_VERSION if on_rtd: custom_template_path = './custom_templates/' source_path = './' else: custom_template_path = './source/custom_templates/' source_path = './source/' """ def build_template(): Replaces directives with the contents of a custom template. Substitutes values passed to the directive into the template. Example directive (NOTE: there are 2 new lines at the end!): .. api_endpoint:: :verb: GET :path: /advertiser_campaigns :description: Get all campaigns for an Advertiser :page: get_advertiser_campaigns Example template:
:description
""" def build_template(match, template_file_name): lines = match.group().splitlines() # remove the directive line (e.g. ".. api_endpoint::" shown above) lines.pop(0) # extract the replacement keys and values (e.g. ":verb: GET") template_vars = {} for line in lines: if not line.strip(): continue args = line.strip().split(' ') key = args.pop(0) template_vars[key] = ' '.join(args) # open the template and find/replace the keys with the values template = open('{}{}'.format(custom_template_path, template_file_name), 'r').read() for search, replacement in template_vars.items(): if re.search(search, template): template = template.replace(search, replacement) else: raise Exception("Template: [" + template + "] does not have replacement key " + search) # raise error if we have extra or not enough keys remaining_keys = re.search(r":[a-zA-Z_]+:", template) if not remaining_keys: return template else: raise Exception("Template: [" + template + "] has and unreplaced key " + remaining_keys.group()) # Use regex to find all directives (matching structure of "Example directive" above) # in the current file's source def find_and_replace_templates(source, directive_name, template_file_name): return re.sub( re.compile("^ *\.\. {}::$\n(^\s+:\w+:\s+.*$\n)+^$(?:\n)?".format(directive_name), re.MULTILINE), lambda match: build_template(match, template_file_name), source) def build_api_endpoint_template(source): return find_and_replace_templates(source, "api_endpoint", "_api_endpoint.txt") def build_swagger_ui_template(source): return find_and_replace_templates(source, "swagger_ui", "_swagger_ui.txt") # ================== # Callback function: # ================== # Runs upon completion of "source-read" event. Substitutes :my_var" variables in custom templates def source_handler(app, docname, source): # Build templates in custom_templates/ source[0] = build_api_endpoint_template(source[0]) source[0] = build_swagger_ui_template(source[0]) # Replace @@API_VERSION in templates with strings from doc_versions.py for symbol_string, version_string in VERSIONS.items(): source[0] = re.sub(symbol_string, version_string, source[0]) # Replace all occurences of @@ variables in partials (.rst files beginning w/ an underscore) def build_partials(app, env, docnames): tmp_files = [] for docname in env.found_docs: if re.search(r"/_[^/]+$", docname) and not re.search('custom_template', docname): # Replace @@API_VERSION with strings in doc_versions.py partial = open('{}{}{}'.format(source_path, docname, '.rst'), 'r').read() for symbol_string, version_string in VERSIONS.items(): partial = re.sub(symbol_string, version_string, partial) new_docname = docname + '.tmp' tmp_files.append('{}{}'.format(source_path, new_docname)) open('{}{}'.format(source_path, new_docname), 'w').write(partial) INVOCA_CSS = ''' ''' def update_body(app, pagename, templatename, context, doctree): if app.builder.name in ['readthedocssinglehtmllocalmedia', 'readthedocs', 'readthedocsdirhtml']: # check if we have patched it already, if so, don't bother if hasattr(app.builder.templates, 'render') and \ hasattr(app.builder.templates.render, '_patched') and \ not hasattr(app.builder.templates.render, '_invoca_patched'): print('Installing monkey patch to get our CSS in the proper location') # Janky monkey patch of template rendering to add our content old_render = app.builder.templates.render def invoca_rtd_render(self, template, render_context): """ Add our CSS after the RTD CSS """ # call original render function content = old_render(template, render_context) # find our insertion point in the HTML end_body = content.lower().find('') # Insert our content at the end of the head. if end_body != -1: content = \ content[:end_body] + \ INVOCA_CSS.format(render_context['MEDIA_URL'], render_context['current_version'].lower()) + \ content[end_body:] else: app.debug("File doesn't look like HTML. Skipping Invoca content addition") return content # we have to set two patched flags because RTD ALSO monkey patches this method invoca_rtd_render._patched = True invoca_rtd_render._invoca_patched = True app.builder.templates.render = types.MethodType(invoca_rtd_render, app.builder.templates) # =========================== # ENTRY POINT to build script # =========================== def setup(app): app.connect('env-before-read-docs', build_partials) app.connect('source-read', source_handler) app.connect('html-page-context', update_body) app.add_js_file('js/custom.js') app.add_js_file('https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js') app.add_js_file('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js') app.add_js_file('js/swagger-ui/swagger-initializer.js') app.add_js_file('js/swagger-ui/swagger-ui-bundle.js') app.add_js_file('js/swagger-ui/swagger-ui-bundle.js.map') # This CSS is added BEFORE the RTD CSS, so it doesn't allow us to override their CSS # We re-add our CSS AFTER the RTD CSS using the update_body method. We have left this # in place here so the CSS will load when you build and view locally instead of on RTD app.add_css_file('css/custom.css') app.add_css_file('css/swagger-ui/index.css') app.add_css_file('css/swagger-ui/swagger-ui.css') app.add_css_file('css/swagger-ui/swagger-ui.css.map') # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all # documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # When building locally, the theme is not automatically imported # When we're not on read the docs, we have to import it and set the theme manually. if not on_rtd: import sphinx_rtd_theme html_theme = 'sphinx_rtd_theme' html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] html_context = {} # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. html_theme_options = {"nosidebar": True, "display_version": False, "logo_only": True} # It seems that ReadTheDocs ignores html_theme_options above, # so here we are expanding the options directly into the context if on_rtd: for key in html_theme_options: html_context['theme_' + key] = html_theme_options[key] # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". html_title = '' # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. html_favicon = '_static/favicon.ico' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # The name of an image file (relative to this directory) to place at the top # of the sidebar. html_logo = '_static/logo.png' # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. #html_extra_path = [] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. html_show_sphinx = False # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'invocadoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ ('index', 'invoca.tex', u'invoca Documentation', u'invoca', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. latex_logo = '_static/logo.png' # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'invoca', u'invoca Documentation', [u'invoca'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'invoca', u'invoca Documentation', u'invoca', 'invoca', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False rst_prolog = """ .. title:: Invoca Developer Portal .. raw:: html
Return to the Invoca Platform
""" ########################################################################### # auto-created readthedocs.org specific configuration # ########################################################################### # # The following code was added during an automated build on readthedocs.org # It is auto created and injected for every build. The result is based on the # conf.py.tmpl file found in the readthedocs.org codebase: # https://github.com/rtfd/readthedocs.org/blob/main/readthedocs/doc_builder/templates/doc_builder/conf.py.tmpl # # Note: this file shouldn't rely on extra dependencies. import importlib import sys import os.path # Borrowed from six. PY3 = sys.version_info[0] == 3 string_types = str if PY3 else basestring from sphinx import version_info # Get suffix for proper linking to GitHub # This is deprecated in Sphinx 1.3+, # as each page can have its own suffix if globals().get('source_suffix', False): if isinstance(source_suffix, string_types): SUFFIX = source_suffix elif isinstance(source_suffix, (list, tuple)): # Sphinx >= 1.3 supports list/tuple to define multiple suffixes SUFFIX = source_suffix[0] elif isinstance(source_suffix, dict): # Sphinx >= 1.8 supports a mapping dictionary for multiple suffixes SUFFIX = list(source_suffix.keys())[0] # make a ``list()`` for py2/py3 compatibility else: # default to .rst SUFFIX = '.rst' else: SUFFIX = '.rst' # Add RTD Static Path. Add to the end because it overwrites previous files. if not 'html_static_path' in globals(): html_static_path = [] if os.path.exists('_static'): html_static_path.append('_static') #Add project information to the template context. context = { 'html_theme': html_theme, 'current_version': "2022-08-01", 'version_slug': "2022-08-01", 'MEDIA_URL': "https://media.readthedocs.com/media/", 'STATIC_URL': "https://assets.readthedocs.com/", 'PRODUCTION_DOMAIN': "readthedocs.com", 'proxied_static_path': "/_/static/", 'versions': [ ("latest", "/en/latest/"), ("2022-08-01", "/en/2022-08-01/"), ("2022-03-01", "/en/2022-03-01/"), ("2020-10-01", "/en/2020-10-01/"), ("2019-05-01", "/en/2019-05-01/"), ("2019-02-01", "/en/2019-02-01/"), ("2018-11-01", "/en/2018-11-01/"), ("2018-05-01", "/en/2018-05-01/"), ("2018-02-01", "/en/2018-02-01/"), ("2017-09-01", "/en/2017-09-01/"), ("2017-04-01", "/en/2017-04-01/"), ("2017-02-01", "/en/2017-02-01/"), ("2016-10-01", "/en/2016-10-01/"), ("2016-08-22", "/en/2016-08-22/"), ("2016-08-01", "/en/2016-08-01/"), ("2016-07-01", "/en/2016-07-01/"), ("2016-06-12", "/en/2016-06-12/"), ("2016-06-01", "/en/2016-06-01/"), ("2016-05-01", "/en/2016-05-01/"), ("2016-03-01", "/en/2016-03-01/"), ("2016-02-01", "/en/2016-02-01/"), ("2016-01-25", "/en/2016-01-25/"), ("2015-12-10", "/en/2015-12-10/"), ], 'downloads': [ ("html", "//developers.invoca.net/_/downloads/en/2022-08-01/htmlzip/"), ], 'subprojects': [ ], 'slug': 'invoca-developer-docs', 'name': u'developer-docs', 'rtd_language': u'en', 'programming_language': u'words', 'canonical_url': '', 'analytics_code': 'None', 'single_version': False, 'conf_py_path': '/source/', 'api_host': 'https://readthedocs.com', 'github_user': 'Invoca', 'proxied_api_host': '/_', 'github_repo': 'developer-docs', 'github_version': '2022-08-01', 'display_github': True, 'bitbucket_user': 'None', 'bitbucket_repo': 'None', 'bitbucket_version': '2022-08-01', 'display_bitbucket': False, 'gitlab_user': 'None', 'gitlab_repo': 'None', 'gitlab_version': '2022-08-01', 'display_gitlab': False, 'READTHEDOCS': True, 'using_theme': (html_theme == "default"), 'new_theme': (html_theme == "sphinx_rtd_theme"), 'source_suffix': SUFFIX, 'ad_free': False, 'docsearch_disabled': False, 'user_analytics_code': '', 'global_analytics_code': 'UA-17997319-2', 'commit': 'b8a7e0d9', } # For sphinx >=1.8 we can use html_baseurl to set the canonical URL. # https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_baseurl if version_info >= (1, 8): if not globals().get('html_baseurl'): html_baseurl = context['canonical_url'] context['canonical_url'] = None if 'html_context' in globals(): for key in context: if key not in html_context: html_context[key] = context[key] else: html_context = context # Add custom RTD extension if 'extensions' in globals(): # Insert at the beginning because it can interfere # with other extensions. # See https://github.com/rtfd/readthedocs.org/pull/4054 extensions.insert(0, "readthedocs_ext.readthedocs") else: extensions = ["readthedocs_ext.readthedocs"] # Add External version warning banner to the external version documentation if 'branch' == 'external': extensions.insert(1, "readthedocs_ext.external_version_warning") readthedocs_vcs_url = 'None' readthedocs_build_url = 'https://readthedocs.com/projects/invoca-developer-docs/builds/1678168/' project_language = 'en' # User's Sphinx configurations language_user = globals().get('language', None) latex_engine_user = globals().get('latex_engine', None) latex_elements_user = globals().get('latex_elements', None) # Remove this once xindy gets installed in Docker image and XINDYOPS # env variable is supported # https://github.com/rtfd/readthedocs-docker-images/pull/98 latex_use_xindy = False chinese = any([ language_user in ('zh_CN', 'zh_TW'), project_language in ('zh_CN', 'zh_TW'), ]) japanese = any([ language_user == 'ja', project_language == 'ja', ]) if chinese: latex_engine = latex_engine_user or 'xelatex' latex_elements_rtd = { 'preamble': '\\usepackage[UTF8]{ctex}\n', } latex_elements = latex_elements_user or latex_elements_rtd elif japanese: latex_engine = latex_engine_user or 'platex' # Make sure our build directory is always excluded exclude_patterns = globals().get('exclude_patterns', []) exclude_patterns.extend(['_build']) [rtd-command-info] start-time: 2023-08-23T14:11:29.006068Z, end-time: 2023-08-23T14:11:29.305693Z, duration: 0, exit-code: 2 python -m sphinx -T -E -b html -d _build/doctrees -D language=en . $READTHEDOCS_OUTPUT/html Running Sphinx v1.8.6 Traceback (most recent call last): File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/sphinx/cmd/build.py", line 303, in build_main args.tags, args.verbosity, args.jobs, args.keep_going) File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/sphinx/application.py", line 201, in __init__ self.config = Config.read(self.confdir, confoverrides or {}, self.tags) File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/sphinx/config.py", line 203, in read namespace = eval_config_file(filename, tags) File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/sphinx/config.py", line 380, in eval_config_file raise ConfigError(msg % traceback.format_exc()) ConfigError: There is a programmable error in your configuration file: Traceback (most recent call last): File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/sphinx/config.py", line 368, in eval_config_file execfile_(filename, namespace) File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/sphinx/util/pycompat.py", line 150, in execfile_ exec_(code, _globals) File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/six.py", line 735, in exec_ exec("""exec _code_ in _globs_, _locs_""") File "", line 1, in File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/checkouts/2022-08-01/source/conf.py", line 503, in 'html_theme': html_theme, NameError: name 'html_theme' is not defined Configuration error: There is a programmable error in your configuration file: Traceback (most recent call last): File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/sphinx/config.py", line 368, in eval_config_file execfile_(filename, namespace) File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/sphinx/util/pycompat.py", line 150, in execfile_ exec_(code, _globals) File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/envs/2022-08-01/lib/python2.7/site-packages/six.py", line 735, in exec_ exec("""exec _code_ in _globs_, _locs_""") File "", line 1, in File "/home/docs/checkouts/readthedocs.org/user_builds/invoca-developer-docs/checkouts/2022-08-01/source/conf.py", line 503, in 'html_theme': html_theme, NameError: name 'html_theme' is not defined