Reader

Latest version: v3.16

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

Scan your dependencies

Page 2 of 14

3.11

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

Released 2023-12-30

* Allow filtering entries by their (entry) tags. (:issue:`328`)
* Support Python 3.12. (:issue:`326`)

3.10

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

Released 2023-11-12

* Stop using deprecated :mod:`sqlite3` datetime converters/adapters.
(:issue:`321`)
* Document the storage :doc:`internal`.
(:issue:`325`)
* Change all :doc:`internal APIs <internal>` to use timezone-aware datetimes,
with the timezone set to UTC.
(:issue:`321`)
* In the API documentation,
fall back to type hints if hand-written parameter types are not available.
Add relevant :ref:`documentation` guidelines to the dev documentation.
(:issue:`287`)
* Add the :mod:`~reader._plugins.share` experimental plugin
to add social sharing links in the web app.

3.9

-----------

Released 2023-08-28

* Wrap unexpected retriever/parser errors in :exc:`ParseError`,
instead of letting them bubble up,
so exceptions raised by custom retrievers/parsers
for one feed don't prevent updates for the others
during :meth:`~Reader.update_feeds_iter()` / :meth:`~Reader.update_feeds()`.
(:issue:`218`)
* Store the details of any :exc:`UpdateError` in :attr:`Feed.last_exception`
(except hook errors),
not just the ``__cause__`` of :exc:`ParseError`\s.
(:issue:`218`)

* Add the :mod:`~reader._plugins.timer` experimental plugin
to collect per-call method timings.
Show per-request statistics in the web app.
(:issue:`306`)

3.8

-----------

Released 2023-08-20

* Drop Python 3.9 support. (:issue:`302`)
* Use :mod:`concurrent.futures` instead of :mod:`multiprocessing.dummy`
when :ref:`updating feeds <update>` in parallel;
:mod:`multiprocessing.dummy` does not work on some environments
(e.g. AWS Lambda).

* Wrap unexpected hook errors in :exc:`UpdateHookError`
instead of letting them bubble up,
so plugin-raised exceptions for one feed don't prevent updates for the others
during :meth:`~Reader.update_feeds_iter()` / :meth:`~Reader.update_feeds()`.
(:issue:`218`)

.. warning::

**This is a minor compatibility break**;
it is considered acceptable, since it fixes a bug / unexpected behavior.

* Add new exceptions :exc:`UpdateHookError`,
:exc:`SingleUpdateHookError`, and :exc:`UpdateHookErrorGroup`.

* Try to run all
:attr:`~Reader.after_entry_update_hooks`,
:attr:`~Reader.after_feed_update_hooks`, and
:attr:`~Reader.after_feeds_update_hooks`,
don’t stop after one fails.

* Add :exc:`UpdateError` as parent of all update-related exceptions. (:issue:`218`)

* Narrow down the error type of :attr:`UpdateResult.value`
from :exc:`ReaderError` to :exc:`UpdateError`.
* Make :exc:`ParseError` inherit from :exc:`UpdateError`.
* Document :meth:`~Reader.update_feeds_iter()`, :meth:`~Reader.update_feeds()`,
and :meth:`~Reader.update_feed()` can raise :exc:`UpdateError`\s
(other than :exc:`UpdateHookError` and :exc:`ParseError`).

* Make :exc:`ReaderWarning` inherit from :exc:`ReaderError`.

* Include a diagram of the :ref:`exctree` in the :doc:`api`.

* Add werkzeug dependency,
instead of vendoring selected :mod:`werkzeug.http` utilities.
* Rework lazy imports introduced in `version 3.3 <Version 3.3_>`_.
(:issue:`316`)
* Make :mod:`reader._parser` a package, and move parsing-related modules into it.
(:issue:`316`)

3.7

-----------

Released 2023-07-15

.. attention::

This is the last release to support Python 3.9;
see :issue:`302` for details.

* Support PyPy 3.10. (:issue:`302`)

* Remove the :ref:`twitter` experimental plugin
(deprecated in `3.6 <Version 3.6_>`_).
(:issue:`310`)
* Remove the :ref:`tumblr_gdpr` experimental plugin
(not needed since August 2020).
(:issue:`315`)

3.6

-----------

Released 2023-06-16

* Add documentation on :doc:`contributing`
and a detailed :ref:`roadmap`.
Thanks to `Katharine Jarmul <https://kjamistan.com/>`_
for finally getting me to do this.
(:issue:`60`)
* Document the low-level
:meth:`~reader._storage.Storage.delete_entries`
storage method.
(:issue:`301`, :issue:`96`)
* Update vendored ``reader._http_utils`` to werkzeug 2.3.5.

* Deprecate the :ref:`twitter` experimental plugin,
since the Twitter API does not have a (useful) free tier anymore.
(:issue:`310`)

.. attention::

The :ref:`twitter` plugin will be removed in version 3.7.

Page 2 of 14

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.