Reader

Latest version: v3.15

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

Scan your dependencies

Page 5 of 14

2.10

------------

Released 2022-03-12

* Support entry and global tags. (:issue:`272`, :issue:`228`, :issue:`267`)

* Remove :meth:`~Reader.get_tags()` support for the
``(None,)`` (any feed) and :const:`None` (any resource)
wildcard resource values.

.. warning::

**This is a minor compatibility break**, but is unlikely to affect existing users;
the usefulness of the wildcards was limited, because
it was impossible to tell to which resource a (key, value) pair belongs.

* Allow passing a `(feed URL,)` 1-tuple anywhere a feed URL can be passed
to a :class:`Reader` method.

* Remove the ``global_metadata`` experimental plugin
(superseded by global tags).

* In the web application, support editing entry and global metadata.
Fix broken delete metadata button.
Fix broken error flashing.

2.9

-----------

Released 2022-02-07

* Decrease :meth:`~Reader.update_feeds()` memory usage by ~35%
(using the maxrss before the call as baseline;
overall process maxrss decreases by ~20%).
The improvement is not in *reader* code, but in feedparser;
*reader* will temporarily vendor feedparser
until the fix makes it upstream and is released on PyPI.
(:issue:`265`)

* In the web application, allow sorting feeds by the number of entries:
important, unread, per day during the last 1, 3, 12 months.
(:issue:`249`, :issue:`245`).

2.8

-----------

Released 2022-01-22

* Add generic tag methods
:meth:`~Reader.get_tags`,
:meth:`~Reader.get_tag_keys`,
:meth:`~Reader.get_tag`,
:meth:`~Reader.set_tag`,
and :meth:`~Reader.delete_tag`,
providing a unified interface for accessing tags as key-value pairs.
(:issue:`266`)

Add the :exc:`TagError`, :exc:`TagNotFoundError`,
and :exc:`ResourceNotFoundError` exceptions.

* Deprecate feed-specific tag and metadata methods (:issue:`266`):

* :meth:`~Reader.get_feed_metadata`, use :meth:`~Reader.get_tags` instead
* :meth:`~Reader.get_feed_metadata_item`, use :meth:`~Reader.get_tag` instead
* :meth:`~Reader.set_feed_metadata_item`, use :meth:`~Reader.set_tag` instead
* :meth:`~Reader.delete_feed_metadata_item`, use :meth:`~Reader.delete_tag` instead
* :meth:`~Reader.get_feed_tags`, use :meth:`~Reader.get_tag_keys` instead
* :meth:`~Reader.add_feed_tag`, use :meth:`~Reader.set_tag` instead
* :meth:`~Reader.remove_feed_tag`, use :meth:`~Reader.delete_tag` instead

Deprecate :exc:`MetadataError`, :exc:`MetadataNotFoundError`, and
:exc:`FeedMetadataNotFoundError`.

All deprecated methods/exceptions **will be removed in version 3.0**.

* Add the ``missing_ok`` argument to :meth:`~Reader.delete_feed`
and :meth:`~Reader.delete_entry`.
* Add the ``exist_ok`` argument to :meth:`~Reader.add_feed`.

* In the web application, show maxrss when debug is enabled. (:issue:`269`)
* In the web application, decrease memory usage of the entries page
when there are a lot of entries
(e.g. for 2.5k entries, maxrss decreased from 115 MiB to 75 MiB),
at the expense of making "entries for feed" slightly slower.
(:issue:`269`)

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.

Page 5 of 14

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.