def test_group_by_eff_date(self): def n(pub, eff, num): return { 'publication_date': pub, 'effective_on': eff, 'document_number': num } n1 = n('2001-01-01', '2002-02-02', '1') n2 = n('2001-03-01', '2002-02-02', '2') n3 = n('2002-02-01', '2003-02-02', '3') n4 = n('2002-01-01', '2004-02-02', '4') n5 = n('2001-02-01', '2002-02-02', '5') grouped = notices.group_by_eff_date([n1, n2, n3, n4, n5]) self.assertEqual(set(['2002-02-02', '2003-02-02', '2004-02-02']), set(grouped.keys())) self.assertEqual([n1, n5, n2], grouped['2002-02-02']) self.assertEqual([n3], grouped['2003-02-02']) self.assertEqual([n4], grouped['2004-02-02']) n1 = n('2001-01-01', '2002-02-02', '1') n2 = n('2001-01-01', '2002-02-02', '2') grouped = notices.group_by_eff_date([n1, n2]) self.assertEqual(grouped['2002-02-02'], [n1, n2]) grouped = notices.group_by_eff_date([n2, n1]) self.assertEqual(grouped['2002-02-02'], [n1, n2])
def build_notice_from_doc_number(self, doc_number, checkpoint=True): if doc_number in self.notice_doc_numbers: notice_json = [notice for notice in self.notices_json if notice["document_number"] == doc_number][0] notice = self.build_single_notice(notice_json, checkpoint) self.notices.extend(notice) self.eff_notices = group_by_eff_date(self.notices) return notice
def build_notice_from_doc_number(self, doc_number, checkpoint=True): if doc_number in self.notice_doc_numbers: notice_json = [notice for notice in self.notices_json if notice['document_number'] == doc_number][0] notice = self.build_single_notice(notice_json, checkpoint) self.notices.extend(notice) self.eff_notices = group_by_eff_date(self.notices) return notice
def __init__(self, cfr_title, cfr_part, doc_number): self.cfr_title = cfr_title self.cfr_part = cfr_part self.doc_number = doc_number self.writer = api_writer.Client() self.notices = fetch_notices(self.cfr_title, self.cfr_part, only_final=True) modify_effective_dates(self.notices) # Only care about final self.notices = [n for n in self.notices if 'effective_on' in n] self.eff_notices = group_by_eff_date(self.notices)
def test_group_by_eff_date(self): n = lambda pub, eff, num: {'publication_date': pub, 'effective_on': eff, 'document_number': num} n1 = n('2001-01-01', '2002-02-02', '1') n2 = n('2001-03-01', '2002-02-02', '2') n3 = n('2002-02-01', '2003-02-02', '3') n4 = n('2002-01-01', '2004-02-02', '4') n5 = n('2001-02-01', '2002-02-02', '5') grouped = notices.group_by_eff_date([n1, n2, n3, n4, n5]) self.assertEqual(set(['2002-02-02', '2003-02-02', '2004-02-02']), set(grouped.keys())) self.assertEqual([n1, n5, n2], grouped['2002-02-02']) self.assertEqual([n3], grouped['2003-02-02']) self.assertEqual([n4], grouped['2004-02-02']) n1 = n('2001-01-01', '2002-02-02', '1') n2 = n('2001-01-01', '2002-02-02', '2') grouped = notices.group_by_eff_date([n1, n2]) self.assertEqual(grouped['2002-02-02'], [n1, n2]) grouped = notices.group_by_eff_date([n2, n1]) self.assertEqual(grouped['2002-02-02'], [n1, n2])
def __init__(self, cfr_title, cfr_part, doc_number): self.cfr_title = cfr_title self.cfr_part = cfr_part self.doc_number = doc_number self.writer = api_writer.Client() self.notices = fetch_notices(self.cfr_title, self.cfr_part, only_final=True) modify_effective_dates(self.notices) # Only care about final self.notices = [n for n in self.notices if 'effective_on' in n] self.eff_notices = group_by_eff_date(self.notices)
def build_notices(self, checkpoint=True): for result in self.notices_json: notice = self.build_single_notice(result, checkpoint) self.notices.extend(notice) modify_effective_dates(self.notices) # Only care about final self.notices = [n for n in self.notices if 'effective_on' in n] self.eff_notices = group_by_eff_date(self.notices) self.eff_notices = self.checkpointer.checkpoint( "effective-notices", lambda: notices_for_cfr_part(self.cfr_title, self.cfr_part)) self.notices = [] for notice_group in self.eff_notices.values(): self.notices.extend(notice_group)
def build_notices(self, checkpoint=True): for result in self.notices_json: notice = self.build_single_notice(result, checkpoint) self.notices.extend(notice) modify_effective_dates(self.notices) # Only care about final self.notices = [n for n in self.notices if "effective_on" in n] self.eff_notices = group_by_eff_date(self.notices) self.eff_notices = self.checkpointer.checkpoint( "effective-notices", lambda: notices_for_cfr_part(self.cfr_title, self.cfr_part) ) self.notices = [] for notice_group in self.eff_notices.values(): self.notices.extend(notice_group)
def notices_for_cfr_part(title, part): """Retrieves all final notices for a title-part pair, orders them, and returns them as a dict[effective_date_str] -> list(notices)""" notices = fetch_notices(title, part, only_final=True) modify_effective_dates(notices) return group_by_eff_date(notices)
def notices_for_cfr_part(title, part): """Retrieves all final notices for a title-part pair, orders them, and returns them as a dict[effective_date_str] -> list(notices)""" notices = fetch_notices(title, part, only_final=True) modify_effective_dates(notices) return group_by_eff_date(notices)