|
13 | 13 | import os |
14 | 14 | import sys |
15 | 15 |
|
| 16 | +import better_apidoc |
16 | 17 | import hyperpyyaml |
| 18 | +from sphinx.ext.autodoc.mock import mock |
17 | 19 |
|
18 | 20 | sys.path.insert(-1, os.path.abspath("../")) |
19 | 21 |
|
|
69 | 71 |
|
70 | 72 | autodoc_default_options = {} |
71 | 73 |
|
72 | | -# Autodoc mock extra dependencies: |
73 | | -autodoc_mock_imports = [] |
| 74 | +# Autodoc mock extra dependencies -- doesn't work out of the box, because of better_apidoc. |
| 75 | +# |
| 76 | +# So, let's reuse the autodoc mock... |
| 77 | +# |
| 78 | +# We would also like to mock more imports than this but this is shockingly prone |
| 79 | +# to randomly breaking, so let's keep a small-ish set of dependencies that tend |
| 80 | +# to be more annoying to install and to nuke our CI on update |
| 81 | +autodoc_mock_imports = [ |
| 82 | + "k2", |
| 83 | + "flair", |
| 84 | + "fairseq", |
| 85 | + "spacy", |
| 86 | +] |
74 | 87 |
|
75 | 88 | # Order of API items: |
76 | 89 | autodoc_member_order = "bysource" |
|
95 | 108 |
|
96 | 109 | def run_apidoc(app): |
97 | 110 | """Generate API documentation""" |
98 | | - import better_apidoc |
99 | | - |
100 | | - better_apidoc.APP = app |
101 | | - better_apidoc.main( |
102 | | - [ |
103 | | - "better-apidoc", |
104 | | - "-t", |
105 | | - "_apidoc_templates", |
106 | | - "--force", |
107 | | - "--no-toc", |
108 | | - "--separate", |
109 | | - "-o", |
110 | | - "API", |
111 | | - os.path.join("../", "speechbrain"), |
112 | | - os.path.dirname(hyperpyyaml.__file__), |
113 | | - ] |
114 | | - ) |
| 111 | + |
| 112 | + with mock(autodoc_mock_imports): |
| 113 | + try: |
| 114 | + better_apidoc.APP = app |
| 115 | + better_apidoc.main( |
| 116 | + [ |
| 117 | + "better-apidoc", |
| 118 | + "-t", |
| 119 | + "_apidoc_templates", |
| 120 | + "--force", |
| 121 | + "--no-toc", |
| 122 | + "--separate", |
| 123 | + "-o", |
| 124 | + "API", |
| 125 | + os.path.join("../", "speechbrain"), |
| 126 | + ] |
| 127 | + ) |
| 128 | + better_apidoc.main( |
| 129 | + [ |
| 130 | + "better-apidoc", |
| 131 | + "-t", |
| 132 | + "_apidoc_templates", |
| 133 | + "--force", |
| 134 | + "--no-toc", |
| 135 | + "--separate", |
| 136 | + "-o", |
| 137 | + "API", |
| 138 | + os.path.dirname(hyperpyyaml.__file__), |
| 139 | + ] |
| 140 | + ) |
| 141 | + except Exception: |
| 142 | + # because otherwise sphinx very helpfully eats the backtrace |
| 143 | + import traceback |
| 144 | + |
| 145 | + print(traceback.format_exc(), file=sys.stderr) |
| 146 | + raise |
115 | 147 |
|
116 | 148 |
|
117 | 149 | # -- Options for HTML output ------------------------------------------------- |
|
0 commit comments