Skip to content
New: Star-import, signal unraveling, Python 3.12 support, and more

# search module

Utilities for searching.

## any_in_obj function

    any_in_obj(
        obj,
        match_func,
        excl_types=None,
        incl_types=None,
        max_len=None,
        max_depth=None,
        **kwargs
    )

Return whether there is any match in an object in a recursive manner.

See find_in_obj() for arguments.

## find_and_replace_in_obj function

    find_and_replace_in_obj(
        obj,
        match_func,
        replace_func,
        excl_types=None,
        incl_types=None,
        max_len=None,
        max_depth=None,
        make_copy=True,
        check_any_first=True,
        **kwargs
    )

Find and replace matches in an object in a recursive manner.

See find_in_obj() for arguments.

Note

If the object is deep (such as a dict or a list), creates a copy of it if any match found inside, thus losing the reference to the original. Make sure to do a deep or hybrid copy of the object before proceeding for consistent behavior, or disable `make_copy` to override the original in place.

## find_in_obj function

    find_in_obj(
        obj,
        match_func,
        excl_types=None,
        incl_types=None,
        max_len=None,
        max_depth=None,
        **kwargs
    )

Find matches in an object in a recursive manner.

Traverses dicts, tuples, lists and (frozen-)sets. Does not look for matches in keys.

If `excl_types` is not None, uses is_instance_of() to check whether the object is one of the types that are blacklisted. If so, the object is simply returned. Same for `incl_types` for whitelisting, but it has a priority over `excl_types`.

If `max_len` is not None, processes any object only if it's shorter than the specified length.

If `max_depth` is not None, processes any object only up to a certain recursion level. Level of 0 means dicts and other iterables are not processed, only matches are expected.

Returns a map of keys (multiple levels get represented by a tuple) to their respective values.

For defaults, see search.

## replace_in_obj function

    replace_in_obj(
        obj,
        match_dct
    )

Replace matches in an object in a recursive manner.

See find_in_obj() for `match_dct` (returned value).

#### Cookie consent

We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.

- Google Analytics
- GitHub

Manage settings