Author: adc
Date: Sat Aug  9 23:18:58 2014
New Revision: 1617026

URL: http://svn.apache.org/r1617026
Log:
get_committer() should not cache committer records in the package

Modified:
    labs/panopticon/pan-utils/src/asf/utils/committers.py
    labs/panopticon/pan-utils/tests/test_committers.py

Modified: labs/panopticon/pan-utils/src/asf/utils/committers.py
URL: 
http://svn.apache.org/viewvc/labs/panopticon/pan-utils/src/asf/utils/committers.py?rev=1617026&r1=1617025&r2=1617026&view=diff
==============================================================================
--- labs/panopticon/pan-utils/src/asf/utils/committers.py (original)
+++ labs/panopticon/pan-utils/src/asf/utils/committers.py Sat Aug  9 23:18:58 
2014
@@ -41,7 +41,8 @@ class Committer(object):
         self.mentoring = set(mentoring)
 
     def as_tuple(self):
-        return self.username, self.member, self.fullname, 
tuple(sorted(self.emails)), tuple(sorted(self.urls)), 
tuple(sorted(self.committees)), tuple(sorted(self.projects)), 
tuple(sorted(self.mentoring))
+        return self.username, self.member, self.fullname, 
tuple(sorted(self.emails)), tuple(sorted(self.urls)), \
+            tuple(sorted(self.committees)), tuple(sorted(self.projects)), 
tuple(sorted(self.mentoring))
 
     def __eq__(self, other):
         return self.as_tuple() == other.as_tuple()
@@ -53,41 +54,35 @@ class Committer(object):
         return 'Committer(%s, %s, %s, %s, %s, %s, %s, %s)' % self.as_tuple()
 
 
-COMMITTERS = {}
-
-
 def get_committer(committer, username, password):
-    global COMMITTERS
-    if committer not in COMMITTERS:
-        try:
-            committer_json = json.loads(Resource('%s/%s' % (COMMITTERS_URL, 
committer),
-                                                 filters=[BasicAuth(username, 
password)],
-                                                 
timeout=10).get(headers={'Accept': 'application/json'}).body_string())
-        except ResourceNotFound:
-            log.warning('Unable to find committer %s' % committer)
-        else:
-            availid = committer_json['availid']
-            member = bool(committer_json['member'])
-            fullname = committer_json['name']
-
-            emails = set()
-            for email in committer_json['emails']:
-                try:
-                    emails.add(canonical_email_address(email))
-                except ValueError:
-                    log.warning('Malformed email address %s not added to 
committer %s', email, committer)
-
-            urls = committer_json['urls']
-            committees = committer_json['committees']
-            projects = set(committer_json['groups'])
-            if 'apsite' in projects:
-                projects.remove('apsite')
-            if 'committers' in projects:
-                projects.remove('committers')
-            if 'member' in projects:
-                projects.remove('member')
-            mentoring = committer_json['auth']
-
-            COMMITTERS[committer] = Committer(availid, member, fullname, 
emails, urls, committees, projects, mentoring)
+    try:
+        committer_json = json.loads(Resource('%s/%s' % (COMMITTERS_URL, 
committer),
+                                             filters=[BasicAuth(username, 
password)],
+                                             
timeout=10).get(headers={'Accept': 'application/json'}).body_string())
+    except ResourceNotFound:
+        log.debug('Unable to find committer %s' % committer)
+        raise KeyError
+    else:
+        availid = committer_json['availid']
+        member = bool(committer_json['member'])
+        fullname = committer_json['name']
+
+        emails = set()
+        for email in committer_json['emails']:
+            try:
+                emails.add(canonical_email_address(email))
+            except ValueError:
+                log.warning('Malformed email address %s not added to committer 
%s', email, committer)
+
+        urls = committer_json['urls']
+        committees = committer_json['committees']
+        projects = set(committer_json['groups'])
+        if 'apsite' in projects:
+            projects.remove('apsite')
+        if 'committers' in projects:
+            projects.remove('committers')
+        if 'member' in projects:
+            projects.remove('member')
+        mentoring = committer_json['auth']
 
-    return COMMITTERS[committer]
+        return Committer(availid, member, fullname, emails, urls, committees, 
projects, mentoring)

Modified: labs/panopticon/pan-utils/tests/test_committers.py
URL: 
http://svn.apache.org/viewvc/labs/panopticon/pan-utils/tests/test_committers.py?rev=1617026&r1=1617025&r2=1617026&view=diff
==============================================================================
--- labs/panopticon/pan-utils/tests/test_committers.py (original)
+++ labs/panopticon/pan-utils/tests/test_committers.py Sat Aug  9 23:18:58 2014
@@ -29,9 +29,9 @@ def test_get_committer(username, passwor
     assert committer.fullname == 'Alan Cabrera'
     assert 'incubator' in committer.committees
     assert 'geronimo' in committer.projects
-    assert 'yoko' in committer.mentoring
+    assert 'mrql' in committer.mentoring
 
-    assert committer is get_committer('adc', username, password)
+    assert committer == get_committer('adc', username, password)
 
 
 @ensure_credentials_stored



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@labs.apache.org
For additional commands, e-mail: commits-h...@labs.apache.org

Reply via email to