You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Upstream exposes both `get_field(expr, name)` and
`get_field_path(expr, [names...])`, but both ultimately call the same
scalar UDF with a base expression plus one or more name args. Collapse
the Python surface into a single variadic `get_field(expr, *names)`
that accepts either a one-step lookup or a path of names, dispatching
through a single Rust binding.
Note in `.ai/skills/check-upstream/SKILL.md` that `get_field_path` is
covered by the variadic form so future audits do not flag it as a gap.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .ai/skills/check-upstream/SKILL.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -66,11 +66,17 @@ The user may specify an area via `$ARGUMENTS`. If no area is specified or "all"
66
66
- Python API: `python/datafusion/functions.py` — each function wraps a call to `datafusion._internal.functions`
67
67
- Rust bindings: `crates/core/src/functions.rs` — `#[pyfunction]` definitions registered via `init_module()`
68
68
69
+
**Evaluated and not requiring separate Python exposure:**
70
+
-`get_field_path` — already covered by `get_field(expr, *names)`, which takes a
71
+
variadic field path and dispatches to the same underlying
72
+
`functions::core::get_field` UDF as the upstream `get_field_path` helper.
73
+
69
74
**How to check:**
70
75
1. Fetch the upstream scalar function documentation page
71
76
2. Compare against functions listed in `python/datafusion/functions.py` (check the `__all__` list and function definitions)
72
77
3. A function is covered if it exists in the Python API — it does NOT need a dedicated Rust `#[pyfunction]`. Many functions are aliases that reuse another function's Rust binding.
73
-
4. Only report functions that are missing from the Python `__all__` list / function definitions
78
+
4. Check against the "evaluated and not requiring exposure" list before flagging as a gap
79
+
5. Only report functions that are missing from the Python `__all__` list / function definitions
0 commit comments