stores 0.1.0__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {stores-0.1.0 → stores-0.1.2}/PKG-INFO +1 -1
- {stores-0.1.0 → stores-0.1.2}/pyproject.toml +1 -1
- stores-0.1.2/run_complex.py +123 -0
- stores-0.1.2/run_remote_tool.py +8 -0
- {stores-0.1.0 → stores-0.1.2}/stores/indexes/base_index.py +20 -6
- {stores-0.1.0 → stores-0.1.2}/stores/indexes/index.py +7 -2
- {stores-0.1.0 → stores-0.1.2}/stores/indexes/remote_index.py +22 -2
- {stores-0.1.0 → stores-0.1.2}/stores/indexes/venv_utils.py +25 -14
- {stores-0.1.0 → stores-0.1.2}/uv.lock +10 -10
- {stores-0.1.0 → stores-0.1.2}/.gitignore +0 -0
- {stores-0.1.0 → stores-0.1.2}/.python-version +0 -0
- {stores-0.1.0 → stores-0.1.2}/LICENSE +0 -0
- {stores-0.1.0 → stores-0.1.2}/README.md +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/README.md +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/anthropic_api.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/google_gemini_auto_call.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/google_gemini_manual_call.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/langchain_w_tool_calling.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/langgraph_agent.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/litellm_w_tool_calling.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/llamaindex_agent.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/openai_agent.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/openai_chat_completions.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/examples/quickstarts/openai_responses.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/stores/__init__.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/stores/constants.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/stores/format.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/stores/indexes/__init__.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/stores/indexes/local_index.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/stores/parse.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/stores/utils.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/README.md +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index/hello/__init__.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index/tools.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index/tools.toml +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index_custom_class/foo.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index_custom_class/tools.toml +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index_function_error/foo.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index_function_error/tools.toml +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index_w_deps/mock_index/__init__.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index_w_deps/pyproject.toml +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index_w_deps/requirements.txt +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/mock_index_w_deps/tools.toml +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_format/conftest.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_format/test_format.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_indexes/conftest.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_indexes/test_base_index.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_indexes/test_index.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_indexes/test_local_index.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_indexes/test_remote_index.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_indexes/test_venv_utils.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_parse/conftest.py +0 -0
- {stores-0.1.0 → stores-0.1.2}/tests/test_parse/test_parse.py +0 -0
@@ -0,0 +1,123 @@
|
|
1
|
+
# import anthropic
|
2
|
+
import inspect
|
3
|
+
|
4
|
+
import dotenv
|
5
|
+
from langchain_core.tools import tool as callable_as_lc_tool
|
6
|
+
from langchain_google_genai import ChatGoogleGenerativeAI
|
7
|
+
|
8
|
+
# from openai import OpenAI
|
9
|
+
# from google import genai
|
10
|
+
# from google.genai import types
|
11
|
+
# from litellm import completion
|
12
|
+
# from stores.indexes import LocalIndex
|
13
|
+
import stores
|
14
|
+
|
15
|
+
dotenv.load_dotenv()
|
16
|
+
|
17
|
+
|
18
|
+
# def foo(bar: str = "test"):
|
19
|
+
# return bar
|
20
|
+
|
21
|
+
|
22
|
+
# index = stores.Index([foo])
|
23
|
+
# print(inspect.signature(index.tools[0]))
|
24
|
+
# print(index.tools[0]())
|
25
|
+
# quit()
|
26
|
+
|
27
|
+
|
28
|
+
index = stores.Index(
|
29
|
+
["silanthro/todoist"],
|
30
|
+
env_var={
|
31
|
+
"silanthro/todoist": {
|
32
|
+
"TODOIST_API_TOKEN": "6a0815ff164d7ebd6d45d433bdbd32fcb164e1ec",
|
33
|
+
}
|
34
|
+
},
|
35
|
+
)
|
36
|
+
|
37
|
+
sig = inspect.signature(index.tools[0])
|
38
|
+
print(sig)
|
39
|
+
|
40
|
+
wrap = callable_as_lc_tool()(index.tools[0])
|
41
|
+
sig_wrap = inspect.signature(wrap)
|
42
|
+
print(sig_wrap)
|
43
|
+
# quit()
|
44
|
+
|
45
|
+
for argname, arg in sig.parameters.items():
|
46
|
+
print(argname)
|
47
|
+
print(arg.annotation)
|
48
|
+
print([arg.default])
|
49
|
+
|
50
|
+
# print(sig)
|
51
|
+
# quit()
|
52
|
+
|
53
|
+
# result = index.execute(
|
54
|
+
# "todoist.get_tasks",
|
55
|
+
# {
|
56
|
+
# "project_id": None,
|
57
|
+
# "search_query": None,
|
58
|
+
# "due_date_filter": "today",
|
59
|
+
# "priority": None,
|
60
|
+
# "other_filters": None,
|
61
|
+
# "limit": None,
|
62
|
+
# },
|
63
|
+
# )
|
64
|
+
# print(result)
|
65
|
+
# quit()
|
66
|
+
|
67
|
+
|
68
|
+
task = "Find tasks of priority 1"
|
69
|
+
|
70
|
+
# print(index.tools)
|
71
|
+
|
72
|
+
# print(index.format_tools("openai-chat-completions"))
|
73
|
+
# quit()
|
74
|
+
|
75
|
+
# client = OpenAI()
|
76
|
+
# response = client.responses.create(
|
77
|
+
# model="gpt-4o-mini-2024-07-18",
|
78
|
+
# input=[{"role": "user", "content": task}],
|
79
|
+
# tools=index.format_tools("openai-responses"),
|
80
|
+
# )
|
81
|
+
# client = anthropic.Anthropic()
|
82
|
+
# response = client.messages.create(
|
83
|
+
# model="claude-3-5-sonnet-20241022",
|
84
|
+
# max_tokens=1024,
|
85
|
+
# messages=[{"role": "user", "content": task}],
|
86
|
+
# tools=index.format_tools("anthropic"),
|
87
|
+
# )
|
88
|
+
# response = completion(
|
89
|
+
# model="gemini/gemini-2.0-flash-001",
|
90
|
+
# messages=[
|
91
|
+
# {
|
92
|
+
# "role": "user",
|
93
|
+
# "content": task,
|
94
|
+
# }
|
95
|
+
# ],
|
96
|
+
# tools=index.format_tools("google-gemini"),
|
97
|
+
# )
|
98
|
+
# client = genai.Client(
|
99
|
+
# # api_key=os.environ["GEMINI_API_KEY"],
|
100
|
+
# )
|
101
|
+
# config = types.GenerateContentConfig(
|
102
|
+
# tools=index.tools,
|
103
|
+
# automatic_function_calling=types.AutomaticFunctionCallingConfig(
|
104
|
+
# disable=True # Gemini automatically executes tool calls. This script shows how to manually execute tool calls.
|
105
|
+
# ),
|
106
|
+
# )
|
107
|
+
|
108
|
+
# # Get the response from the model
|
109
|
+
# response = client.models.generate_content(
|
110
|
+
# model="gemini-2.0-flash",
|
111
|
+
# contents=task,
|
112
|
+
# config=config,
|
113
|
+
# )
|
114
|
+
# tool_call = response.candidates[0].content.parts[0].function_call
|
115
|
+
|
116
|
+
model = ChatGoogleGenerativeAI(model="gemini-2.0-flash-001")
|
117
|
+
model_with_tools = model.bind_tools(index.tools)
|
118
|
+
response = model_with_tools.invoke(task)
|
119
|
+
tool_call = response.tool_calls[0]
|
120
|
+
|
121
|
+
print(tool_call)
|
122
|
+
# Execute the tool call
|
123
|
+
# print(response)
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import asyncio
|
2
|
-
import functools
|
3
2
|
import inspect
|
4
3
|
import logging
|
5
4
|
import re
|
@@ -18,6 +17,8 @@ from typing import (
|
|
18
17
|
get_type_hints,
|
19
18
|
)
|
20
19
|
|
20
|
+
from makefun import create_function
|
21
|
+
|
21
22
|
from stores.format import ProviderFormat, format_tools
|
22
23
|
from stores.parse import llm_parse_json
|
23
24
|
from stores.utils import check_duplicates
|
@@ -209,8 +210,15 @@ def wrap_tool(tool: Callable):
|
|
209
210
|
# Inject default values within wrapper
|
210
211
|
bound_args = original_signature.bind(*args, **kwargs)
|
211
212
|
bound_args.apply_defaults()
|
212
|
-
_cast_bound_args(bound_args)
|
213
213
|
# Inject correct Literals
|
214
|
+
for k, v in bound_args.arguments.items():
|
215
|
+
if (
|
216
|
+
v is None
|
217
|
+
and original_signature.parameters[k].default is not Parameter.empty
|
218
|
+
):
|
219
|
+
bound_args.arguments[k] = original_signature.parameters[k].default
|
220
|
+
|
221
|
+
_cast_bound_args(bound_args)
|
214
222
|
for k, v in bound_args.arguments.items():
|
215
223
|
if k in literal_maps:
|
216
224
|
param = original_signature.parameters[k]
|
@@ -219,11 +227,17 @@ def wrap_tool(tool: Callable):
|
|
219
227
|
)
|
220
228
|
return tool(*bound_args.args, **bound_args.kwargs)
|
221
229
|
|
222
|
-
|
223
|
-
|
224
|
-
|
230
|
+
wrapped = create_function(
|
231
|
+
new_sig,
|
232
|
+
wrapper,
|
233
|
+
qualname=tool.__name__,
|
234
|
+
doc=inspect.getdoc(tool),
|
235
|
+
)
|
236
|
+
|
237
|
+
wrapped.__name__ = tool.__name__
|
238
|
+
wrapped._wrapped = True
|
225
239
|
|
226
|
-
return
|
240
|
+
return wrapped
|
227
241
|
|
228
242
|
|
229
243
|
class BaseIndex:
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import logging
|
2
2
|
import os
|
3
3
|
from pathlib import Path
|
4
|
-
from typing import Callable
|
4
|
+
from typing import Callable, Optional
|
5
5
|
|
6
6
|
from stores.indexes.base_index import BaseIndex
|
7
7
|
from stores.indexes.local_index import LocalIndex
|
@@ -17,6 +17,8 @@ class Index(BaseIndex):
|
|
17
17
|
self,
|
18
18
|
tools: list[Callable, os.PathLike] | None = None,
|
19
19
|
env_var: dict[str, dict] | None = None,
|
20
|
+
cache_dir: Optional[os.PathLike] = None,
|
21
|
+
reset_cache=False,
|
20
22
|
):
|
21
23
|
self.env_var = env_var or {}
|
22
24
|
tools = tools or []
|
@@ -38,7 +40,10 @@ class Index(BaseIndex):
|
|
38
40
|
# Load RemoteIndex
|
39
41
|
try:
|
40
42
|
loaded_index = RemoteIndex(
|
41
|
-
index_name,
|
43
|
+
index_name,
|
44
|
+
env_var=self.env_var.get(index_name),
|
45
|
+
cache_dir=cache_dir,
|
46
|
+
reset_cache=reset_cache,
|
42
47
|
)
|
43
48
|
except Exception:
|
44
49
|
logger.warning(
|
@@ -1,7 +1,10 @@
|
|
1
1
|
import json
|
2
2
|
import logging
|
3
|
+
import shutil
|
3
4
|
import venv
|
5
|
+
from os import PathLike
|
4
6
|
from pathlib import Path
|
7
|
+
from typing import Optional
|
5
8
|
|
6
9
|
import requests
|
7
10
|
from git import Repo
|
@@ -21,6 +24,10 @@ INDEX_LOOKUP_URL = (
|
|
21
24
|
)
|
22
25
|
|
23
26
|
|
27
|
+
def clear_default_cache():
|
28
|
+
shutil.rmtree(CACHE_DIR)
|
29
|
+
|
30
|
+
|
24
31
|
def lookup_index(index_id: str, index_version: str | None = None):
|
25
32
|
response = requests.post(
|
26
33
|
INDEX_LOOKUP_URL,
|
@@ -39,11 +46,24 @@ def lookup_index(index_id: str, index_version: str | None = None):
|
|
39
46
|
|
40
47
|
|
41
48
|
class RemoteIndex(BaseIndex):
|
42
|
-
def __init__(
|
49
|
+
def __init__(
|
50
|
+
self,
|
51
|
+
index_id: str,
|
52
|
+
env_var: dict | None = None,
|
53
|
+
cache_dir: Optional[PathLike] = None,
|
54
|
+
reset_cache=False,
|
55
|
+
):
|
43
56
|
self.index_id = index_id
|
44
|
-
|
57
|
+
if cache_dir is None:
|
58
|
+
cache_dir = CACHE_DIR
|
59
|
+
else:
|
60
|
+
cache_dir = Path(cache_dir)
|
61
|
+
if reset_cache:
|
62
|
+
shutil.rmtree(cache_dir)
|
63
|
+
self.index_folder = cache_dir / self.index_id
|
45
64
|
self.env_var = env_var or {}
|
46
65
|
if not self.index_folder.exists():
|
66
|
+
logger.info(f"Installing {index_id}...")
|
47
67
|
commit_like = None
|
48
68
|
if ":" in index_id:
|
49
69
|
index_id, commit_like = index_id.split(":")
|
@@ -115,44 +115,49 @@ from typing import Any, Dict, List, Literal, Tuple, Union, get_args, get_origin,
|
|
115
115
|
import types as T
|
116
116
|
|
117
117
|
|
118
|
-
def extract_type_info(typ):
|
118
|
+
def extract_type_info(typ, custom_types: list[str] | None = None):
|
119
|
+
custom_types = custom_types or []
|
120
|
+
if hasattr(typ, "__name__") and typ.__name__ in custom_types:
|
121
|
+
return typ.__name__
|
119
122
|
origin = get_origin(typ)
|
120
123
|
args = list(get_args(typ))
|
121
124
|
if origin is Literal:
|
122
125
|
return {{"type": "Literal", "values": args}}
|
123
126
|
elif inspect.isclass(typ) and issubclass(typ, enum.Enum):
|
127
|
+
custom_types.append(typ.__name__)
|
124
128
|
return {{
|
125
129
|
"type": "Enum",
|
126
130
|
"type_name": typ.__name__,
|
127
131
|
"values": {{v.name: v.value for v in typ}},
|
128
132
|
}}
|
129
133
|
elif isinstance(typ, type) and typ.__class__.__name__ == "_TypedDictMeta":
|
134
|
+
custom_types.append(typ.__name__)
|
130
135
|
hints = get_type_hints(typ)
|
131
136
|
return {{
|
132
137
|
"type": "TypedDict",
|
133
138
|
"type_name": typ.__name__,
|
134
|
-
"fields": {{k: extract_type_info(v) for k, v in hints.items()}}
|
139
|
+
"fields": {{k: extract_type_info(v, custom_types) for k, v in hints.items()}}
|
135
140
|
}}
|
136
141
|
elif origin in (list, List) or typ is list:
|
137
142
|
return {{
|
138
143
|
"type": "List",
|
139
|
-
"item_type": extract_type_info(args[0]) if args else {{"type": Any}}
|
144
|
+
"item_type": extract_type_info(args[0], custom_types) if args else {{"type": Any}}
|
140
145
|
}}
|
141
146
|
elif origin in (dict, Dict) or typ is dict:
|
142
147
|
return {{
|
143
148
|
"type": "Dict",
|
144
|
-
"key_type": extract_type_info(args[0]) if args else {{"type": Any}},
|
145
|
-
"value_type": extract_type_info(args[1]) if len(args) > 1 else {{"type": Any}}
|
149
|
+
"key_type": extract_type_info(args[0], custom_types) if args else {{"type": Any}},
|
150
|
+
"value_type": extract_type_info(args[1], custom_types) if len(args) > 1 else {{"type": Any}}
|
146
151
|
}}
|
147
152
|
elif origin in (tuple, Tuple) or typ is tuple:
|
148
153
|
return {{
|
149
154
|
"type": "Tuple",
|
150
|
-
"item_types": [extract_type_info(arg) for arg in args] if args else [{{"type": Any}}]
|
155
|
+
"item_types": [extract_type_info(arg, custom_types) for arg in args] if args else [{{"type": Any}}]
|
151
156
|
}}
|
152
157
|
elif origin is Union or origin is T.UnionType:
|
153
158
|
return {{
|
154
159
|
"type": "Union",
|
155
|
-
"options": [extract_type_info(arg) for arg in args]
|
160
|
+
"options": [extract_type_info(arg, custom_types) for arg in args]
|
156
161
|
}}
|
157
162
|
else:
|
158
163
|
return {{"type": typ}}
|
@@ -205,33 +210,39 @@ except Exception as e:
|
|
205
210
|
raise RuntimeError(f"Error loading tool {tool_id}:\n{response['error']}")
|
206
211
|
|
207
212
|
|
208
|
-
def parse_param_type(param_info: dict):
|
213
|
+
def parse_param_type(param_info: dict, custom_types: list[str] | None = None):
|
214
|
+
custom_types = custom_types or []
|
215
|
+
# Support ForwardRef
|
209
216
|
param_type = param_info["type"]
|
217
|
+
if param_type in custom_types:
|
218
|
+
return param_type
|
210
219
|
if not isinstance(param_type, str):
|
211
220
|
return param_type
|
212
221
|
if param_type == "Literal":
|
213
222
|
return Literal.__getitem__(tuple(param_info["values"]))
|
214
223
|
elif param_type == "Enum":
|
224
|
+
custom_types.append(param_info["type_name"])
|
215
225
|
return Enum(param_info["type_name"], param_info["values"])
|
216
226
|
elif param_type == "TypedDict":
|
227
|
+
custom_types.append(param_info["type_name"])
|
217
228
|
properties = {}
|
218
229
|
for k, v in param_info["fields"].items():
|
219
|
-
properties[k] = parse_param_type(v)
|
230
|
+
properties[k] = parse_param_type(v, custom_types)
|
220
231
|
return TypedDict(param_info["type_name"], properties)
|
221
232
|
elif param_type == "List":
|
222
|
-
return list[parse_param_type(param_info["item_type"])]
|
233
|
+
return list[parse_param_type(param_info["item_type"], custom_types)]
|
223
234
|
elif param_type == "Dict":
|
224
235
|
return Dict[
|
225
|
-
parse_param_type(param_info["key_type"]),
|
226
|
-
parse_param_type(param_info["value_type"]),
|
236
|
+
parse_param_type(param_info["key_type"], custom_types),
|
237
|
+
parse_param_type(param_info["value_type"], custom_types),
|
227
238
|
]
|
228
239
|
elif param_type == "Tuple":
|
229
240
|
return Tuple.__getitem__(
|
230
|
-
tuple([parse_param_type(i) for i in param_info["item_types"]])
|
241
|
+
tuple([parse_param_type(i, custom_types) for i in param_info["item_types"]])
|
231
242
|
)
|
232
243
|
elif param_type == "Union":
|
233
244
|
return Union.__getitem__(
|
234
|
-
tuple([parse_param_type(i) for i in param_info["options"]])
|
245
|
+
tuple([parse_param_type(i, custom_types) for i in param_info["options"]])
|
235
246
|
)
|
236
247
|
else:
|
237
248
|
raise TypeError(f"Invalid param type {param_type} in param info {param_info}")
|
@@ -1156,7 +1156,7 @@ wheels = [
|
|
1156
1156
|
|
1157
1157
|
[[package]]
|
1158
1158
|
name = "langsmith"
|
1159
|
-
version = "0.3.
|
1159
|
+
version = "0.3.26"
|
1160
1160
|
source = { registry = "https://pypi.org/simple" }
|
1161
1161
|
dependencies = [
|
1162
1162
|
{ name = "httpx" },
|
@@ -1167,9 +1167,9 @@ dependencies = [
|
|
1167
1167
|
{ name = "requests-toolbelt" },
|
1168
1168
|
{ name = "zstandard" },
|
1169
1169
|
]
|
1170
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
1170
|
+
sdist = { url = "https://files.pythonhosted.org/packages/be/2e/9748883c40e8a3c5d628d5a81a531e1a5ae3a2bfced429ffdf86a437b269/langsmith-0.3.26.tar.gz", hash = "sha256:3bd5b952a5fc82d69b0e2c030e502ee081a8ccf20468e96fd3d53e1572aef6fc", size = 342721 }
|
1171
1171
|
wheels = [
|
1172
|
-
{ url = "https://files.pythonhosted.org/packages/
|
1172
|
+
{ url = "https://files.pythonhosted.org/packages/13/14/f2e972ac0cf9b4ff4d405f7843b0f14a1ef686544a54f91ac4d5ac723140/langsmith-0.3.26-py3-none-any.whl", hash = "sha256:3ae49e49d6f3c980a524d15ac2fd895896e709ecedc83ac150c38e1ead776e1b", size = 357325 },
|
1173
1173
|
]
|
1174
1174
|
|
1175
1175
|
[[package]]
|
@@ -1825,7 +1825,7 @@ wheels = [
|
|
1825
1825
|
|
1826
1826
|
[[package]]
|
1827
1827
|
name = "openai"
|
1828
|
-
version = "1.
|
1828
|
+
version = "1.71.0"
|
1829
1829
|
source = { registry = "https://pypi.org/simple" }
|
1830
1830
|
dependencies = [
|
1831
1831
|
{ name = "anyio" },
|
@@ -1837,14 +1837,14 @@ dependencies = [
|
|
1837
1837
|
{ name = "tqdm" },
|
1838
1838
|
{ name = "typing-extensions" },
|
1839
1839
|
]
|
1840
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
1840
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d9/19/b8f0347090a649dce55a008ec54ac6abb50553a06508cdb5e7abb2813e99/openai-1.71.0.tar.gz", hash = "sha256:52b20bb990a1780f9b0b8ccebac93416343ebd3e4e714e3eff730336833ca207", size = 409926 }
|
1841
1841
|
wheels = [
|
1842
|
-
{ url = "https://files.pythonhosted.org/packages/
|
1842
|
+
{ url = "https://files.pythonhosted.org/packages/c4/f7/049e85faf6a000890e5ca0edca8e9183f8a43c9e7bba869cad871da0caba/openai-1.71.0-py3-none-any.whl", hash = "sha256:e1c643738f1fff1af52bce6ef06a7716c95d089281e7011777179614f32937aa", size = 598975 },
|
1843
1843
|
]
|
1844
1844
|
|
1845
1845
|
[[package]]
|
1846
1846
|
name = "openai-agents"
|
1847
|
-
version = "0.0.
|
1847
|
+
version = "0.0.9"
|
1848
1848
|
source = { registry = "https://pypi.org/simple" }
|
1849
1849
|
dependencies = [
|
1850
1850
|
{ name = "griffe" },
|
@@ -1855,9 +1855,9 @@ dependencies = [
|
|
1855
1855
|
{ name = "types-requests" },
|
1856
1856
|
{ name = "typing-extensions" },
|
1857
1857
|
]
|
1858
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
1858
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e3/ec/dc701417f2b58f66e938abb3acd11de39454ac5d3fe3164a05dd9bc0ce92/openai_agents-0.0.9.tar.gz", hash = "sha256:e6923395ae9afd463e6e0c25cbf2b2d42f8fbe5ad79e244aa9c362b62f335981", size = 985467 }
|
1859
1859
|
wheels = [
|
1860
|
-
{ url = "https://files.pythonhosted.org/packages/
|
1860
|
+
{ url = "https://files.pythonhosted.org/packages/cb/ff/2b378aeb531b1937fe6f98cbdb934155ee185be15455c065dc949ed3e6c1/openai_agents-0.0.9-py3-none-any.whl", hash = "sha256:f4a4798d876db2f47e0cd86791bcdbfc24a37fd20504accde267b682b75d5af7", size = 107300 },
|
1861
1861
|
]
|
1862
1862
|
|
1863
1863
|
[[package]]
|
@@ -2963,7 +2963,7 @@ wheels = [
|
|
2963
2963
|
|
2964
2964
|
[[package]]
|
2965
2965
|
name = "stores"
|
2966
|
-
version = "0.1.
|
2966
|
+
version = "0.1.1"
|
2967
2967
|
source = { editable = "." }
|
2968
2968
|
dependencies = [
|
2969
2969
|
{ name = "dirtyjson" },
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|