def test_change_node_structure(): # increase depth node = library.get_index('Delete Me').nodes.children[0] schema.change_node_structure(node, ['SuperSection', 'Section', 'Segment']) assert node.depth == 3 chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test') assert chunk.text == [[['Part1 part1'], ['Part1']], [['Part1']], [['Part1'], [], ['part1']]] assert isinstance(Link().load({'refs': ['Delete Me, Part1 1:1:1', 'Shabbat 2a:5'],}), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part1 2:1:1', 'Delete Me, Part2 2:1'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part1 3:1', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part2 1:1', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part2 3', 'Shabbat 2a:5'], }), Link) assert isinstance(Note().load({'ref': 'Delete Me, Part1 1:1:1'}), Note) assert library.get_index('Delete Me').get_alt_structure('alt').wholeRef == u'Delete Me, Part1 1:2:1-3:1:1' # decrease depth node = library.get_index('Delete Me').nodes.children[0] schema.change_node_structure(node, ['Section', 'Segment']) assert node.depth == 2 chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test') assert chunk.text == [['Part1 part1', 'Part1'], ['Part1'], ['Part1', '', 'part1']] assert isinstance(Link().load({'refs': ['Delete Me, Part1 1:1', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part1 2:1', 'Delete Me, Part2 2:1'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part1 3', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part2 1:1', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part2 3', 'Shabbat 2a:5'], }), Link) assert isinstance(Note().load({'ref': 'Delete Me, Part1 1:1'}), Note) assert library.get_index('Delete Me').get_alt_structure('alt').wholeRef == u'Delete Me, Part1 1:2-3:1'
def change_tur(): ''' changes addressTypes of Tur nodes to ['Siman', 'Seif'] :return: ''' turim = library.get_index('Tur').nodes.children for tur in turim: change_node_structure(tur, tur.sectionNames, address_types=['Siman', 'Seif'])
def change_sa(): ''' changes addressTypes of Shulchan Arukh indexs to ['Siman', 'Seif'] :return: ''' SA_ind = [u'Shulchan Arukh, Choshen Mishpat', u'Shulchan Arukh, Even HaEzer', u'Shulchan Arukh, Orach Chayim'] for title in SA_ind: node = library.get_schema_node(title) change_node_structure(node, node.sectionNames, address_types=['Siman', 'Seif'])
def change_tanakh(): ''' changes addressTypes of all Tanakh books to ['Perek', 'Pasuk'] :return: ''' tanakh = library.get_indexes_in_category("Tanakh") for book in tanakh: node = library.get_schema_node(book) change_node_structure(node, node.sectionNames, address_types=['Perek', 'Pasuk'])
def test_change_node_structure_simple(): # increase depth node = library.get_index("MigrateBook").nodes schema.change_node_structure(node, ['SuperSection', 'Section', 'Segment']) assert node.depth == 3 tc = TextChunk(Ref("MigrateBook 2:2:1"), "en", "Schema Test") assert tc.text == 'This should eventually end up in MigrateBook, Part 1, 2:2' # change depth back to 2 node = library.get_index("MigrateBook").nodes schema.change_node_structure(node, ['Section', 'Segment']) assert node.depth == 2 tc = TextChunk(Ref("MigrateBook 2:2"), "en", "Schema Test") assert tc.text == 'This should eventually end up in MigrateBook, Part 1, 2:2'
def change_mishneh_torah(): ''' changes addressTypes of all Mishneh Torah indexs to ['Perek' , 'Halkhah'] :return: ''' yad_list = library.get_indexes_in_category(u"Mishneh Torah") schema_yad_dict = {} for title in yad_list: schema_yad_dict[title] = library.get_schema_node(title) for node in schema_yad_dict.values(): # excluding depth one ['Integer'] address types (ex, in category introduction) if len(node.sectionNames) != 2: continue change_node_structure(node, node.sectionNames, address_types=['Perek', 'Halakhah'])
def test_change_node_structure_complex(): # increase depth node = library.get_index('Delete Me').nodes.children[0] schema.change_node_structure(node, ['SuperSection', 'Section', 'Segment']) assert node.depth == 3 chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test') assert chunk.text == [[['Part1 part1'], ['Part1']], [['Part1']], [['Part1'], [], ['part1']]] blank_chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test Blank') assert len(blank_chunk.text) == 0 assert isinstance(Link().load({'refs': ['Delete Me, Part1 1:1:1', 'Shabbat 2a:5'],}), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part1 2:1:1', 'Delete Me, Part2 2:1'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part1 3:1', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part2 1:1', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part2 3', 'Shabbat 2a:5'], }), Link) assert isinstance(Note().load({'ref': 'Delete Me, Part1 1:1:1'}), Note) assert library.get_index('Delete Me').get_alt_structure('alt').wholeRef == 'Delete Me, Part1 1:2:1-3:1:1' sheet_refs = get_sheet_refs(TEST_SHEET_ID) assert any('Delete Me, Part1 1:1:1' in s for s in sheet_refs) assert all(not re.search(r'Delete Me, Part 1 1:1$', s) for s in sheet_refs) # decrease depth node = library.get_index('Delete Me').nodes.children[0] schema.change_node_structure(node, ['Section', 'Segment']) assert node.depth == 2 chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test') assert chunk.text == [['Part1 part1', 'Part1'], ['Part1'], ['Part1', '', 'part1']] assert isinstance(Link().load({'refs': ['Delete Me, Part1 1:1', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part1 2:1', 'Delete Me, Part2 2:1'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part1 3', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part2 1:1', 'Shabbat 2a:5'], }), Link) assert isinstance(Link().load({'refs': ['Delete Me, Part2 3', 'Shabbat 2a:5'], }), Link) assert isinstance(Note().load({'ref': 'Delete Me, Part1 1:1'}), Note) assert library.get_index('Delete Me').get_alt_structure('alt').wholeRef == 'Delete Me, Part1 1:2-3:1' sheet_refs = get_sheet_refs(TEST_SHEET_ID) assert all('Delete Me, Part1 1:1:1' not in s for s in sheet_refs) assert any(re.search(r'Delete Me, Part1 1:1$', s) for s in sheet_refs)
__author__ = 'stevenkaplan' from sefaria.helper.schema import change_node_structure from sefaria.model import * i = library.get_index("Complex Midrash Tanchuma") nodes = i.nodes.children for count, node in enumerate(nodes): print node if count < 2 or node._full_title['en'].find("Footnotes") >= 0: continue new_names = ["Siman", "Paragraph"] change_node_structure(node, new_names)