chalk-remote-call-python 1.6.3__tar.gz → 1.7.0__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.
- {chalk_remote_call_python-1.6.3/chalk_remote_call_python.egg-info → chalk_remote_call_python-1.7.0}/PKG-INFO +1 -1
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-server/src/python_bridge.rs +8 -4
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-server/src/service.rs +14 -7
- chalk_remote_call_python-1.7.0/chalk_remote_call/_version.py +1 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0/chalk_remote_call_python.egg-info}/PKG-INFO +1 -1
- chalk_remote_call_python-1.6.3/chalk_remote_call/_version.py +0 -1
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/MANIFEST.in +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/README.md +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/Cargo.lock +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/Cargo.toml +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-proto/Cargo.toml +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-proto/src/gen/chalk.auth.v1.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-proto/src/gen/chalk.common.v1.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-proto/src/gen/chalk.runtime.v1.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-proto/src/gen/chalk.runtime.v1.tonic.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-proto/src/gen/chalk.utils.v1.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-proto/src/gen/descriptor.bin +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-proto/src/lib.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-server/Cargo.toml +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-server/src/coalesce.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-server/src/lib.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/chalk-remote-call-server/src/server.rs +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/rust-toolchain.toml +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/__main__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/auth/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/auth/v1/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/auth/v1/permissions_pb2.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/auth/v1/permissions_pb2_grpc.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/common/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/common/v1/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/common/v1/chalk_error_pb2.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/common/v1/chalk_error_pb2_grpc.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/runtime/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/runtime/v1/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/runtime/v1/remote_python_call_pb2.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/runtime/v1/remote_python_call_pb2_grpc.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/v1/__init__.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/v1/encoding_pb2.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/v1/encoding_pb2_grpc.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/v1/field_change_pb2.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/v1/field_change_pb2_grpc.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/v1/sensitive_pb2.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/v1/sensitive_pb2_grpc.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_native.pyi +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/arrow_utils.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/cli.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/handler_loader.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/input_transform.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/server.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/servicer.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/tracing.py +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call_python.egg-info/SOURCES.txt +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call_python.egg-info/dependency_links.txt +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call_python.egg-info/entry_points.txt +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call_python.egg-info/requires.txt +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call_python.egg-info/top_level.txt +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/pyproject.toml +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/setup.cfg +0 -0
- {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/setup.py +0 -0
|
@@ -120,13 +120,17 @@ struct ChunkEmitter {
|
|
|
120
120
|
|
|
121
121
|
#[pymethods]
|
|
122
122
|
impl ChunkEmitter {
|
|
123
|
-
fn __call__(&self, chunk: &Bound<'_, PyBytes>) -> PyResult<()> {
|
|
123
|
+
fn __call__(&self, py: Python<'_>, chunk: &Bound<'_, PyBytes>) -> PyResult<()> {
|
|
124
|
+
// Copy the bytes out of Python memory before releasing the GIL.
|
|
124
125
|
let msg = CallFunctionResponse {
|
|
125
126
|
feather_stream: chunk.as_bytes().to_vec().into(),
|
|
126
127
|
};
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
// Release the GIL while parked in blocking_send so a backpressured
|
|
129
|
+
// client can't stall every other request's Python execution. Collapse
|
|
130
|
+
// the (large) SendError to `()` inside the closure so it isn't carried
|
|
131
|
+
// across the detach boundary.
|
|
132
|
+
py.detach(|| self.response_tx.blocking_send(Ok(msg)).map_err(|_| ()))
|
|
133
|
+
.map_err(|()| pyo3::exceptions::PyRuntimeError::new_err("client disconnected"))?;
|
|
130
134
|
Ok(())
|
|
131
135
|
}
|
|
132
136
|
}
|
|
@@ -5,7 +5,7 @@ use chalk_remote_call_proto::chalk::runtime::v1::remote_call_service_server::Rem
|
|
|
5
5
|
use chalk_remote_call_proto::chalk::runtime::v1::{CallFunctionRequest, CallFunctionResponse};
|
|
6
6
|
use tokio_stream::wrappers::ReceiverStream;
|
|
7
7
|
use tonic::{Request, Response, Status, Streaming};
|
|
8
|
-
use tracing::{error, instrument};
|
|
8
|
+
use tracing::{debug, error, instrument};
|
|
9
9
|
|
|
10
10
|
use crate::coalesce::{BufferedCall, CoalescingQueue};
|
|
11
11
|
use crate::python_bridge::{CallerInput, PythonHandler};
|
|
@@ -98,12 +98,19 @@ impl RemoteCallService for RemoteCallServiceImpl {
|
|
|
98
98
|
{
|
|
99
99
|
Ok(()) => {}
|
|
100
100
|
Err(e) => {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
.
|
|
104
|
-
|
|
105
|
-
)
|
|
106
|
-
|
|
101
|
+
if error_tx.is_closed() {
|
|
102
|
+
// The only reason blocking_send fails is a dropped
|
|
103
|
+
// receiver — the client went away mid-stream. Not a
|
|
104
|
+
// handler failure; nothing to send.
|
|
105
|
+
debug!("client disconnected during streaming response");
|
|
106
|
+
} else {
|
|
107
|
+
error!("Python handler error: {}", e);
|
|
108
|
+
let _ = error_tx
|
|
109
|
+
.send(Err(Status::unknown(format!(
|
|
110
|
+
"Exception raised during handler execution: {e}"
|
|
111
|
+
))))
|
|
112
|
+
.await;
|
|
113
|
+
}
|
|
107
114
|
}
|
|
108
115
|
}
|
|
109
116
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.7.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.6.3"
|
|
File without changes
|
|
File without changes
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/Cargo.lock
RENAMED
|
File without changes
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/Cargo.toml
RENAMED
|
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
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/__init__.py
RENAMED
|
File without changes
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/__main__.py
RENAMED
|
File without changes
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/__init__.py
RENAMED
|
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
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_native.pyi
RENAMED
|
File without changes
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/arrow_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/server.py
RENAMED
|
File without changes
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/servicer.py
RENAMED
|
File without changes
|
{chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/tracing.py
RENAMED
|
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
|