UniCoreFW

enhanced_curry()

Enhanced curry function with explicit arity support and _argcount tracking.

Implementation

Args: func: The function to curry arity: Explicit arity (if None, inferred from function) Returns: A curried function that collects arguments until arity is reached

Example

def add_three(a, b, c): return a + b + c curried_add = enhanced_curry(add_three) result = curried_add(1)(2)(3) result

Expected output: 6

Source Code

def enhanced_curry(func: Callable, arity: Optional[int] = None) -> Callable: _validate_callable(func) if arity is None: arity = func.__code__.co_argcount def curried(*args): if len(args) >= arity: return func(*args[:arity]) def next_curry(*more_args): return curried(*(args + more_args)) # Track remaining arguments needed next_curry._argcount = arity - len(args) # type: ignore return _copy_function_metadata(next_curry, func) curried._argcount = arity # type: ignore return _copy_function_metadata(curried, func)