Dependencies
************

Mandatory requirements are required to run urlwatch. Depending on what
optional features you want to use, you might also need to install
additional packages – however, those are not needed to run urlwatch.


Mandatory Packages
==================

* Python 3.8 or newer

* PyYAML

* minidb

* requests

* keyring

* platformdirs

* lxml

* cssselect

The dependencies can be installed with (add "--user" to install to
"$HOME"):

   python3 -m pip install pyyaml minidb requests keyring platformdirs lxml cssselect


Optional Packages
=================

Optional packages can be installed using:

   python3 -m pip install <packagename>

Where "<packagename>" is one of the following:

+---------------------------+-----------------------------------------------------------------------+
| Feature                   | Python package(s) to install                                          |
|===========================|=======================================================================|
| Pushover reporter         | chump                                                                 |
+---------------------------+-----------------------------------------------------------------------+
| Pushbullet reporter       | pushbullet.py                                                         |
+---------------------------+-----------------------------------------------------------------------+
| Matrix reporter           | matrix_client and markdown2                                           |
+---------------------------+-----------------------------------------------------------------------+
| *stdout* reporter with    | colorama                                                              |
| color on Windows          |                                                                       |
+---------------------------+-----------------------------------------------------------------------+
| *browser* job kind        | playwright (since version 2.28)                                       |
+---------------------------+-----------------------------------------------------------------------+
| Unit testing              | pycodestyle, docutils,                                                |
+---------------------------+-----------------------------------------------------------------------+
| Documentation build       | Sphinx                                                                |
+---------------------------+-----------------------------------------------------------------------+
| *beautify* filter         | beautifulsoup4; optional dependencies (for "<script>" and "<style>"   |
|                           | tags): jsbeautifier and cssbeautifier                                 |
+---------------------------+-----------------------------------------------------------------------+
| *html2text* filter with   | beautifulsoup4                                                        |
| *method: bs4*             |                                                                       |
+---------------------------+-----------------------------------------------------------------------+
| *pdf2text* filter         | pdftotext and its OS-specific dependencies (see the above link)       |
+---------------------------+-----------------------------------------------------------------------+
| *ocr* filter              | pytesseract and Pillow and Tesseract OCR)                             |
+---------------------------+-----------------------------------------------------------------------+
| XMPP reporter             | aioxmpp                                                               |
+---------------------------+-----------------------------------------------------------------------+
| *jq* filter               | jq                                                                    |
+---------------------------+-----------------------------------------------------------------------+
