CodeSampleX

Пример

protobuf 7.35.1: Build dynamic proto3 message classes without protoc while preserving field presence and 64-bit values through binary and JSON round trips

Проверенный пример — pypi protobuf 7.35.1: Build dynamic proto3 message classes without protoc while preserving field presence and 64-bit values through…

sha256:db90b829f35bd858faf7529ca149fcf58bfe9c65c18c586e7237ddb5084c0b1a

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. MIT-0

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
2
Ключи подписи, собравшие его
2
Заявленная среда python 3.12 linux alpine · musl x64 python 3.12 python 3.12 pip

Среды запусков проверки

Окружение Контракт Этапы Запуск
python 3.12 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · python@1
2026-08-16
python 3.12 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · python@1
2026-08-18

Кейс

HOW
Цель
Build dynamic proto3 message classes without protoc while preserving field presence and 64-bit values through binary and JSON round trips
Пакеты
Символы
  • google.protobuf.descriptor_pb2.FileDescriptorProto
  • google.protobuf.descriptor_pool.DescriptorPool.Add
  • google.protobuf.descriptor_pool.DescriptorPool.FindFileByName
  • google.protobuf.descriptor_pool.DescriptorPool.FindMessageTypeByName
  • google.protobuf.message_factory.GetMessageClass
  • google.protobuf.message.Message.HasField
  • google.protobuf.message.Message.SerializeToString
  • google.protobuf.message.Message.ParseFromString
  • google.protobuf.json_format.MessageToDict
  • google.protobuf.json_format.ParseDict
Окружение
python 3.12
Создан
2026-08-17T02:15:34Z

Контракт

  1. DescriptorPool.Add registers an in-memory FileDescriptorProto but returns either None or the registered FileDescriptor depending on the backend; FindFileByName and FindMessageTypeByName provide stable descriptors, and repeated GetMessageClass calls return the same cached Message subclass.
  2. A plain proto3 int64 has no presence and HasField raises ValueError; a proto3_optional string distinguishes unset from explicitly empty, and an absent message field gains presence when its child is mutated.
  3. Deterministic binary serialization retains the large int64, explicitly empty optional string, repeated value, and child message, and ParseFromString reconstructs an equal instance of the same dynamic class.
  4. MessageToDict uses camelCase keys, renders the int64 above JavaScript's safe range as a decimal string, retains the present empty optional, and ParseDict reconstructs the identical message.
  5. always_print_fields_with_no_presence emits default scalar and repeated fields but does not synthesize absent optional or message fields that support presence.

Файлы

  • NOTES.md
  • csx.json
  • requirements.lock
  • requirements.txt
  • test/contract.py

Скачать артефакт с исходным кодом (tar.gz)

Исходный сидер

csx-seed