latitude-sdk 1.0.3__tar.gz → 1.1.1__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.
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/PKG-INFO +2 -2
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/pyproject.toml +2 -2
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/client/payloads.py +6 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/client/router.py +11 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/sdk/prompts.py +24 -1
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/sdk/types.py +11 -0
- latitude_sdk-1.1.1/tests/prompts/get_all_test.py +62 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/prompts/render_test.py +66 -2
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/utils/fixtures.py +4 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/uv.lock +6 -5
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/.gitignore +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/.python-version +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/README.md +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/scripts/format.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/scripts/lint.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/scripts/test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/client/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/client/client.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/env/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/env/env.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/py.typed +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/sdk/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/sdk/errors.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/sdk/evaluations.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/sdk/latitude.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/sdk/logs.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/util/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/src/latitude_sdk/util/utils.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/evaluations/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/evaluations/create_result_test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/evaluations/trigger_test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/logs/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/logs/create_test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/prompts/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/prompts/chat_test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/prompts/get_or_create_test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/prompts/get_test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/prompts/render_chain_test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/prompts/run_test.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/utils/__init__.py +0 -0
- {latitude_sdk-1.0.3 → latitude_sdk-1.1.1}/tests/utils/utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: latitude-sdk
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.1.1
|
4
4
|
Summary: Latitude SDK for Python
|
5
5
|
Project-URL: repository, https://github.com/latitude-dev/latitude-llm/tree/main/packages/sdks/python
|
6
6
|
Project-URL: homepage, https://github.com/latitude-dev/latitude-llm/tree/main/packages/sdks/python#readme
|
@@ -12,7 +12,7 @@ Requires-Python: <3.13,>=3.9
|
|
12
12
|
Requires-Dist: httpx-sse>=0.4.0
|
13
13
|
Requires-Dist: httpx>=0.28.1
|
14
14
|
Requires-Dist: latitude-telemetry>=1.0.0
|
15
|
-
Requires-Dist: promptl-ai>=1.0.
|
15
|
+
Requires-Dist: promptl-ai>=1.0.3
|
16
16
|
Requires-Dist: pydantic>=2.10.3
|
17
17
|
Requires-Dist: typing-extensions>=4.12.2
|
18
18
|
Description-Content-Type: text/markdown
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "latitude-sdk"
|
3
|
-
version = "1.
|
3
|
+
version = "1.1.1"
|
4
4
|
description = "Latitude SDK for Python"
|
5
5
|
authors = [{ name = "Latitude Data SL", email = "hello@latitude.so" }]
|
6
6
|
maintainers = [{ name = "Latitude Data SL", email = "hello@latitude.so" }]
|
@@ -16,7 +16,7 @@ dependencies = [
|
|
16
16
|
"pydantic>=2.10.3",
|
17
17
|
"typing-extensions>=4.12.2",
|
18
18
|
"latitude-telemetry>=1.0.0",
|
19
|
-
"promptl-ai>=1.0.
|
19
|
+
"promptl-ai>=1.0.3",
|
20
20
|
]
|
21
21
|
|
22
22
|
[dependency-groups]
|
@@ -23,6 +23,10 @@ class GetPromptRequestParams(PromptRequestParams, Model):
|
|
23
23
|
path: str
|
24
24
|
|
25
25
|
|
26
|
+
class GetAllPromptRequestParams(PromptRequestParams, Model):
|
27
|
+
pass
|
28
|
+
|
29
|
+
|
26
30
|
class GetOrCreatePromptRequestParams(PromptRequestParams, Model):
|
27
31
|
pass
|
28
32
|
|
@@ -90,6 +94,7 @@ class CreateEvaluationResultRequestBody(Model):
|
|
90
94
|
|
91
95
|
RequestParams = Union[
|
92
96
|
GetPromptRequestParams,
|
97
|
+
GetAllPromptRequestParams,
|
93
98
|
GetOrCreatePromptRequestParams,
|
94
99
|
RunPromptRequestParams,
|
95
100
|
ChatPromptRequestParams,
|
@@ -111,6 +116,7 @@ RequestBody = Union[
|
|
111
116
|
|
112
117
|
class RequestHandler(StrEnum):
|
113
118
|
GetPrompt = "GET_PROMPT"
|
119
|
+
GetAllPrompts = "GET_ALL_PROMPTS"
|
114
120
|
GetOrCreatePrompt = "GET_OR_CREATE_PROMPT"
|
115
121
|
RunPrompt = "RUN_PROMPT"
|
116
122
|
ChatPrompt = "CHAT_PROMPT"
|
@@ -4,6 +4,7 @@ from latitude_sdk.client.payloads import (
|
|
4
4
|
ChatPromptRequestParams,
|
5
5
|
CreateEvaluationResultRequestParams,
|
6
6
|
CreateLogRequestParams,
|
7
|
+
GetAllPromptRequestParams,
|
7
8
|
GetOrCreatePromptRequestParams,
|
8
9
|
GetPromptRequestParams,
|
9
10
|
RequestHandler,
|
@@ -36,6 +37,14 @@ class Router:
|
|
36
37
|
version_uuid=params.version_uuid,
|
37
38
|
).prompt(params.path)
|
38
39
|
|
40
|
+
if handler == RequestHandler.GetAllPrompts:
|
41
|
+
assert isinstance(params, GetAllPromptRequestParams)
|
42
|
+
|
43
|
+
return "GET", self.prompts(
|
44
|
+
project_id=params.project_id,
|
45
|
+
version_uuid=params.version_uuid,
|
46
|
+
).all_prompts
|
47
|
+
|
39
48
|
elif handler == RequestHandler.GetOrCreatePrompt:
|
40
49
|
assert isinstance(params, GetOrCreatePromptRequestParams)
|
41
50
|
|
@@ -94,6 +103,7 @@ class Router:
|
|
94
103
|
|
95
104
|
class Prompts(Model):
|
96
105
|
prompt: Callable[[str], str]
|
106
|
+
all_prompts: str
|
97
107
|
get_or_create: str
|
98
108
|
run: str
|
99
109
|
logs: str
|
@@ -102,6 +112,7 @@ class Router:
|
|
102
112
|
base_url = f"{self.commits_url(project_id, version_uuid)}/documents"
|
103
113
|
|
104
114
|
return self.Prompts(
|
115
|
+
all_prompts=f"{base_url}",
|
105
116
|
prompt=lambda path: f"{base_url}/{path}",
|
106
117
|
get_or_create=f"{base_url}/get-or-create",
|
107
118
|
run=f"{base_url}/run",
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import asyncio
|
2
|
-
from typing import Any, AsyncGenerator, Optional, Sequence, Union
|
2
|
+
from typing import Any, AsyncGenerator, List, Optional, Sequence, Union
|
3
3
|
|
4
4
|
from promptl_ai import Adapter, Message, MessageLike, Promptl, ToolMessage, ToolResultContent
|
5
5
|
from promptl_ai.bindings.types import _Message
|
@@ -9,6 +9,7 @@ from latitude_sdk.client import (
|
|
9
9
|
ChatPromptRequestParams,
|
10
10
|
Client,
|
11
11
|
ClientEvent,
|
12
|
+
GetAllPromptRequestParams,
|
12
13
|
GetOrCreatePromptRequestBody,
|
13
14
|
GetOrCreatePromptRequestParams,
|
14
15
|
GetPromptRequestParams,
|
@@ -33,6 +34,7 @@ from latitude_sdk.sdk.types import (
|
|
33
34
|
ToolResult,
|
34
35
|
_LatitudeEvent,
|
35
36
|
)
|
37
|
+
from latitude_sdk.util import Adapter as AdapterUtil
|
36
38
|
from latitude_sdk.util import Model
|
37
39
|
|
38
40
|
_PROVIDER_TO_ADAPTER = {
|
@@ -67,6 +69,13 @@ class GetPromptResult(Prompt, Model):
|
|
67
69
|
pass
|
68
70
|
|
69
71
|
|
72
|
+
_GetAllPromptResults = AdapterUtil[List[GetPromptResult]](List[GetPromptResult])
|
73
|
+
|
74
|
+
|
75
|
+
class GetAllPromptOptions(PromptOptions, Model):
|
76
|
+
pass
|
77
|
+
|
78
|
+
|
70
79
|
class GetOrCreatePromptOptions(PromptOptions, Model):
|
71
80
|
prompt: Optional[str] = None
|
72
81
|
|
@@ -283,6 +292,20 @@ class Prompts:
|
|
283
292
|
) as response:
|
284
293
|
return GetPromptResult.model_validate_json(response.content)
|
285
294
|
|
295
|
+
async def get_all(self, options: Optional[GetAllPromptOptions] = None) -> List[GetPromptResult]:
|
296
|
+
options = GetAllPromptOptions(**{**dict(self._options), **dict(options or {})})
|
297
|
+
self._ensure_prompt_options(options)
|
298
|
+
assert options.project_id is not None
|
299
|
+
|
300
|
+
async with self._client.request(
|
301
|
+
handler=RequestHandler.GetAllPrompts,
|
302
|
+
params=GetAllPromptRequestParams(
|
303
|
+
project_id=options.project_id,
|
304
|
+
version_uuid=options.version_uuid,
|
305
|
+
),
|
306
|
+
) as response:
|
307
|
+
return _GetAllPromptResults.validate_json(response.content)
|
308
|
+
|
286
309
|
async def get_or_create(
|
287
310
|
self, path: str, options: Optional[GetOrCreatePromptOptions] = None
|
288
311
|
) -> GetOrCreatePromptResult:
|
@@ -24,11 +24,22 @@ class Providers(StrEnum):
|
|
24
24
|
Custom = "custom"
|
25
25
|
|
26
26
|
|
27
|
+
class ParameterType(StrEnum):
|
28
|
+
Text = "text"
|
29
|
+
File = "file"
|
30
|
+
Image = "image"
|
31
|
+
|
32
|
+
|
33
|
+
class PromptParameter(Model):
|
34
|
+
type: ParameterType
|
35
|
+
|
36
|
+
|
27
37
|
class Prompt(Model):
|
28
38
|
uuid: str
|
29
39
|
path: str
|
30
40
|
content: str
|
31
41
|
config: dict[str, Any]
|
42
|
+
parameters: dict[str, PromptParameter]
|
32
43
|
provider: Optional[Providers] = None
|
33
44
|
|
34
45
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
from typing import List, cast
|
2
|
+
|
3
|
+
import httpx
|
4
|
+
|
5
|
+
from latitude_sdk.sdk.prompts import GetAllPromptOptions, GetPromptResult
|
6
|
+
from tests.utils import TestCase, fixtures
|
7
|
+
|
8
|
+
|
9
|
+
class TestGetAllPrompts(TestCase):
|
10
|
+
async def test_success_global_options(self):
|
11
|
+
endpoint = f"/projects/{self.project_id}/versions/{self.version_uuid}/documents"
|
12
|
+
endpoint_mock = self.gateway_mock.get(endpoint).mock(
|
13
|
+
return_value=httpx.Response(200, json=[fixtures.PROMPT_RESPONSE])
|
14
|
+
)
|
15
|
+
|
16
|
+
result = await self.sdk.prompts.get_all()
|
17
|
+
request, _ = endpoint_mock.calls.last
|
18
|
+
|
19
|
+
self.assert_requested(request, method="GET", endpoint=endpoint)
|
20
|
+
self.assertEqual(endpoint_mock.call_count, 1)
|
21
|
+
self.assertEqual(result, [GetPromptResult(**dict(fixtures.PROMPT))])
|
22
|
+
|
23
|
+
async def test_success_overrides_options(self):
|
24
|
+
options = GetAllPromptOptions(project_id=21, version_uuid="version-uuid")
|
25
|
+
endpoint = f"/projects/{options.project_id}/versions/{options.version_uuid}/documents"
|
26
|
+
endpoint_mock = self.gateway_mock.get(endpoint).mock(
|
27
|
+
return_value=httpx.Response(200, json=[fixtures.PROMPT_RESPONSE])
|
28
|
+
)
|
29
|
+
|
30
|
+
result = await self.sdk.prompts.get_all(options)
|
31
|
+
request, _ = endpoint_mock.calls.last
|
32
|
+
|
33
|
+
self.assert_requested(request, method="GET", endpoint=endpoint)
|
34
|
+
self.assertEqual(endpoint_mock.call_count, 1)
|
35
|
+
self.assertEqual(result, [GetPromptResult(**dict(fixtures.PROMPT))])
|
36
|
+
|
37
|
+
async def test_success_default_version_uuid(self):
|
38
|
+
self.sdk._options.version_uuid = None # pyright: ignore [reportPrivateUsage]
|
39
|
+
endpoint = f"/projects/{self.project_id}/versions/live/documents"
|
40
|
+
endpoint_mock = self.gateway_mock.get(endpoint).mock(
|
41
|
+
return_value=httpx.Response(200, json=[fixtures.PROMPT_RESPONSE])
|
42
|
+
)
|
43
|
+
|
44
|
+
result = await self.sdk.prompts.get_all()
|
45
|
+
request, _ = endpoint_mock.calls.last
|
46
|
+
|
47
|
+
self.assert_requested(request, method="GET", endpoint=endpoint)
|
48
|
+
self.assertEqual(endpoint_mock.call_count, 1)
|
49
|
+
self.assertEqual(result, [GetPromptResult(**dict(fixtures.PROMPT))])
|
50
|
+
|
51
|
+
async def test_fails(self):
|
52
|
+
endpoint = f"/projects/{self.project_id}/versions/{self.version_uuid}/documents"
|
53
|
+
endpoint_mock = self.gateway_mock.get(endpoint).mock(
|
54
|
+
return_value=httpx.Response(500, json=fixtures.ERROR_RESPONSE)
|
55
|
+
)
|
56
|
+
|
57
|
+
with self.assertRaisesRegex(type(fixtures.ERROR), fixtures.ERROR.message):
|
58
|
+
await self.sdk.prompts.get_all()
|
59
|
+
requests = cast(List[httpx.Request], [request for request, _ in endpoint_mock.calls]) # type: ignore
|
60
|
+
|
61
|
+
[self.assert_requested(request, method="GET", endpoint=endpoint) for request in requests]
|
62
|
+
self.assertEqual(endpoint_mock.call_count, self.internal_options.retries)
|
@@ -1,6 +1,16 @@
|
|
1
1
|
from unittest import mock
|
2
2
|
|
3
|
-
from promptl_ai import
|
3
|
+
from promptl_ai import (
|
4
|
+
Adapter,
|
5
|
+
Error,
|
6
|
+
ErrorPosition,
|
7
|
+
PromptlError,
|
8
|
+
SystemMessage,
|
9
|
+
TextContent,
|
10
|
+
UserMessage,
|
11
|
+
anthropic,
|
12
|
+
openai,
|
13
|
+
)
|
4
14
|
|
5
15
|
from latitude_sdk import RenderPromptOptions, RenderPromptResult
|
6
16
|
from tests.utils import TestCase, fixtures
|
@@ -33,7 +43,7 @@ class TestRenderPrompt(TestCase):
|
|
33
43
|
),
|
34
44
|
)
|
35
45
|
|
36
|
-
async def
|
46
|
+
async def test_success_with_adapter_singlepart(self):
|
37
47
|
prompt = fixtures.PROMPT.content
|
38
48
|
options = RenderPromptOptions(
|
39
49
|
parameters={"question": "What is PromptL"},
|
@@ -59,6 +69,60 @@ class TestRenderPrompt(TestCase):
|
|
59
69
|
),
|
60
70
|
)
|
61
71
|
|
72
|
+
async def test_success_with_adapter_multipart(self):
|
73
|
+
parts = fixtures.PROMPT.content.split("</step>")
|
74
|
+
prompt = "</step>".join(
|
75
|
+
[
|
76
|
+
parts[0]
|
77
|
+
+ """
|
78
|
+
<user>
|
79
|
+
This is text.
|
80
|
+
<content-image>This is an image.</content-image>
|
81
|
+
<content-file mime="application/pdf">This is a PDF.</content-file>
|
82
|
+
</user>
|
83
|
+
""",
|
84
|
+
*parts[1:],
|
85
|
+
]
|
86
|
+
)
|
87
|
+
options = RenderPromptOptions(
|
88
|
+
parameters={"question": "What is PromptL"},
|
89
|
+
adapter=Adapter.Anthropic,
|
90
|
+
)
|
91
|
+
|
92
|
+
result = await self.sdk.prompts.render(prompt, options)
|
93
|
+
|
94
|
+
self.assertEqual(
|
95
|
+
result,
|
96
|
+
RenderPromptResult(
|
97
|
+
messages=[
|
98
|
+
anthropic.UserMessage(content=[anthropic.TextContent(text="What is PromptL")]),
|
99
|
+
anthropic.UserMessage(
|
100
|
+
content=[
|
101
|
+
anthropic.TextContent(text="This is text."),
|
102
|
+
anthropic.ImageContent(
|
103
|
+
source=anthropic.ContentSource(
|
104
|
+
type="base64", media_type="image/png", data="This is an image."
|
105
|
+
)
|
106
|
+
),
|
107
|
+
anthropic.DocumentContent(
|
108
|
+
source=anthropic.ContentSource(
|
109
|
+
type="base64", media_type="application/pdf", data="This is a PDF."
|
110
|
+
)
|
111
|
+
),
|
112
|
+
]
|
113
|
+
),
|
114
|
+
],
|
115
|
+
config={
|
116
|
+
"provider": "OpenAI",
|
117
|
+
"model": "gpt-4o-mini",
|
118
|
+
"temperature": 0.5,
|
119
|
+
"max_tokens": 1024,
|
120
|
+
"top_p": 0.9,
|
121
|
+
"system": [{"type": "text", "text": "You are a helpful assistant."}],
|
122
|
+
},
|
123
|
+
),
|
124
|
+
)
|
125
|
+
|
62
126
|
async def test_fails(self):
|
63
127
|
prompt = fixtures.PROMPT.content
|
64
128
|
options = RenderPromptOptions(
|
@@ -35,7 +35,9 @@ from latitude_sdk import (
|
|
35
35
|
Log,
|
36
36
|
LogSources,
|
37
37
|
ModelUsage,
|
38
|
+
ParameterType,
|
38
39
|
Prompt,
|
40
|
+
PromptParameter,
|
39
41
|
Providers,
|
40
42
|
StreamEvent,
|
41
43
|
StreamEvents,
|
@@ -86,6 +88,7 @@ topP: 0.9
|
|
86
88
|
"topP": 0.9,
|
87
89
|
},
|
88
90
|
"provider": "openai",
|
91
|
+
"parameters": {"question": {"type": "text"}},
|
89
92
|
}
|
90
93
|
|
91
94
|
PROMPT = Prompt(
|
@@ -116,6 +119,7 @@ topP: 0.9
|
|
116
119
|
"topP": 0.9,
|
117
120
|
},
|
118
121
|
provider=Providers.OpenAI,
|
122
|
+
parameters={"question": PromptParameter(type=ParameterType.Text)},
|
119
123
|
)
|
120
124
|
|
121
125
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
version = 1
|
2
|
+
revision = 1
|
2
3
|
requires-python = ">=3.9, <3.13"
|
3
4
|
|
4
5
|
[[package]]
|
@@ -316,7 +317,7 @@ wheels = [
|
|
316
317
|
|
317
318
|
[[package]]
|
318
319
|
name = "latitude-sdk"
|
319
|
-
version = "1.
|
320
|
+
version = "1.1.1"
|
320
321
|
source = { editable = "." }
|
321
322
|
dependencies = [
|
322
323
|
{ name = "httpx" },
|
@@ -343,7 +344,7 @@ requires-dist = [
|
|
343
344
|
{ name = "httpx", specifier = ">=0.28.1" },
|
344
345
|
{ name = "httpx-sse", specifier = ">=0.4.0" },
|
345
346
|
{ name = "latitude-telemetry", specifier = ">=1.0.0" },
|
346
|
-
{ name = "promptl-ai", specifier = ">=1.0.
|
347
|
+
{ name = "promptl-ai", specifier = ">=1.0.3" },
|
347
348
|
{ name = "pydantic", specifier = ">=2.10.3" },
|
348
349
|
{ name = "typing-extensions", specifier = ">=4.12.2" },
|
349
350
|
]
|
@@ -837,16 +838,16 @@ wheels = [
|
|
837
838
|
|
838
839
|
[[package]]
|
839
840
|
name = "promptl-ai"
|
840
|
-
version = "1.0.
|
841
|
+
version = "1.0.3"
|
841
842
|
source = { registry = "https://pypi.org/simple" }
|
842
843
|
dependencies = [
|
843
844
|
{ name = "pydantic" },
|
844
845
|
{ name = "typing-extensions" },
|
845
846
|
{ name = "wasmtime" },
|
846
847
|
]
|
847
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
848
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b0/42/cfac426457eeb7a765e0bb5edcab7a294a611ce5ca4a9d7ff25a57723aaf/promptl_ai-1.0.3.tar.gz", hash = "sha256:fe14dd5248878f1842ce30caa62d67182cfc6f3229a54fbad0709571e6c8694f", size = 981242 }
|
848
849
|
wheels = [
|
849
|
-
{ url = "https://files.pythonhosted.org/packages/
|
850
|
+
{ url = "https://files.pythonhosted.org/packages/81/e4/b1889c70ec8f0050cb67f28d4b01c6e38656340acf65d2c9460ea19dd3e0/promptl_ai-1.0.3-py3-none-any.whl", hash = "sha256:30e589459feae16d69eaa2485429413268d9c7e3c1d03ac1195a9d54f6139793", size = 966250 },
|
850
851
|
]
|
851
852
|
|
852
853
|
[[package]]
|
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
|