typing: Annotate Iterators more specifically.

This commit is contained in:
Brett Smith 2020-04-28 16:35:15 -04:00
parent 999ca2c5e1
commit bd0d607032
4 changed files with 6 additions and 6 deletions

View file

@ -293,13 +293,13 @@ class Posting(BasePosting):
)
@classmethod
def from_txn(cls, txn: Transaction) -> Iterable['Posting']:
def from_txn(cls, txn: Transaction) -> Iterator['Posting']:
"""Yield an enhanced Posting object for every posting in the transaction"""
for index, post in enumerate(txn.postings):
yield cls.from_beancount(txn, index, post)
@classmethod
def from_entries(cls, entries: Iterable[Directive]) -> Iterable['Posting']:
def from_entries(cls, entries: Iterable[Directive]) -> Iterator['Posting']:
"""Yield an enhanced Posting object for every posting in these entries"""
for entry in entries:
# Because Beancount's own Transaction class isn't type-checkable,

View file

@ -22,7 +22,7 @@ from typing import (
AbstractSet,
Any,
Dict,
Iterable,
Iterator,
List,
Optional,
Set,
@ -93,7 +93,7 @@ class HookRegistry:
for mod_name, hook_names in self.INCLUDED_HOOKS.items():
self.import_hooks(mod_name, *(hook_names or []), package=self.__module__)
def group_by_directive(self, config_str: str='') -> Iterable[Tuple[HookName, Type[Hook]]]:
def group_by_directive(self, config_str: str='') -> Iterator[Tuple[HookName, Type[Hook]]]:
config_str = config_str.strip()
if not config_str:
config_str = 'all'

View file

@ -259,7 +259,7 @@ class _RequireLinksPostingMetadataHook(_PostingHook):
txn: Transaction,
post: data.Posting,
keys: Sequence[MetaKey],
) -> Iterable[errormod.InvalidMetadataError]:
) -> Iterator[errormod.InvalidMetadataError]:
have_docs = False
for key in keys:
try:

View file

@ -143,7 +143,7 @@ class RelatedPostings(Sequence[data.Posting]):
def clear(self) -> None:
self._postings.clear()
def iter_with_balance(self) -> Iterable[Tuple[data.Posting, Balance]]:
def iter_with_balance(self) -> Iterator[Tuple[data.Posting, Balance]]:
balance = MutableBalance()
for post in self:
balance.add_amount(post.units)