class NomListItem(BaseModel):
+ label: Optional[int] = -1
@abstractmethod
def __hash__(self):
else:
super().__init__(elements)
+ # Number items and persist via label attribute
+ for i, item in enumerate(self, start=1):
+ if not item.label:
+ item.__setattr__('label',i)
+
def __add__(self, other):
return self.__class__(self.union(other))
feed_parser = subparsers.add_parser('feed', help='Feed related commands')
feed_subparsers = feed_parser.add_subparsers(dest='feed_command', help='Feed sub-command help')
feed_update_parser = feed_subparsers.add_parser('update', help='Update feed')
+ feed_update_parser = feed_subparsers.add_parser('show', help='Show feeds')
return parser
elist.to_stdout()
elif args.command == "feed" and args.feed_command == "update":
feedlist.fetch_feeds(FEED_CACHE)
+ elif args.command == "feed" and args.feed_command == "show":
+ feedlist.to_stdout()
else:
raise NomError("That option is not yet supported.")
-title|url|date|feed_url|feed_alias|viewed|summary\r
-Entry One|https://path/to/entry2.html|date|https://path/to/feed.atom|feed1|False|\r
-Entry Two|https://path/to/entry3.html|date|https://path/to/feed.atom|feed2|True|\r
+label|title|url|date|feed_url|feed_alias|viewed|summary\r
+1|Entry One|https://path/to/entry2.html|date|https://path/to/feed.atom|feed1|False|\r
+2|Entry Two|https://path/to/entry3.html|date|https://path/to/feed.atom|feed2|True|\r
def test_nom_feed_update():
main(args='feed update'.split(' '))
+ assert True
+
+def test_nom_feed_show():
+ main(args='feed show'.split(' '))
assert True
\ No newline at end of file
def test_elist_select(elist_multi):
viewed = elist_multi.select(lambda e: e.viewed)
assert len(viewed) < len(elist_multi)
+
+def test_elist_select_entry(elist_multi):
+ second = elist_multi.select(lambda e: e.label == 2).pop()
+ assert second.label == 2
+ assert second.title == "Entry Two"