------------
Released 2021-06-03
* Rename :class:`Reader` feed metadata methods:
* :meth:`~Reader.iter_feed_metadata` to :meth:`~Reader.get_feed_metadata`
* :meth:`~Reader.get_feed_metadata` to :meth:`~Reader.get_feed_metadata_item`
* :meth:`~Reader.set_feed_metadata` to :meth:`~Reader.set_feed_metadata_item`
* :meth:`~Reader.delete_feed_metadata` to :meth:`~Reader.delete_feed_metadata_item`
For backwards compatibility,
the old method signatures will continue to work **until version 2.0**,
when they **will be removed.** (:issue:`183`)
.. warning::
The ``get_feed_metadata(feed, key[, default]) -> value`` form
is backwards-compatible *only when the arguments are positional*.
**This is a minor compatibility break**;
the following work in 1.17, but do not in 1.18::
raises TypeError
reader.get_feed_metadata(feed, key, default=None)
returns `(key, value), ...` instead of `value`
reader.get_feed_metadata(feed, key=key)
The pre-1.18 :meth:`~Reader.get_feed_metadata`
(1.18 :meth:`~Reader.get_feed_metadata_item`)
is intended to have positional-only arguments,
but this cannot be expressed easily until Python 3.8.
* Rename :exc:`MetadataNotFoundError` to :exc:`FeedMetadataNotFoundError`.
:exc:`MetadataNotFoundError` remains available,
and is a superclass of :exc:`FeedMetadataNotFoundError`
for backwards compatibility.
(:issue:`228`)
.. warning::
The signatures of the following exceptions changed:
:exc:`MetadataError`
Takes a new required ``key`` argument, instead of no required arguments.
:exc:`MetadataNotFoundError`
Takes only one required argument, ``key``;
the ``url`` argument has been removed.
Use :exc:`FeedMetadataNotFoundError` instead.
**This is a minor compatibility break**,
but only affects third-party code that instantiates
these exceptions *directly*.
* Rename :attr:`EntryError.url` to :attr:`~EntryError.feed_url`;
for backwards compatibility,
the old attribute will be available as a property **until version 2.0**,
when it **will be removed.** (:issue:`183`).
.. warning::
The signature of :exc:`EntryError` (and its subclasses)
changed from ``EntryError(url, id)`` to ``EntryError(feed_url, id)``.
**This is a minor compatibility break**,
but only affects third-party code that instantiates
these exceptions *directly* with ``url`` as a *keyword argument*.
* Rename :meth:`~Reader.remove_feed` to :meth:`~Reader.delete_feed`.
For backwards compatibility,
the old method will continue to work **until version 2.0**,
when it **will be removed.** (:issue:`183`)
* Rename :class:`Reader` ``mark_as_...`` methods:
* :meth:`~Reader.mark_as_read` to :meth:`~Reader.mark_entry_as_read`
* :meth:`~Reader.mark_as_unread` to :meth:`~Reader.mark_entry_as_unread`
* :meth:`~Reader.mark_as_important` to :meth:`~Reader.mark_entry_as_important`
* :meth:`~Reader.mark_as_unimportant` to :meth:`~Reader.mark_entry_as_unimportant`
For backwards compatibility,
the old methods will continue to work **until version 2.0**,
when they **will be removed.** (:issue:`183`)
* Fix feeds with no title sometimes missing
from the :meth:`~Reader.get_feeds()` results
when there are more than 256 feeds (``Storage.chunk_size``).
(:issue:`203`)
* When serving the web application with ``python -m reader serve``,
don't set the ``Referer`` header for cross-origin requests.
(:issue:`209`)