| 3355 | |
| 3356 | |
| 3357 | class Diff(MapOverlap): |
| 3358 | _parameters = ["frame", "periods"] |
| 3359 | _defaults = {"periods": 1} |
| 3360 | func = M.diff |
| 3361 | enforce_metadata = True |
| 3362 | transform_divisions = False |
| 3363 | clear_divisions = False |
| 3364 | align_dataframes = True |
| 3365 | |
| 3366 | def _divisions(self): |
| 3367 | return self.frame.divisions |
| 3368 | |
| 3369 | @functools.cached_property |
| 3370 | def _meta(self): |
| 3371 | return make_meta(meta_nonempty(self.frame._meta).diff(**self.kwargs)) |
| 3372 | |
| 3373 | def _simplify_up(self, parent, dependents): |
| 3374 | if isinstance(parent, Projection): |
| 3375 | return plain_column_projection(self, parent, dependents) |
| 3376 | |
| 3377 | @functools.cached_property |
| 3378 | def kwargs(self): |
| 3379 | return dict(periods=self.periods) |
| 3380 | |
| 3381 | @property |
| 3382 | def before(self): |
| 3383 | return max(0, self.periods) |
| 3384 | |
| 3385 | @property |
| 3386 | def after(self): |
| 3387 | return 0 if self.periods > 0 else -self.periods |
| 3388 | |
| 3389 | |
| 3390 | class FillnaCheck(Blockwise): |
no outgoing calls
no test coverage detected
searching dependent graphs…