diff --git a/yolk/pypi.py b/yolk/pypi.py index 3ba3ba0..ca264a1 100644 --- a/yolk/pypi.py +++ b/yolk/pypi.py @@ -24,7 +24,7 @@ import urllib2 else: import xmlrpc.client as xmlrpclib - import pickle + import pickle as cPickle import urllib.request as urllib2 import os import time @@ -164,7 +164,7 @@ def get_xmlrpc_server(self): Returns PyPI's XML-RPC server instance """ check_proxy_setting() - if os.environ.has_key('XMLRPC_DEBUG'): + if 'XMLRPC_DEBUG' in os.environ: debug = 1 else: debug = 0 @@ -203,13 +203,16 @@ def query_cached_package_list(self): """Return list of pickled package names from PYPI""" if self.debug: self.logger.debug("DEBUG: reading pickled cache file") - return cPickle.load(open(self.pkg_cache_file, "r")) + try: + return cPickle.load(open(self.pkg_cache_file, "rb")) + except ValueError: + return cPickle.load(open(self.pkg_cache_file, "r")) def fetch_pkg_list(self): """Fetch and cache master list of package names from PYPI""" self.logger.debug("DEBUG: Fetching package name list from PyPI") package_list = self.list_packages() - cPickle.dump(package_list, open(self.pkg_cache_file, "w")) + cPickle.dump(package_list, open(self.pkg_cache_file, "wb")) self.pkg_list = package_list def search(self, spec, operator): @@ -275,7 +278,7 @@ def get_download_urls(self, package_name, version="", pkg_type="all"): #Try the package's metadata directly in case there's nothing #returned by XML-RPC's release_urls() - if metadata and metadata.has_key('download_url') and \ + if metadata and 'download_url' in metadata and \ metadata['download_url'] != "UNKNOWN" and \ metadata['download_url'] != None: if metadata['download_url'] not in all_urls: