1515# Arolla Expr Operators on Koda abstractions.
1616
1717load ("@com_google_arolla//py/arolla/dynamic_deps:build_defs.bzl" , "arolla_py_cc_deps" )
18+ load ("@rules_cc//cc:cc_library.bzl" , "cc_library" )
1819load ("@rules_cc//cc:cc_test.bzl" , "cc_test" )
1920load ("@rules_python//python:defs.bzl" , "py_library" , "py_test" )
20- load ("//py/koladata/dynamic_deps:py_extension.bzl" , "koladata_py_extension " )
21+ load ("//py/koladata/dynamic_deps:py_extension.bzl" , "koladata_pybind_extension " )
2122load ("//py/koladata/operators:optools.bzl" , "koladata_cc_operator_package" )
2223
2324package (default_visibility = ["//visibility:private" ])
@@ -164,13 +165,21 @@ py_library(
164165 ],
165166)
166167
167- koladata_py_extension (
168- name = "py_optools_py_ext" ,
169- srcs = [
170- "py_optools_module.cc" ,
171- "py_unified_binding_policy.cc" ,
172- "py_unified_binding_policy.h" ,
168+ koladata_pybind_extension (
169+ name = "clib" ,
170+ srcs = ["clib.cc" ],
171+ deps = [
172+ ":py_unified_binding_policy" ,
173+ "//koladata/expr:non_determinism" ,
174+ "@com_google_absl//absl/strings:string_view" ,
175+ "@pybind11_abseil//pybind11_abseil:absl_casters" ,
173176 ],
177+ )
178+
179+ cc_library (
180+ name = "py_unified_binding_policy" ,
181+ srcs = ["py_unified_binding_policy.cc" ],
182+ hdrs = ["py_unified_binding_policy.h" ],
174183 deps = [
175184 "//koladata/expr:expr_operators" ,
176185 "//koladata/expr:non_determinism" ,
@@ -179,7 +188,6 @@ koladata_py_extension(
179188 "@com_google_absl//absl/container:flat_hash_map" ,
180189 "@com_google_absl//absl/container:inlined_vector" ,
181190 "@com_google_absl//absl/log:check" ,
182- "@com_google_absl//absl/random" ,
183191 "@com_google_absl//absl/strings" ,
184192 "@com_google_absl//absl/strings:str_format" ,
185193 "@com_google_absl//absl/types:span" ,
@@ -189,15 +197,16 @@ koladata_py_extension(
189197 "@com_google_arolla//arolla/util:status_backport" ,
190198 "@com_google_arolla//py/arolla/abc:py_abc" ,
191199 "@com_google_arolla//py/arolla/py_utils" ,
192- "@rules_python//python/cc:current_py_cc_headers" , # buildcleaner: keep
200+ "@rules_python//python/cc:current_py_cc_headers" ,
193201 ],
194202)
195203
196204py_library (
197205 name = "unified_binding_policy" ,
198206 srcs = ["unified_binding_policy.py" ],
199207 deps = [
200- ":py_optools_py_ext" ,
208+ ":aux_policies" ,
209+ ":clib" ,
201210 "//py:python_path" ,
202211 "//py/koladata/types:py_boxing" ,
203212 "@com_google_arolla//py/arolla" ,
@@ -208,6 +217,7 @@ py_test(
208217 name = "unified_binding_policy_test" ,
209218 srcs = ["unified_binding_policy_test.py" ],
210219 deps = [
220+ ":aux_policies" ,
211221 ":op_repr" ,
212222 ":unified_binding_policy" ,
213223 "//py:python_path" ,
@@ -221,11 +231,29 @@ py_test(
221231 ],
222232)
223233
234+ py_test (
235+ name = "classic_binding_policy_test" ,
236+ srcs = ["classic_binding_policy_test.py" ],
237+ deps = [
238+ ":aux_policies" ,
239+ ":kde_operators" ,
240+ "//py:python_path" ,
241+ "//py/koladata/expr:input_container" ,
242+ "//py/koladata/testing" ,
243+ "//py/koladata/types:data_slice" ,
244+ "//py/koladata/types:ellipsis" ,
245+ "//py/koladata/types:literal_operator" ,
246+ "@com_google_absl_py//absl/testing:absltest" ,
247+ "@com_google_arolla//py/arolla" ,
248+ ],
249+ )
250+
224251py_library (
225252 name = "optools" ,
226253 srcs = ["optools.py" ],
227254 visibility = ["//koladata:internal" ],
228255 deps = [
256+ ":aux_policies" ,
229257 ":op_repr" ,
230258 ":qtype_utils" ,
231259 ":unified_binding_policy" ,
@@ -407,6 +435,7 @@ py_library(
407435 deps = [
408436 ":arolla_bridge" ,
409437 ":assertion" ,
438+ ":aux_policies" ,
410439 ":jagged_shape" ,
411440 ":masking" ,
412441 ":optools" ,
@@ -429,11 +458,11 @@ py_library(
429458 srcs = ["tuple.py" ],
430459 deps = [
431460 ":arolla_bridge" ,
461+ ":aux_policies" ,
432462 ":optools" ,
433463 ":qtype_utils" ,
434464 ":view_overloads" ,
435465 "//py:python_path" ,
436- "//py/koladata/types:py_boxing" ,
437466 "//py/koladata/types:schema_constants" ,
438467 "@com_google_arolla//py/arolla" ,
439468 "@com_google_arolla//py/arolla/jagged_shape" ,
@@ -446,6 +475,7 @@ py_library(
446475 deps = [
447476 ":arolla_bridge" ,
448477 ":assertion" ,
478+ ":aux_policies" ,
449479 ":bags" ,
450480 ":entities" ,
451481 ":masking" ,
@@ -605,6 +635,7 @@ py_library(
605635 deps = [
606636 ":arolla_bridge" ,
607637 ":assertion" ,
638+ ":aux_policies" ,
608639 ":comparison" ,
609640 ":jagged_shape" ,
610641 ":masking" ,
@@ -667,6 +698,7 @@ py_library(
667698 name = "op_repr" ,
668699 srcs = ["op_repr.py" ],
669700 deps = [
701+ ":aux_policies" ,
670702 ":unified_binding_policy" ,
671703 "//py:python_path" ,
672704 "//py/koladata/types:data_slice" ,
@@ -795,11 +827,11 @@ py_library(
795827 name = "bags" ,
796828 srcs = ["bags.py" ],
797829 deps = [
830+ ":aux_policies" ,
798831 ":optools" ,
799832 ":qtype_utils" ,
800833 ":view_overloads" ,
801834 "//py:python_path" ,
802- "//py/koladata/types:py_boxing" ,
803835 "//py/koladata/types:qtypes" ,
804836 "//py/koladata/types:schema_constants" ,
805837 "@com_google_arolla//py/arolla" ,
@@ -932,6 +964,17 @@ py_library(
932964 ],
933965)
934966
967+ py_library (
968+ name = "aux_policies" ,
969+ srcs = ["aux_policies.py" ],
970+ deps = [
971+ ":clib" ,
972+ "//py:python_path" ,
973+ "//py/koladata/types:py_boxing" ,
974+ "@com_google_arolla//py/arolla" ,
975+ ],
976+ )
977+
935978py_test (
936979 name = "eager_op_utils_test" ,
937980 srcs = ["eager_op_utils_test.py" ],
0 commit comments