Comments (2)
@anandolee can you take a look?
from protobuf.
Replying to myself after a little docs reading session.
It looks this is on purpose, and the "expected semantics" solving the above issue are the "no presence" ones.
Relevant extract:
Presence disciplines define the semantics for translating between the API representation and the serialized representation. The no presence discipline relies upon the field value itself to make decisions at (de)serialization time, while the explicit presence discipline relies upon the explicit tracking state instead.
AFAICT "no presence" works only on proto3, so by modifying my previous example to use proto3 and removing the optional:
syntax = "proto3";
message Person {
string name = 1;
int32 id = 2;
bool alive = 3;
}
Everything works "as expected":
>>> from test_pb2 import Person
>>> str(Person(name='', id=0, alive=False))
''
>>> Person(name='', id=0, alive=False).SerializeToString()
b''
>>> Person() == Person(name='', id=0, alive=False)
True
Unless I missed something else, this can be closed. It would be nice to have some kind of flag to force the "no presence" semantics for proto2 though.
from protobuf.
Related Issues (20)
- `CLOCK_UPTIME_RAW` isn't always available on `__APPLE__`
- Error on compiling protobuf .pb.cc files with c++17 Visual Studio 2019 HOT 1
- absl linking issue when the protobuf is built as shared HOT 2
- Feature Request: Allow repeated, and maps under oneof.
- google_protobuf_Struct_clear_fields vs google_protobuf_Struct_fields_clear HOT 1
- undefined symbol: upb_prm_2bt_maxmaxb with amalgamation build HOT 3
- [vcpkg] The version of protobuf in vcpkg is too old.
- protobuf-kotlin dsl - Support <fieldName>OrNull getters for fields with explicit presence
- Python failed to raise DecodeError on mismatched field type HOT 1
- google_protobuf_type_proto_upbdefinit descriptor decode return error kUpb_DecodeStatus_BadUtf8 HOT 1
- Build protobuf from source fails with Bazel MINGW GCC toolchain under Windows. HOT 1
- Test suite failure on windows with 26.0-rc3 HOT 6
- configure --program-prefix is invalid, cross compile
- [C#] Use some kind of buffering when deserializing from TextReader HOT 1
- Fatal Error C1128 occurs during the cmake build
- Bump Google.Protobuf dependency on System.Memory to version >=4.5.5
- golang generated code does not contain has methods for fields with the optional label HOT 3
- C# - "Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified." HOT 1
- [java] remove final from AbstractMessage.toString()
- [Python] Protobuf python generated pb2 files are without typing files HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from protobuf.