Skip to content

Commit

Permalink
depr(api): deprecate top-level ibis.geo_* functions in favor of the…
Browse files Browse the repository at this point in the history
…ir corresponding methods
  • Loading branch information
jcrist authored and cpcloud committed Sep 19, 2023
1 parent 0d8a068 commit 71b7106
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 55 deletions.
2 changes: 1 addition & 1 deletion ibis/backends/bigquery/tests/unit/test_compiler.py
Expand Up @@ -300,7 +300,7 @@ def test_set_operation(operation, keywords, snapshot):

def test_geospatial_point(snapshot):
t = ibis.table([("lon", "float64"), ("lat", "float64")], name="t")
expr = ibis.geo_point(t.lon, t.lat).name("tmp")
expr = t.lon.point(t.lat).name("tmp")
snapshot.assert_match(to_sql(expr), "out.sql")


Expand Down
2 changes: 1 addition & 1 deletion ibis/backends/postgres/tests/test_geospatial.py
Expand Up @@ -192,7 +192,7 @@ def test_geo_spatial_unops(geotable, expr_fn, expected):
marks=pytest.mark.notimpl(["postgres"]),
),
param(
lambda t: t.geo_polygon.contains(ibis.geo_point(30, 10)),
lambda t: t.geo_polygon.contains(ibis.literal(30).point(10)),
[True, False, False, False, False],
id="point",
marks=pytest.mark.notimpl(["postgres"]),
Expand Down
119 changes: 66 additions & 53 deletions ibis/expr/api.py
Expand Up @@ -199,6 +199,17 @@ def wrapper(self, *args, **kwargs):
return wrapper


def _geo_deprecated(fn):
"""Deprecate the top-level geo function."""
fn = _deferred(fn)
name = fn.__name__
qualname = fn.__qualname__
fn.__module__ = "ibis.expr.api"
fn.__qualname__ = fn.__name__ = f"geo_{name}"
dec = util.deprecated(instead=f"use the `{qualname}` method instead", as_of="7.0")
return dec(fn)


def param(type: dt.DataType) -> ir.Scalar:
"""Create a deferred parameter of a given type.
Expand Down Expand Up @@ -1567,59 +1578,61 @@ def watermark(time_col: str, allowed_delay: ir.IntervalScalar) -> Watermark:
e = ops.E().to_expr()
pi = ops.Pi().to_expr()

geo_area = _deferred(ir.GeoSpatialValue.area)
geo_as_binary = _deferred(ir.GeoSpatialValue.as_binary)
geo_as_ewkb = _deferred(ir.GeoSpatialValue.as_ewkb)
geo_as_ewkt = _deferred(ir.GeoSpatialValue.as_ewkt)
geo_as_text = _deferred(ir.GeoSpatialValue.as_text)
geo_azimuth = _deferred(ir.GeoSpatialValue.azimuth)
geo_buffer = _deferred(ir.GeoSpatialValue.buffer)
geo_centroid = _deferred(ir.GeoSpatialValue.centroid)
geo_contains = _deferred(ir.GeoSpatialValue.contains)
geo_contains_properly = _deferred(ir.GeoSpatialValue.contains_properly)
geo_covers = _deferred(ir.GeoSpatialValue.covers)
geo_covered_by = _deferred(ir.GeoSpatialValue.covered_by)
geo_crosses = _deferred(ir.GeoSpatialValue.crosses)
geo_d_fully_within = _deferred(ir.GeoSpatialValue.d_fully_within)
geo_difference = _deferred(ir.GeoSpatialValue.difference)
geo_disjoint = _deferred(ir.GeoSpatialValue.disjoint)
geo_distance = _deferred(ir.GeoSpatialValue.distance)
geo_d_within = _deferred(ir.GeoSpatialValue.d_within)
geo_end_point = _deferred(ir.GeoSpatialValue.end_point)
geo_envelope = _deferred(ir.GeoSpatialValue.envelope)
geo_equals = _deferred(ir.GeoSpatialValue.geo_equals)
geo_geometry_n = _deferred(ir.GeoSpatialValue.geometry_n)
geo_geometry_type = _deferred(ir.GeoSpatialValue.geometry_type)
geo_intersection = _deferred(ir.GeoSpatialValue.intersection)
geo_intersects = _deferred(ir.GeoSpatialValue.intersects)
geo_is_valid = _deferred(ir.GeoSpatialValue.is_valid)
geo_line_locate_point = _deferred(ir.GeoSpatialValue.line_locate_point)
geo_line_merge = _deferred(ir.GeoSpatialValue.line_merge)
geo_line_substring = _deferred(ir.GeoSpatialValue.line_substring)
geo_length = _deferred(ir.GeoSpatialValue.length)
geo_max_distance = _deferred(ir.GeoSpatialValue.max_distance)
geo_n_points = _deferred(ir.GeoSpatialValue.n_points)
geo_n_rings = _deferred(ir.GeoSpatialValue.n_rings)
geo_ordering_equals = _deferred(ir.GeoSpatialValue.ordering_equals)
geo_overlaps = _deferred(ir.GeoSpatialValue.overlaps)
geo_perimeter = _deferred(ir.GeoSpatialValue.perimeter)
geo_point = _deferred(ir.NumericValue.point)
geo_point_n = _deferred(ir.GeoSpatialValue.point_n)
geo_set_srid = _deferred(ir.GeoSpatialValue.set_srid)
geo_simplify = _deferred(ir.GeoSpatialValue.simplify)
geo_srid = _deferred(ir.GeoSpatialValue.srid)
geo_start_point = _deferred(ir.GeoSpatialValue.start_point)
geo_touches = _deferred(ir.GeoSpatialValue.touches)
geo_transform = _deferred(ir.GeoSpatialValue.transform)
geo_union = _deferred(ir.GeoSpatialValue.union)
geo_within = _deferred(ir.GeoSpatialValue.within)
geo_x = _deferred(ir.GeoSpatialValue.x)
geo_x_max = _deferred(ir.GeoSpatialValue.x_max)
geo_x_min = _deferred(ir.GeoSpatialValue.x_min)
geo_y = _deferred(ir.GeoSpatialValue.y)
geo_y_max = _deferred(ir.GeoSpatialValue.y_max)
geo_y_min = _deferred(ir.GeoSpatialValue.y_min)
geo_unary_union = _deferred(ir.GeoSpatialColumn.unary_union)
# geo_* methods are all deprecated
geo_area = _geo_deprecated(ir.GeoSpatialValue.area)
geo_as_binary = _geo_deprecated(ir.GeoSpatialValue.as_binary)
geo_as_ewkb = _geo_deprecated(ir.GeoSpatialValue.as_ewkb)
geo_as_ewkt = _geo_deprecated(ir.GeoSpatialValue.as_ewkt)
geo_as_text = _geo_deprecated(ir.GeoSpatialValue.as_text)
geo_azimuth = _geo_deprecated(ir.GeoSpatialValue.azimuth)
geo_buffer = _geo_deprecated(ir.GeoSpatialValue.buffer)
geo_centroid = _geo_deprecated(ir.GeoSpatialValue.centroid)
geo_contains = _geo_deprecated(ir.GeoSpatialValue.contains)
geo_contains_properly = _geo_deprecated(ir.GeoSpatialValue.contains_properly)
geo_covers = _geo_deprecated(ir.GeoSpatialValue.covers)
geo_covered_by = _geo_deprecated(ir.GeoSpatialValue.covered_by)
geo_crosses = _geo_deprecated(ir.GeoSpatialValue.crosses)
geo_d_fully_within = _geo_deprecated(ir.GeoSpatialValue.d_fully_within)
geo_difference = _geo_deprecated(ir.GeoSpatialValue.difference)
geo_disjoint = _geo_deprecated(ir.GeoSpatialValue.disjoint)
geo_distance = _geo_deprecated(ir.GeoSpatialValue.distance)
geo_d_within = _geo_deprecated(ir.GeoSpatialValue.d_within)
geo_end_point = _geo_deprecated(ir.GeoSpatialValue.end_point)
geo_envelope = _geo_deprecated(ir.GeoSpatialValue.envelope)
geo_equals = _geo_deprecated(ir.GeoSpatialValue.geo_equals)
geo_geometry_n = _geo_deprecated(ir.GeoSpatialValue.geometry_n)
geo_geometry_type = _geo_deprecated(ir.GeoSpatialValue.geometry_type)
geo_intersection = _geo_deprecated(ir.GeoSpatialValue.intersection)
geo_intersects = _geo_deprecated(ir.GeoSpatialValue.intersects)
geo_is_valid = _geo_deprecated(ir.GeoSpatialValue.is_valid)
geo_line_locate_point = _geo_deprecated(ir.GeoSpatialValue.line_locate_point)
geo_line_merge = _geo_deprecated(ir.GeoSpatialValue.line_merge)
geo_line_substring = _geo_deprecated(ir.GeoSpatialValue.line_substring)
geo_length = _geo_deprecated(ir.GeoSpatialValue.length)
geo_max_distance = _geo_deprecated(ir.GeoSpatialValue.max_distance)
geo_n_points = _geo_deprecated(ir.GeoSpatialValue.n_points)
geo_n_rings = _geo_deprecated(ir.GeoSpatialValue.n_rings)
geo_ordering_equals = _geo_deprecated(ir.GeoSpatialValue.ordering_equals)
geo_overlaps = _geo_deprecated(ir.GeoSpatialValue.overlaps)
geo_perimeter = _geo_deprecated(ir.GeoSpatialValue.perimeter)
geo_point = _geo_deprecated(ir.NumericValue.point)
geo_point_n = _geo_deprecated(ir.GeoSpatialValue.point_n)
geo_set_srid = _geo_deprecated(ir.GeoSpatialValue.set_srid)
geo_simplify = _geo_deprecated(ir.GeoSpatialValue.simplify)
geo_srid = _geo_deprecated(ir.GeoSpatialValue.srid)
geo_start_point = _geo_deprecated(ir.GeoSpatialValue.start_point)
geo_touches = _geo_deprecated(ir.GeoSpatialValue.touches)
geo_transform = _geo_deprecated(ir.GeoSpatialValue.transform)
geo_union = _geo_deprecated(ir.GeoSpatialValue.union)
geo_within = _geo_deprecated(ir.GeoSpatialValue.within)
geo_x = _geo_deprecated(ir.GeoSpatialValue.x)
geo_x_max = _geo_deprecated(ir.GeoSpatialValue.x_max)
geo_x_min = _geo_deprecated(ir.GeoSpatialValue.x_min)
geo_y = _geo_deprecated(ir.GeoSpatialValue.y)
geo_y_max = _geo_deprecated(ir.GeoSpatialValue.y_max)
geo_y_min = _geo_deprecated(ir.GeoSpatialValue.y_min)
geo_unary_union = _geo_deprecated(ir.GeoSpatialColumn.unary_union)

ifelse = _deferred(ir.BooleanValue.ifelse)
"""Construct a ternary conditional expression.
Expand Down

0 comments on commit 71b7106

Please sign in to comment.