Completed
Push — master ( 8e90e2...462165 )
by Osma
16s queued 12s
created

annif.corpus.combine   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 14
dl 0
loc 26
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A CombinedCorpus.__init__() 0 2 1
A CombinedCorpus.documents() 0 4 1
A CombinedCorpus.set_subject_index() 0 7 3
1
"""Class for combining multiple corpora so they behave like a single corpus"""
2
3
import itertools
4
from .types import DocumentCorpus
5
6
7
class CombinedCorpus(DocumentCorpus):
8
    """Class for combining multiple corpora so they behave like a single
9
    corpus"""
10
11
    def __init__(self, corpora):
12
        self._corpora = corpora
13
14
    @property
15
    def documents(self):
16
        return itertools.chain.from_iterable(
17
            [corpus.documents for corpus in self._corpora])
18
19
    def set_subject_index(self, subject_index):
20
        """Set a subject index for looking up labels that are necessary for
21
        conversion"""
22
23
        for corpus in self._corpora:
24
            if hasattr(corpus, 'set_subject_index'):
25
                corpus.set_subject_index(subject_index)
26