jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/825392 )

Change subject: [IMPR] raise KeyError instead of AttributeError if FileInfo is 
used as Mapping
......................................................................

[IMPR] raise KeyError instead of AttributeError if FileInfo is used as Mapping

For mapping types, if key is missing, KeyError should be raised, see
https://docs.python.org/3/reference/datamodel.html?highlight=__getitem__#object.__getitem__

Change-Id: I84aef0a0b7033318c2f1d4ab850c65cb283a9210
---
M pywikibot/page/_filepage.py
1 file changed, 11 insertions(+), 3 deletions(-)

Approvals:
  Matěj Suchánek: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/page/_filepage.py b/pywikibot/page/_filepage.py
index 1616bb7..bd627e4 100644
--- a/pywikibot/page/_filepage.py
+++ b/pywikibot/page/_filepage.py
@@ -360,21 +360,29 @@
     <pywikibot.site._apisite.APISite.loadimageinfo>` for details.

     .. note:: timestamp will be casted to :func:`pywikibot.Timestamp`.
+
+    .. versionchanged:: 7.7
+       raises KeyError instead of AttributeError if FileInfo is used as
+       Mapping.
     """

     def __init__(self, file_revision) -> None:
-        """Initiate the class using the dict from `APISite.loadimageinfo`."""
+        """Initiate the class using the dict from ``APISite.loadimageinfo``."""
         self.__dict__.update(file_revision)
         self.timestamp = pywikibot.Timestamp.fromISOformat(self.timestamp)

     def __getitem__(self, key):
         """Give access to class values by key."""
-        return getattr(self, key)
+        try:
+            result = getattr(self, key)
+        except AttributeError as e:
+            raise KeyError(str(e).replace('attribute', 'key')) from None
+        return result

     def __repr__(self) -> str:
         """Return a more complete string representation."""
         return repr(self.__dict__)

     def __eq__(self, other) -> bool:
-        """Test if two File_info objects are equal."""
+        """Test if two FileInfo objects are equal."""
         return self.__dict__ == other.__dict__

--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/825392
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I84aef0a0b7033318c2f1d4ab850c65cb283a9210
Gerrit-Change-Number: 825392
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: Matěj Suchánek <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-CC: Mpaa <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to