def gpd_to_values(data): """Replace a GeoDataFrame by a data model with values. For ``geopandas.GeoDataFrame`` columns values are stored as Foreign Members of GeoJSON feature objects. For all other types uses function :py:func:`altair.to_values`.""" if isinstance(data, gpd.GeoDataFrame): data = alt.utils.sanitize_dataframe(data) values = geopandas_to_dict(data) return {'values': json.dumps(values)} else: return alt.to_values(data)
def test_gpd_to_values_pd(): data = pd.DataFrame(pd.np.arange(3), columns=['param']) assert gpdvega.gpd_to_values(data) == alt.to_values(data)
def execute_query(parameters: dict): injected_span: object = parameters.pop("span") with tracer.start_active_span( "queryibis", references=[ opentracing.child_of( (tracer.extract(opentracing.Format.TEXT_MAP, injected_span))) ], ) as scope: scope.span.log_kv(parameters) name: str = parameters.pop("name") transforms: typing.Optional[str] = parameters.pop("transform", None) if name not in _expr_map: raise ValueError(f"{name} is not an expression known to us!") expr = _expr_map[name] sql = expr.compile() scope.span.log_kv({"sql:initial": sql}) debug( "query:initial", { "transforms": transforms, "parameters": parameters, "sql": sql }, ) if transforms: # Replace all string instances of data references with value in schema for k, v in parameters.items(): # All data items are added to parameters as `:<data name>`. # They also should be in the `data` paramater, but you have to call # this with a tuple which I am not sure where to get from # https://github.com/vega/vega/blob/65fe7cb2485be90e16298d9dff87bf56045afb8d/packages/vega-transforms/src/Filter.js#L48 if not k.startswith(":"): continue k = k[1:] res = json.dumps(v) for t in transforms: if t["type"] == "filter" or t["type"] == "formula": t["expr"] = _patch_vegaexpr(t["expr"], k, res) try: expr = apply(expr, transforms) except Exception as e: raise ValueError( f"Failed to convert {transforms} with error message message '{e}'" ) with tracer.start_span("ibis:execute") as execute_span: sql = expr.compile() execute_span.log_kv({"sql": sql}) if ENABLE_MULTIPROCESSING: data = execute_new_client(expr) else: data = expr.execute() values = altair.to_values(data)["values"] debug("query:result", { "transforms": transforms, "sql": sql, "values": values }) return values