Describe the bug
Documentation on docs.geohealthcheck.org does not show GHC Python API content.
This is due to a failure during documentation build on RTD.
WARNING: autodoc: failed to import module 'check' from module 'GeoHealthCheck'; the following exception was raised:
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/geohealthcheck/envs/latest/lib/python3.7/site-packages/sphinx/ext/autodoc/importer.py", line 66, in import_module
return importlib.import_module(modname)
File "/home/docs/checkouts/readthedocs.org/user_builds/geohealthcheck/envs/latest/lib/python3.7/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/docs/checkouts/readthedocs.org/user_builds/geohealthcheck/checkouts/latest/GeoHealthCheck/__init__.py", line 30, in <module>
from util import read
File "/home/docs/checkouts/readthedocs.org/user_builds/geohealthcheck/checkouts/latest/GeoHealthCheck/util.py", line 42, in <module>
from init import App
File "/home/docs/checkouts/readthedocs.org/user_builds/geohealthcheck/checkouts/latest/GeoHealthCheck/init.py", line 129, in <module>
App.init()
File "/home/docs/checkouts/readthedocs.org/user_builds/geohealthcheck/checkouts/latest/GeoHealthCheck/init.py", line 70, in init
app.config.from_pyfile('../instance/config_site.py')
File "/home/docs/checkouts/readthedocs.org/user_builds/geohealthcheck/envs/latest/lib/python3.7/site-packages/flask/config.py", line 131, in from_pyfile
with open(filename, mode="rb") as config_file:
FileNotFoundError: [Errno 2] Unable to load configuration file (No such file or directory): '/home/docs/checkouts/readthedocs.org/user_builds/geohealthcheck/checkouts/latest/GeoHealthCheck/../instance/config_site.py'
Context (please complete the following information):
OS: Any
Browser: N.A.
Browser Version: N.A.
Python Version: 3.7
GeoHealthCheck Version: latest as on May 1, 2021
If running with Docker: no problem
Additional context
Problem seems to be due to the file GeoHealthCheck/app.py being loaded in RTD. This triggers App.init() being called.
The following lines in that file show the problem (and potential solution):
# in App.init():
.
.
app = Flask(__name__)
# Read and override configs
app.config.from_pyfile('config_main.py')
app.config.from_pyfile('../instance/config_site.py')
app.config.from_envvar('GHC_SETTINGS', silent=True)
'../instance/config_site.py' is only present in installed/deployed GHC instances. Hence the problem is not triggered for e.g. the 'demo' site.
Proposed Solution
Ignore error if '../instance/config_site.py' not present by using silent=True and issue just a warning, like:
config_file = '../instance/config_site.py'
if not app.config.from_pyfile(config_file, silent=True):
LOGGER.warning('Config file: %s not found - ignoring' % config_file)
or better: depend on os.environ['SPHINX_BUILD'] ( is '1' during doc builds)
as for real deployments not finding config file is really a fatal error:
Describe the bug Documentation on docs.geohealthcheck.org does not show GHC Python API content. This is due to a failure during documentation build on RTD.
To Reproduce
Expected Behaviour Show API documentation like on demo site: https://demo.geohealthcheck.org/static/docs/plugins.html#plugin-api-docs
Screenshots or Logfiles The RTD Build logfile, e.g. https://readthedocs.org/api/v2/build/13646914.txt shows this recurring error:
Context (please complete the following information):
If running with Docker: no problem
Additional context Problem seems to be due to the file
GeoHealthCheck/app.py
being loaded in RTD. This triggersApp.init()
being called. The following lines in that file show the problem (and potential solution):'../instance/config_site.py'
is only present in installed/deployed GHC instances. Hence the problem is not triggered for e.g. the 'demo' site.Proposed Solution
Ignore error if
'../instance/config_site.py'
not present by usingsilent=True
and issue just a warning, like:or better: depend on
os.environ['SPHINX_BUILD']
( is'1'
during doc builds) as for real deployments not finding config file is really a fatal error: