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.
Files changed (63) hide show
  1. {chalk_remote_call_python-1.6.3/chalk_remote_call_python.egg-info → chalk_remote_call_python-1.7.0}/PKG-INFO +1 -1
  2. {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
  3. {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
  4. chalk_remote_call_python-1.7.0/chalk_remote_call/_version.py +1 -0
  5. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0/chalk_remote_call_python.egg-info}/PKG-INFO +1 -1
  6. chalk_remote_call_python-1.6.3/chalk_remote_call/_version.py +0 -1
  7. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/MANIFEST.in +0 -0
  8. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/README.md +0 -0
  9. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/Cargo.lock +0 -0
  10. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/Cargo.toml +0 -0
  11. {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
  12. {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
  13. {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
  14. {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
  15. {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
  16. {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
  17. {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
  18. {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
  19. {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
  20. {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
  21. {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
  22. {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
  23. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk-remote-call-rs/rust-toolchain.toml +0 -0
  24. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/__init__.py +0 -0
  25. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/__main__.py +0 -0
  26. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/__init__.py +0 -0
  27. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/__init__.py +0 -0
  28. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/auth/__init__.py +0 -0
  29. {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
  30. {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
  31. {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
  32. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/common/__init__.py +0 -0
  33. {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
  34. {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
  35. {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
  36. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/runtime/__init__.py +0 -0
  37. {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
  38. {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
  39. {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
  40. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_gen/chalk/utils/__init__.py +0 -0
  41. {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
  42. {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
  43. {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
  44. {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
  45. {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
  46. {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
  47. {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
  48. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/_native.pyi +0 -0
  49. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/arrow_utils.py +0 -0
  50. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/cli.py +0 -0
  51. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/handler_loader.py +0 -0
  52. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/input_transform.py +0 -0
  53. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/server.py +0 -0
  54. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/servicer.py +0 -0
  55. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call/tracing.py +0 -0
  56. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call_python.egg-info/SOURCES.txt +0 -0
  57. {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
  58. {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
  59. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/chalk_remote_call_python.egg-info/requires.txt +0 -0
  60. {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
  61. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/pyproject.toml +0 -0
  62. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/setup.cfg +0 -0
  63. {chalk_remote_call_python-1.6.3 → chalk_remote_call_python-1.7.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chalk-remote-call-python
3
- Version: 1.6.3
3
+ Version: 1.7.0
4
4
  Summary: Chalk remote call Python runtime interface client
5
5
  Author: Chalk AI, Inc.
6
6
  Project-URL: Homepage, https://chalk.ai
@@ -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
- self.response_tx
128
- .blocking_send(Ok(msg))
129
- .map_err(|_| pyo3::exceptions::PyRuntimeError::new_err("client disconnected"))?;
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
- error!("Python handler error: {}", e);
102
- let _ = error_tx
103
- .send(Err(Status::unknown(format!(
104
- "Exception raised during handler execution: {e}"
105
- ))))
106
- .await;
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chalk-remote-call-python
3
- Version: 1.6.3
3
+ Version: 1.7.0
4
4
  Summary: Chalk remote call Python runtime interface client
5
5
  Author: Chalk AI, Inc.
6
6
  Project-URL: Homepage, https://chalk.ai
@@ -1 +0,0 @@
1
- __version__ = "1.6.3"