Skip to content

Commit 3c67596

Browse files
committed
try changing docstring to include args and their descriptions
1 parent fe2a332 commit 3c67596

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

packages/toolbox-core/src/toolbox_core/client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ def __parse_tool(
8686
name=name,
8787
desc=schema.description,
8888
params=[p.to_param() for p in params],
89+
params_metadata=types.MappingProxyType({p.name: (p.type, p.description) for p in schema.parameters}),
8990
# create a read-only values for the maps to prevent mutation
9091
required_authn_params=types.MappingProxyType(authn_params),
9192
auth_service_token_getters=types.MappingProxyType(auth_token_getters),

packages/toolbox-core/src/toolbox_core/tool.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@
1515

1616
import asyncio
1717
import types
18-
from collections import defaultdict
1918
from inspect import Parameter, Signature
2019
from typing import (
2120
Any,
2221
Callable,
23-
DefaultDict,
2422
Iterable,
2523
Mapping,
2624
Optional,
@@ -29,8 +27,6 @@
2927
)
3028

3129
from aiohttp import ClientSession
32-
from pytest import Session
33-
3430

3531
class ToolboxTool:
3632
"""
@@ -52,6 +48,7 @@ def __init__(
5248
name: str,
5349
desc: str,
5450
params: Sequence[Parameter],
51+
params_metadata: Mapping[str, tuple[str, str]],
5552
required_authn_params: Mapping[str, list[str]],
5653
auth_service_token_getters: Mapping[str, Callable[[], str]],
5754
bound_params: Mapping[str, Union[Callable[[], Any], Any]],
@@ -83,10 +80,11 @@ def __init__(
8380

8481
self.__desc = desc
8582
self.__params = params
83+
self.__params_metadata = params_metadata
8684

8785
# the following properties are set to help anyone that might inspect it determine usage
8886
self.__name__ = name
89-
self.__doc__ = desc
87+
self.__doc__ = self._schema_to_docstring(desc, params, params_metadata)
9088
self.__signature__ = Signature(parameters=params, return_annotation=str)
9189
self.__annotations__ = {p.name: p.annotation for p in params}
9290
# TODO: self.__qualname__ ??
@@ -98,6 +96,21 @@ def __init__(
9896
# map of parameter name to value (or callable that produces that value)
9997
self.__bound_parameters = bound_params
10098

99+
@staticmethod
100+
def _schema_to_docstring(
101+
tool_description: str,
102+
params: Sequence[Parameter],
103+
params_metadata: Mapping[str, tuple[str, str]],
104+
):
105+
docstring = tool_description
106+
if not params:
107+
return docstring
108+
docstring += "\n\nArgs:"
109+
for p in params:
110+
param_metadata = params_metadata[p.name]
111+
docstring += f"\n{p.name} ({param_metadata[0]}): {param_metadata[1]}"
112+
return docstring
113+
101114
def __copy(
102115
self,
103116
session: Optional[ClientSession] = None,
@@ -134,6 +147,7 @@ def __copy(
134147
name=check(name, self.__name__),
135148
desc=check(desc, self.__desc),
136149
params=check(params, self.__params),
150+
params_metadata=self.__params_metadata,
137151
required_authn_params=check(
138152
required_authn_params, self.__required_authn_params
139153
),

0 commit comments

Comments
 (0)