MCPcopy Create free account
hub / github.com/dask/dask / UFuncElemwise

Class UFuncElemwise

dask/dataframe/dask_expr/_expr.py:826–878  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

824
825
826class UFuncElemwise(MapPartitions):
827 _parameters = [
828 "frame",
829 "func",
830 "meta",
831 "transform_divisions",
832 "kwargs",
833 ]
834 enforce_metadata = False
835
836 def __str__(self):
837 return f"UFunc({funcname(self.func)})"
838
839 @functools.cached_property
840 def args(self):
841 return self.operands[len(self._parameters) :]
842
843 @functools.cached_property
844 def _dfs(self):
845 return [df for df in self.args if isinstance(df, Expr) and df.ndim > 0]
846
847 @functools.cached_property
848 def _meta(self):
849 if self.operand("meta") is not no_default:
850 meta = self.operand("meta")
851 else:
852 meta = _get_meta_ufunc(self._dfs, self.args, self.func)
853 return make_meta(meta)
854
855 def _divisions(self):
856 if (
857 self.transform_divisions
858 and isinstance(self._dfs[0], Index)
859 and len(self._dfs) == 1
860 ):
861 try:
862 divisions = self.func(
863 *[
864 pd.Index(arg.divisions) if arg is self._dfs[0] else arg
865 for arg in self.args
866 ],
867 **self.kwargs,
868 )
869 if isinstance(divisions, pd.Index):
870 divisions = methods.tolist(divisions)
871 except Exception:
872 pass
873 else:
874 if not valid_divisions(divisions):
875 divisions = [None] * (self._dfs[0].npartitions + 1)
876 return divisions
877
878 return self._dfs[0].divisions
879
880
881class MapOverlapAlign(Expr):

Callers 1

_lowerMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected