dp-grpc is adding mypy-protobuf .pyi stubs to the gRPC package it syncs into src/dp_python_lib/grpc/ (osprey-dcs/dp-grpc#158). The design and cross-repo sequencing live in the dp-grpc plan: plan/tickets/158/plan.md. Its dp-python-lib handoff lists work for a dp-python-lib ticket. This is that ticket, so the dp-python-lib half has a home here rather than only in the other repo's plan.
Step 1: preparation (before the first stub-bearing sync)
Our mypy suppression (exclude plus follow_imports = "skip") does not apply to .pyi files, so the first sync that carries them would turn CI red. Fix those errors ahead of time, in forms that also pass against today's untyped stubs:
This must merge before dp-grpc pushes a rel-* tag that includes the #158 implementation. dp-grpc's release checklist gates on it.
Step 5: follow-up (after the sync lands)
Step 5 cannot come earlier: removing the suppression while the stubs are still untyped brings back roughly 386 errors.
dp-grpc is adding mypy-protobuf
.pyistubs to the gRPC package it syncs intosrc/dp_python_lib/grpc/(osprey-dcs/dp-grpc#158). The design and cross-repo sequencing live in the dp-grpc plan: plan/tickets/158/plan.md. Its dp-python-lib handoff lists work for a dp-python-lib ticket. This is that ticket, so the dp-python-lib half has a home here rather than only in the other repo's plan.Step 1: preparation (before the first stub-bearing sync)
Our mypy suppression (
excludeplusfollow_imports = "skip") does not apply to.pyifiles, so the first sync that carries them would turn CI red. Fix those errors ahead of time, in forms that also pass against today's untyped stubs:types-grpcioto[dev]and drop thegrpcignore_missing_importsoverride; fix themldp_client.pychannel errors this exposesOptionals inmachine_config_client.py, theEnumDescriptor | Noneinquery_conversions.py, and the enumValueTypeinexport_client.pyt1mypy-protobufto[codegen]This must merge before dp-grpc pushes a
rel-*tag that includes the #158 implementation. dp-grpc's release checklist gates on it.Step 5: follow-up (after the sync lands)
dp_python_lib.grpcsuppression inpyproject.toml, and update the comment inci.ymlthat cites dp-grpc#158ServiceApiClientBase._stub, e.g. by making the base generic in its stub type (expect new errors to surface)py.typedmarker.pyifiles andpy.typedare in the wheel, using the existing wheel-install CI stepdoc/release-notes/NEXT.mdrather than adding a second section. If the sync lands in the same cycle as step 1, that release ships the stubs, and the section should say so.Step 5 cannot come earlier: removing the suppression while the stubs are still untyped brings back roughly 386 errors.