11308: Futurize.
[arvados.git] / sdk / python / arvados / safeapi.py
index 539f1e62cc3f7ca09266c523b250ecf2116fe63d..bc875367de02e6bea245c4d2230346bf4a78ac36 100644 (file)
@@ -1,13 +1,16 @@
+from __future__ import absolute_import
 import threading
-import api
-import keep
-import config
+from . import api
+from . import keep
+from . import config
 import copy
 
-class SafeApi(object):
-    """Threadsafe wrapper for API object.  This stores and returns a different api
-    object per thread, because httplib2 which underlies apiclient is not
-    threadsafe.
+class ThreadSafeApiCache(object):
+    """Threadsafe wrapper for API objects.
+
+    This stores and returns a different api object per thread, because httplib2
+    which underlies apiclient is not threadsafe.
+
     """
 
     def __init__(self, apiconfig=None, keep_params={}):
@@ -19,14 +22,11 @@ class SafeApi(object):
 
     def localapi(self):
         if 'api' not in self.local.__dict__:
-            self.local.api = api.api('v1', False, apiconfig=self.apiconfig)
+            self.local.api = api.api_from_config('v1', apiconfig=self.apiconfig)
         return self.local.api
 
     def __getattr__(self, name):
         # Proxy nonexistent attributes to the thread-local API client.
         if name == "api_token":
             return self.apiconfig['ARVADOS_API_TOKEN']
-        try:
-            return getattr(self.localapi(), name)
-        except AttributeError:
-            return super(SafeApi, self).__getattr__(name)
+        return getattr(self.localapi(), name)