def inner(*args, **kwargs): raise_on_error = True if "raise_on_error" in kwargs: raise_on_error = kwargs["raise_on_error"] del kwargs["raise_on_error"] result = add_repr_html_to_response(fn(*args, **kwargs)) if raise_on_error and result.status_code >= 400: raise ResourceError(result) return result
def handle_script_output(resp): if resp.status_code != 200: return add_repr_html_to_response(resp) result = resp.json() if "out" in result: for o in result["out"]: print(o[2]) if "exception" in result: for e in result["exception"]["stack"]: print(e) if "return" in result: return result["return"]
def run_query(q): global host resp = requests.get(host + "/v1/query", data={"q": q, "format": "aos"}) if resp.status_code != 200: return add_repr_html_to_response(resp) resp_json = resp.json() if len(resp_json) == 0: return pd.DataFrame() else: return pd.DataFrame.from_records(resp_json, index="_rowName")
def run_query(q): global host resp = requests.get(host+"/v1/query", params={"q": q, "format": "aos"}) if resp.status_code != 200: return add_repr_html_to_response(resp) resp_json = resp.json() if len(resp_json) == 0: return pd.DataFrame() else: return pd.DataFrame.from_records(resp_json, index="_rowName")
def inner(*args, **kwargs): result = add_repr_html_to_response(fn(*args, **kwargs)) if result.status_code < 200 or result.status_code >= 400: raise ResourceError(result) return result
def dispatcher(line, cell=None): global host if line.strip() == "": return print_usage_message(True) parts = line.strip().split(" ") # The line magics if cell is None: # Init if len(parts) == 2 and parts[0] == "init": if not parts[1].startswith("http"): raise Exception("URI must start with 'http'") host = parts[1].strip("/") print("%mldb magic initialized with host as " + host) return # py or js: put a javascript or python script from an uri elif (len(parts) >= 2 and parts[0] in ["py", "js"]): type_name = "python" if parts[0] == "js": type_name = "javascript" payload = {"address": parts[1]} if len(parts) > 2: payload["args"] = json.loads(" ".join(parts[2:])) resp = requests.post(host+"/v1/types/plugins/" + type_name + "/routes/run", data=json.dumps(payload)) return handle_script_output(resp) # doc elif (len(parts) == 2 and parts[0] == "doc"): from IPython.display import IFrame return IFrame(src="/v1/types/"+parts[1]+"/doc", width=900, height=500) # pyplugin elif (len(parts) == 3 and parts[0] == "pyplugin"): name = parts[1] payload = {"type":"python", "params": {"address": parts[2]}} requests.delete(host+"/v1/plugins/" + name) resp = requests.put(host+"/v1/plugins/" + name, data=json.dumps(payload)) return add_repr_html_to_response(resp) # perform elif (len(parts) == 2 and parts[0] in ["GET", "DELETE"]): verb, uri = parts if verb == "GET": resp = requests.get(host+uri) elif verb == "DELETE": resp = requests.delete(host+uri) return add_repr_html_to_response(resp) # perform elif (len(parts) > 2 and parts[0] in ["GET", "PUT", "POST"]): verb = parts[0] uri = parts[1] payload = json.loads(" ".join(parts[2:])) if verb == "GET": for k in payload: if isinstance(payload[k], dict): payload[k] = json.dumps(payload[k]) resp = requests.get(host+uri, params=payload) elif verb == "PUT": resp = requests.put(host+uri, data=json.dumps(payload)) elif verb == "POST": resp = requests.post(host+uri, data=json.dumps(payload)) return add_repr_html_to_response(resp) # help elif len(parts) == 1 and parts[0] == "help": return print_usage_message() elif (len(parts) > 1 and parts[0] == "query"): return run_query(" ".join(parts[1:])) elif (len(parts) == 3 and parts[0] == "loadcsv"): return load_csv(parts[1], parts[2]) # We have something else else: return print_usage_message(True) # The cell magics else: # py or js: put a javascript or python script from an uri if (len(parts) >= 1 and parts[0] in ["py", "js"]): type_name = "python" if parts[0] == "js": type_name = "javascript" payload = {"source": cell} if len(parts) > 1: payload["args"] = json.loads(" ".join(parts[1:])) resp = requests.post(host+"/v1/types/plugins/" + type_name + "/routes/run", data=json.dumps(payload)) return handle_script_output(resp) if (len(parts) == 1 and parts[0] == "query"): return run_query(cell.replace("\n", " ").strip()) if (len(parts) == 2 and parts[0] == "loadcsv"): return load_csv(parts[1], cell) # perform elif (len(parts) == 2 and parts[0] in ["GET", "PUT", "POST"]): verb, uri = parts payload = json.loads(cell) if verb == "GET": for k in payload: if isinstance(payload[k], dict): payload[k] = json.dumps(payload[k]) resp = requests.get(host+uri, params=payload) elif verb == "PUT": resp = requests.put(host+uri, data=json.dumps(payload)) elif verb == "POST": resp = requests.post(host+uri, data=json.dumps(payload)) return add_repr_html_to_response(resp) # help elif len(parts) == 1 and parts[0] == "help": return print_usage_message() # We have something else else: return print_usage_message(True)
def dispatcher(line, cell=None): global host if line.strip() == "": return print_usage_message(True) parts = line.strip().split(" ") # The line magics if cell is None: # Init if len(parts) == 2 and parts[0] == "init": if not parts[1].startswith("http"): raise Exception("URI must start with 'http'") host = parts[1].strip("/") print("%mldb magic initialized with host as " + host) return # py or js: put a javascript or python script from an uri elif (len(parts) >= 2 and parts[0] in ["py", "js"]): type_name = "python" if parts[0] == "js": type_name = "javascript" payload = {"address": parts[1]} if len(parts) > 2: payload["args"] = json.loads(" ".join(parts[2:])) resp = requests.post(host + "/v1/types/plugins/" + type_name + "/routes/run", data=json.dumps(payload)) return handle_script_output(resp) # doc elif (len(parts) == 2 and parts[0] == "doc"): from IPython.display import IFrame return IFrame(src="/v1/types/" + parts[1] + "/doc", width=900, height=500) # pyplugin elif (len(parts) == 3 and parts[0] == "pyplugin"): name = parts[1] payload = {"type": "python", "params": {"address": parts[2]}} requests.delete(host + "/v1/plugins/" + name) resp = requests.put(host + "/v1/plugins/" + name, data=json.dumps(payload)) return add_repr_html_to_response(resp) # perform elif (len(parts) == 2 and parts[0] in ["GET", "DELETE"]): verb, uri = parts if verb == "GET": resp = requests.get(host + uri) elif verb == "DELETE": resp = requests.delete(host + uri) return add_repr_html_to_response(resp) # perform elif (len(parts) > 2 and parts[0] in ["GET", "PUT", "POST"]): verb = parts[0] uri = parts[1] payload = json.loads(" ".join(parts[2:])) if verb == "GET": for k in payload: if isinstance(payload[k], dict): payload[k] = json.dumps(payload[k]) resp = requests.get(host + uri, params=payload) elif verb == "PUT": resp = requests.put(host + uri, data=json.dumps(payload)) elif verb == "POST": resp = requests.post(host + uri, data=json.dumps(payload)) return add_repr_html_to_response(resp) # help elif len(parts) == 1 and parts[0] == "help": return print_usage_message() elif (len(parts) > 1 and parts[0] == "query"): return run_query(" ".join(parts[1:])) elif (len(parts) == 3 and parts[0] == "loadcsv"): return load_csv(parts[1], parts[2]) # We have something else else: return print_usage_message(True) # The cell magics else: # py or js: put a javascript or python script from an uri if (len(parts) >= 1 and parts[0] in ["py", "js"]): type_name = "python" if parts[0] == "js": type_name = "javascript" payload = {"source": cell} if len(parts) > 1: payload["args"] = json.loads(" ".join(parts[1:])) resp = requests.post(host + "/v1/types/plugins/" + type_name + "/routes/run", data=json.dumps(payload)) return handle_script_output(resp) if (len(parts) == 1 and parts[0] == "query"): return run_query(cell.replace("\n", " ").strip()) if (len(parts) == 2 and parts[0] == "loadcsv"): return load_csv(parts[1], cell) # perform elif (len(parts) == 2 and parts[0] in ["GET", "PUT", "POST"]): verb, uri = parts payload = json.loads(cell) if verb == "GET": for k in payload: if isinstance(payload[k], dict): payload[k] = json.dumps(payload[k]) resp = requests.get(host + uri, params=payload) elif verb == "PUT": resp = requests.put(host + uri, data=json.dumps(payload)) elif verb == "POST": resp = requests.post(host + uri, data=json.dumps(payload)) return add_repr_html_to_response(resp) # help elif len(parts) == 1 and parts[0] == "help": return print_usage_message() # We have something else else: return print_usage_message(True)