pyvider
2025-01-29
Major rpcplugin client rewrite consolidating the handshake and channel creation
66 files · 4,603+ · 688-
Client Handshake and Channel Unification
42 files changed
auto-load.mdUpdated auto-load.md (+0/-0 lines).bfileAdded .bfile (+12 lines)client.pyUpdated client.py (+169/-113 lines)config.pyUpdated config.py (+3/-2 lines)2025-01-19-1108-claude.mdUpdated 2025-01-19-1108-claude.md (+0/-0 lines)cert-compatibility.mdAdded cert-compatibility.md (+175 lines)cert-fixtures.mdAdded cert-fixtures.md (+192 lines)diagnostic-report.mdAdded diagnostic-report.md (+291 lines)test-analysis.mdAdded test-analysis.md (+224 lines)test-strategy.mdAdded test-strategy.md (+174 lines)2025-01-29-claude.mdAdded 2025-01-29-claude.md (+269 lines)auto-mtls-specs.mdAdded auto-mtls-specs.md (+198 lines)go-plugin-notes.mdAdded go-plugin-notes.md (+177 lines)research.mdAdded research.md (+12 lines)env.shAdded env.sh (+152 lines)gen-certs.shRemoved gen-certs.sh (-128 lines)handshake.pyUpdated handshake.py (+22/-120 lines)security.pyUpdated security.py (+30/-40 lines)ec-secp256r1-mtls-client.crtAdded ec-secp256r1-mtls-client.crt (+12 lines)ec-secp256r1-mtls-client.keyAdded ec-secp256r1-mtls-client.key (+5 lines)ec-secp256r1-mtls-server.crtAdded ec-secp256r1-mtls-server.crt (+12 lines)ec-secp256r1-mtls-server.keyAdded ec-secp256r1-mtls-server.key (+5 lines)ec-secp384r1-mtls-client.crtAdded ec-secp384r1-mtls-client.crt (+13 lines)ec-secp384r1-mtls-client.keyAdded ec-secp384r1-mtls-client.key (+6 lines)ec-secp384r1-mtls-server.crtAdded ec-secp384r1-mtls-server.crt (+13 lines)ec-secp384r1-mtls-server.keyAdded ec-secp384r1-mtls-server.key (+6 lines)ec-secp521r1-mtls-client.crtAdded ec-secp521r1-mtls-client.crt (+15 lines)ec-secp521r1-mtls-client.keyAdded ec-secp521r1-mtls-client.key (+7 lines)ec-secp521r1-mtls-server.crtAdded ec-secp521r1-mtls-server.crt (+15 lines)ec-secp521r1-mtls-server.keyAdded ec-secp521r1-mtls-server.key (+7 lines)rsa-2048-mtls-client.crtAdded rsa-2048-mtls-client.crt (+20 lines)rsa-2048-mtls-client.keyAdded rsa-2048-mtls-client.key (+27 lines)rsa-2048-mtls-server.crtAdded rsa-2048-mtls-server.crt (+20 lines)rsa-2048-mtls-server.keyAdded rsa-2048-mtls-server.key (+27 lines)rsa-4096-mtls-client.crtAdded rsa-4096-mtls-client.crt (+31 lines)rsa-4096-mtls-client.keyAdded rsa-4096-mtls-client.key (+51 lines)rsa-4096-mtls-server.crtAdded rsa-4096-mtls-server.crt (+31 lines)rsa-4096-mtls-server.keyAdded rsa-4096-mtls-server.key (+51 lines)create_test_certs.shRemoved create_test_certs.sh (-174 lines)test_transport_unix.pyUpdated test_transport_unix.py (+2/-2 lines)gen-certs.shUpdated gen-certs.sh (+7/-7 lines)unix.pyUpdated unix.py (+124/-1 lines)
- Rewrote
_perform_handshaketo directly parse the response inline without the nested try/except structure streamline behavioral66 files
auto-load.md.bfileclient.pyconfig.py2025-01-19-1108-claude.mdcert-compatibility.mdcert-fixtures.mddiagnostic-report.mdtest-analysis.mdtest-strategy.md2025-01-29-claude.mdauto-mtls-specs.mdgo-plugin-notes.mdresearch.mdenv.sh__init__.py__init__.pyconfigstore.protoconfigstore_pb2.pyconfigstore_pb2_grpc.pypy-cs-server.pymain.gotest_kv_integration.py__init__.pykv-go-clientkv-go-serverclient-log.txtkv-data-hellokv.protokv_pb2.pykv_pb2_grpc.pykv_protocol.pypy-kv-client.pypy-kv-server.pygen-certs.shhandshake.pysecurity.pyserver.pyec-secp256r1-mtls-client.crtec-secp256r1-mtls-client.keyec-secp256r1-mtls-server.crtec-secp256r1-mtls-server.keyec-secp384r1-mtls-client.crtec-secp384r1-mtls-client.keyec-secp384r1-mtls-server.crtec-secp384r1-mtls-server.keyec-secp521r1-mtls-client.crtec-secp521r1-mtls-client.keyec-secp521r1-mtls-server.crtec-secp521r1-mtls-server.keyrsa-2048-mtls-client.crtrsa-2048-mtls-client.keyrsa-2048-mtls-server.crtrsa-2048-mtls-server.keyrsa-4096-mtls-client.crtrsa-4096-mtls-client.keyrsa-4096-mtls-server.crtrsa-4096-mtls-server.keycreate_test_certs.shdummy_server.pymock_server.pytest_transport_unix.pyx_test_cert.pyx_test_mtls.pygen-certs.shunix.py
- Unified
_create_grpc_channelto use a single credential creation path for both Unix (unix://prefix) and TCP transports instead of separate code blocks decouple internal1 file
unix:
- Uses
grpc.ssl_channel_credentialswith server cert as root, client key, and client cert chain for all transport types interface internal1 file
grpc.ssl_channel_credentials
- Consistent channel options:
ssl_target_name_override, max message lengths (16MB) decouple behavioral66 files
auto-load.md.bfileclient.pyconfig.py2025-01-19-1108-claude.mdcert-compatibility.mdcert-fixtures.mddiagnostic-report.mdtest-analysis.mdtest-strategy.md2025-01-29-claude.mdauto-mtls-specs.mdgo-plugin-notes.mdresearch.mdenv.sh__init__.py__init__.pyconfigstore.protoconfigstore_pb2.pyconfigstore_pb2_grpc.pypy-cs-server.pymain.gotest_kv_integration.py__init__.pykv-go-clientkv-go-serverclient-log.txtkv-data-hellokv.protokv_pb2.pykv_pb2_grpc.pykv_protocol.pypy-kv-client.pypy-kv-server.pygen-certs.shhandshake.pysecurity.pyserver.pyec-secp256r1-mtls-client.crtec-secp256r1-mtls-client.keyec-secp256r1-mtls-server.crtec-secp256r1-mtls-server.keyec-secp384r1-mtls-client.crtec-secp384r1-mtls-client.keyec-secp384r1-mtls-server.crtec-secp384r1-mtls-server.keyec-secp521r1-mtls-client.crtec-secp521r1-mtls-client.keyec-secp521r1-mtls-server.crtec-secp521r1-mtls-server.keyrsa-2048-mtls-client.crtrsa-2048-mtls-client.keyrsa-2048-mtls-server.crtrsa-2048-mtls-server.keyrsa-4096-mtls-client.crtrsa-4096-mtls-client.keyrsa-4096-mtls-server.crtrsa-4096-mtls-server.keycreate_test_certs.shdummy_server.pymock_server.pytest_transport_unix.pyx_test_cert.pyx_test_mtls.pygen-certs.shunix.py
Proper Client Lifecycle Management
1 file changed
client.pyChanges to client.py
- Added
close()async method replacing the oldstop()with proper shutdown sequence: gRPC channel close, process termination withrun_in_executor, transport close interface internal1 file
client.py
- All attributes reset to
Noneafter shutdown decouple internal1 file
client.py
start()restructured with clearer autoMTLS-aware certificate generation flow decouple architectural1 file
client.py
KV Examples
19 files changed
__init__.pyUpdated __init__.py (+0/-0 lines)__init__.pyUpdated __init__.py (+0/-0 lines)configstore.protoAdded configstore.proto (+102 lines)configstore_pb2.pyAdded configstore_pb2.py (+68 lines)configstore_pb2_grpc.pyAdded configstore_pb2_grpc.py (+319 lines)py-cs-server.pyAdded py-cs-server.py (+199 lines)main.goRemoved main.go (-1 lines)test_kv_integration.pyUpdated test_kv_integration.py (+1/-1 lines)__init__.pyAdded __init__.py (+1 lines)kv-go-clientUpdated kv-go-client (+0/-0 lines)kv-go-serverUpdated kv-go-server (+0/-0 lines)client-log.txtAdded client-log.txt (+172 lines)kv-data-helloAdded kv-data-hello (+1 lines)kv.protoAdded kv.proto (+27 lines)kv_pb2.pyAdded kv_pb2.py (+45 lines)kv_pb2_grpc.pyAdded kv_pb2_grpc.py (+140 lines)kv_protocol.pyAdded kv_protocol.py (+19 lines)py-kv-client.pyAdded py-kv-client.py (+143 lines)py-kv-server.pyAdded py-kv-server.py (+116 lines)
- Added
src/pyvider/rpcplugin/examples/kv/directory withpy-kv-client.pyandpy-kv-server.pyinstantiate internal11 files
__init__.pykv-go-clientkv-go-serverclient-log.txtkv-data-hellokv.protokv_pb2.pykv_pb2_grpc.pykv_protocol.pypy-kv-client.pypy-kv-server.py
- KV server implements
KVServicerwith asyncPutandGetmethods using in-memory dict storage streamline internal66 files
auto-load.md.bfileclient.pyconfig.py2025-01-19-1108-claude.mdcert-compatibility.mdcert-fixtures.mddiagnostic-report.mdtest-analysis.mdtest-strategy.md2025-01-29-claude.mdauto-mtls-specs.mdgo-plugin-notes.mdresearch.mdenv.sh__init__.py__init__.pyconfigstore.protoconfigstore_pb2.pyconfigstore_pb2_grpc.pypy-cs-server.pymain.gotest_kv_integration.py__init__.pykv-go-clientkv-go-serverclient-log.txtkv-data-hellokv.protokv_pb2.pykv_pb2_grpc.pykv_protocol.pypy-kv-client.pypy-kv-server.pygen-certs.shhandshake.pysecurity.pyserver.pyec-secp256r1-mtls-client.crtec-secp256r1-mtls-client.keyec-secp256r1-mtls-server.crtec-secp256r1-mtls-server.keyec-secp384r1-mtls-client.crtec-secp384r1-mtls-client.keyec-secp384r1-mtls-server.crtec-secp384r1-mtls-server.keyec-secp521r1-mtls-client.crtec-secp521r1-mtls-client.keyec-secp521r1-mtls-server.crtec-secp521r1-mtls-server.keyrsa-2048-mtls-client.crtrsa-2048-mtls-client.keyrsa-2048-mtls-server.crtrsa-2048-mtls-server.keyrsa-4096-mtls-client.crtrsa-4096-mtls-client.keyrsa-4096-mtls-server.crtrsa-4096-mtls-server.keycreate_test_certs.shdummy_server.pymock_server.pytest_transport_unix.pyx_test_cert.pyx_test_mtls.pygen-certs.shunix.py
- KV client simplified by removing duplicate connect method
interface
internal
66 files
auto-load.md.bfileclient.pyconfig.py2025-01-19-1108-claude.mdcert-compatibility.mdcert-fixtures.mddiagnostic-report.mdtest-analysis.mdtest-strategy.md2025-01-29-claude.mdauto-mtls-specs.mdgo-plugin-notes.mdresearch.mdenv.sh__init__.py__init__.pyconfigstore.protoconfigstore_pb2.pyconfigstore_pb2_grpc.pypy-cs-server.pymain.gotest_kv_integration.py__init__.pykv-go-clientkv-go-serverclient-log.txtkv-data-hellokv.protokv_pb2.pykv_pb2_grpc.pykv_protocol.pypy-kv-client.pypy-kv-server.pygen-certs.shhandshake.pysecurity.pyserver.pyec-secp256r1-mtls-client.crtec-secp256r1-mtls-client.keyec-secp256r1-mtls-server.crtec-secp256r1-mtls-server.keyec-secp384r1-mtls-client.crtec-secp384r1-mtls-client.keyec-secp384r1-mtls-server.crtec-secp384r1-mtls-server.keyec-secp521r1-mtls-client.crtec-secp521r1-mtls-client.keyec-secp521r1-mtls-server.crtec-secp521r1-mtls-server.keyrsa-2048-mtls-client.crtrsa-2048-mtls-client.keyrsa-2048-mtls-server.crtrsa-2048-mtls-server.keyrsa-4096-mtls-client.crtrsa-4096-mtls-client.keyrsa-4096-mtls-server.crtrsa-4096-mtls-server.keycreate_test_certs.shdummy_server.pymock_server.pytest_transport_unix.pyx_test_cert.pyx_test_mtls.pygen-certs.shunix.py
Server Improvements
3 files changed
server.pyUpdated server.py (+253/-63 lines)dummy_server.pyRemoved dummy_server.py (-36 lines)mock_server.pyAdded mock_server.py (+63 lines)
Test File Renames
2 files changed
x_test_cert.pyAdded x_test_cert.py (+253 lines)x_test_mtls.pyAdded x_test_mtls.py (+74 lines)