--- dtflickr/__init__.py.orig 2009-09-21 01:59:19 UTC +++ dtflickr/__init__.py @@ -19,10 +19,10 @@ # limitations under the License. import hashlib -import _methods +from . import _methods import re import time -import urllib, urllib2 +import urllib.request, urllib.parse, urllib.error, urllib.request, urllib.error, urllib.parse try: import simplejson as json @@ -50,7 +50,7 @@ for namespace, methods in _methods.namespaces: for method, documentation in methods: code += ' def ' + method + '(self, **arguments):\n ' + repr(documentation) + '\n return self._execute(\'' + method + '\', **arguments)\n' - exec code in globals(), locals() + exec(code, globals(), locals()) del namespace, methods, method, documentation, code @@ -92,19 +92,19 @@ class Flickr: self.__signature = None for namespace, methods in _methods.namespaces: - exec 'self.' + namespace + ' = ' + _methods.namespace(namespace) + '(self)' + exec('self.' + namespace + ' = ' + _methods.namespace(namespace) + '(self)') self.__cache = {} def _execute(self, method, **arguments): - for name, value in arguments.iteritems(): - arguments[name] = unicode(value).encode('utf8') + for name, value in arguments.items(): + arguments[name] = str(value).encode('utf8') arguments['api_key'] = self.__api_key arguments['format'] = 'json' arguments['method'] = 'flickr.' + method arguments['nojsoncallback'] = 1 - parameters = arguments.items() + parameters = list(arguments.items()) parameters.sort() @@ -112,31 +112,31 @@ class Flickr: signature = self.__signature.copy() for name, value in parameters: - signature.update(name + unicode(value).encode('utf8')) + signature.update(name + str(value).encode('utf8')) parameters.append(('api_sig', signature.hexdigest())) - parameters = urllib.urlencode(parameters) + parameters = urllib.parse.urlencode(parameters) cached = self.__cache.get(parameters) if cached is not None and cached[0] > time.time(): response = cached[1] now = time.time() - for parameters, cached in self.__cache.items(): + for parameters, cached in list(self.__cache.items()): if cached[0] <= now: del self.__cache[parameters] return response - response = json.load(urllib2.urlopen('http://api.flickr.com/services/rest/', parameters), object_hook = Response) + response = json.load(urllib.request.urlopen('http://api.flickr.com/services/rest/', parameters), object_hook = Response) if response.stat == 'ok': self.__cache[parameters] = (time.time() + 60, response) return response else: - raise Failure, response + raise Failure(response) class Response: def __init__(self, data): @@ -158,7 +158,7 @@ class Response: return self.__data[name] def __iter__(self): - return self.__data.iteritems() + return iter(self.__data.items()) def __contains__(self, name): return name in self.__data @@ -230,7 +230,7 @@ def getBuddyiconURL(person, flickr = None): flickr (Optional) A Flickr API instance used to get a person response. """ - if isinstance(person, basestring): + if isinstance(person, str): assert flickr is not None and isinstance(flickr, Flickr) person = flickr.people.getInfo(user_id = person).person