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

Function _replace_common_or_components

dask/dataframe/dask_expr/_expr.py:3983–4020  ·  view source on GitHub ↗
(expr, or_components)

Source from the content-addressed store, hash-verified

3981
3982
3983def _replace_common_or_components(expr, or_components):
3984 and_component = _get_predicate_components(expr, [], type_=And)
3985 mapping = _convert_mapping(and_component)
3986 and_components = [
3987 _get_predicate_components(c, [], type_=And) for c in or_components
3988 ]
3989 and_components = list(map(_convert_mapping, and_components))
3990
3991 replacements = []
3992 for c in mapping.keys():
3993 if all(c in comp for comp in and_components):
3994 # We can pull this component out if it's part of all or components
3995 replacements.append(c)
3996 if len(replacements) == 0:
3997 # exit if we can't replace anything
3998 return
3999
4000 outer_component = mapping[replacements[0]]
4001 for r in replacements[1:]:
4002 # construct the outer component
4003 outer_component = outer_component & mapping[r]
4004
4005 #
4006 result_components = []
4007 for comp in [mapping] + and_components:
4008 keep_components = [c for c in comp if c not in replacements]
4009 if len(keep_components) == 0:
4010 # Just return outer_component if we can replace a whole OR component
4011 return outer_component
4012 result_component = comp[keep_components[0]]
4013 for c in keep_components[1:]:
4014 result_component = result_component & comp[c]
4015 result_components.append(result_component)
4016
4017 or_component = result_components[0]
4018 for c in result_components[1:]:
4019 or_component = or_component | c
4020 return outer_component & or_component
4021
4022
4023def _check_dependents_are_predicates(

Callers 1

rewrite_filtersFunction · 0.85

Calls 4

_convert_mappingFunction · 0.85
allFunction · 0.85
keysMethod · 0.45

Tested by

no test coverage detected