Ejemplo n.º 1
0
    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])
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
    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])
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)