Mpaa has uploaded a new change for review. https://gerrit.wikimedia.org/r/242347
Change subject: proofreadpage.py: add IndexPage.get_page_from_number() ...................................................................... proofreadpage.py: add IndexPage.get_page_from_number() Add an additional function to retrieve mapping info between page and page numbers (and related tests) Rename internal function from _get_labels() to _get_page_mappings() as purpose is not restricted to labels only. Fix an error in tests and errors in docstrings. Change-Id: I9eed8035b02b7c7893eebaf68ed480a468f69293 --- M pywikibot/proofreadpage.py M tests/proofreadpage_tests.py 2 files changed, 28 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core refs/changes/47/242347/1 diff --git a/pywikibot/proofreadpage.py b/pywikibot/proofreadpage.py index a14e2f2..8873cd7 100644 --- a/pywikibot/proofreadpage.py +++ b/pywikibot/proofreadpage.py @@ -374,7 +374,7 @@ self._labels_from_page_number = {} self._labels_from_page = {} - def _get_page_labels(self): + def _get_page_mappings(self): """Associate label and number for each page linked to the index.""" self._parsed_text = self._get_parsed_page() self._soup = BeautifulSoup(self._parsed_text, 'html.parser') @@ -433,7 +433,7 @@ @rtype: unicode string """ if not self._labels_from_page: - self._get_page_labels() + self._get_page_mappings() try: return self._labels_from_page[page] @@ -450,7 +450,7 @@ @rtype: unicode string """ if not self._labels_from_page_number: - self._get_page_labels() + self._get_page_mappings() try: return self._labels_from_page_number[page_number] @@ -462,7 +462,7 @@ """Helper function to get info from label.""" # Convert label to string if an integer is passed. if not mapping_dict: - self._get_page_labels() + self._get_page_mappings() if isinstance(label, int): label = str(label) @@ -478,7 +478,7 @@ There is a 1-to-many correspondence (a label can be the same for several pages). - @return: list containing page numbers corresponding to page label. + @return: set containing page numbers corresponding to page label. """ return self._get_from_label(self._page_numbers_from_label, label) @@ -488,6 +488,21 @@ There is a 1-to-many correspondence (a label can be the same for several pages). - @return: list containing pages corresponding to page label. + @return: set containing pages corresponding to page label. """ return self._get_from_label(self._pages_from_label, label) + + def get_page_from_number(self, page_number): + """Return a page object from page number. + + @param page_number: int + @return: page + @rtype: page object + """ + if not self._page_from_numbers: + self._get_page_mappings() + + try: + return self._page_from_numbers[page_number] + except KeyError: + raise KeyError('Invalid page number: %s.' % page_number) diff --git a/tests/proofreadpage_tests.py b/tests/proofreadpage_tests.py index b16ec0e..25357fa 100644 --- a/tests/proofreadpage_tests.py +++ b/tests/proofreadpage_tests.py @@ -345,7 +345,7 @@ # Error if page does not exists. self.assertRaises(KeyError, index_page.get_label_from_page, None) - def test_get_page_number(self, key): + def test_get_page_and_number(self, key): """Test IndexPage page get_page_number functions.""" data = self.sites[key] index_page = IndexPage(self.site, self.sites[key]['index']) @@ -380,7 +380,12 @@ n = index_page._numbers_from_page[p] self.assertEqual(index_page._page_from_numbers[n], p) for n in num_set: - n = index_page._page_from_numbers[p] + p = index_page._page_from_numbers[n] + self.assertEqual(index_page._numbers_from_page[p], n) + + # Test get_page_from_number. + for n in num_set: + p = index_page.get_page_from_number(n) self.assertEqual(index_page._numbers_from_page[p], n) def test_page_number_mapping(self, key): -- To view, visit https://gerrit.wikimedia.org/r/242347 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9eed8035b02b7c7893eebaf68ed480a468f69293 Gerrit-PatchSet: 1 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: Mpaa <mpaa.w...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits