mirror of
https://github.com/microsoft/autogen.git
synced 2025-08-18 21:52:01 +00:00
add api docstring to with_requirements (#5746)
Starting out this draft PR to add documentation for the `with_requirements` decorator in the `autogen-core` package. --------- Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
This commit is contained in:
parent
9d4236b1ce
commit
1b51e69602
@ -152,14 +152,67 @@ class FunctionWithRequirements(Generic[T, P]):
|
|||||||
def with_requirements(
|
def with_requirements(
|
||||||
python_packages: Sequence[str] = [], global_imports: Sequence[Import] = []
|
python_packages: Sequence[str] = [], global_imports: Sequence[Import] = []
|
||||||
) -> Callable[[Callable[P, T]], FunctionWithRequirements[T, P]]:
|
) -> Callable[[Callable[P, T]], FunctionWithRequirements[T, P]]:
|
||||||
"""Decorate a function with package and import requirements
|
"""
|
||||||
|
Decorate a function with package and import requirements for code execution environments.
|
||||||
|
|
||||||
|
This decorator makes a function available for reference in dynamically executed code blocks
|
||||||
|
by wrapping it in a `FunctionWithRequirements` object that tracks its dependencies. When the
|
||||||
|
decorated function is passed to a code executor, it can be imported by name in the executed
|
||||||
|
code, with all dependencies automatically handled.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
python_packages (List[str], optional): Packages required to function. Can include version info.. Defaults to [].
|
python_packages (Sequence[str], optional): Python packages required by the function.
|
||||||
global_imports (List[Import], optional): Required imports. Defaults to [].
|
Can include version specifications (e.g., ["pandas>=1.0.0"]). Defaults to [].
|
||||||
|
global_imports (Sequence[Import], optional): Import statements required by the function.
|
||||||
|
Can be strings ("numpy"), ImportFromModule objects, or Alias objects. Defaults to [].
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Callable[[Callable[P, T]], FunctionWithRequirements[T, P]]: The decorated function
|
Callable[[Callable[P, T]], FunctionWithRequirements[T, P]]: A decorator that wraps
|
||||||
|
the target function, preserving its functionality while registering its dependencies.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import tempfile
|
||||||
|
import asyncio
|
||||||
|
from autogen_core import CancellationToken
|
||||||
|
from autogen_core.code_executor import with_requirements, CodeBlock
|
||||||
|
from autogen_ext.code_executors.local import LocalCommandLineCodeExecutor
|
||||||
|
import pandas
|
||||||
|
|
||||||
|
@with_requirements(python_packages=["pandas"], global_imports=["pandas"])
|
||||||
|
def load_data() -> pandas.DataFrame:
|
||||||
|
\"\"\"Load some sample data.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
pandas.DataFrame: A DataFrame with sample data
|
||||||
|
\"\"\"
|
||||||
|
data = {
|
||||||
|
"name": ["John", "Anna", "Peter", "Linda"],
|
||||||
|
"location": ["New York", "Paris", "Berlin", "London"],
|
||||||
|
"age": [24, 13, 53, 33],
|
||||||
|
}
|
||||||
|
return pandas.DataFrame(data)
|
||||||
|
|
||||||
|
async def run_example():
|
||||||
|
# The decorated function can be used in executed code
|
||||||
|
with tempfile.TemporaryDirectory() as temp_dir:
|
||||||
|
executor = LocalCommandLineCodeExecutor(work_dir=temp_dir, functions=[load_data])
|
||||||
|
code = f\"\"\"from {executor.functions_module} import load_data
|
||||||
|
|
||||||
|
# Use the imported function
|
||||||
|
data = load_data()
|
||||||
|
print(data['name'][0])\"\"\"
|
||||||
|
|
||||||
|
result = await executor.execute_code_blocks(
|
||||||
|
code_blocks=[CodeBlock(language="python", code=code)],
|
||||||
|
cancellation_token=CancellationToken(),
|
||||||
|
)
|
||||||
|
print(result.output) # Output: John
|
||||||
|
|
||||||
|
# Run the async example
|
||||||
|
asyncio.run(run_example())
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def wrapper(func: Callable[P, T]) -> FunctionWithRequirements[T, P]:
|
def wrapper(func: Callable[P, T]) -> FunctionWithRequirements[T, P]:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user