XZise has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/190427

Change subject: [IMPROV] Family: Style of the load method
......................................................................

[IMPROV] Family: Style of the load method

Instead of having spaghetti code there, it conly has one return. It also
raises errors with a more specific error message.

Change-Id: Ia4c5cddedfefffc25f955e50bcfc82d2f50677ff
---
M pywikibot/family.py
1 file changed, 20 insertions(+), 18 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/27/190427/1

diff --git a/pywikibot/family.py b/pywikibot/family.py
index c855aa0..6968379 100644
--- a/pywikibot/family.py
+++ b/pywikibot/family.py
@@ -865,31 +865,33 @@
             family_file = config.family_files[fam]
 
             if isinstance(family_file, dict):
-                myfamily = AutoFamily(**family_file)
-                Family._families[fam] = myfamily
-                return Family._families[fam]
-
-            if family_file.startswith('http://') or 
family_file.startswith('https://'):
-                myfamily = AutoFamily(fam, family_file)
-                Family._families[fam] = myfamily
-                return Family._families[fam]
+                family_instance = AutoFamily(**family_file)
+            if (family_file.startswith('http://') or
+                    family_file.startswith('https://')):
+                family_instance = AutoFamily(fam, family_file)
+            else:
+                try:
+                    # Ignore warnings due to dots in family names.
+                    # TODO: use more specific filter, so that family classes 
can use
+                    #       RuntimeWarning's while loading.
+                    with warnings.catch_warnings():
+                        warnings.simplefilter("ignore", RuntimeWarning)
+                        family_module = imp.load_source(fam, family_file)
+                except ImportError:
+                    raise UnknownFamily('Family {0} could not be '
+                                        'imported.'.format(fam))
+                else:
+                    family_instance = family_module.Family()
         elif fam == 'lockwiki':
             raise UnknownFamily(
                 "Family 'lockwiki' has been removed as it not a public wiki.\n"
                 "You may install your own family file for this wiki, and a "
                 "old family file may be found at:\n"
                 
"http://git.wikimedia.org/commitdiff/pywikibot%2Fcore.git/dfdc0c9150fa8e09829bb9d236";)
+        else:
+            raise UnknownFamily('Family {0} not defined in 
config.'.format(fam))
 
-        try:
-            # Ignore warnings due to dots in family names.
-            # TODO: use more specific filter, so that family classes can use
-            #     RuntimeWarning's while loading.
-            with warnings.catch_warnings():
-                warnings.simplefilter("ignore", RuntimeWarning)
-                myfamily = imp.load_source(fam, config.family_files[fam])
-        except (ImportError, KeyError):
-            raise UnknownFamily("Family %s does not exist" % fam)
-        Family._families[fam] = myfamily.Family()
+        Family._families[fam] = family_instance
         return Family._families[fam]
 
     @property

-- 
To view, visit https://gerrit.wikimedia.org/r/190427
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia4c5cddedfefffc25f955e50bcfc82d2f50677ff
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to