def load_file(self) -> None: """Load the main file and all included files and set attributes.""" # use the internal function to disable cache if not self._is_encrypted: # pylint: disable=protected-access self.all_entries, self.errors, self.options = _load( [(self.beancount_file_path, True)], None, None, None) else: self.all_entries, self.errors, self.options = load_file( self.beancount_file_path) self.get_filtered.cache_clear() self.account_types = get_account_types(self.options) self.price_map = build_price_map(self.all_entries) self.all_root_account = realization.realize(self.all_entries, self.account_types) self.all_entries_by_type = group_entries_by_type(self.all_entries) self.accounts = AccountDict() for open_entry in self.all_entries_by_type.Open: self.accounts.setdefault(open_entry.account).meta = open_entry.meta for close in self.all_entries_by_type.Close: self.accounts.setdefault(close.account).close_date = close.date self.fava_options, errors = parse_options( self.all_entries_by_type.Custom) self.errors.extend(errors) if not self._is_encrypted: self._watcher.update(*self.paths_to_watch()) for mod in MODULES: getattr(self, mod).load_file()
def load_file(self): """Load the main file and all included files and set attributes.""" # use the internal function to disable cache if not self._is_encrypted: # pylint: disable=protected-access self.all_entries, self.errors, self.options = \ loader._load([(self.beancount_file_path, True)], None, None, None) include_path = os.path.dirname(self.beancount_file_path) self._watcher.update(self.options['include'], [ os.path.join(include_path, path) for path in self.options['documents'] ]) else: self.all_entries, self.errors, self.options = \ loader.load_file(self.beancount_file_path) self.price_map = prices.build_price_map(self.all_entries) self.account_types = get_account_types(self.options) self.all_root_account = realization.realize(self.all_entries, self.account_types) if self.options['render_commas']: self._format_string = '{:,f}' self._default_format_string = '{:,.2f}' else: self._format_string = '{:f}' self._default_format_string = '{:.2f}' self.fava_options, errors = parse_options( filter_type(self.all_entries, Custom)) self.errors.extend(errors) for mod in MODULES: getattr(self, mod).load_file() self.filter(True)
def test_fava_options(load_doc): """ 2016-06-14 custom "fava-option" "default-file" 2016-06-14 custom "fava-option" "interval" "week" 2016-04-14 custom "fava-option" "show-closed-accounts" "true" 2016-04-14 custom "fava-option" "journal-show" "transaction open" 2016-04-14 custom "fava-option" "currency-column" "10" 2016-04-14 custom "fava-option" "insert-entry" "Ausgaben:Test" 2016-04-14 custom "fava-option" "invalid" 2016-06-14 custom "fava-option" "conversion" "USD" """ entries, _, _ = load_doc options, errors = parse_options(entries) assert len(errors) == 1 assert options["interval"] == "week" assert options["insert-entry"] == [ InsertEntryOption( datetime.date(2016, 4, 14), re.compile("Ausgaben:Test"), "<string>", 7, ) ] assert options["show-closed-accounts"] assert options["journal-show"] == ["transaction", "open"] assert options["currency-column"] == 10 assert options["conversion"] == "USD"
def test_fava_options(load_doc: LoaderResult) -> None: """ 2016-06-14 custom "fava-option" "default-file" 2016-04-14 custom "fava-option" "show-closed-accounts" "true" 2016-04-14 custom "fava-option" "currency-column" "10" 2016-04-14 custom "fava-option" "indent" "4" 2016-04-14 custom "fava-option" "insert-entry" "Ausgaben:Test" 2016-04-14 custom "fava-option" "invalid" 2016-04-14 custom "fava-option" "locale" "en" 2016-04-14 custom "fava-option" "locale" "invalid" 2016-04-14 custom "fava-option" "collapse-pattern" "Account:Name" 2016-04-14 custom "fava-option" "collapse_pattern" "(invalid" 2016-04-14 custom "fava-option" "fiscal-year-end" "01-11" 2016-04-14 custom "fava-option" "conversion-currencies" "USD EUR HOOLI" """ entries, _, _ = load_doc options, errors = parse_options(entries) # type: ignore assert len(errors) == 3 assert options.indent == 4 assert options.insert_entry == [ InsertEntryOption( datetime.date(2016, 4, 14), re.compile("Ausgaben:Test"), "<string>", 6, ) ] assert options.show_closed_accounts assert options.currency_column == 10 assert options.collapse_pattern == [re.compile("Account:Name")] assert options.fiscal_year_end == FiscalYearEnd(1, 11) assert options.conversion_currencies == ("USD", "EUR", "HOOLI")
def test_fava_options(load_doc): """ 2016-06-14 custom "fava-option" "default-file" 2016-06-14 custom "fava-option" "interval" "week" 2016-04-14 custom "fava-option" "show-closed-accounts" "true" 2016-04-14 custom "fava-option" "journal-show" "transaction open" 2016-04-14 custom "fava-option" "currency-column" "10" 2016-04-14 custom "fava-option" "insert-entry" "Ausgaben:Test" 2016-04-14 custom "fava-option" "invalid" """ entries, _, _ = load_doc options, errors = parse_options(entries) assert len(errors) == 1 assert options['interval'] == 'week' assert options['insert-entry'] == [ InsertEntryOption( datetime.date(2016, 4, 14), re.compile('Ausgaben:Test'), '<string>', 7, ) ] assert options['show-closed-accounts'] assert options['journal-show'] == ['transaction', 'open'] assert options['currency-column'] == 10
def test_fava_options(load_doc): """ 2016-06-14 custom "fava-option" "default-file" 2016-06-14 custom "fava-option" "interval" "week" 2016-04-14 custom "fava-option" "show-closed-accounts" "true" 2016-04-14 custom "fava-option" "journal-show" "transaction open" 2016-04-14 custom "fava-option" "currency-column" "10" 2016-04-14 custom "fava-option" "insert-entry" "Ausgaben:Test" 2016-04-14 custom "fava-option" "invalid" """ entries, _, _ = load_doc options, errors = parse_options(entries) assert len(errors) == 1 assert options['interval'] == 'week' assert options['insert-entry'] == [ InsertEntryOption( datetime.date(2016, 4, 14), re.compile('Ausgaben:Test'), '<string>', 7) ] assert options['show-closed-accounts'] assert options['journal-show'] == ['transaction', 'open'] assert options['currency-column'] == 10
def test_fava_options(load_doc): """ 2016-06-14 custom "fava-option" "default-file" 2016-04-14 custom "fava-option" "show-closed-accounts" "true" 2016-04-14 custom "fava-option" "journal-show" "transaction open" 2016-04-14 custom "fava-option" "currency-column" "10" 2016-04-14 custom "fava-option" "indent" "4" 2016-04-14 custom "fava-option" "insert-entry" "Ausgaben:Test" 2016-04-14 custom "fava-option" "invalid" 2016-04-14 custom "fava-option" "locale" "en" 2016-04-14 custom "fava-option" "locale" "invalid" 2016-04-14 custom "fava-option" "collapse-pattern" "Account:Name" 2016-04-14 custom "fava-option" "collapse-pattern" "(invalid" 2016-04-14 custom "fava-option" "fiscal-year-end" "01-11" """ entries, _, _ = load_doc options, errors = parse_options(entries) assert len(errors) == 3 assert options["indent"] == 4 assert options["insert-entry"] == [ InsertEntryOption( datetime.date(2016, 4, 14), re.compile("Ausgaben:Test"), "<string>", 7, ) ] assert options["show-closed-accounts"] assert options["journal-show"] == ["transaction", "open"] assert options["currency-column"] == 10 assert options["collapse-pattern"] == [re.compile("Account:Name")] assert options["fiscal-year-end"] == FiscalYearEnd(1, 11)
def load_file(self) -> None: """Load the main file and all included files and set attributes.""" # use the internal function to disable cache if not self._is_encrypted: # pylint: disable=protected-access self.all_entries, self.errors, self.options = loader._load( [(self.beancount_file_path, True)], None, None, None ) else: self.all_entries, self.errors, self.options = loader.load_file( self.beancount_file_path ) self.account_types = get_account_types(self.options) self.price_map = build_price_map(self.all_entries) self.all_root_account = realization.realize( self.all_entries, self.account_types ) entries_by_type: DefaultDict[ Type[Directive], Entries ] = collections.defaultdict(list) for entry in self.all_entries: entries_by_type[type(entry)].append(entry) self.all_entries_by_type = entries_by_type self.accounts = AccountDict() for entry in entries_by_type[Open]: self.accounts.setdefault( cast(Open, entry).account ).meta = entry.meta for entry in entries_by_type[Close]: self.accounts.setdefault( cast(Close, entry).account ).close_date = entry.date self.fava_options, errors = parse_options( cast(List[Custom], entries_by_type[Custom]) ) self.errors.extend(errors) if not self._is_encrypted: self._watcher.update(*self.paths_to_watch()) for mod in MODULES: getattr(self, mod).load_file() self.filters = Filters(self.options, self.fava_options) self.filter(True)
def test_fava_options(load_doc): """ 2016-06-14 custom "fava-option" "interval" "week" 2016-04-14 custom "fava-option" "show-closed-accounts" "true" 2016-04-14 custom "fava-option" "journal-show" "transaction open" 2016-04-14 custom "fava-option" "editor-print-margin-column" "10" 2016-04-14 custom "fava-option" "invalid" """ entries, _, _ = load_doc options, errors = parse_options(entries) assert len(errors) == 1 assert options['interval'] == 'week' assert options['charts'] assert options['show-closed-accounts'] assert options['journal-show'] == ['transaction', 'open'] assert options['editor-print-margin-column'] == 10
def load_file(self): """Load the main file and all included files and set attributes.""" # use the internal function to disable cache if not self._is_encrypted: # pylint: disable=protected-access self.all_entries, self.errors, self.options = \ loader._load([(self.beancount_file_path, True)], None, None, None) self.account_types = get_account_types(self.options) # TODO: implement watcher for S3 #self._watcher.update(*self.paths_to_watch()) else: self.all_entries, self.errors, self.options = \ loader.load_file(self.beancount_file_path) self.account_types = get_account_types(self.options) self.price_map = prices.build_price_map(self.all_entries) self.all_root_account = realization.realize(self.all_entries, self.account_types) entries_by_type = collections.defaultdict(list) for entry in self.all_entries: entries_by_type[type(entry)].append(entry) self.all_entries_by_type = entries_by_type self.accounts = _AccountDict() for entry in entries_by_type[Open]: self.accounts.setdefault(entry.account).meta = entry.meta for entry in entries_by_type[Close]: self.accounts.setdefault(entry.account).close_date = entry.date self.fava_options, errors = parse_options(entries_by_type[Custom]) self.errors.extend(errors) for mod in MODULES: getattr(self, mod).load_file() self._filters = { 'account': AccountFilter(self.options, self.fava_options), 'filter': AdvancedFilter(self.options, self.fava_options), 'time': TimeFilter(self.options, self.fava_options), } self.filter(True)
def load_file(self): """Load the main file and all included files and set attributes.""" # use the internal function to disable cache if not self._is_encrypted: # pylint: disable=protected-access self.all_entries, self.errors, self.options = \ loader._load([(self.beancount_file_path, True)], None, None, None) self.account_types = get_account_types(self.options) self._watcher.update(*self.paths_to_watch()) else: self.all_entries, self.errors, self.options = \ loader.load_file(self.beancount_file_path) self.account_types = get_account_types(self.options) self.price_map = prices.build_price_map(self.all_entries) self.all_root_account = realization.realize(self.all_entries, self.account_types) entries_by_type = collections.defaultdict(list) for entry in self.all_entries: entries_by_type[type(entry)].append(entry) self.all_entries_by_type = entries_by_type self.accounts = _AccountDict() for entry in entries_by_type[Open]: self.accounts.setdefault(entry.account).meta = entry.meta for entry in entries_by_type[Close]: self.accounts.setdefault(entry.account).close_date = entry.date self.fava_options, errors = parse_options(entries_by_type[Custom]) self.errors.extend(errors) for mod in MODULES: getattr(self, mod).load_file() self._filters = { 'account': AccountFilter(self.options, self.fava_options), 'filter': AdvancedFilter(self.options, self.fava_options), 'time': TimeFilter(self.options, self.fava_options), } self.filter(True)