Replace XML-RPC with gRPC for PyMOL RPC services #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces a major update to PyMOL's remote control capabilities by replacing the legacy XML-RPC interface with a new, modern gRPC-based service. This improves security, performance, and maintainability, and is accompanied by the addition of protocol buffer definitions and generated Python code for the gRPC API. The workflow for building wheels is also updated to better support multiple branches.
Remote control API modernization
modules/pymol/pml_grpc.py
, providing a comprehensive set of remote control methods for PyMOL, including molecular visualization commands, object manipulation, and compatibility methods for legacy workflows.proto/pymol_rpc.proto
, specifying all request/response message types and thePyMolRPC
service interface.modules/pymol/pymol_rpc_pb2.py
to support serialization and deserialization for the gRPC service.Security and transition improvements
modules/pymol/invocation.py
to enforce the use of gRPC for remote control, deprecating the insecure XML-RPC implementation and documenting the associated vulnerabilities.Build workflow enhancements
.github/workflows/wheels.yaml
to trigger on additional branches (production
,main
,incubating
) and on pull requests, improving CI coverage for the new remote control features.