@@ -367,12 +367,35 @@ void Generator::PrintTopBoilerplate() const {
367
367
// instead uses aliases assigned when importing modules.
368
368
printer_->Print (" import google3\n " );
369
369
}
370
+ bool runtime_version_disabled = false ;
370
371
printer_->Print (
371
372
" from google.protobuf import descriptor as _descriptor\n "
372
373
" from google.protobuf import descriptor_pool as _descriptor_pool\n "
374
+ " $runtime_version_import$"
373
375
" from google.protobuf import symbol_database as _symbol_database\n "
374
- " from google.protobuf.internal import builder as _builder\n " );
375
-
376
+ " from google.protobuf.internal import builder as _builder\n " ,
377
+ " runtime_version_import" ,
378
+ runtime_version_disabled ? " "
379
+ : " from google.protobuf import runtime_version "
380
+ " as _runtime_version\n " );
381
+ if (!runtime_version_disabled) {
382
+ const auto & version = GetProtobufPythonVersion (opensource_runtime_);
383
+ printer_->Print (
384
+ " _runtime_version.ValidateProtobufRuntimeVersion(\n "
385
+ " $domain$,\n "
386
+ " $major$,\n "
387
+ " $minor$,\n "
388
+ " $patch$,\n "
389
+ " '$suffix$',\n "
390
+ " '$location$'\n "
391
+ " )\n " ,
392
+ " domain" ,
393
+ opensource_runtime_ ? " _runtime_version.Domain.PUBLIC"
394
+ : " _runtime_version.Domain.GOOGLE_INTERNAL" ,
395
+ " major" , absl::StrCat (version.major ()), " minor" ,
396
+ absl::StrCat (version.minor ()), " patch" , absl::StrCat (version.patch ()),
397
+ " suffix" , version.suffix (), " location" , file_->name ());
398
+ }
376
399
printer_->Print (" # @@protoc_insertion_point(imports)\n\n " );
377
400
printer_->Print (" _sym_db = _symbol_database.Default()\n " );
378
401
printer_->Print (" \n\n " );
0 commit comments