-
Couldn't load subscription status.
- Fork 10
Description
I am running into the following error message when I have the Python package protobuf==5.29-rc3 (currently latest) installed:
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/substrait_validator/__init__.py:20: in <module>
from .substrait.plan_pb2 import Plan
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/substrait_validator/substrait/plan_pb2.py:12: in <module>
_runtime_version.ValidateProtobufRuntimeVersion(
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/google/protobuf/runtime_version.py:1[20](https://github.com/substrait-io/consumer-testing/actions/runs/12048447592/job/33593087186?pr=132#step:5:21): in ValidateProtobufRuntimeVersion
_ReportVersionError(
/opt/hostedtoolcache/Python/3.12.7/x64/lib/python3.12/site-packages/google/protobuf/runtime_version.py:50: in _ReportVersionError
raise VersionError(msg)
E google.protobuf.runtime_version.VersionError: Detected mismatched Protobuf Gencode/Runtime version suffixes when loading substrait/plan.proto: gencode 5.28.3 runtime 5.29.0-rc3. Version suffixes must be the same. See Protobuf version guarantees at https://protobuf.dev/support/cross-version-runtime-guarantee.
I haven't understood all of the details but it sounds like you can't compile protobufs with one version of the compiler and then use a runtime with a different version (see docs). My preliminary conclusion is that this means that every project using protobufs needs to ship its own version of the runtime. If that is true, that would have to be done for this project as well.
Note that I can temporarily work around the problem above by installing protobuf==5.28.3; however, if my Python environment contains two Python packages that use two different versions of the Protobuf compiler, then there is no version of the protobuf package that satisfies both of their requirements.