prompty 0.1.36__py3-none-any.whl → 0.1.38__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- prompty/tracer.py +32 -2
- {prompty-0.1.36.dist-info → prompty-0.1.38.dist-info}/METADATA +1 -1
- {prompty-0.1.36.dist-info → prompty-0.1.38.dist-info}/RECORD +6 -6
- {prompty-0.1.36.dist-info → prompty-0.1.38.dist-info}/WHEEL +0 -0
- {prompty-0.1.36.dist-info → prompty-0.1.38.dist-info}/entry_points.txt +0 -0
- {prompty-0.1.36.dist-info → prompty-0.1.38.dist-info}/licenses/LICENSE +0 -0
prompty/tracer.py
CHANGED
@@ -28,6 +28,10 @@ def sanitize(key: str, value: Any) -> Any:
|
|
28
28
|
class Tracer:
|
29
29
|
_tracers: Dict[str, Callable[[str], Iterator[Callable[[str, Any], None]]]] = {}
|
30
30
|
|
31
|
+
SIGNATURE = "signature"
|
32
|
+
INPUTS = "inputs"
|
33
|
+
RESULT = "result"
|
34
|
+
|
31
35
|
@classmethod
|
32
36
|
def add(
|
33
37
|
cls, name: str, tracer: Callable[[str], Iterator[Callable[[str, Any], None]]]
|
@@ -40,11 +44,17 @@ class Tracer:
|
|
40
44
|
|
41
45
|
@classmethod
|
42
46
|
@contextlib.contextmanager
|
43
|
-
def start(cls, name: str) -> Iterator[Callable[[str, Any], None]]:
|
47
|
+
def start(cls, name: str, attributes: Dict[str, Any] = None) -> Iterator[Callable[[str, Any], None]]:
|
44
48
|
with contextlib.ExitStack() as stack:
|
45
49
|
traces = [
|
46
50
|
stack.enter_context(tracer(name)) for tracer in cls._tracers.values()
|
47
51
|
]
|
52
|
+
|
53
|
+
if attributes:
|
54
|
+
for trace in traces:
|
55
|
+
for key, value in attributes.items():
|
56
|
+
trace(key, value)
|
57
|
+
|
48
58
|
yield lambda key, value: [
|
49
59
|
# normalize and sanitize any trace values
|
50
60
|
trace(key, sanitize(key, to_dict(value)))
|
@@ -124,7 +134,17 @@ def _trace_sync(
|
|
124
134
|
@wraps(func)
|
125
135
|
def wrapper(*args, **kwargs):
|
126
136
|
name, signature = _name(func, args)
|
137
|
+
altname: str = None
|
138
|
+
# special case
|
139
|
+
if "name" in okwargs:
|
140
|
+
altname = name
|
141
|
+
name = okwargs["name"]
|
142
|
+
del okwargs["name"]
|
143
|
+
|
127
144
|
with Tracer.start(name) as trace:
|
145
|
+
if altname != None:
|
146
|
+
trace("function", altname)
|
147
|
+
|
128
148
|
trace("signature", signature)
|
129
149
|
|
130
150
|
# support arbitrary keyword
|
@@ -168,10 +188,20 @@ def _trace_async(
|
|
168
188
|
@wraps(func)
|
169
189
|
async def wrapper(*args, **kwargs):
|
170
190
|
name, signature = _name(func, args)
|
191
|
+
altname: str = None
|
192
|
+
# special case
|
193
|
+
if "name" in okwargs:
|
194
|
+
altname = name
|
195
|
+
name = okwargs["name"]
|
196
|
+
del okwargs["name"]
|
197
|
+
|
171
198
|
with Tracer.start(name) as trace:
|
199
|
+
if altname != None:
|
200
|
+
trace("function", altname)
|
201
|
+
|
172
202
|
trace("signature", signature)
|
173
203
|
|
174
|
-
# support arbitrary keyword
|
204
|
+
# support arbitrary keyword
|
175
205
|
# arguments for trace decorator
|
176
206
|
for k, v in okwargs.items():
|
177
207
|
trace(k, to_dict(v))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: prompty
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.38
|
4
4
|
Summary: Prompty is a new asset class and format for LLM prompts that aims to provide observability, understandability, and portability for developers. It includes spec, tooling, and a runtime. This Prompty runtime supports Python
|
5
5
|
Author-Email: Seth Juarez <seth.juarez@microsoft.com>
|
6
6
|
License: MIT
|
@@ -1,7 +1,7 @@
|
|
1
|
-
prompty-0.1.
|
2
|
-
prompty-0.1.
|
3
|
-
prompty-0.1.
|
4
|
-
prompty-0.1.
|
1
|
+
prompty-0.1.38.dist-info/METADATA,sha256=m7yAPiF7NsDcD6RQMfdkSbBM-w9uphfEQY_4mwUaJ1w,9164
|
2
|
+
prompty-0.1.38.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
|
3
|
+
prompty-0.1.38.dist-info/entry_points.txt,sha256=a3i7Kvf--3DOkkv9VQpstwaNKgsnXwDGaPL18lPpKeI,60
|
4
|
+
prompty-0.1.38.dist-info/licenses/LICENSE,sha256=KWSC4z9cfML_t0xThoQYjzTdcZQj86Y_mhXdatzU-KM,1052
|
5
5
|
prompty/__init__.py,sha256=HCAvInBgNcIDO54rR4-RDIF4KUmGVQ2TRam_dS7xHEk,16561
|
6
6
|
prompty/azure/__init__.py,sha256=WI8qeNWfxqggj21bznL-mxGUS-v67bUrunX0Lf2hsI8,295
|
7
7
|
prompty/azure/executor.py,sha256=RJXMB0W7KcVvQ7l3xJaau7YM8PqOCQwuN4IwIe0sTLg,7930
|
@@ -19,6 +19,6 @@ prompty/renderers.py,sha256=80HNtCp3osgaLfhKxkG4j1kiRhJ727ITzT_yL5JLjEQ,1104
|
|
19
19
|
prompty/serverless/__init__.py,sha256=xoXOTRXO8C631swNKaa-ek5_R3X-87bJpTm0z_Rsg6A,282
|
20
20
|
prompty/serverless/executor.py,sha256=PUDJsYcJLQx9JSTh-R3HdJd0ehEC6w2Ch5OEqz52uVI,8395
|
21
21
|
prompty/serverless/processor.py,sha256=ZSL9y8JC-G4qbtWOSbQAqEcFMWEaLskyOr5VjLthelU,3660
|
22
|
-
prompty/tracer.py,sha256=
|
22
|
+
prompty/tracer.py,sha256=GdCvqJLiW6PEyW2lnElSD45y4IBmgw5gtNczImbg-44,11700
|
23
23
|
prompty/utils.py,sha256=jm7HEzOGk3zz8d5aquXK3zWIQWuDpBpJTzlz5sswtdg,2836
|
24
|
-
prompty-0.1.
|
24
|
+
prompty-0.1.38.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|