Esempio n. 1
0
    def test_print_extracted_entries(self, mock_extract_from_file):
        entries, _, __ = parser.parse_string("""

          2016-02-01 * "A"
            Assets:Account1    11.11 USD
            Assets:Account2   -11.11 USD

          2016-02-01 * "B"
            Assets:Account1    22.22 USD
            Assets:Account3   -22.22 USD

        """)
        mock_extract_from_file.return_value = entries

        entries[-2].meta[extract.DUPLICATE_META] = True

        oss = io.StringIO()
        extract.print_extracted_entries(entries, oss)

        self.assertEqual(textwrap.dedent("""\

        ; 2016-02-01 * "A"
        ;   Assets:Account1   11.11 USD
        ;   Assets:Account2  -11.11 USD

        2016-02-01 * "B"
          Assets:Account1   22.22 USD
          Assets:Account3  -22.22 USD

        """).strip(), oss.getvalue().strip())
Esempio n. 2
0
from beancount.ingest.extract import print_extracted_entries


class FetcherProtocol(Protocol):
    def fetch(self) -> Iterator[Union[Transaction, Balance]]:
        ...


def main(args: List[str] = None) -> Sequence[Union[Transaction, Balance]]:
    if args is None:
        args = sys.argv
    parser = argparse.ArgumentParser()
    parser.add_argument("files", nargs="+")
    parser.add_argument("-e", "--exist")
    result = parser.parse_args(args)
    if result.exist:
        existed_entries = load_file(result.exist)[0]
    else:
        existed_entries = None
    extracted = []
    for f in result.files[1:]:
        mod = runpy.run_path(f)
        config: List[importer.ImporterProtocol] = mod["CONFIG"]
        for imp in config:
            extracted.extend(imp.extract(None, existed_entries))
    return extracted


if __name__ == "__main__":
    print_extracted_entries(main(), sys.stdout)