def _version_check(current, testing=False):
""" checks latest version online from the server and logs some user metadata.
Can be disabled by setting config.check_version = False.
"""
import platform
import os
from six.moves.urllib.request import urlopen, Request
from contextlib import closing
import threading
import uuid
import sys
if 'pytest' in sys.modules or os.getenv('CI', False):
testing = True
def _impl():
try:
r = Request('http://emma-project.org/versions.json',
headers={'User-Agent': 'molpx-{molpx_version}-Py-{python_version}-{platform}-{addr}'
.format(molpx_version=current, python_version=platform.python_version(),
platform=platform.platform(terse=True), addr=uuid.getnode())} if not testing else {})
with closing(urlopen(r, timeout=30)):
pass
"""
versions = json.loads(payload)
latest_json = tuple(filter(lambda x: x['latest'], versions))[0]['version']
latest = parse(latest_json)
if parse(current) < latest:
import warnings
warnings.warn("You are not using the latest release of PyEMMA."
" Latest is {latest}, you have {current}."
.format(latest=latest, current=current), category=UserWarning)
"""
# TODO add warnings about versions
except Exception:
pass
"""
import logging
logging.getLogger('pyemma').debug("error during version check", exc_info=True)
"""
# TODO add loggers
return threading.Thread(target=_impl if _report_status() and not testing else lambda: '')
评论列表
文章目录