| # 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 |
| ``` |