Source code for hiplot.server

# Copyright (c) Facebook, Inc. and its affiliates.
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.

import argparse
import importlib
import json
import copy
from typing import List, Any, Dict

from . import experiment as exp
from .fetchers import get_fetchers, MultipleFetcher, NoFetcherFound, load_xp_with_fetchers
from .render import get_index_html_template, html_inlinize
from . import pkginfo


[docs]def run_server(fetchers: List[exp.ExperimentFetcher], host: str = '127.0.0.1', port: int = 5005, debug: bool = False) -> None: """ Runs the HiPlot server, given a list of ExperimentFetchers - functions that convert a URI into a :class:`hiplot.Experiment` """ from flask import Flask, render_template, jsonify, request from flask_compress import Compress app = Flask(__name__) @app.route("/") def index() -> Any: # pylint: disable=unused-variable template = get_index_html_template() return template @app.route("/data") def data() -> Any: # pylint: disable=unused-variable uri = request.args.get("uri", type=str) assert uri is not None try: xp = load_xp_with_fetchers(fetchers, uri) xp.validate() return jsonify({"query": uri, "experiment": xp._asdict()}) except NoFetcherFound as e: return jsonify({"error": f"No fetcher found for this experiment: {e}"}) Compress(app) app.run(debug=debug, host=host, port=port)
def run_server_main() -> int: parser = argparse.ArgumentParser(prog="HiPlot", description="Start HiPlot webserver") parser.add_argument('--version', action='version', version=f'{pkginfo.package_name} {pkginfo.version}') parser.add_argument("--host", type=str, default="127.0.0.1") parser.add_argument("--port", type=int, default=5005) parser.add_argument("--dev", action='store_true', help="Enable Flask Debug mode (watches for files modifications, etc..)") parser.add_argument("fetchers", nargs="*", type=str) args = parser.parse_args() run_server(fetchers=get_fetchers(args.fetchers), host=args.host, port=args.port, debug=args.dev) return 0