All Versions
68
Latest Version
3.3
Avg Release Cycle
19 days
Latest Release
-

Changelog History
Page 2

  • v2.11 Changes

    ๐Ÿš€ Released 2022-03-17

    • ๐Ÿ›  Fix issue causing :func:make_reader to fail with message database requirement error: required SQLite compile options missing: ['ENABLE_JSON1'] when using SQLite 3.38 or newer. (:issue:273)
  • v2.10 Changes

    ๐Ÿš€ 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.

  • v2.9 Changes

    ๐Ÿš€ 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).

  • v2.8 Changes

    ๐Ÿš€ 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)

  • v2.7 Changes

    ๐Ÿš€ 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.
  • v2.6 Changes

    ๐Ÿš€ 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.

  • v2.5 Changes

    ๐Ÿš€ 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.

  • v2.4 Changes

    ๐Ÿš€ Released 2021-10-19

    • 0๏ธโƒฃ 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)

  • v2.3 Changes

    ๐Ÿš€ 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).

  • v2.2 Changes

    ๐Ÿš€ 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)