本文整理汇总了Python中xmlrpc.client.ServerProxy.release_data方法的典型用法代码示例。如果您正苦于以下问题:Python ServerProxy.release_data方法的具体用法?Python ServerProxy.release_data怎么用?Python ServerProxy.release_data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xmlrpc.client.ServerProxy
的用法示例。
在下文中一共展示了ServerProxy.release_data方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_pkg_info
# 需要导入模块: from xmlrpc.client import ServerProxy [as 别名]
# 或者: from xmlrpc.client.ServerProxy import release_data [as 别名]
def get_pkg_info(pkg_name, downloads=0):
# multiple asyncio jobs can not share a client
client = ServerProxy(PYPI_URL)
try:
release = client.package_releases(pkg_name)[0]
except IndexError: # marionette-transport, ll-orasql, and similar
print(pkg_name, 'has no releases in PyPI!!')
return pkg_info(pkg_name, downloads, False, False, 'PyPI error!!', '')
troves = '\n'.join(client.release_data(pkg_name, release)['classifiers'])
py2only = py2_only_classifier in troves
py3 = py3_classifier in troves
url = client.release_data(pkg_name, release)['package_url']
return pkg_info(pkg_name, downloads, py2only, py3, release, url)
示例2: __init__
# 需要导入模块: from xmlrpc.client import ServerProxy [as 别名]
# 或者: from xmlrpc.client.ServerProxy import release_data [as 别名]
class PYPISource:
PYPI_URL = 'http://pypi.python.org/pypi'
def __init__(self):
self.pypi = ServerProxy(self.PYPI_URL)
def packages(self):
return self.pypi.list_packages()
def releases(self, package):
return self.pypi.package_releases(package, True)
def urls(self, package, version):
return self.pypi.release_urls(package, version)
def release_data(self, package, version):
return self.pypi.release_data(package, version)
def release_data_and_urls(self, package, version):
return [self.release_data(package, version), self.urls(package, version)]
def latest(self):
return self.pypi.changelog_last_serial()
def changes(self, serial):
return self.pypi.changelog_since_serial(serial)
示例3: PyPiPackage
# 需要导入模块: from xmlrpc.client import ServerProxy [as 别名]
# 或者: from xmlrpc.client.ServerProxy import release_data [as 别名]
class PyPiPackage(object):
def __init__(self, name, json_link=None):
self.name = self.package =name
if not json_link:
self.json_link = "http://pypi.python.org/pypi/{}/json".format(self.package)
else:
self.json_link = json_link
self.proxy = ServerProxy('https://pypi.python.org/pypi')
roles = [role[1] for role in self.proxy.package_roles(self.name)]
if len(roles)==1:
self.roles = roles[0]
else:
self.roles = roles
self.data = self._data
self.keywords = self.info.get('keywords')
self.author = self.info.get('author')
self.classifiers = self.info.get('classifiers')
self.maintainer_email = self.info.get('maintainer_email')
self.home_page = self.info.get('home_page')
self.platform = self.info.get('platform')
self._pypi_ordering = self.info.get('_pypi_ordering')
self.downloads_url = self.info.get('download_url')
self.docs_url = self.info.get('docs_url')
self.author_email = self.info.get('author_email')
self.summary = self.info.get('summary', ".")
self.maintainer = self.info.get('maintainer')
self.description = self.info.get('description')
self.package_url = self.info.get('package_url')
self.bugtrack_url = self.info.get('bugtrack_url')
self.packagetype = self.urls.get('packagetype')
self.size = self.urls.get('size')
self.size_fmt = "{:,}".format(self.size)
self.max_downloads = self._max_downloads
self._compacted = self.compact_info
for key, value in self.compact_info.items():
if value:
self.__setattr__(key, value)
def from_dict(self, d):
from copy import copy
alias = self.copy()
for k,v in d.items():
alias.__setattr__(k,v)
return alias
def clean_Nones(self):
alias = copy(self)
for k,v in alias.__dict__.items():
if v is None:
del alias[k]
return alias
def __repr__(self):
name =self.name
if self.max_downloads:
dls = "{:,} downloads, ".format(self.max_downloads)
else:
dls = ''
if self.size_fmt:
size = "size: {}, ".format(self.size_fmt)
else:
size = ''
if self.summary:
if len(self.summary) > 40:
summary = " ".join(w for w in self.summary.lower().split() if w not in STOPWORDS)
elif len(self.summary) <= 40:
summary = self.summary
else:
summary = ''
return "<Package {}: {}{};{}>".format(name, dls, size, summary)
@property
def _data(self):
try:
data = requests.get(self.json_link).json()
except JSONDecodeError:
version = max(self.proxy.package_releases(self.name))
data = self.proxy.release_data(self.name, version)
return data
@property
def _max_downloads(self):
counts = []
releases = self.data.get('releases')
for key in releases.keys():
if len(releases[key]) > 0:
counts.append(releases[key][0].get('downloads', 0))
return sum(counts)
@property
def info(self):
return self.data.get('info')
@property
def compact_info(self):
compacter = itemgetter('downloads', 'release_url', 'keywords', 'author', 'classifiers', 'maintainer_email','home_page', 'license', 'name', 'platform', '_pypi_ordering', 'download_url', 'docs_url', 'author_email', 'summary', 'maintainer', 'description', 'version', 'package_url', 'bugtrack_url')
compacted_info = compacter(self.info)
#.........这里部分代码省略.........
示例4: JSON_PYPI
# 需要导入模块: from xmlrpc.client import ServerProxy [as 别名]
# 或者: from xmlrpc.client.ServerProxy import release_data [as 别名]
class JSON_PYPI(object):
def __init__(self, name=None, json_link=None):
self.name = name
self.package = name
if not json_link:
self.json_link = "http://pypi.python.org/pypi/{}/json".format(self.package)
else:
self.json_link = json_link
self.proxy = ServerProxy('https://pypi.python.org/pypi')
self.keywords = self.info.get('keywords')
self.author = self.info.get('author')
self.classifiers = self.info.get('classifiers')
self.maintainer_email = self.info.get('maintainer_email')
self.home_page = self.info.get('home_page')
self.platform = self.info.get('platform')
self._pypi_ordering = self.info.get('_pypi_ordering')
self.downloads_url = self.info.get('download_url')
self.docs_url = self.info.get('docs_url')
self.author_email = self.info.get('author_email')
self.summary = self.info.get('summary', ".")
self.maintainer = self.info.get('maintainer')
self.description = self.info.get('description')
self.package_url = self.info.get('package_url')
self.bugtrack_url = self.info.get('bugtrack_url')
self.packagetype = self.urls.get('packagetype')
self.size = self.urls.get('size')
self.size_fmt= "{:,}".format(self.size)
@property
def data(self):
try:
data =get_json(self.json_link)
except simplejson.scanner.JSONDecodeError:
version = max(self.proxy.package_releases(self.name))
data = self.proxy.release_data(self.name, version)
return data
@property
def info(self):
return self.data.get('info')
@property
def releases(self):
return self.data.get('releases')
@property
def urls(self):
urls = self.data.get('urls')
if len(urls) > 0 and isinstance(urls, list):
result = urls[0]
else:
result = urls
return result
@property
def upload_time(self):
try:
up_time = ' '.join(self.urls.get('upload_time').split('T'))
upload_time = datetime.strptime(up_time, "%Y-%m-%d %H:%M:%S")
except ValueError:
date,time = self.urls.get('upload_time').split('T')
year, month, day = date.split('-')
hour, min, sec = time.split(':')
upload_time = datetime(int(year), int(month), int(day), int(hour), int(min), int(sec))
return upload_time
@property
def get_max_downloads(self):
counts = []
if isinstance(self.releases, str):
json = requests.get(self.releases).json()['releases']
elif isinstance(self.releases, dict):
if 'releases' in self.releases:
json = url['self.releases']
else:
json = self.releases
for key in json.keys():
if len(json[key]) > 0:
counts.append(json[key][0].get('downloads', 0))
return sum(counts)
def roles(self):
return self.proxy.package_roles(self.name)
def __repr__(self):
name = self.name
if self.summary is not None or len(self.summary) > 2:
summary = self.summary
else:
summary = " "
size = self.fmt_size
dls = "{:,}".format(self.get_max_downloads)
if isinstance(summary, str) and len(summary) > 30:
summary = " ".join(w for w in summary.split() if w not in STOPWORDS)
return "<Package {}: {}, {}, {}>".format(name, dls, size, summary)
示例5: Client
# 需要导入模块: from xmlrpc.client import ServerProxy [as 别名]
# 或者: from xmlrpc.client.ServerProxy import release_data [as 别名]
class Client(object):
def __init__(self):
self.uri = 'https://pypi.python.org/pypi'
self.proxy = ServerProxy(self.uri)
self.cache = set()
def all_distributions(self):
return self.proxy.list_packages()
def roles(self, package):
return [cl[1] for cl in self.proxy.package_roles(package)]
def user_packages(self, user):
return [cl[1] for cl in self.proxy.user_packages(user)]
def release_downloads(self, package, version=None):
if version is None:
version = max(self.proxy.package_releases(package))
if isinstance(version, list):
version = version[0]
return self.proxy.release_downloads(package, version)
def package_releases(self, package):
return self.proxy.package_releases(package)
def release_data(self, package, version=None):
version = max(self.proxy.package_releases(package))
if isinstance(version, list):
version = version[0]
data = self.proxy.release_data(package, version)
return data
def simple_search(self, spec, operator='or', getter = None, omit = ('django')):
"""Can search by name, version, author, author_email, maintainer,
maintainer_email, home_page, license, summary,
description, keywords, platform,download_url"""
from pip.commands.search import transform_hits, highest_version
from
results = set()
packages = {}
from operator import itemgetter
filter = itemgetter('name', 'version')
info_getter = itemgetter('name', 'summary')
name_getter = itemgetter('name')
hits = self.proxy.search({'name': spec},{'summary':spec}, operator)
results = transform_hits(hits)
for result in results:
result['version'] = highest_version(result['versions'])
del result['score']
return results
def deep_search(self, spec, operator='and', cache = None, limit=20):
results =list()
temp_cache = set()
initial_results = self.simple_search(spec, operator='and', getter=None, omit=['django'])
for result in initial_results:
new = PyPiPackage(result)
results.append(new)
temp_cache.add(new)
if cache is not None:
self.cache = cache|temp_cache
else:
pass
filtered = sorted(results, key = lambda x: x.max_downloads, reversed=True)
return filtered[limit:]
def browse(self, classifiers):
return self.proxy.browse(classifiers)
def get_json_url(self, package):
return "http://pypi.python.org/pypi/{}/json".format(package)
示例6: Package
# 需要导入模块: from xmlrpc.client import ServerProxy [as 别名]
# 或者: from xmlrpc.client.ServerProxy import release_data [as 别名]
#.........这里部分代码省略.........
def __repr__(self):
name = self.name
if self.max_downloads:
dls = "{:,} downloads, ".format(self.max_downloads)
else:
dls = ""
if self.size_fmt:
size = "size: {}, ".format(self.size_fmt)
else:
size = ""
if self.summary:
if len(self.summary) > 40:
summary = " ".join(w for w in self.summary.lower().split() if w not in STOPWORDS)
elif len(self.summary) <= 40:
summary = self.summary
else:
summary = ""
return "<Package {}: {}{};{}>".format(name, dls, size, summary)
def highest_version(self, versions):
return next(iter(sorted(versions, key=pkg_resources.parse_version, reverse=True)))
@property
def _data(self):
try:
data = requests.get(self.json_link).json()
print(bool(data)) ##
except simplejson.JSONDecodeError:
version = self.proxy.package_releases(self.name)
if len(version) == 1:
version = version[0]
print(version) ###
data = self.proxy.release_data(self.name, version)
else:
data = dict(info="", releases="", urls="")
return data
@property
def _max_downloads(self):
counts = []
releases = self.data.get("releases")
for key in releases.keys():
if len(releases[key]) > 0:
counts.append(releases[key][0].get("downloads", 0))
return sum(counts)
@property
def _keywords(self):
if self.info is not None:
kws = self.info.get("keywords", None)
if kws:
if "," in kws:
keywords = [kw.strip().lower() for kw in kws.split(",")]
else:
keywords = [kw.strip().lower() for kw in kws.split()]
return keywords
else:
return kws
else:
return None
def extract_metadata(self):
if isinstance(self.dist, DistInfoDistribution):
if hasattr(self.dist, "_parsed_pkg_info"):
name = self.dist._parsed_pkg_info.get("name")