From 29dea4901e12e1927d2ceef994d522f7bc2b5785 Mon Sep 17 00:00:00 2001 From: Alex Grintsvayg <grin@lbry.io> Date: Wed, 15 Mar 2017 16:19:11 -0400 Subject: [PATCH] add --version flag, remove simplejson dependency --- .github/ISSUE_TEMPLATE.md | 2 +- CHANGELOG.md | 4 +-- lbrynet/core/system_info.py | 14 ++++---- lbrynet/core/utils.py | 7 ++-- lbrynet/lbrynet_daemon/Daemon.py | 32 +++++++----------- lbrynet/lbrynet_daemon/DaemonCLI.py | 3 +- lbrynet/lbrynet_daemon/DaemonControl.py | 44 ++++++++++++++++++------- requirements.txt | 1 - setup.py | 1 - 9 files changed, 60 insertions(+), 48 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index ee4cdd464..00776f420 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -32,7 +32,7 @@ Tell us what happens instead <!-- For the daemon, run: curl 'http://localhost:5279/lbryapi' --data '{"method":"version"}' - and include the output --> + and include the full output --> - LBRY Daemon version: - LBRY App version: diff --git a/CHANGELOG.md b/CHANGELOG.md index 70c234999..0d9927c6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,12 +9,12 @@ at anytime. ## [Unreleased] ### Added - * + * Added `--version` flag * * ### Changed - * + * Removed `simplejson` dependency in favor of bulitin `json` * * diff --git a/lbrynet/core/system_info.py b/lbrynet/core/system_info.py index 5584e0020..4c2286de5 100644 --- a/lbrynet/core/system_info.py +++ b/lbrynet/core/system_info.py @@ -1,5 +1,5 @@ import platform -import simplejson as json +import json from urllib2 import urlopen @@ -8,7 +8,7 @@ from lbrynet import build_type from lbryum.version import LBRYUM_VERSION as lbryum_version -def get_platform(): +def get_platform(get_ip=True): p = { "processor": platform.processor(), "python_version": platform.python_version(), @@ -17,13 +17,13 @@ def get_platform(): "os_system": platform.system(), "lbrynet_version": lbrynet_version, "lbryum_version": lbryum_version, - "ui_version": "not loaded yet", "build": build_type.BUILD, # travis sets this during build step } - try: - p['ip'] = json.load(urlopen('http://jsonip.com'))['ip'] - except: - p['ip'] = "Could not determine IP" + if get_ip: + try: + p['ip'] = json.load(urlopen('http://jsonip.com'))['ip'] + except: + p['ip'] = "Could not determine IP" return p diff --git a/lbrynet/core/utils.py b/lbrynet/core/utils.py index 5557265c0..6136c9626 100644 --- a/lbrynet/core/utils.py +++ b/lbrynet/core/utils.py @@ -4,16 +4,15 @@ import logging import random import socket import string +import json import pkg_resources from lbrynet.core.cryptoutils import get_lbry_hash_obj - # digest_size is in bytes, and blob hashes are hex encoded blobhash_length = get_lbry_hash_obj().digest_size * 2 - log = logging.getLogger(__name__) @@ -114,3 +113,7 @@ def get_sd_hash(stream_info): if not stream_info: return None return stream_info['sources']['lbry_sd_hash'] + + +def json_dumps_pretty(obj, **kwargs): + return json.dumps(obj, sort_keys=True, indent=2, separators=(',', ': '), **kwargs) diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index 5d66717c8..cf30e2a85 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -6,7 +6,7 @@ import re import base58 import requests import urllib -import simplejson as json +import json from requests import exceptions as requests_exceptions import random @@ -36,8 +36,7 @@ from lbrynet.lbrynet_daemon.Publisher import Publisher from lbrynet.lbrynet_daemon.ExchangeRateManager import ExchangeRateManager from lbrynet.lbrynet_daemon.auth.server import AuthJSONRPCServer from lbrynet.core.PaymentRateManager import OnlyFreePaymentsManager -from lbrynet.core import log_support, utils -from lbrynet.core import system_info +from lbrynet.core import log_support, utils, system_info from lbrynet.core.StreamDescriptor import StreamDescriptorIdentifier, download_sd_blob from lbrynet.core.Session import Session from lbrynet.core.Wallet import LBRYumWallet, SqliteStorage, ClaimOutpoint @@ -142,14 +141,14 @@ class CheckInternetConnection(object): class CheckRemoteVersion(object): - URL = 'https://api.github.com/repos/lbryio/lbry-electron/releases/latest' + URL = 'https://api.github.com/repos/lbryio/lbry-app/releases/latest' def __init__(self): self.version = None def __call__(self): d = threads.deferToThread(self._get_lbry_electron_client_version) - d.addErrback(self._trap_and_log_error, 'lbry-electron') + d.addErrback(self._trap_and_log_error, 'lbry-app') d.addErrback(log.fail(), 'Failure checking versions on github') def _trap_and_log_error(self, err, module_checked): @@ -159,8 +158,7 @@ class CheckRemoteVersion(object): log.warning("Failed to check latest %s version from github", module_checked) def _get_lbry_electron_client_version(self): - # We'll need to ensure the lbry-electron version is in sync - # with the lbrynet-daemon version + # We'll need to ensure the lbry-app version is in sync with the lbrynet-daemon version self._set_data_from_github() log.info( "remote lbrynet %s > local lbrynet %s = %s", @@ -180,7 +178,8 @@ class CheckRemoteVersion(object): release = response.json() return release - def _get_version_from_release(self, release): + @staticmethod + def _get_version_from_release(release): """Return the latest released version from github.""" tag = release['tag_name'] return get_version_from_tag(tag) @@ -1228,19 +1227,10 @@ class Daemon(AuthJSONRPCServer): """ platform_info = self._get_platform() - msg = { - 'platform': platform_info['platform'], - 'os_release': platform_info['os_release'], - 'os_system': platform_info['os_system'], - 'lbrynet_version': LBRYNET_VERSION, - 'lbryum_version': LBRYUM_VERSION, - 'ui_version': platform_info['ui_version'], - 'remote_lbrynet': self._remote_version.version, - 'lbrynet_update_available': self._remote_version.is_update_available(), - } - - log.info("Get version info: " + json.dumps(msg)) - return self._render_response(msg) + platform_info['remote_lbrynet'] = self._remote_version.version + platform_info['lbrynet_update_available'] = self._remote_version.is_update_available() + log.info("Get version info: " + json.dumps(platform_info)) + return self._render_response(platform_info) def jsonrpc_report_bug(self, message=None): """ diff --git a/lbrynet/lbrynet_daemon/DaemonCLI.py b/lbrynet/lbrynet_daemon/DaemonCLI.py index 96e4035b0..4a85b464b 100644 --- a/lbrynet/lbrynet_daemon/DaemonCLI.py +++ b/lbrynet/lbrynet_daemon/DaemonCLI.py @@ -4,6 +4,7 @@ import os import sys from lbrynet import conf +from lbrynet.core import utils from lbrynet.lbrynet_daemon.auth.client import JSONRPCException, LBRYAPIClient from lbrynet.lbrynet_daemon.Daemon import LOADING_WALLET_CODE from jsonrpc.common import RPCError @@ -75,7 +76,7 @@ def main(): # printing the undumped string is prettier print result else: - print json.dumps(result, sort_keys=True, indent=2, separators=(',', ': ')) + print utils.json_dumps_pretty(result) except (RPCError, KeyError, JSONRPCException) as err: # TODO: The api should return proper error codes # and messages so that they can be passed along to the user diff --git a/lbrynet/lbrynet_daemon/DaemonControl.py b/lbrynet/lbrynet_daemon/DaemonControl.py index ba9f95af2..8cc4158da 100644 --- a/lbrynet/lbrynet_daemon/DaemonControl.py +++ b/lbrynet/lbrynet_daemon/DaemonControl.py @@ -8,7 +8,7 @@ from jsonrpc.proxy import JSONRPCProxy from lbrynet import analytics from lbrynet import conf -from lbrynet.core import utils +from lbrynet.core import utils, system_info from lbrynet.lbrynet_daemon.auth.client import LBRYAPIClient from lbrynet.lbrynet_daemon.DaemonServer import DaemonServer @@ -34,29 +34,49 @@ def start(): conf.initialize_settings() parser = argparse.ArgumentParser(description="Launch lbrynet-daemon") - parser.add_argument("--wallet", - help="lbryum or ptc for testing, default lbryum", - type=str, - default=conf.settings['wallet']) - parser.add_argument("--ui", help="path to custom UI folder", default=None) + parser.add_argument( + "--wallet", + help="lbryum or ptc for testing, default lbryum", + type=str, + default=conf.settings['wallet'] + ) + parser.add_argument( + "--ui", help="path to custom UI folder", default=None + ) parser.add_argument( "--branch", help='Branch of lbry-web-ui repo to use, defaults to {}'.format(conf.settings['ui_branch']), - default=conf.settings['ui_branch']) - parser.add_argument('--launch-ui', dest='launchui', action="store_true") - parser.add_argument("--http-auth", dest="useauth", action="store_true", - default=conf.settings['use_auth_http']) + default=conf.settings['ui_branch'] + ) + parser.add_argument( + '--launch-ui', dest='launchui', action="store_true" + ) + parser.add_argument( + "--http-auth", dest="useauth", action="store_true", default=conf.settings['use_auth_http'] + ) parser.add_argument( '--quiet', dest='quiet', action="store_true", - help='Disable all console output.') + help='Disable all console output.' + ) parser.add_argument( '--verbose', nargs="*", help=('Enable debug output. Optionally specify loggers for which debug output ' - 'should selectively be applied.')) + 'should selectively be applied.') + ) + parser.add_argument( + '--version', action="store_true", + help='Show daemon version and quit' + ) args = parser.parse_args() update_settings_from_args(args) + if args.version: + version = system_info.get_platform(get_ip=False) + version['installation_id'] = conf.settings.installation_id + print utils.json_dumps_pretty(version) + return + lbrynet_log = conf.settings.get_log_filename() log_support.configure_logging(lbrynet_log, not args.quiet, args.verbose) log.debug('Final Settings: %s', conf.settings.get_current_settings_dict()) diff --git a/requirements.txt b/requirements.txt index 131595e39..2ac114e73 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,7 +21,6 @@ requests==2.9.1 requests_futures==0.9.7 seccure==0.3.1.3 service_identity==16.0.0 -simplejson==3.8.2 six>=1.9.0 slowaes==0.1a1 txJSON-RPC==0.5 diff --git a/setup.py b/setup.py index 8e2249c00..e004ebb50 100644 --- a/setup.py +++ b/setup.py @@ -26,7 +26,6 @@ requires = [ 'requests', 'requests_futures', 'seccure', - 'simplejson', 'txJSON-RPC', 'zope.interface', ]