Code Duplication    Length = 28-28 lines in 3 locations

src/ocrd_models/ocrd_page_generateds.py 2 locations

@@ 7196-7223 (lines=28) @@
7193
        return ret
7194
    
7195
    # pylint: disable=line-too-long,invalid-name,missing-module-docstring
7196
    def extend_AllIndexed(self, elements, validate_continuity=False):
7197
        """
7198
        Add all elements in list `elements`, respecting ``@index`` order.
7199
        With `validate_continuity`, check that all new elements come after all old elements
7200
        (or raise an exception). 
7201
        Otherwise, ensure this condition silently (by increasing ``@index`` accordingly).
7202
        """
7203
        if not isinstance(elements, list):
7204
            elements = [elements]
7205
        siblings = self.get_AllIndexed()
7206
        highest_sibling_index = siblings[-1].index if siblings else -1
7207
        if validate_continuity:
7208
            elements = sorted(elements, key=lambda x: x.index)
7209
            lowest_element_index = elements[0].index
7210
            if lowest_element_index <= highest_sibling_index:
7211
                raise Exception("@index already used: {}".format(lowest_element_index))
7212
        else:
7213
            for element in elements:
7214
                highest_sibling_index += 1
7215
                element.index = highest_sibling_index
7216
        for element in elements:
7217
            if isinstance(element, RegionRefIndexedType): # pylint: disable=undefined-variable
7218
                self.add_RegionRefIndexed(element)
7219
            elif isinstance(element, OrderedGroupIndexedType): # pylint: disable=undefined-variable
7220
                self.add_OrderedGroupIndexed(element)
7221
            elif isinstance(element, UnorderedGroupIndexedType): # pylint: disable=undefined-variable
7222
                self.add_UnorderedGroupIndexed(element)
7223
        return self.get_AllIndexed()
7224
    # pylint: disable=line-too-long,invalid-name,missing-module-docstring
7225
    def sort_AllIndexed(self, validate_uniqueness=True):
7226
        """
@@ 6264-6291 (lines=28) @@
6261
        return ret
6262
    
6263
    # pylint: disable=line-too-long,invalid-name,missing-module-docstring
6264
    def extend_AllIndexed(self, elements, validate_continuity=False):
6265
        """
6266
        Add all elements in list `elements`, respecting ``@index`` order.
6267
        With `validate_continuity`, check that all new elements come after all old elements
6268
        (or raise an exception). 
6269
        Otherwise, ensure this condition silently (by increasing ``@index`` accordingly).
6270
        """
6271
        if not isinstance(elements, list):
6272
            elements = [elements]
6273
        siblings = self.get_AllIndexed()
6274
        highest_sibling_index = siblings[-1].index if siblings else -1
6275
        if validate_continuity:
6276
            elements = sorted(elements, key=lambda x: x.index)
6277
            lowest_element_index = elements[0].index
6278
            if lowest_element_index <= highest_sibling_index:
6279
                raise Exception("@index already used: {}".format(lowest_element_index))
6280
        else:
6281
            for element in elements:
6282
                highest_sibling_index += 1
6283
                element.index = highest_sibling_index
6284
        for element in elements:
6285
            if isinstance(element, RegionRefIndexedType): # pylint: disable=undefined-variable
6286
                self.add_RegionRefIndexed(element)
6287
            elif isinstance(element, OrderedGroupIndexedType): # pylint: disable=undefined-variable
6288
                self.add_OrderedGroupIndexed(element)
6289
            elif isinstance(element, UnorderedGroupIndexedType): # pylint: disable=undefined-variable
6290
                self.add_UnorderedGroupIndexed(element)
6291
        return self.get_AllIndexed()
6292
    # pylint: disable=line-too-long,invalid-name,missing-module-docstring
6293
    def sort_AllIndexed(self, validate_uniqueness=True):
6294
        """

src/ocrd_page_user_methods/extend_AllIndexed.py 1 location

@@ 2-29 (lines=28) @@
1
# pylint: disable=line-too-long,invalid-name,missing-module-docstring
2
def extend_AllIndexed(self, elements, validate_continuity=False):
3
    """
4
    Add all elements in list `elements`, respecting ``@index`` order.
5
    With `validate_continuity`, check that all new elements come after all old elements
6
    (or raise an exception). 
7
    Otherwise, ensure this condition silently (by increasing ``@index`` accordingly).
8
    """
9
    if not isinstance(elements, list):
10
        elements = [elements]
11
    siblings = self.get_AllIndexed()
12
    highest_sibling_index = siblings[-1].index if siblings else -1
13
    if validate_continuity:
14
        elements = sorted(elements, key=lambda x: x.index)
15
        lowest_element_index = elements[0].index
16
        if lowest_element_index <= highest_sibling_index:
17
            raise Exception("@index already used: {}".format(lowest_element_index))
18
    else:
19
        for element in elements:
20
            highest_sibling_index += 1
21
            element.index = highest_sibling_index
22
    for element in elements:
23
        if isinstance(element, RegionRefIndexedType): # pylint: disable=undefined-variable
24
            self.add_RegionRefIndexed(element)
25
        elif isinstance(element, OrderedGroupIndexedType): # pylint: disable=undefined-variable
26
            self.add_OrderedGroupIndexed(element)
27
        elif isinstance(element, UnorderedGroupIndexedType): # pylint: disable=undefined-variable
28
            self.add_UnorderedGroupIndexed(element)
29
    return self.get_AllIndexed()
30