@@ -834,10 +834,10 @@ def asof_join_forward_on_X_by_Y(numeric_t[:] left_values,
834
834
return left_indexer, right_indexer
835
835
836
836
837
- def asof_join_nearest_on_X_by_Y (numeric_t[: ] left_values ,
838
- numeric_t[: ] right_values ,
839
- by_t[: ] left_by_values ,
840
- by_t[: ] right_by_values ,
837
+ def asof_join_nearest_on_X_by_Y (ndarray[numeric_t ] left_values ,
838
+ ndarray[numeric_t ] right_values ,
839
+ ndarray[by_t ] left_by_values ,
840
+ ndarray[by_t ] right_by_values ,
841
841
bint allow_exact_matches = True ,
842
842
tolerance = None ,
843
843
bint use_hashtable = True ):
@@ -850,7 +850,17 @@ def asof_join_nearest_on_X_by_Y(numeric_t[:] left_values,
850
850
numeric_t bdiff, fdiff
851
851
852
852
# search both forward and backward
853
- bli, bri = asof_join_backward_on_X_by_Y(
853
+ # TODO(cython3):
854
+ # Bug in beta1 preventing Cython from choosing
855
+ # right specialization when one fused memview is None
856
+ # Doesn't matter what type we choose
857
+ # (nothing happens anyways since it is None)
858
+ # GH 51640
859
+ if left_by_values is not None and left_by_values.dtype != object :
860
+ by_dtype = f" {left_by_values.dtype}_t"
861
+ else :
862
+ by_dtype = object
863
+ bli, bri = asof_join_backward_on_X_by_Y[f" {left_values.dtype}_t" , by_dtype](
854
864
left_values,
855
865
right_values,
856
866
left_by_values,
@@ -859,7 +869,7 @@ def asof_join_nearest_on_X_by_Y(numeric_t[:] left_values,
859
869
tolerance,
860
870
use_hashtable
861
871
)
862
- fli, fri = asof_join_forward_on_X_by_Y(
872
+ fli, fri = asof_join_forward_on_X_by_Y[f " {left_values.dtype}_t " , by_dtype] (
863
873
left_values,
864
874
right_values,
865
875
left_by_values,
0 commit comments