<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import numpy as np
import pytest

from pandas.core.apply import (
    _make_unique_kwarg_list,
    maybe_mangle_lambdas,
)


def test_maybe_mangle_lambdas_passthrough():
    assert maybe_mangle_lambdas("mean") == "mean"
    assert maybe_mangle_lambdas(lambda x: x).__name__ == "&lt;lambda&gt;"
    # don't mangel single lambda.
    assert maybe_mangle_lambdas([lambda x: x])[0].__name__ == "&lt;lambda&gt;"


def test_maybe_mangle_lambdas_listlike():
    aggfuncs = [lambda x: 1, lambda x: 2]
    result = maybe_mangle_lambdas(aggfuncs)
    assert result[0].__name__ == "&lt;lambda_0&gt;"
    assert result[1].__name__ == "&lt;lambda_1&gt;"
    assert aggfuncs[0](None) == result[0](None)
    assert aggfuncs[1](None) == result[1](None)


def test_maybe_mangle_lambdas():
    func = {"A": [lambda x: 0, lambda x: 1]}
    result = maybe_mangle_lambdas(func)
    assert result["A"][0].__name__ == "&lt;lambda_0&gt;"
    assert result["A"][1].__name__ == "&lt;lambda_1&gt;"


def test_maybe_mangle_lambdas_args():
    func = {"A": [lambda x, a, b=1: (0, a, b), lambda x: 1]}
    result = maybe_mangle_lambdas(func)
    assert result["A"][0].__name__ == "&lt;lambda_0&gt;"
    assert result["A"][1].__name__ == "&lt;lambda_1&gt;"

    assert func["A"][0](0, 1) == (0, 1, 1)
    assert func["A"][0](0, 1, 2) == (0, 1, 2)
    assert func["A"][0](0, 2, b=3) == (0, 2, 3)


def test_maybe_mangle_lambdas_named():
    func = {"C": np.mean, "D": {"foo": np.mean, "bar": np.mean}}
    result = maybe_mangle_lambdas(func)
    assert result == func


@pytest.mark.parametrize(
    "order, expected_reorder",
    [
        (
            [
                ("height", "&lt;lambda&gt;"),
                ("height", "max"),
                ("weight", "max"),
                ("height", "&lt;lambda&gt;"),
                ("weight", "&lt;lambda&gt;"),
            ],
            [
                ("height", "&lt;lambda&gt;_0"),
                ("height", "max"),
                ("weight", "max"),
                ("height", "&lt;lambda&gt;_1"),
                ("weight", "&lt;lambda&gt;"),
            ],
        ),
        (
            [
                ("col2", "min"),
                ("col1", "&lt;lambda&gt;"),
                ("col1", "&lt;lambda&gt;"),
                ("col1", "&lt;lambda&gt;"),
            ],
            [
                ("col2", "min"),
                ("col1", "&lt;lambda&gt;_0"),
                ("col1", "&lt;lambda&gt;_1"),
                ("col1", "&lt;lambda&gt;_2"),
            ],
        ),
        (
            [("col", "&lt;lambda&gt;"), ("col", "&lt;lambda&gt;"), ("col", "&lt;lambda&gt;")],
            [("col", "&lt;lambda&gt;_0"), ("col", "&lt;lambda&gt;_1"), ("col", "&lt;lambda&gt;_2")],
        ),
    ],
)
def test_make_unique(order, expected_reorder):
    # GH 27519, test if make_unique function reorders correctly
    result = _make_unique_kwarg_list(order)

    assert result == expected_reorder
</pre></body></html>