You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
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__ == "<lambda>"
 | 
						|
    # don't mangel single lambda.
 | 
						|
    assert maybe_mangle_lambdas([lambda x: x])[0].__name__ == "<lambda>"
 | 
						|
 | 
						|
 | 
						|
def test_maybe_mangle_lambdas_listlike():
 | 
						|
    aggfuncs = [lambda x: 1, lambda x: 2]
 | 
						|
    result = maybe_mangle_lambdas(aggfuncs)
 | 
						|
    assert result[0].__name__ == "<lambda_0>"
 | 
						|
    assert result[1].__name__ == "<lambda_1>"
 | 
						|
    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__ == "<lambda_0>"
 | 
						|
    assert result["A"][1].__name__ == "<lambda_1>"
 | 
						|
 | 
						|
 | 
						|
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__ == "<lambda_0>"
 | 
						|
    assert result["A"][1].__name__ == "<lambda_1>"
 | 
						|
 | 
						|
    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", "<lambda>"),
 | 
						|
                ("height", "max"),
 | 
						|
                ("weight", "max"),
 | 
						|
                ("height", "<lambda>"),
 | 
						|
                ("weight", "<lambda>"),
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                ("height", "<lambda>_0"),
 | 
						|
                ("height", "max"),
 | 
						|
                ("weight", "max"),
 | 
						|
                ("height", "<lambda>_1"),
 | 
						|
                ("weight", "<lambda>"),
 | 
						|
            ],
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            [
 | 
						|
                ("col2", "min"),
 | 
						|
                ("col1", "<lambda>"),
 | 
						|
                ("col1", "<lambda>"),
 | 
						|
                ("col1", "<lambda>"),
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                ("col2", "min"),
 | 
						|
                ("col1", "<lambda>_0"),
 | 
						|
                ("col1", "<lambda>_1"),
 | 
						|
                ("col1", "<lambda>_2"),
 | 
						|
            ],
 | 
						|
        ),
 | 
						|
        (
 | 
						|
            [("col", "<lambda>"), ("col", "<lambda>"), ("col", "<lambda>")],
 | 
						|
            [("col", "<lambda>_0"), ("col", "<lambda>_1"), ("col", "<lambda>_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
 |