def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.api = WikipediaAPI(on_error=self.Error.api_error) self.result = None query_box = gui.hBox(self.controlArea, 'Query') # Queries configuration layout = QGridLayout() layout.setSpacing(7) row = 0 self.query_edit = ListEdit(self, 'query_list', "Each line represents a " "separate query.", 100, self) layout.addWidget(QLabel('Query word list:'), row, 0, 1, self.label_width) layout.addWidget(self.query_edit, row, self.label_width, 1, self.widgets_width) # Language row += 1 language_edit = ComboBox(self, 'language', tuple(sorted(lang2code.items()))) layout.addWidget(QLabel('Language:'), row, 0, 1, self.label_width) layout.addWidget(language_edit, row, self.label_width, 1, self.widgets_width) # Articles per query row += 1 layout.addWidget(QLabel('Articles per query:'), row, 0, 1, self.label_width) slider = gui.valueSlider(query_box, self, 'articles_per_query', box='', values=[1, 3, 5, 10, 25]) layout.addWidget(slider.box, row, 1, 1, self.widgets_width) query_box.layout().addLayout(layout) self.controlArea.layout().addWidget(query_box) self.controlArea.layout().addWidget( CheckListLayout('Text includes', self, 'text_includes', self.attributes, cols=2, callback=self.set_text_features)) self.info_box = gui.hBox(self.controlArea, 'Info') self.result_label = gui.label(self.info_box, self, self.info_label.format(0)) self.button_box = gui.hBox(self.controlArea) self.search_button = gui.button(self.button_box, self, 'Search', self.start_stop) self.search_button.setFocusPolicy(Qt.NoFocus)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.api = WikipediaAPI(on_error=self.Error.api_error) self.result = None query_box = gui.hBox(self.controlArea, '查询') # Queries configuration layout = QGridLayout() layout.setSpacing(7) row = 0 self.query_edit = ListEdit(self, 'query_list', "每一行表示一个不同的查询", 100, self) layout.addWidget(QLabel('查询词:'), row, 0, 1, self.label_width) layout.addWidget(self.query_edit, row, self.label_width, 1, self.widgets_width) # Articles per query row += 1 layout.addWidget(QLabel('每次查询文章数量:'), row, 0, 1, self.label_width) slider = gui.valueSlider(query_box, self, 'articles_per_query', box='', values=[10, 30, 50, 80, 100]) layout.addWidget(slider.box, row, 1, 1, self.widgets_width) query_box.layout().addLayout(layout) self.controlArea.layout().addWidget(query_box) self.controlArea.layout().addWidget( CheckListLayout('包含的内容', self, 'text_includes', self.attributes, cols=2, callback=self.set_text_features)) self.info_box = gui.hBox(self.controlArea, '基本信息') self.result_label = gui.label(self.info_box, self, self.info_label.format(0)) self.button_box = gui.hBox(self.controlArea) self.search_button = gui.button(self.button_box, self, '查询', self.start_stop) self.search_button.setFocusPolicy(Qt.NoFocus)
def test_search_break(self): api = WikipediaAPI() # stop immediately result = api.search('en', ['Clinton'], articles_per_query=2, should_break=mock.Mock(return_value=True)) self.assertEqual(len(result), 0) # stop inside recursion result_all = api.search('en', ['Scarf'], articles_per_query=3) result_stopped = api.search('en', ['Scarf'], articles_per_query=3, should_break=StoppingMock(allow_calls=1)) self.assertLess(len(result_stopped), len(result_all))
def test_search(self): on_progress = mock.MagicMock() api = WikipediaAPI() result = api.search('en', ['Clinton'], articles_per_query=2, on_progress=on_progress) self.assertIsInstance(result, Corpus) self.assertEquals(len(result.domain.attributes), 0) self.assertEquals(len(result.domain.metas), 7) self.assertEquals(len(result), 2) self.assertEquals(on_progress.call_count, 2) progress = 0 for arg in on_progress.call_args_list: self.assertGreater(arg[0][0], progress) progress = arg[0][0]
def test_network_errors(self): on_error = mock.MagicMock() api = WikipediaAPI(on_error=on_error) api.search('en', ['Barack Obama']) self.assertEqual(on_error.call_count, 1)
def test_search_disambiguation(self): api = WikipediaAPI() result = api.search('en', ['Scarf'], articles_per_query=3) self.assertIsInstance(result, Corpus) self.assertGreaterEqual(len(result), 3)