metergraph 0.6.2__tar.gz → 0.6.3__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.
- {metergraph-0.6.2/src/metergraph.egg-info → metergraph-0.6.3}/PKG-INFO +1 -1
- {metergraph-0.6.2 → metergraph-0.6.3}/pyproject.toml +1 -1
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_capture.py +34 -10
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_version.py +1 -1
- {metergraph-0.6.2 → metergraph-0.6.3/src/metergraph.egg-info}/PKG-INFO +1 -1
- {metergraph-0.6.2 → metergraph-0.6.3}/MANIFEST.in +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/README.md +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/setup.cfg +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/__init__.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_batch_first.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_config.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_context.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_failure_log.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_provider_batch.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_repo_config.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_session.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_template.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_track.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/_transport.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph/opentelemetry.py +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph.egg-info/SOURCES.txt +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph.egg-info/dependency_links.txt +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph.egg-info/requires.txt +0 -0
- {metergraph-0.6.2 → metergraph-0.6.3}/src/metergraph.egg-info/top_level.txt +0 -0
|
@@ -858,14 +858,22 @@ class CallState:
|
|
|
858
858
|
|
|
859
859
|
class _StreamState:
|
|
860
860
|
def __init__(self, stream: Any, call: CallState) -> None:
|
|
861
|
+
self.manager = stream
|
|
861
862
|
self.stream = stream
|
|
862
863
|
self.call = call
|
|
863
864
|
self.iterator = None
|
|
865
|
+
self.entered = False
|
|
864
866
|
self.last = None
|
|
865
867
|
self.parts: list[str] = []
|
|
866
868
|
self.chunks: list[Any] = []
|
|
867
869
|
self.ttft_ms: int | None = None
|
|
868
870
|
|
|
871
|
+
def use_entered_stream(self, stream: Any) -> None:
|
|
872
|
+
if stream is not None:
|
|
873
|
+
self.stream = stream
|
|
874
|
+
self.iterator = None
|
|
875
|
+
self.entered = True
|
|
876
|
+
|
|
869
877
|
def chunk(self, value: Any) -> Any:
|
|
870
878
|
self.last = value
|
|
871
879
|
self.chunks.append(value)
|
|
@@ -955,17 +963,21 @@ class SyncStream:
|
|
|
955
963
|
raise
|
|
956
964
|
|
|
957
965
|
def __enter__(self) -> "SyncStream":
|
|
958
|
-
enter = getattr(self._state.
|
|
966
|
+
enter = getattr(self._state.manager, "__enter__", None)
|
|
959
967
|
if enter:
|
|
960
|
-
|
|
968
|
+
try:
|
|
969
|
+
self._state.use_entered_stream(enter())
|
|
970
|
+
except BaseException as exc:
|
|
971
|
+
self._state.finish(error=exc)
|
|
972
|
+
raise
|
|
961
973
|
return self
|
|
962
974
|
|
|
963
975
|
def __exit__(self, exc_type, exc, tb) -> Any:
|
|
964
976
|
if exc:
|
|
965
977
|
self._state.finish(error=exc)
|
|
966
978
|
elif not self._state.call.done:
|
|
967
|
-
self._state.finish(status="abandoned")
|
|
968
|
-
exit_fn = getattr(self._state.
|
|
979
|
+
self._state.finish(status=None if self._state.entered else "abandoned")
|
|
980
|
+
exit_fn = getattr(self._state.manager, "__exit__", None)
|
|
969
981
|
return exit_fn(exc_type, exc, tb) if exit_fn else None
|
|
970
982
|
|
|
971
983
|
def close(self) -> None:
|
|
@@ -1012,17 +1024,23 @@ class AsyncStream:
|
|
|
1012
1024
|
raise
|
|
1013
1025
|
|
|
1014
1026
|
async def __aenter__(self) -> "AsyncStream":
|
|
1015
|
-
enter = getattr(self._state.
|
|
1027
|
+
enter = getattr(self._state.manager, "__aenter__", None)
|
|
1016
1028
|
if enter:
|
|
1017
|
-
|
|
1029
|
+
try:
|
|
1030
|
+
self._state.use_entered_stream(await enter())
|
|
1031
|
+
except BaseException as exc:
|
|
1032
|
+
await self._state.finish_async(error=exc)
|
|
1033
|
+
raise
|
|
1018
1034
|
return self
|
|
1019
1035
|
|
|
1020
1036
|
async def __aexit__(self, exc_type, exc, tb) -> Any:
|
|
1021
1037
|
if exc:
|
|
1022
1038
|
await self._state.finish_async(error=exc)
|
|
1023
1039
|
elif not self._state.call.done:
|
|
1024
|
-
await self._state.finish_async(
|
|
1025
|
-
|
|
1040
|
+
await self._state.finish_async(
|
|
1041
|
+
status=None if self._state.entered else "abandoned"
|
|
1042
|
+
)
|
|
1043
|
+
exit_fn = getattr(self._state.manager, "__aexit__", None)
|
|
1026
1044
|
return await exit_fn(exc_type, exc, tb) if exit_fn else None
|
|
1027
1045
|
|
|
1028
1046
|
async def aclose(self) -> None:
|
|
@@ -1375,9 +1393,15 @@ def _finish_or_stream(
|
|
|
1375
1393
|
result: Any, call: CallState, endpoint: str, request: Mapping[str, Any]
|
|
1376
1394
|
):
|
|
1377
1395
|
is_stream = endpoint.endswith(".stream") or bool(request.get("stream"))
|
|
1378
|
-
if is_stream and
|
|
1396
|
+
if is_stream and (
|
|
1397
|
+
hasattr(result, "__aiter__")
|
|
1398
|
+
or (hasattr(result, "__aenter__") and hasattr(result, "__aexit__"))
|
|
1399
|
+
):
|
|
1379
1400
|
return AsyncStream(result, call)
|
|
1380
|
-
if is_stream and
|
|
1401
|
+
if is_stream and (
|
|
1402
|
+
hasattr(result, "__iter__")
|
|
1403
|
+
or (hasattr(result, "__enter__") and hasattr(result, "__exit__"))
|
|
1404
|
+
):
|
|
1381
1405
|
return SyncStream(result, call)
|
|
1382
1406
|
call.finish(result)
|
|
1383
1407
|
return result
|
|
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
|