Contributing to Tianshou ======================== Install Develop Version ----------------------- Tianshou is built and managed by `poetry `_. For example, to install all relevant requirements in editable mode you can simply call .. code-block:: bash $ poetry install --with dev PEP8 Code Style Check and Formatting ---------------------------------------- Please set up pre-commit by running .. code-block:: bash $ pre-commit install in the main directory. This should make sure that your contribution is properly formatted before every commit. The code is inspected and formatted by `black` and `ruff`. They are executed as pre-commit hooks. In addition, `poe the poet` tasks are configured. Simply run `poe` to see the available tasks. E.g, to format and check the linting manually you can run: .. code-block:: bash $ poe format $ poe lint Type Check ---------- We use `mypy `_ to check the type annotations. To check, in the main directory, run: .. code-block:: bash $ poe type-check Test Locally ------------ This command will run automatic tests in the main directory .. code-block:: bash $ poe test Test by GitHub Actions ---------------------- 1. Click the ``Actions`` button in your own repo: .. image:: ../_static/images/action1.jpg :align: center 2. Click the green button: .. image:: ../_static/images/action2.jpg :align: center 3. You will see ``Actions Enabled.`` on the top of html page. 4. When you push a new commit to your own repo (e.g. ``git push``), it will automatically run the test in this page: .. image:: ../_static/images/action3.png :align: center Documentation ------------- Documentations are written under the ``docs/`` directory as ReStructuredText (``.rst``) files. ``index.rst`` is the main page. A Tutorial on ReStructuredText can be found `here `_. API References are automatically generated by `Sphinx `_ according to the outlines under ``docs/api/`` and should be modified when any code changes. To compile documentation into webpage, run .. code-block:: bash $ poe doc-build The generated webpage is in ``docs/_build`` and can be viewed with browser (http://0.0.0.0:8000/). Chinese documentation is in https://tianshou.readthedocs.io/zh/latest/. Documentation Generation Test ----------------------------- We have the following three documentation tests: 1. pydocstyle (as part of ruff): test all docstring under ``tianshou/``; 2. doc8 (as part of ruff): test ReStructuredText format; 3. sphinx spelling and test: test if there is any error/warning when generating front-end html documentation. To check, in the main directory, run: .. code-block:: bash $ poe lint $ poe doc-build