Deprecated Features
*******************

As features are deprecated and cleaned up, they are documented here
with steps to update your configuration for replacements.


"networkidle0" and "networkidle2" for "wait_until" in browser jobs (since 2.28)
===============================================================================

Since version 2.28, execution of browser jobs uses Playwright instead
of pyppetteer.

The previously-supported "wait_until" values of "networkidle0" and
"networkidle2" are not supported anymore. Playwright supports the
values "load", "domcontentloaded", "networkidle" (discouraged) or
"commit" instead.

Existing settings of "networkidle0" and "networkidle2" will be mapped
to "networkidle", and a warning will be issued. To silence the warning
and continue to use "networkidle", specify "wait_until: networkidle"
explicitly.


Filters without subfilters (since 2.22)
=======================================

In older urlwatch versions, it was possible to write custom filters
that do not take a "subfilter" as argument.

If you have written your own filter code like this:

   class CustomFilter(filters.FilterBase):
       """My old custom filter"""

       __kind__ = 'foo'

       def filter(self, data):
           ...

You have to update your filter to take an optional subfilter argument
(if the filter configuration does not have a subfilter defined, the
value of "subfilter" will be "None"):

   class CustomFilter(filters.FilterBase):
       """My new custom filter"""

       __kind__ = 'foo'

       def filter(self, data, subfilter):
           ...


string-based filter definitions (since 2.19)
============================================

With urlwatch 2.19, string-based filter lists are deprecated, because
they are not as flexible as dict-based filter lists and had some
problems (e.g. ":" and "," are treated in a special way and cannot be
used in subfilters easily). If you have a filter definition like this:

   filter: css:body,html2text:re,strip

You can get the same results with a filter definition like this:

   filter:
     - css:
         selector: body
     - html2text:
         method: re
     - strip

Since "selector" is the default subfilter for "css", and "method" is
the default subfilter for "html2text", this can also be written as:

   filter:
     - css: body
     - html2text: re
     - strip

If you just have a single filter such as:

   filter: html2text

You can change this filter to dict-based using:

   filter:
     - html2text


keyring setting in SMTP reporter configuration (since 2.18)
===========================================================

Since version 2.18, the SMTP reporter configuration now uses "auth" to
decide if SMTP authentication should be done or not. Previously, this
setting was called "keyring". If you have an old configuration like
this:

   report:
     email:
       smtp:
         host: localhost
         keyring: false
         port: 25
         starttls: true
       subject: '{count} changes: {jobs}'

You can change the setting to this (replace "keyring" with "auth"):

   report:
     email:
       smtp:
         host: localhost
         auth: false
         port: 25
         starttls: true
       subject: '{count} changes: {jobs}'
