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

Reply via email to