def test_parse_date_relative(expect_start: str, expect_end: str, text: str) -> None: start, end = _to_date(expect_start), _to_date(expect_end) with mock.patch("fava.util.date.datetime.date") as mock_date: mock_date.today.return_value = _to_date("2016-06-24") mock_date.side_effect = date assert parse_date(text, FiscalYearEnd(6, 30)) == (start, end)
def test_parse_date(): today = date.today() tests = { 'year to date': (date(today.year, 1, 1), today + timedelta(1)), ' ': (None, None), 'today': (today, today + timedelta(1)), 'YESTERDAY': (today - timedelta(1), today), 'october 2010 ': daterange(2010, 10), '2000': daterange(2000), '1st february 2008': daterange(2008, 2, 1), '2010-10': daterange(2010, 10), '2000-01-03': daterange(2000, 1, 3), 'this year': daterange(today.year), 'august next year': daterange(today.year + 1, 8), 'this month': daterange(today.year, today.month), 'this december': daterange(today.year, 12), 'this november': daterange(today.year, 11), '2nd aug, 2010': daterange(2010, 8, 2), 'august 3rd, 2012': daterange(2012, 8, 3), '2015-W01': (date(2015, 1, 5), date(2015, 1, 12)), '2015-Q2': (date(2015, 4, 1), date(2015, 7, 1)), '2014 to 2015': (daterange(2014)[0], daterange(2015)[1]), '2011-10 - 2015': (daterange(2011, 10)[0], daterange(2015)[1]), } for test, result in tests.items(): assert parse_date(test) == result
def set(self, value): if value == self.value: return False self.value = value if not self.value: return True self.begin_date, self.end_date = parse_date(self.value) if not self.begin_date: raise FilterException( 'time', 'Failed to parse date: {}'.format(self.value)) return True
def set(self, value): if value == self.value: return False self.value = value if not self.value: return True try: self.begin_date, self.end_date = parse_date(self.value) except TypeError: raise FilterException('Failed to parse date: {}' .format(self.value)) return True
def test_parse_date(pseudo_today, expect_start, expect_end, text): """Test for parse_date() function.""" # Mock the imported datetime.date in fava.util.date module # Ref: # http://www.voidspace.org.uk/python/mock/examples.html#partial-mocking with mock.patch('fava.util.date.datetime.date') as mock_date: mock_date.today.return_value = to_date(pseudo_today) or date.today() mock_date.side_effect = date got = parse_date(text) start, end = to_date(expect_start), to_date(expect_end) assert got == (start, end), "parse_date(%s) == %s @ %s, want (%s, %s)" % ( text, got, pseudo_today, start, end)
def set(self, value: Optional[str]) -> bool: if value == self.value: return False self.value = value if not self.value: return True self.begin_date, self.end_date = parse_date( self.value, self.fava_options["fiscal-year-end"]) if not self.begin_date: self.value = None raise FilterException("time", f"Failed to parse date: {value}") return True
def set(self, value: str | None) -> bool: if value == self.value: return False self.value = value if not self.value: return True self.begin_date, self.end_date = parse_date( self.value, self.fava_options.fiscal_year_end) if not self.begin_date: self.value = None raise FilterException("time", f"Failed to parse date: {value}") return True
def set(self, value): if value == self.value: return False self.value = value if not self.value: return True self.begin_date, self.end_date = parse_date( self.value, self.fava_options['fiscal-year-end']) if not self.begin_date: self.value = None raise FilterException('time', 'Failed to parse date: {}'.format(value)) return True
def set(self, value): if value == self.value: return False self.value = value if not self.value: return True self.begin_date, self.end_date = parse_date( self.value, self.fava_options['fiscal-year-end'] ) if not self.begin_date: self.value = None raise FilterException('time', 'Failed to parse date: {}'.format(value)) return True
def deserialise(json_entry: Any) -> Directive: """Parse JSON to a Beancount entry. Args: json_entry: The entry. Raises: KeyError: if one of the required entry fields is missing. FavaAPIException: if the type of the given entry is not supported. """ date = parse_date(json_entry.get("date", ""))[0] if not isinstance(date, datetime.date): raise FavaAPIException("Invalid entry date.") if json_entry["type"] == "Transaction": narration, tags, links = extract_tags_links(json_entry["narration"]) postings = [deserialise_posting(pos) for pos in json_entry["postings"]] return Transaction( json_entry["meta"], date, json_entry.get("flag", ""), json_entry.get("payee", ""), narration or "", tags, links, postings, ) if json_entry["type"] == "Balance": raw_amount = json_entry["amount"] amount = Amount(D(str(raw_amount["number"])), raw_amount["currency"]) return Balance(json_entry["meta"], date, json_entry["account"], amount, None, None) if json_entry["type"] == "Note": comment = json_entry["comment"].replace('"', "") return Note(json_entry["meta"], date, json_entry["account"], comment) raise FavaAPIException("Unsupported entry type.")
def test_parse_date_relative(expect_start, expect_end, text): start, end = _to_date(expect_start), _to_date(expect_end) with mock.patch("fava.util.date.datetime.date") as mock_date: mock_date.today.return_value = _to_date("2016-06-24") mock_date.side_effect = date assert parse_date(text, "06-30") == (start, end)
def test_parse_date(expect_start: str, expect_end: str, text: str) -> None: expected = (_to_date(expect_start), _to_date(expect_end)) assert parse_date(text, FiscalYearEnd(6, 30)) == expected if "FY" not in text: assert parse_date(text, None) == expected
def test_parse_date_empty() -> None: assert parse_date(" ", FiscalYearEnd(6, 30)) == (None, None) assert parse_date(" ", None) == (None, None)
def test_parse_date(expect_start, expect_end, text): start, end = _to_date(expect_start), _to_date(expect_end) assert parse_date(text) == (start, end)
def test_parse_date_relative(expect_start, expect_end, text): start, end = _to_date(expect_start), _to_date(expect_end) with mock.patch('fava.util.date.datetime.date') as mock_date: mock_date.today.return_value = _to_date('2016-06-24') mock_date.side_effect = date assert parse_date(text, "06-30") == (start, end)