ytdl-sub/docs/source/guides/development/index.rst

80 lines
No EOL
2.1 KiB
ReStructuredText

Development and Contributing
============================
Requirements
------------
- python >= 3.10
- ffmpeg/ffprobe 4.4.5 (test checksums rely on this version)
- make
Local Install
-------------
.. tab-set-code::
.. code-block:: shell
pip install -e .[test,lint,docs]
.. code-block:: zsh
pip install -e .\[test,lint,docs\]
Linter
------
All source code contributed must be formatted to our linter specification.
Run the following to auto-format and check for any issues with your code:
.. code-block:: shell
make lint
Adding Documentation
--------------------
Docs can be found in ``ytdl-sub/docs/source/``, and are built using the command:
.. code-block:: shell
:caption: Viewable at http://localhost:63342/ytdl-sub/docs/build/html/index.html once built
make docs
Some of the documentation is built using doc-strings from the python source code. The above
command will rebuild those as well.
Testing
-------
Tests are written using pytest. Many of them evaluate checksums of output files to ensure no unintended
changes are introduced to the way ``ytdl-sub`` produces files. This checksum can be inaccurate for
end-to-end tests, but are reliable for integration tests.
If integration tests are failing, ensure...
- you're using the correct ffmpeg version
- you are developing on Linux or Mac (have not tested windows yet)
- your local ``ytdl-sub`` dependencies are up-to-date
IDE Setup
---------
PyCharm is our preferred IDE. The codebase is simple enough to where it's not required, but
is highly recommended.
TODO: screenshots of configuration
Debugging
---------
Debug Logs
^^^^^^^^^^^^^^^
Run with ``--log-level debug`` to show all debug logs when running ytdl-sub.
Reproducing a Failing Subscription
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Subscriptions will dump their entire *compiled* yaml at the beginning of exeuction
when using ``--log-level debug``. This can be copy-pasted into the file
``resources/file_fixtures/repro.yaml``.
Running the test ``e2e.test_debug_repro.TestReproduce.test_debug_log_repro``
will fully reproduce that subscription in order to debug it.