Reader

Latest version: v3.12

Safety actively analyzes 629564 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 13

2.7

-----------

Released 2022-01-04

* Tags and metadata now share the same namespace.
See the :ref:`feed-tags` user guide section for details.
(:issue:`266`)
* The :mod:`~reader.plugins.mark_as_read` plugin now uses the
``.reader.mark-as-read`` metadata for configuration.
Feeds using the old metadata, ``.reader.mark_as_read``,
will be migrated automatically on update until `reader` 3.0.
* Allow running arbitrary actions before updating feeds
via :attr:`~Reader.before_feed_update_hooks`.
* Expose :data:`reader.plugins.DEFAULT_PLUGINS`.
* Add the ``global_metadata`` experimental plugin.

2.6

-----------

Released 2021-11-15

* Retrieve feeds in parallel, but parse them serially;
previously, feeds would be parsed in parallel.
Decreases Linux memory usage by ~20% when using ``workers``;
the macOS decrease is less notable.
(:issue:`261`)

* Allow :meth:`~Reader.update_feeds()` and :meth:`~Reader.update_feeds_iter()`
to filter feeds by ``feed``, ``tags``, ``broken``, and ``updates_enabled``.
(:issue:`193`, :issue:`219`, :issue:`220`)
* Allow :meth:`~Reader.get_feeds()` and :meth:`~Reader.get_feed_counts()`
to filter feeds by ``new``.
(:issue:`217`)

* Reuse the `requests`_ session when retrieving feeds;
previously, each feed would get its own session.

* Add support for CLI plugins.
* Add the :mod:`~reader._plugins.cli_status` experimental plugin.

* In the web application, show entry read time.

2.5

-----------

Released 2021-10-28

* In :meth:`~Reader.add_feed` and :meth:`~Reader.change_feed_url`,
validate if the current Reader configuration can handle the new feed URL;
if not, raise :exc:`InvalidFeedURLError` (a :exc:`ValueError` subclass).
(:issue:`155`)

.. warning::

**This is a minor compatibility break**; previously,
:exc:`ValueError` would never be raised for :class:`str` arguments.
To get the previous behavior (no validation),
use ``allow_invalid_url=True``.

* Allow users to add entries to an existing feed
through the new :meth:`~Reader.add_entry` method.
Allow deleting user-added entries through :meth:`~Reader.delete_entry`.
(:issue:`239`)
* Add the :attr:`~Entry.added` and :attr:`~Entry.added_by` Entry attributes.
(:issue:`239`)

* :attr:`Entry.updated` is now :const:`None` if missing in the feed
(:attr:`~Entry.updated` became optional in `version 2.0`_).
Use :attr:`~Entry.updated_not_none` for the pre-2.5 behavior.
Do not swap :attr:`Entry.published` with :attr:`Entry.updated`
for RSS feeds where :attr:`~Entry.updated` is missing.
(:issue:`183`)

* Support PyPy 3.8.

* Fix bug causing
:attr:`~Entry.read_modified` and :attr:`~Entry.important_modified`
to be reset to :const:`None` when an entry is updated.
* Fix bug where deleting an entry and then adding it again
(with the same id) would fail
if search was enabled and :meth:`~Reader.update_search`
was not run before adding the new entry.

2.4

-----------

Released 2021-10-19

* Enable search by default. (:issue:`252`)

* Add the ``search_enabled`` :func:`make_reader` argument.
By default, search is enabled on the first
:meth:`~Reader.update_search` call;
the previous behavior was to do nothing.
* Always install the full-text search dependencies (previously optional).
The ``search`` extra remains available to avoid breaking dependent packages.

* Add the :attr:`~Feed.subtitle` and :attr:`~Feed.version` Feed attributes.
(:issue:`223`)

* Change the :mod:`~reader.plugins.mark_as_read` plugin to also
explicitly mark matching entries as unimportant,
similar to how the *don't care* web application button works.
(:issue:`260`)

* In the web application, show the feed subtitle.
(:issue:`223`)

2.3

-----------

Released 2021-10-11

* Support Python 3.10. (:issue:`248`)

* :mod:`~reader.plugins.entry_dedupe` now
deletes old duplicates instead of marking them as read/unimportant.
(:issue:`140`)

.. note::

Please comment in :issue:`140` / open an issue
if you were relying on the old behavior.

* .. _yanked 2.2:

Fix :mod:`~reader.plugins.entry_dedupe` bug introduced in 2.2,
causing the newest read entry to be marked as unread
if none of its duplicates are read (idem for important).
This was an issue *only when re-running the plugin for existing entries*,
not for new entries (since new entries are unread/unimportant).

2.2

-----------

Released 2021-10-08

* :mod:`~reader.plugins.entry_dedupe` plugin improvements:
reduce false negatives by using approximate content matching,
and make it possible to re-run the plugin for existing entries.
(:issue:`202`)
* Allow running arbitrary actions for updated feeds
via :attr:`~Reader.after_feed_update_hooks`.
(:issue:`202`)

* Add :meth:`~Reader.set_entry_read` and :meth:`~Reader.set_entry_important`
to allow marking an entry as (un)read/(un)important through a boolean flag.
(:issue:`256`)

* Record when an entry is marked as read/important,
and make it available through :attr:`~Entry.read_modified` and
:attr:`~Entry.important_modified`.
Allow providing a custom value using the ``modified``
argument of :meth:`~Reader.set_entry_read`
and :meth:`~Reader.set_entry_important`.
(:issue:`254`)
* Make :mod:`~reader.plugins.entry_dedupe` copy
:attr:`~Entry.read_modified` and :attr:`~Entry.important_modified`
from the duplicates to the new entry.
(:issue:`254`)

* In the web application, allow marking an entry as *don't care*
(read + unimportant explicitly set by the user) with a single button.
(:issue:`254`)
* In the web application, show the entry read modified / important modified
timestamps as button tooltips.
(:issue:`254`)

Page 5 of 13

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.