本文整理汇总了Python中xmlrpclib.ServerProxy.list_packages方法的典型用法代码示例。如果您正苦于以下问题:Python ServerProxy.list_packages方法的具体用法?Python ServerProxy.list_packages怎么用?Python ServerProxy.list_packages使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xmlrpclib.ServerProxy
的用法示例。
在下文中一共展示了ServerProxy.list_packages方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: PyPI
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import list_packages [as 别名]
class PyPI(PyPIBase):
def __init__(self, server="https://pypi.python.org"):
super(PyPI, self).__init__(server)
self._client = ServerProxy("{}/pypi".format(self.server))
def get_available_versions(self, package_name):
releases = self._client.package_releases(package_name)
logger.info("Versions found for {!r}: {!r}".format(package_name, releases))
if len(releases) == 0:
raise PackageNotFound(package_name)
return releases
def get_latest_version(self, package_name):
return self.get_available_versions(package_name)[0]
def get_releases_for_version(self, package_name, release_version):
return self._client.release_urls(package_name, release_version)
def get_latest_source_distribution_url(self, package_name):
release_version = self.get_latest_version(package_name)
return self.get_source_distribution_url_of_specific_release_version(package_name, release_version)
def get_source_distribution_url_of_specific_release_version(self, package_name, release_version):
for release in [release for release in self.get_releases_for_version(package_name, release_version) if release['packagetype'] == 'sdist']:
return release['url']
raise SourceDistributionNotFound(package_name, release_version)
def get_release_data(self, package_name, version=None):
if version is None:
version = self.get_latest_version(package_name)
return self._client.release_data(package_name, version)
def get_all_packages(self):
return self._client.list_packages()
def find_pypi_name(self, package_name):
# find the "correct" name used by PyPI for a package,
# e.g. logbook -> Logbook, ipython-genutils -> ipython_genutils
import requests
requests.packages.urllib3.disable_warnings()
response = requests.get(self.server + "/pypi/" + package_name + "/", allow_redirects=False)
if response.status_code == 200:
return package_name
if response.status_code == 301:
return response.headers["Location"].split("/")[-1]
raise PackageNotFound(package_name)
示例2: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import list_packages [as 别名]
def main(args, parser):
if len(args.packages) > 1 and args.download:
# Because if a package's setup.py imports setuptools, it will make all
# future packages look like they depend on distribute. Also, who knows
# what kind of monkeypatching the setup.pys out there could be doing.
print("WARNING: building more than one recipe at once without "
"--no-download is not recommended")
proxies = get_proxy_servers()
if proxies:
transport = RequestsTransport()
else:
transport = None
client = ServerProxy(args.pypi_url, transport=transport)
package_dicts = {}
[output_dir] = args.output_dir
indent = '\n - '
all_packages = client.list_packages()
all_packages_lower = [i.lower() for i in all_packages]
while args.packages:
package = args.packages.pop()
dir_path = join(output_dir, package.lower())
if exists(dir_path):
raise RuntimeError("directory already exists: %s" % dir_path)
d = package_dicts.setdefault(package, {'packagename': package.lower(),
'run_depends': '',
'build_depends': '',
'entry_points': '',
'build_comment': '# ',
'test_commands': '',
'usemd5': '',
'entry_comment': '#',
'egg_comment': '#'})
d['import_tests'] = valid(package).lower()
if d['import_tests'] == '':
d['import_comment'] = '# '
else:
d['import_comment'] = ''
d['import_tests'] = indent + d['import_tests']
if args.version:
[version] = args.version
versions = client.package_releases(package, True)
if version not in versions:
sys.exit("Error: Version %s of %s is not available on PyPI."
% (version, package))
d['version'] = version
else:
versions = client.package_releases(package)
if not versions:
# The xmlrpc interface is case sensitive, but the index itself
# is apparently not (the last time I checked,
# len(set(all_packages_lower)) == len(set(all_packages)))
if package.lower() in all_packages_lower:
print("%s not found, trying %s" % (package, package.capitalize()))
args.packages.append(all_packages[all_packages_lower.index(package.lower())])
del package_dicts[package]
continue
sys.exit("Error: Could not find any versions of package %s" %
package)
if len(versions) > 1:
print("Warning, the following versions were found for %s" %
package)
for ver in versions:
print(ver)
print("Using %s" % versions[0])
print("Use --version to specify a different version.")
d['version'] = versions[0]
data = client.release_data(package, d['version'])
urls = client.release_urls(package, d['version'])
if not args.all_urls:
# Try to find source urls
urls = [url for url in urls if url['python_version'] == 'source']
if not urls:
if 'download_url' in data:
urls = [defaultdict(str, {'url': data['download_url']})]
urls[0]['filename'] = urls[0]['url'].split('/')[-1]
d['usemd5'] = '#'
else:
sys.exit("Error: No source urls found for %s" % package)
if len(urls) > 1 and not args.noprompt:
print("More than one source version is available for %s:" %
package)
for i, url in enumerate(urls):
print("%d: %s (%s) %s" % (i, url['url'],
human_bytes(url['size']),
url['comment_text']))
n = int(input("Which version should I use? "))
else:
n = 0
print("Using url %s (%s) for %s." % (urls[n]['url'], urls[n]['size'],
package))
d['pypiurl'] = urls[n]['url']
#.........这里部分代码省略.........
示例3: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import list_packages [as 别名]
def main(args, parser):
proxies = get_proxy_servers()
if proxies:
transport = RequestsTransport()
else:
transport = None
client = ServerProxy(args.pypi_url, transport=transport)
package_dicts = {}
[output_dir] = args.output_dir
all_packages = client.list_packages()
all_packages_lower = [i.lower() for i in all_packages]
while args.packages:
[output_dir] = args.output_dir
package = args.packages.pop()
is_url = ':' in package
if not is_url:
dir_path = join(output_dir, package.lower())
if exists(dir_path):
raise RuntimeError("directory already exists: %s" % dir_path)
d = package_dicts.setdefault(package,
{
'packagename': package.lower(),
'run_depends': '',
'build_depends': '',
'entry_points': '',
'build_comment': '# ',
'test_commands': '',
'usemd5': '',
'test_comment': '',
'entry_comment': '# ',
'egg_comment': '# ',
'summary_comment': '',
'home_comment': '',
})
if is_url:
del d['packagename']
if is_url:
d['version'] = 'UNKNOWN'
else:
if args.version:
[version] = args.version
versions = client.package_releases(package, True)
if version not in versions:
sys.exit("Error: Version %s of %s is not available on PyPI."
% (version, package))
d['version'] = version
else:
versions = client.package_releases(package)
if not versions:
# The xmlrpc interface is case sensitive, but the index itself
# is apparently not (the last time I checked,
# len(set(all_packages_lower)) == len(set(all_packages)))
if package.lower() in all_packages_lower:
print("%s not found, trying %s" % (package, package.capitalize()))
args.packages.append(all_packages[all_packages_lower.index(package.lower())])
del package_dicts[package]
continue
sys.exit("Error: Could not find any versions of package %s" %
package)
if len(versions) > 1:
print("Warning, the following versions were found for %s" %
package)
for ver in versions:
print(ver)
print("Using %s" % versions[0])
print("Use --version to specify a different version.")
d['version'] = versions[0]
data = client.release_data(package, d['version']) if not is_url else None
urls = client.release_urls(package, d['version']) if not is_url else [package]
if not is_url and not args.all_urls:
# Try to find source urls
urls = [url for url in urls if url['python_version'] == 'source']
if not urls:
if 'download_url' in data:
urls = [defaultdict(str, {'url': data['download_url']})]
U = parse_url(urls[0]['url'])
urls[0]['filename'] = U.path.rsplit('/')[-1]
fragment = U.fragment or ''
if fragment.startswith('md5='):
d['usemd5'] = ''
d['md5'] = fragment[len('md5='):]
else:
d['usemd5'] = '#'
else:
sys.exit("Error: No source urls found for %s" % package)
if len(urls) > 1 and not args.noprompt:
print("More than one source version is available for %s:" %
package)
for i, url in enumerate(urls):
print("%d: %s (%s) %s" % (i, url['url'],
human_bytes(url['size']),
url['comment_text']))
#.........这里部分代码省略.........
示例4: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import list_packages [as 别名]
def main(args, parser):
proxies = get_proxy_servers()
if proxies:
transport = RequestsTransport()
else:
transport = None
client = ServerProxy(args.pypi_url, transport=transport)
package_dicts = {}
[output_dir] = args.output_dir
all_packages = client.list_packages()
all_packages_lower = [i.lower() for i in all_packages]
args.created_recipes = []
while args.packages:
[output_dir] = args.output_dir
package = args.packages.pop()
args.created_recipes.append(package)
is_url = ':' in package
if not is_url:
dir_path = join(output_dir, package.lower())
if exists(dir_path) and not args.version_compare:
raise RuntimeError("directory already exists: %s" % dir_path)
d = package_dicts.setdefault(package,
{
'packagename': package.lower(),
'run_depends': '',
'build_depends': '',
'entry_points': '',
'build_comment': '# ',
'noarch_python_comment': '# ',
'test_commands': '',
'requires_comment': '#',
'tests_require': '',
'usemd5': '',
'test_comment': '',
'entry_comment': '# ',
'egg_comment': '# ',
'summary_comment': '',
'home_comment': '',
})
if is_url:
del d['packagename']
if is_url:
d['version'] = 'UNKNOWN'
else:
versions = client.package_releases(package, True)
if args.version_compare:
version_compare(args, package, versions)
if args.version:
[version] = args.version
if version not in versions:
sys.exit("Error: Version %s of %s is not available on PyPI."
% (version, package))
d['version'] = version
else:
if not versions:
# The xmlrpc interface is case sensitive, but the index itself
# is apparently not (the last time I checked,
# len(set(all_packages_lower)) == len(set(all_packages)))
if package.lower() in all_packages_lower:
cased_package = all_packages[all_packages_lower.index(package.lower())]
if cased_package != package:
print("%s not found, trying %s" % (package, cased_package))
args.packages.append(cased_package)
del package_dicts[package]
continue
sys.exit("Error: Could not find any versions of package %s" % package)
if len(versions) > 1:
print("Warning, the following versions were found for %s" %
package)
for ver in versions:
print(ver)
print("Using %s" % versions[0])
print("Use --version to specify a different version.")
d['version'] = versions[0]
data, d['pypiurl'], d['filename'], d['md5'] = get_download_data(args,
client,
package,
d['version'],
is_url)
if d['md5'] == '':
d['usemd5'] = '# '
else:
d['usemd5'] = ''
d['import_tests'] = ''
get_package_metadata(args, package, d, data)
if d['import_tests'] == '':
d['import_comment'] = '# '
else:
#.........这里部分代码省略.........
示例5: set
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import list_packages [as 别名]
"fuzzy": set(),
"invalid": set(),
},
"ordering": {
"valid": set(),
"invalid": set(),
"unknown": set(),
},
}
try:
with open("version_data.pickle", "rb") as fp:
packages, package_versions, all_versions = pickle.load(fp)
except IOError:
packages = client.list_packages()
package_versions = [(p, client.package_releases(p, True)) for p in progress.bar.ShadyBar("Loading versions", max=len(packages)).iter(packages)]
all_versions = []
for p, vs in package_versions:
all_versions.extend([(p, v) for v in vs])
with open("version_data.pickle", "wb") as fp:
pickle.dump((packages, package_versions, all_versions), fp, -1)
for package, ver in progress.bar.ShadyBar("Trying packaging.version", max=len(all_versions)).iter(all_versions):
try:
Version(ver)
except ValueError:
suggested = suggest(ver)