本文整理汇总了Python中xmlrpclib.ServerProxy.package_releases方法的典型用法代码示例。如果您正苦于以下问题:Python ServerProxy.package_releases方法的具体用法?Python ServerProxy.package_releases怎么用?Python ServerProxy.package_releases使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xmlrpclib.ServerProxy
的用法示例。
在下文中一共展示了ServerProxy.package_releases方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: execute
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def execute(args, parser):
global binstar_upload
global client
binstar_upload = args.binstar_upload
client = ServerProxy(args.pypi_url)
package = args.pypi_name[0]
if args.release == 'latest':
version = None
all_versions = False
else:
all_versions = True
version = args.release[0]
releases = client.package_releases(package, all_versions)
if not releases:
sys.exit("Error: PyPI does not have a package named %s" % package)
if all_versions and version not in releases:
print(releases)
print("Warning: PyPI does not have version %s of package %s" % (version, package))
if all_versions:
build_package(package, version)
else:
version = releases[0]
build_package(package, version)
示例2: execute
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def execute(args, parser):
global binstar_upload
global client
binstar_upload = args.binstar_upload
client = ServerProxy(args.pypi_url)
package = args.pypi_name[0]
if args.release == 'latest':
version = None
all_versions = False
else:
all_versions = True
version = args.release[0]
search = client.search({'name': package})
if search:
r_name = list(filter(lambda x: ('name' in x and package.lower() == x['name'].lower()), search))
if r_name:
print('Package search: %s' % r_name[0])
package = r_name[0]['name']
releases = client.package_releases(package, all_versions)
if not releases:
sys.exit("Error: PyPI does not have a package named %s" % package)
if all_versions and version not in releases:
print(releases)
print("Warning: PyPI does not have version %s of package %s" %
(version, package))
if all_versions:
build_package(package, version)
else:
version = releases[0]
build_package(package, version)
示例3: _fetch_version
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def _fetch_version(name):
arch_name = fix_name(name)
# First try to get the package by name
r = requests.get("https://www.archlinux.org/packages/search/json",
params={"name": arch_name})
if r.status_code == 200:
results = r.json()["results"]
else:
results = []
def build_url(r):
return "https://www.archlinux.org/packages/%s/%s/%s" % (
r["repo"], r["arch"], r["pkgname"])
versions = {}
for result in results:
url = build_url(result)
versions[arch_name] = (result["pkgver"], url)
for vs in result["provides"]:
if "=" in vs:
prov_name, ver = vs.split("=", 1)
ver = ver.rsplit("-", 1)[0]
versions[prov_name] = (ver, url)
else:
versions[vs] = (result["pkgver"], url)
return versions
# If all fails, search the AUR
r = requests.get("https://aur.archlinux.org/rpc.php", params={
"v": "5", "type": "search", "by": "name", "arg": arch_name})
if r.status_code == 200:
results = r.json()["results"]
else:
results = []
for result in results:
if result["Name"] == arch_name:
url = "https://aur.archlinux.org/packages/%s" % result["Name"]
return {arch_name: (result["Version"].rsplit("-", 1)[0], url)}
if arch_name.startswith(("python-", "python2-")):
pypi_name = arch_name.split("-", 1)[-1]
else:
pypi_name = arch_name
client = ServerProxy('https://pypi.python.org/pypi')
releases = client.package_releases(pypi_name)
if releases:
return {arch_name: (
releases[0], "https://pypi.python.org/pypi/%s" % pypi_name)}
r = requests.get(
"http://ftp.gnome.org/pub/GNOME/sources/%s/cache.json" % arch_name)
if r.status_code == 200:
return {arch_name: (list(r.json()[2].values())[0][-1], "")}
return {}
示例4: PyPI
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [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)
示例5: update_package
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def update_package(index, newer, pkg_name, update_package=False, update_release=False):
rpc = ServerProxy(index.url)
package, created = Package.objects.get_or_create(name=pkg_name)
if not created and not update_package:
return
for pkg_version in rpc.package_releases(pkg_name):
release, created = Release.objects.get_or_create(
package=package, version=pkg_version)
if created:
newer.releases_added.add(release)
if created or update_release:
pkg_data = rpc.release_data(pkg_name, pkg_version)
#print 'Retrieved release data: %s' % (str(pkg_data),)
if 'name' in pkg_data:
del pkg_data['name']
if 'version' in pkg_data:
del pkg_data['version']
for key, value in pkg_data.iteritems():
if key != 'classifier':
release.package_info[key] = value
else:
release.package_info.setlist(key, value)
release.save()
downloads = rpc.release_urls(pkg_name, pkg_version)
for download in downloads:
#print 'Download data: %s' % (str(download),)
dist, created = Distribution.objects.get_or_create(release=release,
filetype=download['packagetype'],
pyversion=download['python_version'])
if created or not dist.content or dist.md5_digest != download['md5_digest']:
dist.md5_digest = download['md5_digest']
content_file = ContentFile(urllib.urlopen(download['url']).read())
dist.content.save(download['filename'], content_file, False)
print 'New Download:', dist
print 'Download: %s, %s, %s' % (created, dist.content, dist.md5_digest)
dist.comment = download['comment_text']
dist.save()
示例6: execute
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def execute(args, parser):
print("*** conda pipbuild is no longer supported. "
"It will be removmed in a future release of conda-build. ***")
print("Please use conda build instead.")
global binstar_upload
global client
binstar_upload = args.binstar_upload
client = ServerProxy(args.pypi_url)
package = args.pypi_name[0]
if args.release == 'latest':
version = None
all_versions = False
else:
all_versions = True
version = args.release[0]
search = client.search({'name': package})
if search:
r_name = list(filter(lambda x: ('name' in x and
package.lower() == x['name'].lower()), search))
if r_name:
print('Package search: %s' % r_name[0])
package = r_name[0]['name']
releases = client.package_releases(package, all_versions)
if not releases:
sys.exit("Error: PyPI does not have a package named %s" % package)
if all_versions and version not in releases:
print(releases)
print("Warning: PyPI does not have version %s of package %s" %
(version, package))
if all_versions:
build_package(package, version, noarch_python=args.noarch_python)
else:
version = releases[0]
build_package(package, version, noarch_python=args.noarch_python)
示例7: fetch_update
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def fetch_update(user_bloom):
if os.path.exists(user_bloom):
return
open(user_bloom, 'w').close() # Touch the file
pypi = ServerProxy('http://pypi.python.org/pypi')
newest_version = pypi.package_releases('bloom')
newest_version = newest_version[0] if newest_version else None
current_version = bloom.__version__
if newest_version and bloom.__version__ != 'unset':
if parse_version(bloom.__version__) < parse_version(newest_version):
version_dict = {
'current': str(current_version),
'newest': str(newest_version)
}
with open(user_bloom, 'w') as f:
f.write(json.dumps(version_dict))
info(UPDATE_MSG.format(**version_dict))
if _quiet:
return
else:
info("Bloom is up-to-date!")
else:
info("Cannot determine newest version of bloom.")
os.remove(user_bloom)
示例8: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def main(args, parser):
client = ServerProxy(args.pypi_url)
package_dicts = {}
[output_dir] = args.output_dir
indent = '\n - '
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")
for package in args.packages:
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:
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']
d['md5'] = urls[n]['md5_digest']
d['filename'] = urls[n]['filename']
d['homeurl'] = data['home_page']
license_classifier = "License :: OSI Approved ::"
licenses = [classifier.lstrip(license_classifier) for classifier in
data['classifiers'] if classifier.startswith(license_classifier)]
if not licenses:
if data['license']:
if args.noprompt:
license = data['license']
else:
# Some projects put the whole license text in this field
print("This is the license for %s" % package)
print()
print(data['license'])
print()
license = input("What license string should I use? ")
else:
if args.noprompt:
license = "UNKNOWN"
else:
license = input("No license could be found for %s on PyPI. What license should I use? " % package)
else:
license = ' or '.join(licenses)
d['license'] = license
# Unfortunately, two important pieces of metadata are only stored in
# the package itself: the dependencies, and the entry points (if the
#.........这里部分代码省略.........
示例9: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [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']))
#.........这里部分代码省略.........
示例10: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [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()
# Look for package[extra,...] features spec:
match_extras = re.match(r'^([^[]+)\[([^]]+)\]$', package)
if match_extras:
package, extras = match_extras.groups()
extras = extras.split(',')
else:
extras = []
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? "))
#.........这里部分代码省略.........
示例11: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [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:
#.........这里部分代码省略.........
示例12: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def main(args, parser):
client = ServerProxy(args.pypi_url)
package_dicts = {}
for package in args.packages:
d = package_dicts.setdefault(package, {'packagename': package})
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 avalaiable on PyPI."
% (version, package))
d['version'] = version
else:
versions = client.package_releases(package)
if not versions:
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[-1])
print("Use --version to specify a different version.")
d['version'] = versions[-1]
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:
sys.exit("Error: No source urls found for %s" % package)
if len(urls) > 1:
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(raw_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']
d['md5'] = urls[n]['md5_digest']
d['filename'] = urls[n]['filename']
data = client.release_data(package, d['version'])
d['homeurl'] = data['home_page']
license_classifier = "License :: OSI Approved ::"
licenses = [classifier.lstrip(license_classifier) for classifier in
data['classifiers'] if classifier.startswith(license_classifier)]
if not licenses:
if data['license']:
# Some projects put the whole license text in this field
print("This is the license for %s" % package)
print()
print(data['license'])
print()
license = raw_input("What license string should I use? ")
else:
license = raw_input("No license could be found for %s on PyPI. What license should I use? " % package)
else:
license = ' or '.join(licenses)
d['license'] = license
for package in package_dicts:
[output_dir] = args.output_dir
d = package_dicts[package]
makedirs(join(output_dir, package))
print("Writing recipe for %s" % package)
with open(join(output_dir, package, 'meta.yaml'),
'w') as f:
f.write(PYPI_META.format(**d))
with open(join(output_dir, package, 'build.sh'), 'w') as f:
f.write(PYPI_BUILD_SH.format(**d))
with open(join(output_dir, package, 'bld.bat'), 'w') as f:
f.write(PYPI_BLD_BAT.format(**d))
print("Done")
示例13: set
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
"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)
try:
示例14: run
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def run(self):
pypi=ServerProxy(url)
response=pypi.package_releases(
pkg,True
)
print response
示例15: main
# 需要导入模块: from xmlrpclib import ServerProxy [as 别名]
# 或者: from xmlrpclib.ServerProxy import package_releases [as 别名]
def main(args, parser):
client = ServerProxy(args.pypi_url)
package_dicts = {}
[output_dir] = args.output_dir
indent = "\n - "
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")
for package in args.packages:
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": "",
},
)
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:
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"]
d["md5"] = urls[n]["md5_digest"]
d["filename"] = urls[n]["filename"]
d["homeurl"] = data["home_page"]
license_classifier = "License :: OSI Approved ::"
licenses = [
classifier.lstrip(license_classifier)
for classifier in data["classifiers"]
if classifier.startswith(license_classifier)
]
if not licenses:
if data["license"]:
if args.noprompt:
license = data["license"]
else:
# Some projects put the whole license text in this field
print("This is the license for %s" % package)
print()
print(data["license"])
print()
license = input("What license string should I use? ")
else:
if args.noprompt:
license = "UNKNOWN"
else:
#.........这里部分代码省略.........