|
# REDAME |
|
## install sphinx |
|
```shell |
|
$ pip install -U sphinx |
|
``` |
|
|
|
## set up |
|
at s3prl root directory (s3prl-private/) |
|
```shell |
|
$ mkdir docs |
|
$ cd docs |
|
$ sphinx-quickstart |
|
$ cd .. |
|
$ sphinx-apidoc -d 3 --separate --implicit-namespace -o docs ./s3prl s3prl/downstream s3prl/interface s3prl/preprocess s3prl/pretrain s3prl/problem s3prl/sampler s3prl/submit s3prl/superb s3prl/upstream s3prl/utility s3prl/wrapper s3prl/__init__.py s3prl/hub.py s3prl/optimizers.py s3prl/run_downstream.py s3prl/run_pretrain.py s3prl/run_while.sh s3prl/schedulers.py |
|
``` |
|
|
|
## install dependencies |
|
```shell |
|
$ cd s3prl-private/docs |
|
$ echo "furo |
|
torch |
|
numpy |
|
pandas |
|
tqdm |
|
pytorch_lightning |
|
matplotlib |
|
ipdb>=0.13.9 |
|
PyYAML |
|
transformers |
|
torchaudio |
|
gdown |
|
sklearn |
|
joblib |
|
tensorboardX |
|
librosa |
|
scipy |
|
lxml |
|
h5py |
|
dtw |
|
catalyst |
|
sox |
|
six |
|
easydict |
|
Resemblyzer |
|
sentencepiece |
|
pysoundfile |
|
asteroid |
|
sacrebleu |
|
speechbrain |
|
omegaconf |
|
editdistance" > requirement.txt |
|
$ pip install -r requirement.txt |
|
``` |
|
|
|
add custom.js at s3prl-private/docs/_static/js/ |
|
(just paste the following lines) |
|
```javascript= |
|
/* |
|
change the default sphinx.ext.linkcode's [source] to [Github] |
|
*/ |
|
document.querySelectorAll(".reference.external .viewcode-link .pre").forEach(item => { |
|
item.innerHTML = "[Github]" |
|
item.style.marginRight = "3px" |
|
}) |
|
|
|
``` |
|
|
|
modify s3prl-private/docs/index.rst |
|
```diff |
|
# remove these lines |
|
- .. toctree:: |
|
- :maxdepth: 2 |
|
- :caption: Contents: |
|
|
|
# replaced with this line |
|
+ .. include:: s3prl.rst |
|
``` |
|
|
|
modify s3prl-private/docs/conf.py |
|
```python |
|
# add these lines at top |
|
import inspect |
|
import os |
|
import sys |
|
for x in os.walk('..'): |
|
sys.path.insert(0, x[0]) |
|
|
|
# add extensions |
|
extensions = [ |
|
'sphinx.ext.autodoc', |
|
'sphinx.ext.napoleon', |
|
'sphinx.ext.viewcode', |
|
'sphinx.ext.linkcode' |
|
] |
|
|
|
html_js_files = [ |
|
'js/custom.js', |
|
] |
|
|
|
def linkcode_resolve(domain, info): |
|
def find_source(): |
|
obj = sys.modules[info['module']] |
|
if info['fullname'] == 'InitConfig.args': return None |
|
if info['fullname'] == 'InitConfig.kwargs': return None |
|
for part in info['fullname'].split('.'): |
|
obj = getattr(obj, part) |
|
|
|
if isinstance(obj, property): return None |
|
|
|
fn = inspect.getsourcefile(obj) |
|
fn = os.path.relpath(fn, start=os.path.dirname(os.path.abspath(__file__))[:-4]) |
|
|
|
source, lineno = inspect.getsourcelines(obj) |
|
return fn, lineno, lineno + len(source) - 1 |
|
|
|
if domain != 'py' or not info['module']: return None |
|
|
|
tag = 'master' if 'dev' in release else ('v' + release) # s3prl github version |
|
|
|
try: |
|
filename = '%s#L%d-L%d' % find_source() # specify file page with line number |
|
except Exception: |
|
filename = info['module'].replace('.', '/') + '.py' # cannot find corresponding codeblock, use the file page instead |
|
|
|
return "https://github.com/s3prl/s3prl-private/blob/%s/%s" % (tag, filename) |
|
``` |
|
|
|
to use the furo theme, add this line in s3prl-private/docs/conf.py (replace the original alabaster theme) |
|
```python |
|
html_theme = "furo" |
|
``` |
|
|
|
## generate html files |
|
at s3prl-private/docs/ |
|
```shell |
|
$ make html |
|
``` |
|
|
|
the html files will be generated at **s3prl-private/docs/_build/html/** |
|
click on **index.html** to view the doc page on your browser |
|
|
|
if you want to see how your modified codes looks like, simply do |
|
```shell |
|
$ make clean html # this remove the old html files |
|
$ make html # generate new html files |
|
``` |